SlideShare uma empresa Scribd logo
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

PPTX
C# Strings
PPTX
Regular Expressions 101 Introduction to Regular Expressions
PDF
Curso de inglês basico para concurso
PPTX
[OOP - Lec 18] Static Data Member
PPTX
Aula 07 - Visualg e Pseudocódigo
PPT
Logica Algoritmo 07 Subalgoritmos
PDF
Apostila de Introdução aos Algoritmos - usando o Visualg
PDF
Caderno didatico pascal
C# Strings
Regular Expressions 101 Introduction to Regular Expressions
Curso de inglês basico para concurso
[OOP - Lec 18] Static Data Member
Aula 07 - Visualg e Pseudocódigo
Logica Algoritmo 07 Subalgoritmos
Apostila de Introdução aos Algoritmos - usando o Visualg
Caderno didatico pascal

Destaque (20)

PDF
Aula 02 operadores aritiméticos
PDF
Guia Rápido Da Linguagem Pascal
PPT
Módulo 2 pascal
PPTX
Passar de algoritmo para pascal
PDF
Aula 03 estrutura de seleção
PDF
Apostila pascal
PDF
Apostila pascal
PDF
PDF
Apostila curso php_my_sql(portugues)
PDF
Estruturação de Linguagens de Programação (Pascal e C++)
PDF
Apostila de-delphi
PDF
Aula 01 introdução a linguagem pascal
PDF
Agoritmo e l gica de programa--o - apostila pascal
DOC
Pascal
ODP
Pascal Unit
PDF
DOCX
Marinha concursos
PDF
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
PDF
Exercícios para EsSA
PPTX
Atari 2600 Programming for Fun
Aula 02 operadores aritiméticos
Guia Rápido Da Linguagem Pascal
Módulo 2 pascal
Passar de algoritmo para pascal
Aula 03 estrutura de seleção
Apostila pascal
Apostila pascal
Apostila curso php_my_sql(portugues)
Estruturação de Linguagens de Programação (Pascal e C++)
Apostila de-delphi
Aula 01 introdução a linguagem pascal
Agoritmo e l gica de programa--o - apostila pascal
Pascal
Pascal Unit
Marinha concursos
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
Exercícios para EsSA
Atari 2600 Programming for Fun
Anúncio

Semelhante a Aula 05 subprogramas (20)

PDF
Lógica de programação pascal
PDF
Subalgoritmos Profª Letíca Lopes
PDF
Algumas notas sobre pascal
PDF
Algoritmos e Lógica de Programação
PPT
Pesquisa ppi 2
PDF
Comandos de Controle de Programa em C
PDF
Apostila linguagem pascal
PDF
Algoritmos computacionais
PPTX
PDF
Apostila de-introdução-à-linguagem-c
PDF
Algoritmo estruturado
PDF
Aulas 13 e 14 - Algoritmos
PDF
ICC - Aula 02 - Algoritmo estruturado, constantes, variáveis e comentários
PPTX
1-Introdução paea quatiad de daos dosbre
PPTX
BOOTSTRAP EXEMPLO DE PAGIAN CRIADA COM O FRAMEWORK
PDF
Programação orientada a objetos – III
PDF
Atualização Java 8 (2014)
PPTX
Linguagem Java- Iniciação à programação Java
PPTX
Introdução a Linguagem C.pptx [Reparado].pptx
Lógica de programação pascal
Subalgoritmos Profª Letíca Lopes
Algumas notas sobre pascal
Algoritmos e Lógica de Programação
Pesquisa ppi 2
Comandos de Controle de Programa em C
Apostila linguagem pascal
Algoritmos computacionais
Apostila de-introdução-à-linguagem-c
Algoritmo estruturado
Aulas 13 e 14 - Algoritmos
ICC - Aula 02 - Algoritmo estruturado, constantes, variáveis e comentários
1-Introdução paea quatiad de daos dosbre
BOOTSTRAP EXEMPLO DE PAGIAN CRIADA COM O FRAMEWORK
Programação orientada a objetos – III
Atualização Java 8 (2014)
Linguagem Java- Iniciação à programação Java
Introdução a Linguagem C.pptx [Reparado].pptx
Anúncio

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