sub-programas. mecanismo de composição de programas sub-programa está para peça de lego assim...
TRANSCRIPT
![Page 1: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/1.jpg)
Sub-programas
![Page 2: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/2.jpg)
Sub-programas
• Mecanismo de composição de programas
Sub-programa está para peça de LEGO assim como um programa está para a construção.
![Page 3: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/3.jpg)
Sub-programa e funções matemáticas
• Mecanismo de composição de programas• Como na matemática– Possui entrada (argumentos) e saída (resultado)– Define relação entre entrada e saída– Uma entrada está associada a um único resultado
• Diferente da matemática– O valor é calculado– Programa possui estado. Funções (em Pascal)
podem modificar este estado
![Page 4: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/4.jpg)
Exemplo na matemática
• Para qualquer x e y int., f(x,y) = x * y
f é a função de multiplicação. Válida para qualquer par de inteiros.
![Page 5: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/5.jpg)
Exemplo na matemática
• Para qualquer x e y int., f(x,y) = x * y
program Main;type ...{declarações de tipo}var a,b: int; {declarações de variáveis}function mult(x,y: integer): integer;begin mult := x * y;end;Begin readln(a, b); println(‘o resultado da multiplicacao eh: ’, mult(a,b)); end.
![Page 6: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/6.jpg)
Por que definir funções em programas?
![Page 7: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/7.jpg)
Por que definir funções em programas?
É importante organizar código em módulos!
![Page 8: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/8.jpg)
Por que definir funções em programas?
• Modularizar permite:– Dividir esforço• Uma vez que a interface de uma função (entrada, saída,
e comportamento) é definida, pode-se distribuir esforço (dividir para conquistar)
– Evitar cópia• Re-usar mesma implementação de uma funcionalidade
em várias partes do programa permite focalizar manutenção do programa.
![Page 9: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/9.jpg)
Procedimentos
![Page 10: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/10.jpg)
Procedimentos em Pascal
program Main;type ...var ...procedure proc1() ...procedure proc2() ...procedure procN() ...begin ...end.
definições
usos
![Page 11: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/11.jpg)
Procedimentos em Pascal
procedure nome(argumentos); var {aqui colocamos as variáveis que serão usadas só neste procedimento} begin {aqui vai a parte executável, a lógica do procedimento} end;
![Page 12: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/12.jpg)
Visibilidadeprogram Main;type ...{declarações de tipo}var a,b: int; {declarações de variáveis}function mult(x,y: integer): integer;begin mult := x * y;end;function add(x,z: integer): integer;var t : integer;begin t := x + z; add := t;end;begin readln(a, b); println(‘o resultado da multiplicacao eh: ’, mult(a,b)); end.
variáveis locais
parâmetros
variáveis globais
![Page 13: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/13.jpg)
Passagem de parâmetro por cópia e referência
program Referencia;var k : integer;procedure AddRef(var i : integer);begin i := i + 1;end;procedure AddRef2(i : integer);begin i := i + 1;end;begin k := 0; AddRef(k); writeln('>',k); AddRef2(k); {no side effect on k} writeln('>',k); readln()end.
passagem por cópia
passagem por referência
![Page 14: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/14.jpg)
Exemploprogram Matrizes; uses crt; { biblioteca auxiliar } type matriz = array[1..10,1..10] of integer; var a,b:matriz; n:integer; procedure lermatriz(x:char; var c:matriz); var i,j:integer; begin clrscr; write('Entre com a matriz-> ', x); for i:=1 to n do for j:=1 to n do begin gotoxy(1+(j-1)*4,i+3); read(c[i,j]); end; end; ...
![Page 15: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/15.jpg)
program Matrizes; uses crt; { biblioteca auxiliar } type matriz = array[1..10,1..10] of integer; var a,b:matriz; n:integer; procedure lermatriz(x:char; var c:matriz); var i,j:integer; begin clrscr; write('Entre com a matriz-> ', x); for i:=1 to n do for j:=1 to n do begin gotoxy(1+(j-1)*4,i+3); read(c[i,j]); end; end; ...
Exemplo
variáveis locais
x e c são parâmetros de entrada, mas c é passado por referência
![Page 16: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/16.jpg)
Exercício
• Defina um procedimento para calcular e imprimir o valor da exponenciação de um número a por outro b.
![Page 17: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/17.jpg)
Funções
![Page 18: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/18.jpg)
Definição
• Em pascal, tipo especial de procedimento que retorna um valor
![Page 19: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/19.jpg)
Sintaxe
function nome(argumentos): tipo;var {aqui colocamos as variáveis que serão usadas só neste procedimento} begin {aqui vai a parte executável, a lógica do procedimento} end;
![Page 20: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/20.jpg)
Sintaxe
function nome(argumentos): tipo;var {aqui colocamos as variáveis que serão usadas só neste procedimento} begin {aqui vai a parte executável, a lógica do procedimento} end;
Note que uma função possui tipo!
![Page 21: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/21.jpg)
Exercício 1
• Escreva um programa que receba duas frações (quatro inteiros) ordinárias e mostre o resultado em forma de fração
![Page 22: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/22.jpg)
Exercício 2
• Modifique o programa anterior para simplificar a fração resultado pelo máximo divisor comum
![Page 23: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/23.jpg)
Exercício 3
• Implemente uma função que calcule o fatorial de um numero inteiro “n” (maior que 0)
• Definição informal de fatorial: factorial(n) = 1 * 2 * ... * (n-1) * n
![Page 24: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/24.jpg)
Exercício 4
• Implemente uma função que calcule o fatorial de um número.
• Definição:– Fac(n) = 1, n = 1– Fac(n) = n * f(n-1), n > 1
![Page 25: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/25.jpg)
Exercício 5
• Implemente uma função Pascal que retorne o número de fibonacci n.
• Definição:– Fib(n) = 1, se n = 1 ou n = 2– Fib(n) = fib(n-1) + fib(n-2), se n > 2
![Page 26: Sub-programas. Mecanismo de composição de programas Sub-programa está para peça de LEGO assim como um programa está para a construção](https://reader036.vdocuments.com.br/reader036/viewer/2022062700/552fc130497959413d8d46e3/html5/thumbnails/26.jpg)
Exercício 6
• A função booleana “ehPar” indica se um número inteiro (maior que zero) é par. Implemente duas versões desta função.– Usando a função mod– Usando apenas os operadores de subtração e
comparação