Escolar Documentos
Profissional Documentos
Cultura Documentos
Faculdade de Computao
Introduo a Algoritmos
1. Resoluo de Problemas pelo Computador
Dados de Entrada
Processamento (Transformao)
Dados de Sada
COMPUTADOR
O computador uma ferramenta que permite a realizao do processamento de dados. Passos para resoluo de problemas: Entendimento do Problema Criao de uma seqncia de operaes para soluo do problema Execuo desta seqncia Verificao da adequao da soluo O computador desempenha apenas uma parte deste processo (3 passo).
Problema
Manuteno
Anlise de Requisitos
Especificao
Projeto e Desenvolvimento
Produto
Testes e Validao
Programas
2.1.
Um sistema de programao deve satisfazer as necessidades de seus usurios, as quais so expressas na forma de requisitos.
Prof. Luiz Gustavo A. Martins Pg.:1/28
Faculdade de Computao
Requisito = ao que deve ser executada pelo sistema. (Ex: registrar as notas dos
O levantamento destes requisitos e o seu refinamento (detalhamento) devem ser realizados junto com o usurio e registrado em um documento. O sucesso do sistema depende de 3 fatores: Quo bem o sistema captou os requisitos expressos; Quo bem os requisitos captaram as necessidades; Quo bem as necessidades refletem a realidade.
2.2.
2.3.
Teste e Validao
Tem por objetivo garantir que o sistema satisfaa os requisitos expressos. Consiste da realizao de alguns tipos de testes com o intuito de encontrar erros. A inexistncia de erros no representa a adequao operacional do sistema. Teste de mdulo: feito para garantir que o mdulo atenda s funcionalidades previstas e s especificaes de interface;
Pg.:2/28
Faculdade de Computao
Teste de integrao: feito em uma agregao parcial de mdulos e visa a deteco da inconsistncias nas interfaces entre mdulos; Teste de sistema: efetuado durante a fase final de validao para assegurar que o sistema funcione de acordo com os requisitos; Teste de instalao: realizado durante a instalao do sistema em seu ambiente real de operao, com o objetivo bsico de verificar o seu funcionamento neste novo ambiente e corrigir possveis falhas de instalao; Teste de validao: feito junto ao usurio, o qual deve validar o perfeito funcionamento do sistema no seu ambiente real de operao, segundo os requisitos especificados e documentados na 1 fase.
2.4.
Manuteno
Engloba qualquer alterao no sistema que se fizer necessria aps a entrega do sistema. Tipos de Manuteno: Corretiva: visa a correo de erros/falhas; Incremental: visa a incluso de novas funcionalidades e/ou a alterao dos requisitos originais. Um sistema de boa qualidade favorece as atividades de manuteno e, consequentemente, minimiza os custos despendidos nesta etapa.
- Funciona corretamente Sistema de Boa Qualidade - Possui uma boa documentao de todas as etapas de desenvolvimento
3. Algoritmo
Algoritmo uma seqncia finita e bem definida de passos que, quando executados, realizam uma tarefa especfica ou resolvem um problema. Ex: Receitas de culinria, manual de instrues, coreografia, etc. Propriedades do algoritmo: Composto por aes simples e bem definidas (no pode haver ambigidade, ou seja, cada instruo representa uma ao que deve ser entendida e realizada). Seqncia ordenada de aes Conjunto finito de passos
Pg.:3/28
Faculdade de Computao
para
algoritmo
ser
R: Depende da relao de instrues reconhecidas pelo AGENTE EXECUTOR do algoritmo. Ex: receita de bolo Ser Humano Computador
algoritmo computacional
Construindo um Algoritmo (Problema das Torres de Hani): Regra: Mover os discos de uma haste para outra sem que o disco maior fique sobre o disco menor.
1 2 3 A
Soluo: 1. 2. 3. 4. 5. 6. 7. Move o disco 1 para a haste C Move o disco 2 para a haste B Move o disco 1 para a haste B Move o disco 3 para a haste C Move o disco 1 para a haste A Move o disco 2 para a haste C Move o disco 1 para a haste C
Pg.:4/28
Faculdade de Computao
1 2 3 A 3 B
1 C
3 A 4 1
2 B
1 C
3 A 5
1 B C 6 A
3 B C
1 A 7
2 B
3 C
1 A B
2 3 C
2 3 A B
Exerccios de Lgica:
1. Temos 3 recipientes de tamanhos distintos (8, 5 e 3 litros), sendo que o recipiente de 8 litros est totalmente cheio. Considerando que os recipientes no sejam graduados, deseja-se colocar 4 litros em dois recipientes. 2. Numa noite, acontece uma queda de energia. Sabendo-se que tem uma vela na gaveta da cozinha, um lampio embaixo da cama, fusveis de reserva no armrio da sala e fsforos na estante da cozinha; descreva a seqncia de aes realizados para diagnosticar e resolver o problema. Neste exerccio devemos considerar as seguintes possibilidades: Fusvel queimado; e
Pg.:5/28
Faculdade de Computao
Problema na companhia eltrica. 3. Um comerciante est transportando um lobo, um coelho e 500 kg de cenouras. Durante a viagem, ele se depara com um rio e um pequeno barco, no qual s possvel transportar um elemento por vez. Descreva quais sero as aes tomadas pelo comerciante para atravessar o rio, de modo que ele nunca deixe o lobo e o coelho ou o coelho e as cenouras sozinhos em uma das margens.
4. Algoritmos Computacionais
Diferem dos algoritmos gerais por serem executados pelo computador. Diferem dos programas por serem desenvolvidos em linguagens NO reconhecidas pelo computador. Auxiliam o usurio na concepo da soluo de um problema, independentemente da linguagem de programao que ser utilizada. Limitaes: Os algoritmos computacionais devem ser expressos nos termos do conjunto de instrues entendidas pelo computador. Conceitos bsicos utilizados na construo e interpretao de algoritmos: Estrutura de Dados: para manipulao das informaes utilizadas no algoritmo. Estrutura de Controle: para manipulao das aes.
4.1.
Identificao do Problema: determinar o que se quer resolver ou qual objetivo a ser atingido; Identificao das entradas do sistema: disponveis (sero fornecidas); quais informaes estaro
Identificao das sadas do sistema: quais informaes devero ser geradas/calculadas como resultado; Definir os passos a serem realizados: determinar a seqncias de aes que leve soluo do problema (transforme as entradas nas sadas): Identificar as regras e limitaes do problema; Identificar as limitaes do computador; Determinar as aes possveis de serem realizadas pelo computador. Concepo do algoritmo: registrar a seqncia de comandos, utilizando uma das formas de representao de algoritmos.
Pg.:6/28
Faculdade de Computao
Teste da soluo: execuo manual de cada passo do algoritmo, seguindo o fluxo estabelecido, para detectar possveis erros.
Exemplo: Calcular a mdia final dos alunos, sendo que foram realizadas 4 provas de mesmo peso no perodo. - Quais os dados de entrada? P1, P2, P3 e P4 - Quais os dados de sada? Mdia - Quais os passos a serem realizados? Obter notas, calcular mdia (somar notas e dividir o resultado por 4) e apresentar mdia.
4.2.
A descrio de um algoritmo de forma clara e fcil de ser seguida ajuda no seu desenvolvimento, depurao (localizao e correo de erros) e futura migrao para uma linguagem de programao. Para facilitar este trabalho, so utilizadas ferramentas especficas de representao da lgica de programao (seqncia de aes a serem realizadas).
I. Descrio Narrativa
Especificao verbal dos passos em linguagem natural. Desvantagens: A linguagem natural imprecisa (possibilita ambigidades). Proporciona maior trabalho na codificao. Sugere-se sua utilizao apenas para comentar algoritmos e/ou programas, esclarecendo ou realando pontos especficos.
II. Fluxograma
Uso de ilustraes grficas para representar as instrues. Apresenta a lgica de um algoritmo, enfatizando passos individuais (objetos grficos) e o fluxo de execuo (setas) Desvantagens: Fluxogramas detalhados podem obscurecer a estrutura do programa. Permite transferncias arbitrrias de controle
Pg.:7/28
Faculdade de Computao
INICIO
INICIO
1 N condio S
Ao 1 MEDIA = (P1+P2+P3+P4)/4
Ao 2
IV. Pseudolinguagem
Linguagem especial para desenvolvimento de algoritmos, que utiliza expresses pr-definidas para representar aes e fluxos de controle. Funciona como uma linguagem simplificada de programao, logo, facilita a codificao futura.
Pg.:8/28
Faculdade de Computao
uma descrio textual, estruturada e regida por regras; que descrevem os passos executados no algoritmo. Possui caractersticas similares s linguagens de programao: Utiliza palavras-chaves (ex: escreva, se-ento, etc.); Identao (alinhamento dos blocos de comandos); Possui um comando por linha; Utiliza ; como finalizador de comando; Etc.
5. Estrutura de Dados
O computador s conhece os valores que esto armazenados na sua memria. Portanto, a maioria das instrues est, de certa forma, associada ao processo de armazenamento ou transformao destes valores. Na concepo de algoritmo, pode-se considerar: Memria = conjunto de posies; Cada posio recebe uma identificao (nome) e armazena um valor.
Pg.:9/28
Faculdade de Computao
As posies de memria sempre armazenam um valor e seguem as seguintes premissas: Se armazenamos um novo valor em uma posio, o seu valor antigo ser perdido; Se nenhum valor for atribudo a uma determinada posio, esta possui um lixo (as posies nunca esto vazias) Identificador: Nome de uma posio da memria; definido pelo programador; Recomenda-se o uso de nomes significativos. Exemplo: IDADE, NOME, VLR_SALARIO Contra-exemplo: X1, KCP, VAR_1, VAR_2 Regras para definio de identificadores: Deve comear com uma letra; Pode conter letras, nmeros e o caracter especial _. Exemplo: NOME, VLR_SALARIO, NOTA_1 Contra-exemplo: 1 NOTA, C&A, X-1 Constantes: representam valores que no mudam no decorrer do algoritmo Exemplo: O nome :, 24, PI, etc. Variveis: representam dados cujos valores so modificados ao longo da execuo do algoritmo
5.1.
Numricos:
Pg.:10/28
Faculdade de Computao
No-Numricos: Booleano (lgico ex: True ou False); Caracter (alfanumrico ex: A, @, 1).
5.2.
Estrutura de Dados Heterognea : Registros: estrutura que suporta K variveis, cada qual com um tipo de dado prprio. EX:
registro { char[1..100]: nome; int: idade; real: salario booleano: ativo} : cadastro;
Obs: os tipos estruturados podem ser combinados de modo a formar estruturas complexas de dados.
Pg.:11/28
Faculdade de Computao
Define os locais na memria que sero rotulados com o identificador da varivel que ser utilizada para a manipulao de um determinado tipo de dado. Nenhuma varivel pode ser usada sem antes ter sido declarada. Sintaxe: declare <tipo_do_dado>: Lista_Variaveis;
Tipo_do_dado = tipos primitivos (inteiro, real, caracter e lgico) ou tipos estruturados (vetores, matrizes e registros). Lista_Variaveis = conjunto de identificadores.
7.2.
Comentrios:
Na verdade, comentrios no so comandos, mas so muito importantes para a documentao e entendimento dos algoritmos e programas de computador. So compostos por textos explicativos em linguagem natural delimitados entre /* e */ Exemplo: /* Este algoritmo calcula a mdia aritmtica das notas do semestre */
OBS: Algumas literaturas utilizam { }, mas no empregaremos estes smbolos para no confundir com os delimitadores do C.
Pg.:12/28
Faculdade de Computao
7.3.
So utilizados para obter (entrada) ou fornecer (sada) informaes ao usurio durante a execuo do algoritmo. Sintaxe: leia(identificador, identificador, ...); escreva(termo, termo, ...); imprima(termo, termo, ...);
Indicador = nome da varivel que receber a informao Termo = uma varivel, uma constante ou uma expresso
Exemplo: leia(P1, P2, P3, P4); escreva(A mdia final :, media); imprima(A mdia final :, (P1+P2+P3+P4)/4);
7.4.
Comando de Atribuio:
Similar ao sinal de igual das expresses matemticas convencionais, este comando atribui varivel da esquerda o valor da expresso da direita. Sintaxe: varivel expresso;
Varivel = identificador da varivel que receber o valor. Expresso = pode ser uma varivel, uma constante, uma expresso/funo matemtica ou um expresso lgica.
Exemplo: nome fulano; condicao not(A) and B; cad.sal_liq cad.sal_bruto cad.descontos; valor_absoluto abs(matriz_identidade[2,4]); Tipos de Operadores: Relacionais: = (igual), <> (diferente), > (maior que), < (menor que), >= (maior ou igual) e <= (menor ou igual) Lgicos: and, or, not Aritmticos: + (soma), - (subtrao), * (multiplicao), / (diviso) e ^ (exponenciao).
Obs: o uso de operadores lgicos e relacionais resultam em valores lgicos/booleanos (true ou false).
Prof. Luiz Gustavo A. Martins Pg.:13/28
Faculdade de Computao
Tipos de Funes: abs(X): obtm o valor absoluto de X; sqrt(X): calcula a raiz quadrada de X; log(X): calcula o logaritmo de X; mod(X,Y): obtm o resto da diviso de X por Y; trunca(X): obtm a parte inteira de X; round(X): arredonda o valor de X; sen(X): calcula o valor do seno de X; cos(X): calcula o valor do cosseno de X; tan(X): calcula o valor da tangente de X.
Associatividade
Direita Esquerda Esquerda Direita Esquerda Direita Esquerda Direita Esquerda Direita Esquerda Direita
Exerccios de Fixao
1. Faa 2 exemplos para cada um dos conceitos a seguir: entrada de dados; sada de dados; declarao de variveis (tipos primitivos); declarao de variveis (tipos compostos); e comandos de atribuio de expresses aritmticas e funes. 2. Utilizando tipos primitivos, crie declaraes de variveis que armazenem as seguintes informaes: o nome de um objeto geomtrico, a quantidade de lados, a rea, o permetro e se o objeto regular ou no. 3. Refaa o exerccio anterior utilizando dados estruturados, com o objetivo de armazenar os dados de at 10 objetos.
Pg.:14/28
Faculdade de Computao
4. Escreva um algoritmo que leia 2 nmeros inteiros e retorne no monitor os resultados da soma, subtrao, multiplicao, diviso, diviso inteira e resto da diviso destes nmeros.
Conjunto de comandos que so executados numa seqncia linear, de cima para baixo, na mesma ordem que aparecem. Sintaxe: comando1; comando2; comandoN;
8.2.
Estrutura de Seleo:
Permite a escolha de um grupo de aes para serem executadas de acordo com a aceitao ou no de certas condies. As condies que so testadas so do tipo lgico (s podem assumir 2 valores - Verdadeiro ou Falso). Comando SE: Executa um bloco de comandos especfico se a condio testada for verdadeira e um outro bloco de comandos quando a condio for falsa. Sintaxe: se <condio> ento bloco de comandos (condio Verdadeira); seno bloco de comandos (condio Falsa); fim-se
Pg.:15/28
Faculdade de Computao
se cadastro[1].sexo = F ento escreva(Sra. , cadastro[1].nome); seno escreva(Sr. , cadastro[1].nome); fim-se Ninhos de SE: Dentro de um comando de seleo podemos colocar qualquer tipo de comando, inclusive outros comandos de seleo. Exemplo: se <condio1> ento se <condio2> ento bloco de comandos (condio2 Verdadeira); fim-se seno se <condio3> ento bloco de comandos (condio3 verdadeira); seno bloco de comandos (condio3 falsa); fim-se fim-se Comando CASO: Testa vrias condies para uma mesma varivel e executa o bloco de comandos relacionado condio verdadeira. Substitui os ninhos de comando SE, quando estes so feitos com base em uma mesma expresso e testarem somente igualdades. Sintaxe: caso <identificador_varivel> <op1>: <op1>: <op1>:
Prof. Luiz Gustavo A. Martins
Faculdade de Computao
outro: escreva(Desconhecido); fim-caso Exerccios de Fixao: 1. Faa um algoritmo para montar um menu na tela com 5 opes (1 - Cadastro, 2 - Edio, 3 - Consulta, 4 - Excluso e 5 - Sair), leia a opo escolhida e chame a funo correspondente.
Obs: neste exerccio, a chamada de uma funo equivale a digitar o seu nome.
1. Elabore um algoritmo que dado um nmero inteiro qualquer, responda se ele positivo, negativo ou nulo (igual a zero). 2. Modifique o algoritmo anterior, de modo que ele responda se o nmero par ou mpar. 3. Escreva um algoritmo que leia o nome e a inicial do estado civil (C, S, V, D ou O) de N pessoas, at que seja digitado FIM no nome. No final, este algoritmo deve retornar a lista das pessoas cadastradas e seus respectivos estados civis (Casado, Solteiro, Vivo, Divorciado ou Outro).
8.3.
Estrutura de Repetio:
Permite a repetio de um grupo de aes. Existem 2 tipos de estrutura de repetio: Condicional: a repetio ocorre enquanto a condio lgica testada for verdadeira (comandos ENQUANTO e REPITA);
Prof. Luiz Gustavo A. Martins Pg.:17/28
Faculdade de Computao
Incondicional: tem um nmero pr-determinado de repeties (comando PARA). Comando ENQUANTO: A condio testada no incio da repetio. Enquanto a condio for Verdadeira, o bloco de comandos executado. O bloco de comandos pode ser executado 0 ou + vezes. Pra a execuo quando a condio se tornar Falsa. Sintaxe: enquanto <condio> faa bloco de comandos; fim-enquanto Exemplo: numero 1; enquanto numero <> 0 faa leia(numero); escreva(o quadrado de , numero, : ); escreva(numero^2); fim-enquanto escreva(FIM DO PROGRAMA); Comando REPITA: A condio testada no final da repetio. Enquanto a condio for Falsa, o bloco de comandos executado. O bloco de comandos executado pelo menos 1 vezes. Pra a execuo quando a condio se tornar Verdadeira (condio de parada). Sintaxe: repita bloco de comandos; ate <condio>
Pg.:18/28
Faculdade de Computao
Exemplo: repita leia(numero); escreva(o quadrado de , numero, : ); escreva(numero^2); ate numero = 0 escreva(FIM DO PROGRAMA); Comando PARA: Repete o bloco de comandos enquanto a varivel de controle for menor ou igual ao valor final (vlr_fim). A varivel de controle recebe um valor inicial (vlr_ini) e incrementada automaticamente pelo parmetro de incremento padro (acrscimo de 1), quando a clusula PASSO omitada, ou pelo valor definido pelo usurio atravs desta clusula. A varivel de controle NO pode ser modificada no bloco de comandos. Sintaxe: para <var_controle> = vlr_ini ate vlr_fim passo <inc> faa bloco de comandos; fim-para Exemplo: para cont = 1 ate 9 passo 2 faa vetor[cont] cont; vetor[cont+1] cont; fim-para /* escreve o vetor na ordem inversa */ para cont = 10 ate 1 passo -1 faa escreva(vetor[cont], , ); fim-para
Pg.:19/28
Faculdade de Computao
Exerccios de Fixao: 1. Elabore um algoritmo para determinar o menor nmero inteiro fornecido pelo usurio. Considere que o nmero zero indica o fim da entrada de dados. 2. Construa um algoritmo que calcule e imprima a somatria de N nmeros (sendo N > 0). Considere como dados de entrada a quantidade de nmeros a serem lidos e os valores dos respectivos nmeros. 3. Faa um algoritmo que, sem utilizar o operador de exponenciao, realize a operao XY, para qualquer X e Y fornecido pelo usurio. 4. Reescreva o algoritmo acima, utilizando as demais estruturas de repetio.
As variveis representam as informaes manipuladas pelo algoritmo: TIPO Dados fornecidos pelo usurio Resultados de expresses Acumuladores/Contadores Finalizadores de repeties Sinalizadores/Flags EXEMPLO leia(nome, idade); area base * altura; cont cont + 1; /* Conta */ soma soma + num; /*Acumula*/ ate resp = N atualizado N; /* No Lgico */ atualizado False; /* Lgico */
9.2.
Pg.:20/28
Faculdade de Computao
9.3.
Teste de Mesa
Consiste do acompanhamento manual (linha a linha) da execuo do algoritmo, visando: Avaliar se os resultados obtidos corresponde queles esperados/desejados. Detectar, se existentes, os erros de comandos e/ou fluxo de execuo. Durante os testes, deve-se definir o valores de entrada, visando avaliar as seguintes situaes: Casos extremos (valores limtrofes da validade); Excees do problema (valores invlidos). Exemplo: algoritmo_Obtem_Conceito_Aluno declare int: P1, P2, P3, P4; real: media; inicio leia(P1,P2,P3,P4); media (P1+P2+P3+P4) / 4; escreva(media); se media < 6 entao escreva(REPROVADO); senao escreva(APROVADO); fim-se fim fim-algoritmo
Pg.:21/28
Faculdade de Computao
Valores das Entradas: P1 = 5, P2 = 6, P3 =8 e P4 = 4 Teste1 P1 * * * 5 5 5 5 5 P2 * * * 6 6 6 6 6 P3 * * * 8 8 8 8 8 P4 * * * 4 4 4 4 4 media * * * 5,75 5,75 5,75 5,75 media < 6 true true
Declare int: P1,P2,P3,P4; real: media; Inicio leia(P1,P2,P3,P4); media (P1+P2+P3+P4) / 4; escreva(media); se media < 6 entao Demais comandos
* Representa um valor no conhecido (lixo) Valores das Entradas: P1 = -5, P2 = 11, P3 =12 e P4 = 15 Teste2 P1 * * * -5 -5 -5 -5 -5 P2 * * * 11 11 11 11 11 P3 * * * 12 12 12 12 12 P4 * * * 15 15 15 15 15 media * * * 8,25 8,25 8,25 8,25 media < 6 False false
Declare int: P1,P2,P3,P4; real: media; Inicio leia(P1,P2,P3,P4); media (P1+P2+P3+P4) / 4; escreva(media); se media < 6 entao Demais comandos
Este teste identifica duas falhas no algoritmo: aceitar valor negativo e valores
Pg.:22/28
Faculdade de Computao
Exerccios de Fixao: 1. Faa o teste de mesa no algoritmo do exerccio 4 do slide 50 e verifique se necessria a incluso de alguma consistncia de dados. 2. Teste os algoritmos abaixo: algoritmo_Exec2.a declare real: A, B; int: C, X; inicio A 6.0; B A/2; C 11; X trunca(C / 4); C mod(C, 2); B 5.4; C C+1; A B+2; fim fim-algoritmo algoritmo_Exec2.b declare int: c, num, exp, res; inicio leia(num, exp); res 1; para c=1 ate exp faa res res * num; fim-para escreva(res); fim fim-algoritmo algoritmo_Exec2.c declare int: C, X, R; inicio leia(C, X); se C > X entao escreva(0); senao repita R R + C; C C+1; ate C > X escreva(R); fim-se fim fim-algoritmo
Pg.:23/28
Faculdade de Computao
10.1.
Subalgoritmos (Mdulos)
Por conveno, um subalgoritmo deve ser declarado acima dos mdulos que o chamam. Todo subalgoritmo tem por objetivo a resoluo de um determinado subproblema. Portanto, mantm as mesmas caractersticas de um algoritmo comum, ou seja, pode ter dados de entrada; dados de Sada; e conter qualquer tipo de comando aceito por um algoritmo. Por serem tratados de forma independente dos demais mdulos, cada subalgoritmo s pode manipular variveis/constantes: Globais: declaradas no incio do algoritmo principal (passagem de valor por referncia); ou Locais: declaradas no prprio subalgoritmo (passagem de valor por argumento). Subalgoritmos podem ser do tipo Procedimento (no retorna valor de forma explcita) ou Funo (retorna valor de forma explcita).
10.1.1.
Troca de Informao
Explcita: quando a troca feita atravs de argumentos. Existem 2 modos de passar argumentos para um subalgoritmo:
Pg.:24/28
Faculdade de Computao
Por valor: o argumento formal ser uma varivel independente, ou seja, ocupar um espao na memria durante a execuo do mdulo. Qualquer alterao no argumento formal, no afeta o argumento atual. Por referncia: o argumento formal no ocupar espao de memria, pois utilizar o espao j alocado pelo argumento atual. Qualquer alterao realizada no subalgoritmo afetar o argumento atual. Implcita: quando a troca feita pela utilizao de variveis globais. Esta forma funciona de modo similar passagem de argumentos por referncia, pois no necessita de nova alocao de memria e qualquer alterao realizada durante a execuo do modulo afeta o contedo da varivel para os demais mdulos.
10.1.2.
Argumentos
Na escrita de um subalgoritmo, os dados necessrios para a resoluo do subproblema podem ser informados na declarao do mdulo. Esses argumentos so chamados de argumentos formais. Ex: funcao expoente(BASE:real, FATOR:int) Os argumentos usados na chamada do mdulo so denominados argumentos atuais. Ex: resultado expoente(NRO, EXP); Tanto a quantidade, quanto o tipo de dado dos argumentos atuais devem ser os mesmos dos respectivos argumentos formais.
10.1.3.
Subalgoritmo Procedimento
Entrada: pode ser explcita ou implcita; Sada: somente implcita.
Pg.:25/28
Faculdade de Computao
Sintaxe: procedimento <nome_proc>(arg1:tipo, arg2:tipo, ... , argN:tipo) <declarao de variveis/constantes locais> inicio <bloco de comandos> fim fim-procedimento inicio <nome_proc>(var1, var2, ... , varN); fim
10.1.4.
Subalgoritmo Funo
Entrada: pode ser explcita ou implcita; Sada: sempre explcita (associado ao nome da funo),
Sintaxe: funcao <nome_func>(arg1:tipo, arg2:tipo, ... , argN:tipo): tipo_funcao <declarao de variveis/constantes locais> inicio <bloco de comandos> fim fim-funcao inicio var <nome_func>(var1, var2, ... , varN); fim
Pg.:26/28
Faculdade de Computao
10.1.5.
Consideraes Finais
Exemplo de Utilizao de Subalgoritmos algoritmo_exemplo Declare int: num1, num2; procedimento ler_dados() /* L a base e o fator da exponenciao */ inicio repita leia(num1, num2); ate (num1 > 0) and (num2 >= 0) fim fim-procedimento funcao exp(base:int, fator:int): int /* Faz base ^ fator */ declare int: cont, resultado; inicio resultado 1; para cont=1 ate fator faca resultado resultado * base; fim-para exp resultado; fim fim-funcao inicio ler_dados() /* chamada do procedimento */; escreva(exp(num1, num2)); /* chamada da funo */ fim fim-algoritmo
Exerccios de Fixao: 1. Utilizando os conceitos de procedimentos e funes, construa um algoritmo que determine, para uma srie de valores inteiros, quantos so maiores que a mdia do conjunto. 2. Utilizando os conceitos de procedimentos e funes, desenvolva um algoritmo que calcule, a partir de 2 nmeros inteiros P e M, a combinao de M elementos tomados P a P, conforme a expresso:
P CM =
M! P!( M P )!
Pg.:27/28
Faculdade de Computao
Pg.:28/28