Você está na página 1de 29

Conceitos de algoritmos

Modularizao

Ricardo Sobjak

Modularizao

Sempre possvel dividir problemas grandes e complicados em problemas menores e de soluo mais simples. A decomposio de um problema fator determinante para a reduo da sua complexidade. Um algoritmo que envolve um problema grande pode ser dividido em um algoritmo principal e em diversos subalgoritmos ou mdulos (tantos quantos forem necessrios ou convenientes).

Modularizao

O algoritmo principal aquele por onde comea a execuo, e chama, eventualmente, os demais subalgoritmos. Subalgoritmo um algoritmo que, geralmente, resolve um pequeno problema, e que est subordinado a um outro algoritmo que solicitar seu acionamento. possvel que um subalgoritmo chame outro subalgoritmo.

Representao dos subalgoritmos

Construindo sub-algoritmos
Critrios para orientar o processo de decomposio.

Dividir o problema em suas partes principais. Analisar a diviso obtida para garantir coerncia. Se alguma parte ainda permanecer complexa, sub-dividi-la mais. Analisar o resultado para garantir entendimento e coerncia.

Vantagens da Modularizao

Dividir problemas grandes em vrios problemas menores, de baixa complexidade: Nmero pequeno de variveis Poucos caminhos de controle (caminhos do incio ao fim)

Vantagens da Modularizao

Possibilidade de utilizar-se solues gerais para classes de problemas em lugar de solues especficas para problemas particulares. Reusabilidade Solucionar uma nica vez o problema

Vantagens da Modularizao

Permite delimitar o escopo (nivel de abrangncia) de variveis. Variveis locais Variveis globais Evita a repetio, dentro de um mesmo algoritmo, de uma sequncia de aes em diferentes pontos.

Variveis globais e locais

Todo mdulo constitudo por uma sequncia de comandos que operam sobre um conjunto de variveis que podem ser globais ou locais. Variveis globais: Podem ser usadas em mdulos internos a outro mdulo do algoritmo onde foram declaradas. Variveis locais: Podem ser usadas no mdulo do algoritmo onde foram declaradas. Elas no possuem significado fora deste mdulo.

Variveis globais e locais

Uma varivel local criada (alocada na memria) no momento em que o sub-algoritmo que a define chamado. Uma varivel local liberada da memria no momento em que o sub-algoritmo que a define termina. Uma varivel local somente existe (s pode ser utilizada) dentro do subalgoritmo que a define.

Variveis globais e locais

Caso um mesmo identificador (nome de varivel) seja declarado em sub-algoritmos distintos, esses identificadores so considerados distintos entre si (variveis distintas). O uso de variveis locais minimiza a ocorrncia de efeitos colaterais : o programador pode definir e utilizar as variveis que desejar em um subalgoritmo sem interferir com outros sub-algoritmos.

Local de definio dos subalgoritmos


Algoritmo <nome do algoritmo> Var //<definio das variveis globais> <definies dos subalgoritmos> Inicio <corpo do algoritmo principal> Fimalgoritmo

Procedimentos e Funes

TIPOS DE SUBALGORITMOS

Procedimentos

Um procedimento um subalgoritmo que executa alguma tarefa especfica e no retorna valores ao algoritmo ou subalgoritmo chamador.

Procedimentos
procedimento <nome> (<parmetros>) var <variveis locais> inicio <comandos> fimprocedimento

Temos que: <nome> o nome simblico identificador pelo qual o procedimento invocado por outros algoritmos; <parmetros> so os parmetros do procedimento; <variveis locais> so as definies das variveis locais ao procedimento. Sua forma anloga da definio de variveis num algoritmo; <comandos> o conjunto de instrues do corpo do procedimento, que executado toda vez que o mesmo invocado.

Procedimentos

Chamada de um procedimento (sintaxe):


nome_procedimento(<arg 1>, <arg 2>,, <arg n>)

Quando o nome de um procedimento encontrado, ocorre um desvio no (sub)algoritmo para que os comandos do procedimento sejam executados. Ao trmino do subalgoritmo, a execuo retornar ao ponto subsequente a da chamada do Procedimento.

Procedimentos (Exemplo)
algoritmo <nome_algoritmo> var <variveis globais> procedimento <nome_procedimento>(<parmetros>) var //Declarao de variveis locais do procedimento inicio // Comandos do procedimento fimprocedimento // algoritmo principal inicio //Comandos do algoritmo principal nome_procedimento(argumentos) //Comandos do algoritmo principal fimalgoritmo

Juntando definio e chamada de um procedimento

Procedimentos
Exemplo 1: Faa um algoritmo que dado um valor real global x, chame um procedimento que calcula o quadrado de x.
algoritmo Calcular quadrado var x : real procedimento Quadrado() var z : real inicio zx^2 escreva(O quadrado do nmero =, z) fimprocedimento inicio escreva(Digite um nmero: ) leia(x) Quadrado() fimalgoritmo

Procedimentos
algoritmo Escrever nome var nome : literal procedimento le_nome() inicio leia(nome) fimprocedimento procedimento muda_nome() inicio escreva(Vamos mudar o nome) leia(nome) fimprocedimento inicio le_nome() escreva(nome) muda_nome() escreva(nome) fimalgoritmo

Exemplo 2 (muito simples com finalidade de explicar a diferena entre variveis locais e globais) : Faa um algoritmo que use um procedimento para ler o nome de uma pessoa e outro para mud-lo.

Procedimentos
algoritmo Escrever nome var nome : literal procedimento le_nome() inicio leia(nome) fimprocedimento procedimento muda_nome() var nome : literal inicio escreva(vamos mudar o nome) leia(nome) fimprocedimento inicio le_nome() escreva(nome) muda_nome() escreva(nome) fimalgoritmo

Exemplo 3 (muito simples com finalidade de explicar a diferena entre variveis locais e globais): Faa um algoritmo que use um procedimento para ler o nome de uma pessoa e outro para mud-lo (use nome como var local)

Procedimentos

No exemplo 3, a varivel global nome e a varivel local nome representam posies de memria totalmente diferentes, logo, qualquer mudana no contedo da varivel local, no afetar o contedo da variavel global.

Parmetros

Parmetros so canais pelos quais se estabelece uma comunicao bidirecional entre um subalgoritmo e o algoritmo chamador. Os dados so passados pelo algoritmo chamador atravs de argumentos (parmetros reais), e so recepcionados por meio de parmetros formais. Parmetros Formais: So os nomes simblicos introduzidos no cabealho dos subalgoritmos, usados na definio dos parmetros do mesmo. Dentro de um subalgoritmo trabalhase com estes nomes da mesma forma como se trabalha com variveis locais ou globais. Parmetros Reais (ou argumentos):So aqueles que substituem os parmetros formais quando da chamada do

Parmetros

Passagem de parmetros

O argumento da chamada (parmetro real) avaliado, gerando um valor que copiado para a varivel declarada na funo (parmetro formal) Qualquer alterao do parmetro formal no "transmitida" para o a varivel do argumento

O argumento da chamada (parmetro real) pode ser uma constante, uma varivel ou uma expresso:

5, v1, v1+5-v2

Parmetros
algoritmo Passagem de parmetros var x : inteiro procedimento passagemde1parametro(a : inteiro) inicio escreva(a + 5) fimprocedimento procedimento passagemde2parametro(a : inteiro ; b : real) inicio escreva(a + b) fimprocedimento inicio x 10 passagemde1parametro (x) passagemde2parametro (x, 3.4) fimalgoritmo

Funes

O conceito de funes originrio da idia de funo matemtica, onde um valor calculado a partir de outro(s) valor(es) fornecido(s) funo.

Funes
funcao <nome> (<parmetros>) : <tipo de dado retornado> Var <variveis locais> inicio <comandos> fimfuncao

<nome> o nome simblico pelo qual a funo invocada por outros algoritmos; <parmetros> so os parmetros da funo; <tipo de dado retornado> o tipo de dado da informao retornado pela funo ao algoritmo chamador; <variveis locais> consiste na definio das variveis locais funo. Sua forma anloga da definio de variveis num algoritmo; <comandos> o conjunto de instrues do corpo da funo.

Funes
Exemplo: Faa um algoritmo que dado um valor real x, chame uma funo que retorne o quadrado de x.
algoritmo Calcular quadrado var x, y : real funcao quadrado(w : real) : real var z : real inicio z w^2 retorne z fimfuncao inicio escreva Digite um nmero: leia (x) y quadrado (x) escreva( y = , y) fimalgoritmo

Funes

Instruo RETORNE

A instruo retorne um comando simples usado apenas nas funes e tem o efeito de parar a execuo da funo e enviar um valor para o algoritmo principal ou para outro subalgoritmo que o tenha chamado. Toda funo deve ter em seu corpo de instrues, pelo menos, uma instruo Retorne.

Sintaxe:
retorne <expresso> Exemplos: retorne area //retorna o valor da varivel area retorne pi * r * r //retorna o valor calculado pela expresso

Fim

Você também pode gostar