A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato

Apresentações semelhantes


Apresentação em tema: "Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato"— Transcrição da apresentação:

1 Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato luanna_lobato@dc.ufscar.br Professor: Sérgio Donizetti Zorzo Mestrado em Ciência da Computação Sistemas Distribuídos e Redes São Carlos – Maio 2006 “Introdução a Computação”

2 Introdução Evolução do Software –Problemas mais complexos; –Aumento do código; –Replicação de código; –Difícil acompanhar os trechos dos programas. Utiliza-se Funções ou Procedimentos Trechos devem ser coerentes –Cada um deve ter uma função ou tarefa definida.

3 Procedimentos: Procedimentos são rotinas chamadas pelo programa principal para executar alguma operação específica; Forma Geral: procedure nomeProc (lista_de_parametros) Declaração Variáveis {Área de Declarações} begin Comandos {Corpo do Procedimento} end;

4 Exemplo de atribuição procedure nomeProc (lista_de_parametros) Declaração Variáveis {Área de Declarações} begin Comandos {Corpo do Procedimento} end; É possível definir constantes, tipos, declarar variáveis, funções e outros procedimentos, da mesma forma como declarados no programa principal. São válidos apenas no escopo do procedimento.

5 Procedimentos Para chamar o procedimento, basta utilizar seu nome no programa principal; A execução é desviada do programa principal até o procedimento, para que este seja executado e depois retorna na linha do programa principal abaixo do linha da chamada do procedimento;

6 Procedimentos Program exemplo; var i: integer;... {Declaração de variáveis} procedure exemplo(i:integer); begin... {corpo do procedimento} end; begin... {corpo do programa} exemplo(i) {chama procedimento}... {corpo do programa} end.

7 Procedimentos - Exemplo 1 Informar dados do aluno (nome, idade); Calcula a média das notas; Imprime os dados do aluno e média. Implementar a parte de imprimir como procedimento.

8 Procedimentos - Exemplo 1 Program dados_aluno; type tipoaluno = record nome: string; idade: integer; notas: array[1..5] of real; end; var aluno : tipoaluno; media,soma : real; i : integer; procedure imprime_dados(aluno:tipoaluno; media: real); begin writeln(aluno.nome); writeln (aluno.idade); writeln (media:4:3); end;

9 {... continuação} begin readln(aluno.nome); readln(aluno.idade); for i:=1 to 5 do begin readln (aluno.notas[i]); end; soma:=0; for i:=1 to 5 do begin soma:=soma+aluno.notas[i]; end; media:=soma/5; imprime_dados(aluno,media); end.

10 Exercício 1: Utilizar o programa anterior e criar uma rotina de Calcular a média.

11 Resolução - Exercício 1 Program dados_aluno; type tipoaluno = record nome: string; idade: integer; notas: array[1..5] of real; end; var aluno : tipoaluno; i : integer; media : real;

12 procedure imprimirdados(aluno:tipoaluno; media:real); begin writeln(aluno.nome); writeln (aluno.idade); writeln (media:4:3); end; {... continuação}

13 procedure calcularmedia(aluno: tipoaluno); var media, soma: real; i: integer; begin soma:=0; for i:=1 to 5 do begin soma:=soma + aluno.notas[i]; end; media:=soma/5; imprimirdados(aluno,media); end; {... continuação}

14 {corpo do programa principal} begin writeln (‘Digite o nome do aluno’); readln(aluno.nome); writeln (‘Digite a idade do aluno’); readln(aluno.idade); writeln (‘Digite as 5 notas do aluno’); for i:=1 to 5 do begin readln (aluno.notas[i]); end; calcularmedia(aluno); end. {... continuação}

15 Observações Se você for chamar um modulo (procedimento ou funcao), lembre-se que este modulo deve ter sido declarado previamente. Procedure a () begin... end; Procedure b () begin a(); //a dever ter sido declarado primeiro end; Programa Principal.... b();...

16 Funções: Uma Função é parecida com os Procedimentos, tem praticamente a mesma estrutura; Retorna um valor; Forma Geral: function nomeFunc (lista_de_parametros): tipo de dado a ser retornado Declaração Variáveis {Área de Declarações} begin Comandos {Corpo da Função} end;

17 Exemplo de atribuição function nomeFunc (lista_de_parametros): tipo Declaração Variáveis {Área de Declarações} begin Comandos {Corpo da Função} nomeFunc:= x; end; O nome da variável que vai retornar tem que ser igual ao nome da função.

18 Funções Program exemplo; var i: integer;... {Declaração de variáveis} function exemplo(i:integer): integer; begin... {corpo da função} end; begin... {corpo do programa} exemplo(i) {chama função}... {corpo do programa} end.

19 Funções - Exemplo 2 Informar dois números; Definir maior número; Retornar o valor do maior número; Imprimir o resultado no Programa Principal. Implementar a parte de verificar maior número através de Função.

20 Program calc_max; var max, a, b: integer; function maximo(a,b:integer): integer; begin if(a>b) then maximo := a else maximo := b; end; Procedimentos - Exemplo 1

21 ... continuação begin writeln(‘Digite dois números’); readln(a, b); max := maximo(a,b); writeln(‘O valor maximo é ', max) end. As 2 últimas linhas dentro do bloco poderia ser: writeln(‘O valor maximo é ', maximo(a,b));

22 Exercício 2: Utilizar o programa anterior e criar uma rotina de Calcular a Fatorial. Ler um nro inteiro; Chamar uma função e passar esse nro.

23 Program Fatorial; function fat(n:integer): integer; {Início da Função} var F,i:integer; begin F:=1; for i:=2 to n do F:=F*i; fat:=F; end; {Fim da função} {Programa Principal} var n:integer begin writeln(‘Entre com o número: ‘); readln(n); writeln(‘O fatorial de ‘,n,’ é: ‘,fat(n)); end. Resolução - Exercício 2

24 Passagem por Valor: apenas o valor da variável é passado; Passagem por Referência: A variável é passada. –Utiliza-se o Var antes do parâmetro. Passagem por Valor e por Referência

25 Exemplo

26 ... continuação

27 Função

28 Program dadosaluno; var nome: string; procedure mostranome(parametro:string); begin writeln('*********************************'); writeln(' Valor original', parametro); parametro:= 'Luanna'; writeln(' Valor modificado',parametro); end; {corpo do Programa Principal} begin nome := 'Zorzo'; mostranome(nome); writeln('Valor no programa', nome); readln; end. Passagem por Valor

29 Passagem por Referência Program dadosaluno; var nome: string; procedure mostranome(var parametro:string); begin writeln('*********************************'); writeln(' Valor original', parametro); parametro:= 'Luanna'; writeln(' Valor modificado',parametro); end; {corpo do Programa Principal} begin nome := 'Zorzo'; mostranome(nome); writeln('Valor no programa', nome); readln; end.


Carregar ppt "Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato"

Apresentações semelhantes


Anúncios Google