Modularizao de Algoritmos
Decomposio de problemas:
A decomposio de um problema em problemas menores
fator determinante para reduo da complexidade
Quando se decompe um problema em problemas menores
divide-se a complexidade, e por conseqncia, simplifica-se a
resoluo
Sub-rotinas:
Conceitualmente as sub-rotinas podem ser procedimentos ou
funes algumas linguagens no diferenciam os dois
processos
Vantagens no cdigo:
Maior legibilidade
Desenvolvimento e teste independente
Reuso uma operao que repetida muitas vezes pode
ser definida uma nica vez
Procedimentos:
Um grupo de instrues (cdigo) ao qual atribudo um
nome e vem no incio do algoritmo
A ativao ocorre atravs da referncia ao nome dado ao
procedimento (sob chamada), e ocorre em qualquer ponto do
programa
A execuo realizada como se o grupo de sentenas fosse
copiado para o ponto onde foi ativado
fim procedimento;
Exemplo procedimento:
Algoritmo para somar dois nmeros inteiros (sem passagem de
parmetros):
incio
inteiro: n1, n2, resultado;
procedimento soma()
inicio
leia (n1);
leia (n2);
resultado n1 + n2;
escreva (resultado);
fim;
fim procedimento;
soma();
soma();
fim.
Funes:
Muito semelhante aos procedimentos, sendo tambm um
grupo de instrues (cdigo) ao qual atribudo um nome
A principal diferena est no fato da funo poder ser
utilizada nas expresses, como se fossem variveis pois
retornam valores que so associados ao seu nome preciso
declarar o tipo
preciso atribuir o resultado de uma funo uma varivel
ou comando que espera um parmetro sempre retorna um
valor ao algoritmo principal
fim;
fim funo;
Exemplo funo:
Parmetros:
Parmetros so variveis ou valores que podem ser
transferidos do algoritmo principal para um mdulo que est
sendo chamado
A passagem de parmetros ocorre por meio da
correspondncia argumento/parmetro, em que os
argumentos so valores constantes ou variveis, informados
pelo programa principal
Os argumentos devem ser fornecidos na mesma ordem dos
parmetros
Modularizao no Python:
As funes so muito teis para implementar cdigo que
ser utilizados muitas vezes, alm disso, facilita a modificao
do cdigo quando desejado
Em Python no existe diferenciao entre procedimento e
funo as sub-rotinas so denominadas funes
#calcula a soma de a e b
soma(2,9)
soma(7,8)
soma(10,15)
Professora: Tatiana Renata Garcia
Exemplos:
def cria_matriz(n):
M = [0]* n
for i in range(n):
M[i] = [0]* n
return M
>>> cria_matriz(3)
[[0,0,0], [0,0,0], [0,0,0]]
>>> y = cria_matriz(2) #guarda o resultado em y
[[0,0],[0,0]]
Professora: Tatiana Renata Garcia
Exemplos:
Tambm possvel definir uma funo onde o retorno dado
pela comando print:
def usuario(nome):
print Meu nome e', nome
>>> usuario(Tatiana)
>>> a = 2
>>> b = 3
>>> potencia(a,b)
return V
>>> X = [1,2,3]
>>> vetor_em_um(X)
for i in range(n):
M[i] = [0] * n
return M
def modifica(A, n): #funo para alterar valores da diagonal da matriz A
for i in range(n):
A[i][i] = 100
print A
## Programa principal
Y = cria_matriz(5)
modifica(Y,5)
import math
def perimetro(r):
p = float(r) * 2 * math.pi
return p
def area(r):
a = math.pi * (r ** 2)
return a
##### programa principal
x = input('Digite o raio do circulo: ')
p = perimetro(x)
z = area(x)
print 'Perimetro: ', p, 'Area: ', z
Professora: Tatiana Renata Garcia
def primo(x):
primo = True
for i in range(2,x):
if x % i == 0:
primo = False
if primo:
print x , "e' um numero primo."
#####################
N = input('Digite o valor de N: ')
if N > 3 :
for i in range(1, N+1):
if i == 1 or i==2:
print i, " e' um numero primo."
else:
primo(i)
Professora: Tatiana Renata Garcia
Funes Recursivas:
Uma funo pode chamar a si mesma, e quando isso ocorre temos uma
funo recursiva