Escolar Documentos
Profissional Documentos
Cultura Documentos
Subprogramao
Favorecendo a estruturao do programa; Facilitando a correo do programa; Facilitando a modificao do programa; Melhorando a legibilidade do programa; Diviso do problema a ser resolvido em partes (modularizao).
Subprogramao
Com a modularizao de um programa, as partes que o compem podem ser desenvolvidas por diferentes equipes; Para isto deve-se estabelecer antes padres de programao; Deve-se definir tambm que dependncia haver entre os vrios subprogramas.
Subprogramao
A dependncia entre os sub-programas deve ser a mnima possvel; Um subprograma um grupo de instrues arranjadas de forma lgica, que executem uma ao bem definida; A subprogramao tende a diminuir a complexidade da resoluo de um problema j que, por um instante, a ateno voltada apenas para uma parte do problema.
Subprogramao
Algol: bloco; FORTRAN: subrotina; Modula: co-rotinas; ADA: tarefas; C: funes; Visualg: procedimentos e funes. Pascal: procedimentos e funes.
Subprogramao
Procedimentos
Procedimento uma forma de criar um sub-programa; Quando um determinado conjunto de instrues tiver que ser repetido dentro da soluo de um problema, conveniente coloc-lo dentro de um procedimento; Para se criar um procedimento necessrio:
Um identificador (o nome do procedimento); Uma lista de parmetros (que possibilitam a comunicao entre o programa principal e o procedimento); As aes a serem executadas (que formam o corpo do procedimento).
Subprogramao
Funes Funo tambm uma forma de criar um sub-programa; A funo deve obrigatoriamente retornar um valor processado atravs do seu nome identificador; Uma funo deve ser ativada em um contexto de expresso.
Subprogramao
Existem problemas mais adequados ao uso de funes, enquanto outros adequam-se melhor ao uso de procedimentos; Tudo que um procedimento pode fazer, uma funo tambm pode; Dicas para escolha do tipo de subprograma:
Quando usar funes, evite ao mximo a passagem de parmetros por referncia; Se o valor que processado na unidade ser reutilizado em uma expresso, existem grandes possibilidades de que uma funo seja mais adequada; Se o objetivo da unidade apenas fazer uma mudana de estado (valor) em um ou mais objetos, adote um procedimento.
Subprogramao
Um subprograma pode ser ativado em qualquer parte do programa (em algumas linguagens somente depois de definido); Sua ativao se d atravs do uso de seu identificador como uma instruo;
Subprogramao
Exemplo de aplicao: Fazer um algoritmo para calcular a combinao (anlise combinatria) de N elementos tomados P a P. Sabe-se que isto possvel atravs da seguinte expresso:
n Cp=
n! p! (n-p)!
com n p
10
Subprogramao
A soluo deste problema pelos mtodos vistos at agora (sem o uso da subprogramao) teria N e P como argumentos de entrada e C como argumento de sada; Seriam necessrios os seguintes passos:
Calcular o fatorial de N (armazenar numa varivel, ex: FatN); Calcular o fatorial de P (armazenar numa segunda varivel, ex: FatP); Calcular o fatorial de N-P (armazenar numa terceira varivel, ex:FatNP); E finalmente calcular a expresso: FatN/(FatP*FatNP).
11
Subprogramao
Note que nesta soluo teramos que descrever vrias vezes uma mesma seqncia de aes que so utilizadas para o clculo do fatorial de um nmero; Esta seqncia tem um comportamento padro.
12
Subprogramao
Suponha que tivssemos disposio um procedimento genrico, chamado FAT, para calcular o fatorial de um nmero qualquer:
13
Subprogramao
Identificador
Procedimento FAT (x: inteiro, ResFat: inteiro); Declare I:inteiro; Inicio Lista de Parmetros ResFat 1; Para I 1 at x Faa ResFat ResFat * I; Fim-Para; Fim;
14
Subprogramao
Uma subrotina um subprograma com variveis e comandos prprios e que, para ser executada, precisa ser chamada pelo programa principal. Existem dois tipos de subrotinas:
Procedimento (procedure) Funo (function) A funo retorna um valor O procedimento no retorna valor
15
Procedimento
Sintaxe
procedimento nome (lista-de-parmetros); declarao de variveis locais; begin comandos; end;
Exemplo:
procedure Troca (var A,B: real); var aux: real; begin aux:=A; A:=B; B:=aux; end;
16
Funo
Sintaxe
function nome (lista-de-parmetros): tipo; declarao de variveis locais; begin comandos; nome:=<valor a ser retornado>; end;
Exemplo:
funcao Hipotenusa (A,B: real): real; begin Hipotenusa:= sqrt( sqr(A) + sqr(B) ); end;
17
18
Passagem de parmetros
Passagem
por valor: Apenas o valor transferido. Ento, as alteraes feitas nos parmetros formais (da subrotina) no alteram os reais (unidade ativadora). por referncia: O endereo do parmetro real transferido. Ento, as alteraes nos parmetros formais da subrotina na verdade esto sendo feitas sobre os parmetros reais.
Declarao:
por referncia procedure inicializa ( var A,B: real; C: real; var D: integer ); por valor
19
Passagem de parmetros
A passagem de parmetros o meio de comunicao entre as unidades de um programa, pode acontecer com um dos seguintes propsitos:
apenas fornecer um valor para que a subrotina realize um processamento; apenas retornar um valor processado pela subrotina; fornecer um valor para processamento pela subrotina, e tambm ser responsvel pelo retorno de um valor processado.
20
apenas fornecer um valor subrotina para que ela realize um determinado processamento; utilizados somente para valores de entrada; protegem automaticamente o parmetro real; deve ser explorado sempre que possvel.
21
quando a unidade ativada (subrotina) necessitar retornar um valor a ser utilizado pela unidade ativadora; seu uso deve ser cuidadoso.
Declarao de variveis
Uma varivel dita local quando sua declarao estiver dentro de um subprograma, ou quando for declarado como parmetro formal do subprograma; Uma varivel local s visvel dentro do bloco onde foi declarada; Variveis globais so aquelas declaradas em blocos mais externos, podendo ser referenciadas nas unidades mais internas.
23
Declarao de variveis
24