subrotina
TIPOS:
Funções: retornam valores para o programa que chamou
Procedimentos: não retorna valor
Uso de Variável
Global: pode ser utilizada tanto no programa principal como nas sub-rotinas
Local: só pode ser utilizada onde foi declarada
Passagem de Parâmetros:
Por Valor: alterações na variável da sub-rotina não impactam a variável do programa principal
Por Referencia: Alterações na variável da sub-rotina também alteram a variável do programa principal (porque é passado o endereço de memória da variável)
Retorno de Função
Programa SEMROTINA
Var: A, B, C, R1, R2, X: INT
INICIO
Ler A, B
Se (A+B>100) ENTAO Ler C R1=A+B+C R2=A*B*C MOSTRE R1, R2
Senao
X=A A=B B=X
Fimse
FIM
PROCEDIMENTO FUNÇÃO
PROCEDIMENTO
FUAQ lê um valor para a variável M e um valor para a variável N. Calcular o valor de N na potência M numa função. Mostrar o resultado no programa principal. Somente podem ser declaradas variáveis locais.
Programa Rotina1Ver1
Funcao potencia (x: int, y:int)
Var c: int
Inicio
c=x↑y Retorne (c)
Fim
Var m, n, r: int
Inicio
Ler n, m r=potencia(n,m) mostre r
Fim
Programa Rotina1Ver2
// com procedimento e apenas variáveis globais
Var n, m, r: int
Procedimento potencia
Inicio
r=n↑m
Fim
Inicio Ler n,m Potencia Mostre r
Fim
FUAQ lê 20 valores para uma variável X. Se X for par, calcular o fatorial de X dentro de uma função e mostrar o resultado no programa principal. Se X for ímpar, calcular e mostrar a tabuada de 1 ate 10 de X num procedimento. Declarar apenas variáveis locais.
Programa complex20
Funcao fatorial (z: int)
Var f, g: int
INICIO
f=1 para g=1 ate z f=f*g fim_para retorne(f)
FIM
Procedimento tabuada (y: int)
Var k, t: int
INICIO
para k=1 ate 10 t=k*y mostre t fim_para
FIM
Var x, i, fat: int
INICIO