SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
INTRODUÇÃO A
LINGUAGEM PASCAL
Profº.: Tácito Henrique
tacito.graca@gmail.com
CEMA – Centro Educacional Miguel Alves
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
SUBPROGRAMAS
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
O que são subprogramas?
• O programa Ordena3 contém algumas sequências de comandos idênticas como:
begin
Aux := x;
x := y;
y := Aux;
end;
begin
Aux := x;
x := z;
z := Aux;
end;
begin
Aux := y;
y := z;
z := Aux;
end
• Os objetivos é permutar os conteúdos das variáveis: x e y, na primeira sequência;
x e z na segunda e y e z na terceira sequência. Ou seja, estas sequências tinham
o mesmo objetivo: permutar conteúdos de variáveis.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Porque usar subprogramas?
• Para evitar repetições de sequências idênticas
• Melhor legibilidade do programa
• O programa pode ser desenvolvido em equipe, cada
membro se encarregando do desenvolvimento de alguns
dos seus subprogramas.
• A validação do programa através de testes pode ser
realizada testando-se cada um dos subprogramas
isoladamente, o que facilita a detecção e identificação de
erros de lógica.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Porque usar subprogramas?
• Atualizações posteriores do programa (atos chamados
genericamente de manutenção do programa) são
facilitadas, pelo fato de que apenas atualizações em
alguns subprogramas são requeridas.
• Quando há necessidade de que o programa determine a
mesma grandeza para valores diferentes.
Exemplos: média aritmética, mediana, desvio médio, desvio padrão
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Procedimentos (Procedures)
• Os procedimentos devem ser definidos antes do
programa principal utilizando-se a seguinte sintaxe:
procedure Identificador(var lista de parâmetros : tipo de dado);
declarações e definições
begin
sequência de comandos
end;
• Sendo as regras para o estabelecimento do identificador
as mesmas utilizadas para a escolha do identificador do
programa e a indicação var para os parâmetros é
opcional.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Procedimentos (Procedures)
• Os parâmetros de um procedimento servem para permitir
que o mesmo seja "executado" para conjuntos de dados
diferentes
• Os parâmetros devem ser fornecidos no momento da
“ativação” ou “declaração”
• Os dados que substituirão os parâmetros quando o
procedimento for executado são chamados de
argumentos
• Os argumentos obrigatoriamente deve ser do mesmo
tipo de dado do parâmetro.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Exercícios Resolvidos
Exercício 1
program Ordena3;
var x, y, z : real;
begin
Aux := x;
x := y;
y := Aux;
end;
begin
Aux := x;
x := z;
z := Aux;
end;
begin
Aux := y;
y := z;
z := Aux;
end
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Exercícios Resolvidos
Exercício 1
program Ordena3;
var x, y, z : real;
{procedimento que permuta os conteúdos de duas variáveis}
procedure Troca(var v1, v2 : real); //Declaração da procedure
var Aux : real;
begin
Aux := v1;
v1 := v2;
v2 := Aux;
end;
{programa principal}
begin
write('Digite os três números');
readln(x, y, z);
writeln('Valores dados: x = ', x:0:2, ', y = ', y:0:2, ' e z = ', z:0:2);
if (x > y) or (x > z)
then
if y > z
then
Troca(x, z) //Chamada da procedure
else
Troca(x, y); //Chamada da procedure
if y > z
then
Troca(y, z); //Chamada da procedure
writeln('Valores dados, agora ordenados: x = ', x:0:2, ', y = ', y:0:2, ‘ e z = ', z:0:2);
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Procedimentos (Procedures)
• Observações importantes
• A ativação da procedure é feita com a simples referência ao seu
identificador junto com os argumentos;
• Os comentários são essenciais para facilitar a identificação do
objetivo da procedure;
• Os comandos readln e writeln são exemplos de procedimentos
predefinidos da linguagem;
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Funções (functions)
• As funções, além de poderem executar ações genéricas,
podem retornar valores;
• A declaração segue de acordo com a seguinte sintaxe :
function Identificador(var lista de parâmetros : tipo de dado) : tipo de dado;
declarações e definições
begin
seqüência de comandos;
end;
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Funções (functions)
• Se a função deve retornar um valor, este valor será do tipo de
dado fixado na sua declaração, que é necessariamente um
tipo de dado simples ou uma string
Exemplo:
function mediaAritmetica(var a,b,c : integer) : real;
• É necessário que haja uma atribuição a um tipo compatível
com o retorno da função;
Exemplo:
Var Resultado : real;
begin
resultado := mediaAritmetica(10, 7, 5);
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Exercícios Resolvidos
Exercício 2
{Programa que soma das frações ordinárias}
program SomaFracoes;
var Num1, Den1, Num2, Den2, Num, Den: integer;
begin
writeln('Digite as fracoes');
readln(Num1, Den1, Num2, Den2);
Num := Num1 * Den2 + Num2 * Den1;
Den := Den1 * Den2;
writeln('(', Num1, '/', Den1, ') + (', Num2, '/', Den2,') = (',
Num, '/', Den, ')');
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Exercícios Resolvidos
Exercício 2
{Programa que soma das frações ordinárias}
program SomaFracoes;
var Num1, Den1, Num2, Den2, Num, Den: integer;
begin
writeln('Digite as fracoes');
readln(Num1, Den1, Num2, Den2);
Num := Num1 * Den2 + Num2 * Den1;
Den := Den1 * Den2;
writeln('(', Num1, '/', Den1, ') + (', Num2, '/', Den2,') = (',
Num, '/', Den, ')');
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Exercícios Resolvidos
Exercício 2
program SomaFracoes;
var Num1, Den1, Num2, Den2, Num, Den, Mdc: integer;
{função que retorna o maximo divisor comum de dois inteiros dados}
function MaxDivComum(x, y : integer) : integer;
var Resto : integer;
begin
Resto := x mod y;
while Resto <> 0 do
begin
x := y; //Corpo da função
y := Resto;
Resto := x mod y;
end;
MaxDivComum := y;
end;
{programa principal}
begin
writeln('Digite as fracoes');
readln(Num1, Den1, Num2, Den2);
Num := Num1 * Den2 + Num2 * Den1;
Den := Den1 * Den2;
Mdc := MaxDivComum(Num, Den); //Chamada da função e associação do resultado à variável Mdc
Num := Num div Mdc;
Den := Den div Mdc;
writeln('(', Num1, '/', Den1, ') + (', Num2, '/', Den2,') = (', Num, '/', Den, ')');
end.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Passagem de Parâmetros
• No procedimento Troca do exemplo 1, as definições dos
parâmetros eram precedidas da palavra reservada var
• Mas nas definições dos parâmetros da função
MaxDivComum isso não acontecia.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Passagem de Parâmetros
• No procedimento Troca do exemplo 1, as definições dos
parâmetros eram precedidas da palavra reservada var
• Mas nas definições dos parâmetros da função
MaxDivComum isso não acontecia.
• Porque? O que há de diferente entre esses dois
subprogramas?
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Passagem de Parâmetros
• No primeiro, se pretendia que o procedimento tivesse
influência nos conteúdos das variáveis passadas como
argumentos;
• Enquanto que, no segundo, os conteúdos das variáveis
passadas como argumentos não deveriam ser
modificados pelos comandos da função;
• Quando isso é útil?
• Quando um subprograma precisa modificar uma variável global
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Passagem de Parâmetros
• Quando não se pretende que comandos do subprograma não interfiram em
conteúdos de variáveis globais, a declaração dos parâmetros não é precedida da
palavra var e o parâmetro recebe um elemento do seu tipo de dado;
1. constantes do tipo de dado do parâmetro respectivo;
2. conteúdos de variáveis do mesmo tipo de dado;
3. expressões cujos resultados sejam daquele tipo.
• Neste caso, a passagem de parâmetros é dita por valor.
• Exemplos:
Procedure atualizarRamal(var ramalNovo, ramalAntigo:char)
• Passagem por referência (Interfere nas variáveis globais)
Function atualizarRamal(ramalNovo, ramalAntigo:char)
• Passagem por valor (Não interfere nas variáveis globais)
• Um outro aspecto interessante é que a passagem de parâmetros por referência
permite que se substitua uma função por um procedimento. Basta que se utilize
um parâmetro por referência para retornar o valor para uma variável global.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
Exercícios de Fixação
• Para cada problema a seguir, crie uma função e codifique um programa para
testá-la:
1. Dado um número natural, determine se ele é par ou ímpar.
2. Dados dois números reais, determine o máximo entre eles.
3. Dados quatro números reais, determine a média aritmética entre eles.
Profº.: Tácito Henrique ::: Introdução a linguagem Pascal

Mais conteúdo relacionado

Mais procurados

Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
Mauro Pereira
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 Repeticao
Regis Magalhães
 
Aula 6 1 linguagem pascal-parte_1
Aula 6   1 linguagem pascal-parte_1Aula 6   1 linguagem pascal-parte_1
Aula 6 1 linguagem pascal-parte_1
Duane Bertoldo
 
53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009
starley lobo
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
apolllorj
 

Mais procurados (20)

Java4
Java4Java4
Java4
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Algoritmos - Comandos de Repetição
Algoritmos - Comandos de RepetiçãoAlgoritmos - Comandos de Repetição
Algoritmos - Comandos de Repetição
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Algoritmos - Pascal
Algoritmos - PascalAlgoritmos - Pascal
Algoritmos - Pascal
 
Algoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopes
 
Logica Algoritmo 05 Repeticao
Logica Algoritmo 05 RepeticaoLogica Algoritmo 05 Repeticao
Logica Algoritmo 05 Repeticao
 
Introdução à Linguagem C
Introdução à Linguagem CIntrodução à Linguagem C
Introdução à Linguagem C
 
Aula 6 1 linguagem pascal-parte_1
Aula 6   1 linguagem pascal-parte_1Aula 6   1 linguagem pascal-parte_1
Aula 6 1 linguagem pascal-parte_1
 
Visualg
VisualgVisualg
Visualg
 
53392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-200953392229 apostila-de-algoritmo-2009
53392229 apostila-de-algoritmo-2009
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
Algoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - LacosAlgoritmos - Aula 07 A - Lacos
Algoritmos - Aula 07 A - Lacos
 
C++ Funções
 C++ Funções C++ Funções
C++ Funções
 
Aula6 - Linguagem C
Aula6 - Linguagem CAula6 - Linguagem C
Aula6 - Linguagem C
 
Java1
Java1Java1
Java1
 
Parte1c
Parte1cParte1c
Parte1c
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Funções em C
Funções em CFunções em C
Funções em C
 

Destaque

Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
Regis Magalhães
 
Caderno didatico pascal
Caderno didatico pascalCaderno didatico pascal
Caderno didatico pascal
Alvaro Melo
 
Agoritmo e l gica de programa--o - apostila pascal
Agoritmo e l gica de programa--o - apostila pascalAgoritmo e l gica de programa--o - apostila pascal
Agoritmo e l gica de programa--o - apostila pascal
jucasalao
 
Exercícios para EsSA
Exercícios para EsSAExercícios para EsSA
Exercícios para EsSA
Jorge Pedro
 

Destaque (20)

Aula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e PseudocódigoAula 07 - Visualg e Pseudocódigo
Aula 07 - Visualg e Pseudocódigo
 
Logica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 SubalgoritmosLogica Algoritmo 07 Subalgoritmos
Logica Algoritmo 07 Subalgoritmos
 
Apostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o VisualgApostila de Introdução aos Algoritmos - usando o Visualg
Apostila de Introdução aos Algoritmos - usando o Visualg
 
Caderno didatico pascal
Caderno didatico pascalCaderno didatico pascal
Caderno didatico pascal
 
Guia Rápido Da Linguagem Pascal
Guia Rápido Da Linguagem PascalGuia Rápido Da Linguagem Pascal
Guia Rápido Da Linguagem Pascal
 
Módulo 2 pascal
Módulo 2  pascalMódulo 2  pascal
Módulo 2 pascal
 
Passar de algoritmo para pascal
Passar de algoritmo para pascalPassar de algoritmo para pascal
Passar de algoritmo para pascal
 
Apostila pascal
Apostila pascal Apostila pascal
Apostila pascal
 
Apostila pascal
Apostila pascalApostila pascal
Apostila pascal
 
Pascal
PascalPascal
Pascal
 
Apostila curso php_my_sql(portugues)
Apostila curso php_my_sql(portugues)Apostila curso php_my_sql(portugues)
Apostila curso php_my_sql(portugues)
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Apostila de-delphi
Apostila de-delphiApostila de-delphi
Apostila de-delphi
 
Agoritmo e l gica de programa--o - apostila pascal
Agoritmo e l gica de programa--o - apostila pascalAgoritmo e l gica de programa--o - apostila pascal
Agoritmo e l gica de programa--o - apostila pascal
 
Pascal
PascalPascal
Pascal
 
Pascal Unit
Pascal UnitPascal Unit
Pascal Unit
 
Apostila ib
Apostila ibApostila ib
Apostila ib
 
Marinha concursos
Marinha   concursosMarinha   concursos
Marinha concursos
 
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGOEVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
 
Exercícios para EsSA
Exercícios para EsSAExercícios para EsSA
Exercícios para EsSA
 

Semelhante a Aula 05 subprogramas

Linguagem de Programação - aula 04
Linguagem de Programação - aula 04Linguagem de Programação - aula 04
Linguagem de Programação - aula 04
Willian Carvalho
 

Semelhante a Aula 05 subprogramas (20)

Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
Algumas notas sobre pascal
Algumas notas sobre pascalAlgumas notas sobre pascal
Algumas notas sobre pascal
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
Pesquisa ppi 2
Pesquisa ppi 2Pesquisa ppi 2
Pesquisa ppi 2
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Apostila linguagem pascal
Apostila linguagem pascalApostila linguagem pascal
Apostila linguagem pascal
 
Algoritmos computacionais
Algoritmos computacionaisAlgoritmos computacionais
Algoritmos computacionais
 
Aula02
Aula02Aula02
Aula02
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-c
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - Algoritmos
 
ICC - Aula 02 - Algoritmo estruturado, constantes, variáveis e comentários
ICC - Aula 02 - Algoritmo estruturado, constantes, variáveis e comentáriosICC - Aula 02 - Algoritmo estruturado, constantes, variáveis e comentários
ICC - Aula 02 - Algoritmo estruturado, constantes, variáveis e comentários
 
Programação orientada a objetos – III
Programação orientada a objetos – IIIProgramação orientada a objetos – III
Programação orientada a objetos – III
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Linguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação JavaLinguagem Java- Iniciação à programação Java
Linguagem Java- Iniciação à programação Java
 
Java2
Java2Java2
Java2
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Linguagem de Programação - aula 04
Linguagem de Programação - aula 04Linguagem de Programação - aula 04
Linguagem de Programação - aula 04
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Linguagem C - Controle de Programa
Linguagem C - Controle de ProgramaLinguagem C - Controle de Programa
Linguagem C - Controle de Programa
 

Aula 05 subprogramas

  • 1. INTRODUÇÃO A LINGUAGEM PASCAL Profº.: Tácito Henrique tacito.graca@gmail.com CEMA – Centro Educacional Miguel Alves Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 2. SUBPROGRAMAS Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 3. O que são subprogramas? • O programa Ordena3 contém algumas sequências de comandos idênticas como: begin Aux := x; x := y; y := Aux; end; begin Aux := x; x := z; z := Aux; end; begin Aux := y; y := z; z := Aux; end • Os objetivos é permutar os conteúdos das variáveis: x e y, na primeira sequência; x e z na segunda e y e z na terceira sequência. Ou seja, estas sequências tinham o mesmo objetivo: permutar conteúdos de variáveis. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 4. Porque usar subprogramas? • Para evitar repetições de sequências idênticas • Melhor legibilidade do programa • O programa pode ser desenvolvido em equipe, cada membro se encarregando do desenvolvimento de alguns dos seus subprogramas. • A validação do programa através de testes pode ser realizada testando-se cada um dos subprogramas isoladamente, o que facilita a detecção e identificação de erros de lógica. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 5. Porque usar subprogramas? • Atualizações posteriores do programa (atos chamados genericamente de manutenção do programa) são facilitadas, pelo fato de que apenas atualizações em alguns subprogramas são requeridas. • Quando há necessidade de que o programa determine a mesma grandeza para valores diferentes. Exemplos: média aritmética, mediana, desvio médio, desvio padrão Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 6. Procedimentos (Procedures) • Os procedimentos devem ser definidos antes do programa principal utilizando-se a seguinte sintaxe: procedure Identificador(var lista de parâmetros : tipo de dado); declarações e definições begin sequência de comandos end; • Sendo as regras para o estabelecimento do identificador as mesmas utilizadas para a escolha do identificador do programa e a indicação var para os parâmetros é opcional. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 7. Procedimentos (Procedures) • Os parâmetros de um procedimento servem para permitir que o mesmo seja "executado" para conjuntos de dados diferentes • Os parâmetros devem ser fornecidos no momento da “ativação” ou “declaração” • Os dados que substituirão os parâmetros quando o procedimento for executado são chamados de argumentos • Os argumentos obrigatoriamente deve ser do mesmo tipo de dado do parâmetro. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 8. Exercícios Resolvidos Exercício 1 program Ordena3; var x, y, z : real; begin Aux := x; x := y; y := Aux; end; begin Aux := x; x := z; z := Aux; end; begin Aux := y; y := z; z := Aux; end Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 9. Exercícios Resolvidos Exercício 1 program Ordena3; var x, y, z : real; {procedimento que permuta os conteúdos de duas variáveis} procedure Troca(var v1, v2 : real); //Declaração da procedure var Aux : real; begin Aux := v1; v1 := v2; v2 := Aux; end; {programa principal} begin write('Digite os três números'); readln(x, y, z); writeln('Valores dados: x = ', x:0:2, ', y = ', y:0:2, ' e z = ', z:0:2); if (x > y) or (x > z) then if y > z then Troca(x, z) //Chamada da procedure else Troca(x, y); //Chamada da procedure if y > z then Troca(y, z); //Chamada da procedure writeln('Valores dados, agora ordenados: x = ', x:0:2, ', y = ', y:0:2, ‘ e z = ', z:0:2); end. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 10. Procedimentos (Procedures) • Observações importantes • A ativação da procedure é feita com a simples referência ao seu identificador junto com os argumentos; • Os comentários são essenciais para facilitar a identificação do objetivo da procedure; • Os comandos readln e writeln são exemplos de procedimentos predefinidos da linguagem; Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 11. Funções (functions) • As funções, além de poderem executar ações genéricas, podem retornar valores; • A declaração segue de acordo com a seguinte sintaxe : function Identificador(var lista de parâmetros : tipo de dado) : tipo de dado; declarações e definições begin seqüência de comandos; end; Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 12. Funções (functions) • Se a função deve retornar um valor, este valor será do tipo de dado fixado na sua declaração, que é necessariamente um tipo de dado simples ou uma string Exemplo: function mediaAritmetica(var a,b,c : integer) : real; • É necessário que haja uma atribuição a um tipo compatível com o retorno da função; Exemplo: Var Resultado : real; begin resultado := mediaAritmetica(10, 7, 5); end. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 13. Exercícios Resolvidos Exercício 2 {Programa que soma das frações ordinárias} program SomaFracoes; var Num1, Den1, Num2, Den2, Num, Den: integer; begin writeln('Digite as fracoes'); readln(Num1, Den1, Num2, Den2); Num := Num1 * Den2 + Num2 * Den1; Den := Den1 * Den2; writeln('(', Num1, '/', Den1, ') + (', Num2, '/', Den2,') = (', Num, '/', Den, ')'); end. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 14. Exercícios Resolvidos Exercício 2 {Programa que soma das frações ordinárias} program SomaFracoes; var Num1, Den1, Num2, Den2, Num, Den: integer; begin writeln('Digite as fracoes'); readln(Num1, Den1, Num2, Den2); Num := Num1 * Den2 + Num2 * Den1; Den := Den1 * Den2; writeln('(', Num1, '/', Den1, ') + (', Num2, '/', Den2,') = (', Num, '/', Den, ')'); end. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 15. Exercícios Resolvidos Exercício 2 program SomaFracoes; var Num1, Den1, Num2, Den2, Num, Den, Mdc: integer; {função que retorna o maximo divisor comum de dois inteiros dados} function MaxDivComum(x, y : integer) : integer; var Resto : integer; begin Resto := x mod y; while Resto <> 0 do begin x := y; //Corpo da função y := Resto; Resto := x mod y; end; MaxDivComum := y; end; {programa principal} begin writeln('Digite as fracoes'); readln(Num1, Den1, Num2, Den2); Num := Num1 * Den2 + Num2 * Den1; Den := Den1 * Den2; Mdc := MaxDivComum(Num, Den); //Chamada da função e associação do resultado à variável Mdc Num := Num div Mdc; Den := Den div Mdc; writeln('(', Num1, '/', Den1, ') + (', Num2, '/', Den2,') = (', Num, '/', Den, ')'); end. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 16. Passagem de Parâmetros • No procedimento Troca do exemplo 1, as definições dos parâmetros eram precedidas da palavra reservada var • Mas nas definições dos parâmetros da função MaxDivComum isso não acontecia. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 17. Passagem de Parâmetros • No procedimento Troca do exemplo 1, as definições dos parâmetros eram precedidas da palavra reservada var • Mas nas definições dos parâmetros da função MaxDivComum isso não acontecia. • Porque? O que há de diferente entre esses dois subprogramas? Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 18. Passagem de Parâmetros • No primeiro, se pretendia que o procedimento tivesse influência nos conteúdos das variáveis passadas como argumentos; • Enquanto que, no segundo, os conteúdos das variáveis passadas como argumentos não deveriam ser modificados pelos comandos da função; • Quando isso é útil? • Quando um subprograma precisa modificar uma variável global Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 19. Passagem de Parâmetros • Quando não se pretende que comandos do subprograma não interfiram em conteúdos de variáveis globais, a declaração dos parâmetros não é precedida da palavra var e o parâmetro recebe um elemento do seu tipo de dado; 1. constantes do tipo de dado do parâmetro respectivo; 2. conteúdos de variáveis do mesmo tipo de dado; 3. expressões cujos resultados sejam daquele tipo. • Neste caso, a passagem de parâmetros é dita por valor. • Exemplos: Procedure atualizarRamal(var ramalNovo, ramalAntigo:char) • Passagem por referência (Interfere nas variáveis globais) Function atualizarRamal(ramalNovo, ramalAntigo:char) • Passagem por valor (Não interfere nas variáveis globais) • Um outro aspecto interessante é que a passagem de parâmetros por referência permite que se substitua uma função por um procedimento. Basta que se utilize um parâmetro por referência para retornar o valor para uma variável global. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal
  • 20. Exercícios de Fixação • Para cada problema a seguir, crie uma função e codifique um programa para testá-la: 1. Dado um número natural, determine se ele é par ou ímpar. 2. Dados dois números reais, determine o máximo entre eles. 3. Dados quatro números reais, determine a média aritmética entre eles. Profº.: Tácito Henrique ::: Introdução a linguagem Pascal