Escolar Documentos
Profissional Documentos
Cultura Documentos
Tetri Mesquita
Subalgoritmos
PROCEDIMENTOS E FUNES
Subalgoritmos
Problema: como resolver um problema complexo? Uma soluo: mtodo de Diviso e Conquista.
Diviso e Conquista
Esta tcnica consiste em dividir um problema maior recursivamente em problemas menores at que o problema possa ser resolvido diretamente. Ento a soluo do problema inicial dada atravs da combinao dos resultados de todos os problemas menores computados. Vrios problemas podem ser solucionados atravs desta tcnica, como o da ordenao de nmeros atravs do algoritmo MergeSort e da transformao discreta de Fourier atravs da transformada rpida de Fourier. Outro problema clssico que pode ser resolvido atravs desta tcnica a Torre de Hanoi. A tcnica soluciona o problema atravs de trs fases:
1. 2. 3. Diviso: o problema maior dividido em problemas menores e os problemas menores obtidos so novamente divididos sucessivamente de maneira recursiva. Conquista: o resultado do problema calculado quando o problema pequeno o suficiente. Combinao: o resultado dos problemas menores so combinados at que seja obtida a soluo do problema maior.
Subalgoritmos
So trechos de algoritmos que efetuam determinada tarefa. Ao invs de escrever um algoritmo grande, escrevem-se vrios algoritmos menores, os quais, em conjunto, resolvem o problema proposto. especialmente indicado us-los quando uma determinada tarefa efetuada em diversos lugares no mesmo algoritmo. So declarados no incio do algoritmo e podem ser chamados em qualquer ponto aps sua declarao. Podem ser de dois tipos:
Funes: retornam algum valor. Procedimento: no retorna nada.
Subalgoritmos
Vantagens:
Reduzem o tamanho do algoritmo; Melhoram a legibilidade do algoritmo; Evitam a repetio de cdigo:
Reaproveitamento no mesmo programa ou em outros;
Subalgoritmos
FUNES
Funes
Retornam um valor ou uma informao. A chamada de uma funo feita atravs da citao do seu nome seguido de seus argumentos (ou parmetros) entre parnteses. As funes podem ser:
Predefinidas pela linguagem; Criadas pelo programador de acordo com o seu interesse.
Copia (c : caracter , posini, posfin : inteiro) : caracter Copia um determinado trecho do caractere Cos (valor : real) : real Cotan (valor : real) : real Exp (base, expoente : real) : real Grauprad (valor : real) : real Int (valor : real) : inteiro Log (valor : real) : real Cosseno Co-tangente Potenciao Converte grau para radiano Converte o valor em inteiro Logaritmo de base 10
//execuo aninhada: o resultado da funo mais interna utilizado como // parmetro da funo mais externa escreval(maiusc(copia(nome,compr(nome)-2,3))) fimalgoritmo
Subalgoritmos
PROCEDIMENTOS
Subalgoritmos
CONCEITOS ADICIONAIS
Escopo de Variveis
Programa Principal: A, B Rotina 1: A, X Rotina 1.1: Y
Rotina 2: X
Passagem de Parmetros
Passagem de parmetros por valor
A funo recebe uma cpia da varivel que fornecida quando invocada. Todas as alteraes feitas dentro da funo no vo afetar os valores originais.
Recursividade
Recurso um mtodo de programao no qual uma funo pode chamar a si mesma.
O termo usado de maneira mais geral para descrever o processo de repetio de um objeto de um jeito similar ao que j fora mostrado. Um bom exemplo disso so as imagens repetidas que aparecem quando dois espelhos so apontados um para o outro.
A recurso na programao bem exemplificada quando uma funo definida em termos de si mesma.
Uma grande vantagem da recurso que um conjunto infinito de sentenas possveis podem ser definidos, analisados ou produzidos por um programa de computador finito. Relaes de recorrncia so equaes que definem uma ou mais seqncias recursivamente. Alguns tipos especficos de relaes de recorrncia podem ser resolvidos para que se obtenha uma definio no-recursiva.
Recursividade: Exemplo
Um exemplo clssico de recurso a definio da funo fatorial, dada aqui em pseudocdigo:
funo fatorial(n) { se (n <= 1) retorne 1; seno retorne n * fatorial(n-1); }
A funo chama a si mesma recursivamente em uma verso menor da entrada (n - 1) e multiplica o resultado da chamada por n, at que alcance o caso base, de modo anlogo definio matemtica de fatorial.
Refinamentos Sucessivos
O princpio dos refinamentos sucessivos utilizado na construo de algoritmos para detalhar justamente as instrues at o ponto em que o algoritmo pode ser transcrito para uma linguagem de programao.