Você está na página 1de 60

Algoritmos e Programao

Modularizao

Algoritmos e Programao

Modularizao de Algoritmos
A resoluo de problemas complexos em computao
geralmente leva a algoritmos longos, que so difceis de
analisar, verificar e alterar.
Uma abordagem eficiente para auxiliar na resoluo de
problemas complexos a decomposio: dividir para
conquistar!
Essa abordagem denominada top-down (ou refinamentos
sucessivos): parte-se do todo, dividindo-o em partes
menores.

Algoritmos e Programao

Modularizao de Algoritmos
Vrias reas utilizam essa abordagem: um exemplo a
fabricao de um carro numa indstria automobilstica.
Vantagens da modularizao:
Clareza e legibilidade do algoritmo.
Construo independente.
Testes individualizados.
Simplificao da manuteno.
Reaproveitamento de algoritmos.

Algoritmos e Programao

Modularizao de Algoritmos
A abordagem top-down aplicada em algoritmos consiste em
dividir um algoritmo em subalgoritmos/subprogramas
menores que executam partes da resoluo do problema.
Essa tcnica chamada de modularizao de algoritmos.

Algoritmos e Programao

Subalgoritmo

Algoritmos e Programao

Subalgoritmo
Um subalgoritmo um nome dado a um trecho de um
algoritmo mais complexo e que, em geral, encerra em si
prprio um pedao da soluo de um problema maior o
algoritmo a que ele est subordinado. Este conceito
essencial numa cincia bastante recente: a Engenharia de
Software.

Algoritmos e Programao

Subalgoritmo
Em resumo, os subalgoritmos so importantes na:
Subdiviso de algoritmos complexos, facilitando o seu
entendimento;
Estruturao de algoritmos, facilitando principalmente a
deteco de erros e a documentao de sistemas; e
Modularizao de sistemas, que facilita a manuteno de
softwares e a reutilizao de subalgoritmos j
implementados.

Algoritmos e Programao

Subalgoritmo
A idia da reutilizao de software tem sido adotada por
muitos grupos de desenvolvimento de sistemas de
computador, devido economia de tempo e trabalho que
proporcionam.
Seu princpio o seguinte: um conjunto de algoritmos
destinado a solucionar uma srie de tarefas bastante
corriqueiras desenvolvido e vai sendo aumentado com o
passar do tempo, com o acrscimo de novos algoritmos.

Algoritmos e Programao

Subalgoritmo
A este conjunto d-se o nome de biblioteca. No
desenvolvimento de novos sistemas, procura-se ao mximo
basear sua concepo em subalgoritmos j existentes na
biblioteca, de modo que a quantidade de software realmente
novo que deve ser desenvolvido minimizada.
Muitas vezes os subalgoritmos podem ser teis para encerrar
em si uma certa sequncia de comandos que repetida vrias
vezes num algoritmo. Nestes casos, os subalgoritmos
proporcionam uma diminuio do tamanho de algoritmos
maiores. Antigamente, esta propriedade era tida como a
principal utilidade dos subalgoritmos.

Algoritmos e Programao

Subalgoritmo
Mecanismo de Funcionamento
Um algoritmo completo dividido num algoritmo principal e
diversos subalgoritmos (tantos quantos forem necessrios
e/ou convenientes). O algoritmo principal aquele por onde
a execuo do algoritmo sempre se inicia. Este pode
eventualmente invocar os demais subalgoritmos.

Algoritmos e Programao

Subalgoritmo
Mecanismo de Funcionamento
O corpo do algoritmo principal sempre o ltimo trecho do
pseudocdigo de um algoritmo. As definies dos
subalgoritmos esto sempre colocadas no trecho aps a
definio das variveis globais e antes do corpo do algoritmo
principal:

Algoritmos e Programao

Subalgoritmo
Mecanismo de Funcionamento
ALGORITMO <nome do algoritmo>
Var <definio das variveis globais>
<definies dos subalgoritmos>
Inicio
<corpo do algoritmo principal>
FimAlgoritmo.

Algoritmos e Programao

Subalgoritmo
Mecanismo de Funcionamento
Durante a execuo do algoritmo principal, quando se
encontra um comando de invocao de um subalgoritmo, a
execuo do mesmo interrompida. A seguir, passa-se
execuo dos comandos do corpo do subalgoritmo. Ao seu
trmino, retoma-se a execuo do algoritmo que o chamou
(no caso, o algoritmo principal) no ponto onde foi
interrompida (comando de chamada do subalgoritmo) e
prossegue-se pela instruo imediatamente seguinte.

Algoritmos e Programao

Subalgoritmo
A definio de um subalgoritmo consta de:
Um cabealho, onde esto definidos o nome e o tipo do
subalgoritmo, bem como os seus parmetros e variveis
locais;
Um corpo, onde se encontram as instrues (comandos) do
subalgoritmo.

Algoritmos e Programao

Subalgoritmo
O nome de um subalgoritmo o nome simblico pelo qual
ele chamado por outro algoritmo.
O corpo do subalgoritmo contm as instrues que so
executadas cada vez que ele invocado.
Variveis locais so aquelas definidas dentro do prprio
subalgoritmo e s podem ser utilizadas pelo mesmo.

Algoritmos e Programao

Subalgoritmo
Parmetros so canais por onde os dados so transferidos
pelo algoritmo chamador a um subalgoritmo, e vice-versa.
Para que possa iniciar a execuo das instrues em seu
corpo, um subalgoritmo s vezes precisa receber dados do
algoritmo que o chamou e, ao terminar sua tarefa, o
subalgoritmo deve fornecer ao algoritmo chamador os
resultados da mesma. Esta comunicao bidirecional pode
ser feita de dois modos que sero estudados mais frente:
por meio de variveis globais ou por meio da passagem de
parmetros.

Algoritmos e Programao

Subalgoritmo
O tipo de um subalgoritmo definido em funo do nmero
de valores que o subalgoritmo retorna ao algoritmo que o
chamou. Segundo esta classificao, os subalgoritmos
podem ser de dois tipos:
funes, que retornam um, e somente um, valor ao
algoritmo chamador;
procedimentos, que retornam zero (nenhum) ou mais
valores ao algoritmo chamador.

Algoritmos e Programao

Procedimentos

Algoritmos e Programao

Procedimentos
Um procedimento um subalgoritmo que retorna zero
(nenhum) ou mais valores ao (sub)algoritmo chamador. Estes
valores so sempre retornados por meio dos parmetros ou de
variveis globais, mas nunca explicitamente, como no caso de
funes. Portanto, a chamada de um procedimento nunca
surge no meio de expresses, como no caso de funes. Pelo
contrrio, a chamada de procedimentos s feita em
comandos isolados dentro de um algoritmo, como as instrues
de entrada (Leia) e sada (Escreva) de dados.

Algoritmos e Programao

Procedimentos
A sintaxe da definio de um procedimento :
PROCEDIMENTO <nome> ( <parmetros> )
Var <variveis locais>
Inicio
<comando composto>
FimProcedimento

Algoritmos e Programao

Procedimentos
Detalhe
<nome> o nome simblico 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;

<comando composto> o conjunto de instrues do corpo do


procedimento, que executado toda vez que o mesmo invocado.

Algoritmos e Programao

Procedimentos

Algoritmos e Programao

Procedimentos
No exemplo conveniente observar:
A forma de invocao dos procedimentos, por meio do seu
nome, seguido de seus eventuais parmetros (no caso,
nenhum), num comando isolado dentro do algoritmo
principal.

Algoritmos e Programao

Funes

Algoritmos e Programao

Funes
Funes
so
as
estruturas
que
permitem
ao
desenvolvedores separar seus programas em blocos. Se
no as tivssemos, os programas teriam que ser curtos e de
pequena complexidade. Para fazermos programas grandes e
complexos temos de constru-los bloco a bloco.

Algoritmos e Programao

Funes
Uma funo um mdulo que tem por objetivo calcular e
retornar ao algoritmo, procedimento ou funo "chamador"
um valor. A chamada de uma funo para execuo feita
apenas citando-se o seu identificador no meio de uma
expresso. Vide as funes previamente existentes no nosso
pseudo-cdigo. Uma funo dita recursiva quando chama
a ela prpria.

Algoritmos e Programao

Funes
Resumindo Funes:
Funes so nada mais do que subprogramas, isto ,
pedaos de programas dentro de programas.

Algoritmos e Programao

Funes
O conceito de Funo originrio da idia de funo
matemtica (por exemplo, raiz quadrada, seno, coseno,
tangente, logaritmo, entre outras), onde um valor calculado
a partir de outro(s) fornecido(s) funo.
FUNCAO <nome> ( <parmetros> ) : <tipo_de_retorno>
VAR <variveis locais>
INICIO
<comando composto>
retorne <varivel de retorno>
FIMFUNCAO

Algoritmos e Programao

Funes - Reaproveitamento de cdigo


Vez por outra nos deparamos com situaes onde temos
que escrever cdigos parecidos, mas muito parecidos em
trechos diferentes do programa. As vezes a diferena de um
para outro questo de uma ou outra varivel que muda.
Tal fato ocorre com muita frequncia, muitas vezes o trecho
exatamente o mesmo.

Algoritmos e Programao

Funes - Reaproveitamento de cdigo


Ento faz sentido que possamos estruturar o cdigo repetido
de maneira a constituir um subprograma e, no programa
propriamente dito, fazer o cdigo do subprograma ser
executado para diferentes valores de variveis. Isto provoca
uma grande economia de cdigo escrito, ao mesmo tempo
em que facilita a manuteno do programa.

Algoritmos e Programao

Funes
Exemplo

Algoritmos e Programao

Funes
A invocao de uma funo feita pelo simples
aparecimento do nome da mesma, seguido pelos
respectivos parmetros entre parnteses, dentro de uma
expresso. A funo executada e, ao seu trmino, o trecho
do comando que a invocou substitudo pelo valor retornado
pela mesma dentro da expresso em que se encontra, e a
avaliao desta prossegue normalmente.

Algoritmos e Programao

Funes
Uma funo, devolve ao algoritmo que a chamou apenas um
valor, calculado por ela, e definido no comando retorne.
Exemplo

Algoritmos e Programao

Funes - Variveis
Variveis globais so aquelas declaradas no incio de um
algoritmo. Estas variveis so visveis (isto , podem ser
usadas) no algoritmo principal e por todos os demais
subalgoritmos.
Variveis locais so aquelas definidas dentro de um
subalgoritmo e, portanto, somente visveis (utilizveis) dentro
do mesmo. Outros subalgoritmos, ou mesmo o algoritmo
principal, no podem utiliz-las.

Algoritmos e Programao

Funes - Parmetros
Parmetros so canais pelos quais se estabelece uma
comunicao bidirecional entre um subalgoritmo e o
algoritmo chamador (o algoritmo principal ou outro
subalgoritmo). Dados so passados pelo algoritmo
chamador ao subalgoritmo, ou retornados por este ao
primeiro por meio de parmetros.

Algoritmos e Programao

Funes Parmetros
Parmetros formais so os nomes simblicos introduzidos
no cabealho de subalgoritmos, usados na definio dos
parmetros. Dentro de um subalgoritmo trabalha-se com
estes nomes da mesma forma como se trabalha com
variveis locais ou globais.

Algoritmos e Programao

Funes Parmetros formais

No exemplo anterior, X e Y so parmetros formais da


funo Media.
Parmetros reais so aqueles que substituem os parmetros
formais quando da chamada de um subalgoritmo. Por
exemplo, o trecho seguinte de um algoritmo invoca a funo
Mdia com os parmetros reais 8 e 7 substituindo os
parmetros formais X e Y seria Z := Media(8, 7)

Algoritmos e Programao

Funes - Mecanismos de Passagem de Parmetros


Como vimos anteriormente, os parmetros reais substituem
os formais no ato da invocao de um subalgoritmo. Esta
substituio denominada passagem de parmetros e pode
se dar segundo dois mecanismos distintos: passagem por
valor (ou por cpia) ou passagem por referncia.

Algoritmos e Programao

Funes - Passagem de Parmetros por Valor


Na passagem de parmetros por valor (ou por cpia) o
parmetro real calculado e uma cpia de seu valor
fornecida ao parmetro formal, no ato da invocao do
subalgoritmo. A execuo do subalgoritmo prossegue
normalmente e todas as modificaes feitas no parmetro
formal no afetam o parmetro real, pois trabalha-se apenas
com uma cpia do mesmo.

Algoritmos e Programao

Funes - Passagem de Parmetros por Referncia


Neste mecanismo de passagem de parmetros no feita
uma reserva de espao em memria para os parmetros
formais. Quando um subalgoritmo com parmetros passados
por referncia chamado, o espao de memria ocupado
pelos parmetros reais compartilhado pelos parmetros
formais correspondentes. Assim, as eventuais modificaes
feitas nos parmetros formais tambm afetam os parmetros
reais correspondentes.

Algoritmos e Programao

Funes - Passagem de Parmetros por Referncia


Um mesmo subalgoritmo pode utilizar diferentes
mecanismos de passagem de parmetros, para parmetros
distintos. Para diferenciar uns dos outros, convencionou-se
colocar o prefixo VAR antes da definio dos parmetros
formais passados por referncia. Se por exemplo um
procedimento tem o seguinte cabealho:
Procedimento PROC( X, Y : inteiro; Var Z : real; J: real)

Algoritmos e Programao

Funes - Passagem de Parmetros por Referncia


X e Y so parmetros formais do tipo inteiro e so passados
por valor;
Z um parmetro formal do tipo real passado por referncia;
J um parmetro formal do tipo real passado por valor.

Algoritmos e Programao

Funo X Procedimento
Um procedimento difere de uma funo basicamente, pois,
no tem um valor de retorno associado. Isto faz com que ele
se comporte como um comando extra da linguagem ao
passo que a funo tem um comportamento mais parecido
com o de uma expresso aritmtica ou booleana. Um
prottipo para um procedimento de definido ento com
base em apenas duas informaes:
O identificador do procedimento (nome)
A lista de parmetros (que podem ser por valor ou
referncia).

Algoritmos e Programao

Funo X Procedimento
Resumindo, os procedimentos diferem das funes apenas
por no retornarem nada, nenhum valor.
Exemplo

Algoritmos e Programao

Arredondamento
Exemplo

Algoritmos e Programao

String e Funes de Manipulao


Toda linguagem de programao j vem com um grupo de
funes que facilitam a vida do programador. Estas funes
realizam os clculos aritmticos, trigonomtricos e de
manipulao e converso de dados mais comuns; assim, o
programador no tem que reinventar a roda a cada
programa que faz.
A este grupo de funes d-se s vezes o nome de
biblioteca.

Algoritmos e Programao

String e Funes de Manipulao


Como usar uma funo?
Em termos simples, uma funo pode ser usada em
qualquer lugar onde uma varivel tambm pode, a no ser,
naturalmente, no "lado esquerdo da seta" em um comando
de atribuio - uma funo produz (diz-se no linguajar dos
programadores retorna) um valor, e no o recebe.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


Abs( expresso) - Retorna o valor absoluto de uma
expresso do tipo inteiro ou real. Equivale a | expresso | na
lgebra.
ArcCos( expresso) - Retorna o ngulo (em radianos) cujo
co-seno representado por expresso.
ArcSen( expresso) - Retorna o ngulo (em radianos) cujo
seno representado por expresso.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


ArcTan( expresso) - Retorna o ngulo (em radianos) cuja
tangente representada por expresso.
Cos( expresso) - Retorna o co-seno do ngulo (em
radianos) representado por expresso.
CoTan( expresso) - Retorna a co-tangente do ngulo (em
radianos) representado por expresso.
Exp( base, expoente) - Retorna o valor de base elevado a
expoente, sendo ambos expresses do tipo real.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


GraupRad( expresso) - Retorna o valor em radianos
correspondente ao valor em graus representado por
expresso.
Int( expresso) - Retorna
representado por expresso.

parte

inteira

do

valor

Log( expresso) - Retorna o logaritmo na base 10 do valor


representado por expresso.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


LogN( expresso) - Retorna o logaritmo neperiano (base e)
do valor representado por expresso.
Pi - Retorna o valor 3.141592.
Quad( expresso) - Retorna quadrado do valor representado
por expresso.
RadpGrau( expresso) - Retorna o valor em graus
correspondente ao valor em radianos representado por
expresso.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


RaizQ( expresso) - Retorna a raiz quadrada do valor
representado por expresso.
Rand - Retorna um nmero real gerado aleatoriamente,
maior ou igual a zero e menor que um.
RandI( limite) - Retorna um nmero inteiro gerado
aleatoriamente, maior ou igual a zero e menor que limite.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


Sen( expresso) - Retorna o seno do ngulo (em radianos)
representado por expresso.
Tan( expresso) - Retorna a tangente do ngulo (em
radianos) representado por expresso.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


Os valores que esto entre parnteses, representados pelas
palavras como expresso, base e expoente, so os
parmetros, ou como dizem alguns autores, os argumentos
que passamos para a funo para que realize seus clculos
e retorne um outro, que usaremos no programa. Algumas
funes, como Pi e Rand, no precisam de parmetros, mas
a maioria tem um ou mais. O valor dos parmetros
naturalmente altera o valor retornado pela funo.

Algoritmos e Programao

Funes numricas, algbricas e trigonomtricas


Exemplo

Algoritmos e Programao

Funes para manipulao de cadeias de caracteres (strings)


Asc (s : caracter) : Retorna um inteiro com o cdigo ASCII do
primeiro caracter da expresso.
Carac (c : inteiro) : Retorna o caracter cujo cdigo ASCII
corresponde expresso.
Caracpnum (c : caracter) : Retorna o inteiro ou real
representado pela expresso. Corresponde a StrToTin() ou
StrToFloat() do Delphi, Val() do Basic ou Clipper, etc.

Algoritmos e Programao

Funes para manipulao de cadeias de caracteres (strings)


Compr (c : caracter) : Retorna um inteiro contendo o
comprimento (quantidade de caracteres) da expresso.
Copia (c : caracter ; p, n : inteiro) : Retorna um valor do tipo
caracter contendo uma cpia parcial da expresso, a partir
do caracter p, contendo n caracteres. Os caracteres so
numerados da esquerda para a direita, comeando de 1.

Algoritmos e Programao

Funes para manipulao de cadeias de caracteres (strings)


Maiusc (c : caracter) : Retorna um valor caracter contendo a
expresso em maisculas.
Minusc (c : caracter) : Retorna um valor caracter contendo a
expresso em minsculas.
Numpcarac (n : inteiro ou real) : Retorna um valor caracter
contendo a representao de n como uma cadeia de
caracteres.

Algoritmos e Programao

Funes para manipulao de cadeias de caracteres (strings)


Pos (subc, c : caracter) : Retorna um inteiro que indica a
posio em que a cadeia subc se encontra em c, ou zero se
subc no estiver contida em c.
Exemplo

Algoritmos e Programao

FIM