1 / 26

Sub- programas

Sub- programas. 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. Sub-programa e funções matemáticas. Mecanismo de composição de programas Como na matemática Possui entrada (argumentos) e saída (resultado)

marja
Télécharger la présentation

Sub- programas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sub-programas

  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.

  3. 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 • Programapossuiestado. Funções (em Pascal) podemmodificaresteestado

  4. 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.

  5. Exemplo na matemática • Para qualquer x e y int., f(x,y) = x * y programMain; type ...{declarações de tipo} var a,b: int; {declarações de variáveis} functionmult(x,y: integer): integer; begin mult:= x * y; end; Begin readln(a, b); println(‘o resultado da multiplicacaoeh: ’, mult(a,b)); end.

  6. Por que definir funções em programas?

  7. Por que definir funções em programas? É importante organizar código em módulos!

  8. 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.

  9. Procedimentos

  10. Procedimentos em Pascal programMain; type ... var ... procedureproc1() ... procedureproc2() ... procedureprocN() ... begin ... end. definições usos

  11. Procedimentos em Pascal procedurenome(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;

  12. Visibilidade programMain; type ...{declarações de tipo} var a,b: int; {declarações de variáveis} functionmult(x,y: integer): integer; begin mult:= x * y; end; functionadd(x,z: integer): integer; var t : integer; begin t := x + z; add := t; end; begin readln(a, b); println(‘o resultado da multiplicacaoeh: ’, mult(a,b)); end. variáveis globais parâmetros variáveis locais

  13. Passagem de parâmetro por cópia e referência program Referencia; var k : integer; procedureAddRef(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 sideeffecton k} writeln('>',k); readln() end. passagem por referência passagem por cópia

  14. Exemplo program Matrizes; usescrt; { biblioteca auxiliar } type matriz = array[1..10,1..10] ofinteger; var a,b:matriz; n:integer; procedurelermatriz(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; ...

  15. Exemplo program Matrizes; usescrt; { biblioteca auxiliar } type matriz = array[1..10,1..10] ofinteger; var a,b:matriz; n:integer; procedurelermatriz(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; ... x e c são parâmetros de entrada, mas c é passado por referência variáveis locais

  16. Exercício • Defina um procedimento para calcular e imprimir o valor da exponenciação de um número a por outro b.

  17. Funções

  18. Definição • Em pascal, tipo especial de procedimento que retorna um valor

  19. Sintaxe functionnome(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;

  20. Sintaxe Note que uma função possui tipo! functionnome(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;

  21. Exercício 1 • Escreva um programaquerecebaduasfrações (quatro inteiros) ordinárias e mostre o resultado em forma de fração

  22. Exercício 2 • Modifique o programa anterior para simplificar a fração resultado pelo máximo divisor comum

  23. 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

  24. 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

  25. 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

  26. 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

More Related