Buscar

Curso Virtual Pascal Aula 27

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 1/7
Aula 27: Subprogramas : Subrotinas e Exercícios 
Objetivos:
       Esta aula destina­se ao estudo de Subprogramas. Procedimentos. Parâmetros: passagem
de parâmetros por variável e  por valor.
Material de Referência:
Livro "Introdução à Ciência da Computação", Agosto de 1999, Antonio Benedito Coimbra Sampaio;
SCHMITZ, Eber Assis. TELES, Antônio Anibal de Souza. PASCAL e Técnicas de Programação ­ Rio de Janeiro ­ RJ .:
LTC Editora, 1988.
Atividades da Unidade:
1. Registrar presença
2. Seguir Roteiro Abaixo:
Anterior.gif
(632
Procedimentos Exercícios
 
1. Procedimentos
Definição
    Um procedimento é uma estrutura de programa autônoma que está incluída num programa em Pascal. Nele podem
ser colocados todos os elementos da linguagem Pascal, como se fosse um programa completo, isso é feito através de
sua declaração.
        Um  procedimento  pode  ser  referido  escrevendo  simplesmente  o  seu  nome  seguido  de  um  lista  opcional  de
parâmetros.  Quando  um  procedimento  é  referenciado,  o  controle  de  execução  do  programa  é  automaticamente
transferido para o início do procedimento. As instruções de execução dentro do procedimento são então executadas,
tendo em conta quaisquer declarações especiais que sejam únicas para o procedimento. Quando todas as instruções de
execução  tiverem sido executadas, o controle passa automaticamente para a  instrução  imediatamente a seguir à da
chamada do procedimento.
Declaração
procedure Nome_Do_Procedimento( Lista­parametros );
[ declaração de rótulos ]
[ declaração de constantes ] { Declarações Locais }
[ declaração de tipos ]
[ declaração de variáveis ]
[ declaração de subprogramas ]
begin
comando [ ; comando] ... { Corpo do Procedimento }
end;
02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 2/7
 
Exemplo
program Encontro;
var Nome : string[ 15 ];
procedure Elogio;
    begin
    writeln( ´Bonito Nome´ );
    writeln( ´Um dos meus favoritos´ );
end;
BEGIN
    writeln( ´Qual o seu nome ? ´);
    readln( Nome );
    Elogio;
    writeln( ´Prazer em conhece­la, ´, Nome );
END.
Ao executar o programa acima, seria exibido o seguinte diálogo na tela :
Para um procedimento simples como o que foi declarado acima, a sintaxe é a seguinte :
procedure Nome­do­Procedimento;
begin
comando [ ; comando ] ...
end;
       A primeira  linha da declaração chama­se cabeçalho do procedimento que, de acordo com a sintaxe, consiste da
palavra  reservada  procedure  seguida  por  um  identificador  que  irá  servir  como  nome  do  procedimento.  Após  o
cabeçalho, temos o corpo do procedimento que consiste de um comando composto.
    A declaração de um procedimento é feita na parte de declarações do programa principal. O nome do procedimento
colocado dentro do corpo do programa principal é considerado como uma chamada do procedimento. As chamadas
de um procedimento podem ocorrer onde pode ser usado qualquer outro comando do Pascal.
VARIAVEIS LOCAIS E GLOBAIS:
VARIAVEIS LOCAIS:
        Para  facilitar  o  entendimento  do  conceito  de  variáveis  locais,  imagine  um  grande  programa  (com  vários
procedimentos)  escrito  simultaneamente  por  diversos  programadores.  Cada  programador  não  precisa  preocupar­se
com os nomes das variáveis que outro esteja utilizando para desenvolver o seu procedimento. Cada variável só vale
dentro do seu respectivo procedimento e deve ser declarada cada vez que se fizer presente. Os valores contidos em
variáveis locais perdem­se após a execução do procedimento.
VARIAVEIS GLOBAIS:
    Estas variáveis valem para qualquer parte do programa, exceto no caso de ser novamente declarada como variável
local dentro de um procedimento. Toda declaração de variáveis é feita no início do programa.
Exemplo:
02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 3/7
program Prog19;
{­­ DECLARAÇÃO DE VARIÁVEIS GLOBAIS­­}
var I: integer;
procedure TESTE;
var I : integer;
begin
I := 5;
end;
{­­* PROGRAMA PRINCIPAL *­­}
begin
I := 1;
TESTE;
writeIn(I);
end.
       OBSERVAÇÃO: Ao dar RUN no programa anterior,  o valor  impresso na  tela deverá  ser  1  e não 5,  apesar da
variável I ter sido também declarada dentro do procedimento (variável local que perde o seu valor após a execução do
procedimento).  Esta  declaração  tornou­a  uma  variável  local  e  portanto,  distinta  da  I  global.  Se  retirássemos  a
declaração da variável I que está dentro do procedimento esta seria tratada como variável global e o resultado a ser
impresso seria 5.
PASSAGEM DE PARAMETROS:
    Um procedimento pode trabalhar com valores, mesmo que não sejam usadas variáveis globais. Para isto temos um
recurso  chamado passagens  de  parâmetro. O grande  poder  dos  parâmetros  está  nesta  correta  passagem de  valores
entre o programa principal/procedimento e o procedimento chamado.
Observe o exemplo abaixo:
Program Prog;
procedure MULT(A,B : real);
begin
writeIn(A * B);
end;
{­­* PROGRAMA PRINCIPAL *­­}
begin
MULT (3,5);
end.
OBS.: O programa anterior consiste em um procedimento que imprime o valor do produto de dois números recebidos
pela  passagem  de  parâmetros  e  um  programa  principal  que  manda  executar  o  procedimento MULT  enviando  os
valores numéricos 3 e 5 como parametro.
Observações:
­ Não foi utilizada nenhuma variável global.
­  As  variáveis  A  e  B  do  procedimento  não  precisam  ser  declaradas,  pois  são  variáveis  de  passagem  e  foram
02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 4/7
declaradas no início do procedimento na linha do comando procedure.
­ O programa principal não utiliza nenhuma variável.
­ As variaveis de passagem recebem os valores na mesma ordem em que são declaradas como parâmetros. Isto quer
dizer que, para efeito de cálculo dentro do procedimento MULT, o A assumiu o valor 3 e B assumiu o valor 5. . .
Outro exemplo:
Program Prog;
procedure MULT(A,B: REAL);
var
C : real; (­­ VARIÁVEL LOCAL ­­ j.
begin
C := A*B;
writeln(C);
end.
{­* PROGRAMA PRINCIPAL *­­}
begin
MULT(3,5);
end.
OBS.:  Neste  programa  foi  incluída  a  variável  C,  que  é  local,  para  armazenamento  temporário  do  resultado  da
multiplicação.  É  interessante  separar  cada  um  dos  módulos  do  programa  de  forma  bem  visível  para  facilitar  o
acompanhamento, principalmente se os programas forem ficando extensos.
Utilizando  somente  variáveis  globais,  não  haveria  necessidade  de  passar  parâmetros  para  o  procedimento  e  o
programa ficaria assim:
program Prog;
var
A,B,C : real (­­ VARIÁVEIS GLOBAIS ­­)
procedure MULT;
begin
C := A * B;
writeIn (C);
end;
{­­* PROGRAMA PRINCIPAL *­­}
begin
A := 3 ;
B := 5;
MULT;
end.
OBS.:  Neste  caso,  o  writeln  poderia  estar  no  programa  principal  que  iria  imprimir  do  mesmo  modo  o  mesmo
resultado, desde que estivesse posicionado após a chamada do procedimento.
02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 5/7
       Há mais um modo de  trabalhar  com PROCEDIMENTO. Até  agora,  os valores  eram passados  a partir  de uma
chamada  para  o  PROCEDIMENTO.  O  processo  inverso,  ou  seja,  passar  valores  de  um  procedimento  para  o
programa principal ou procedimento que o chamou, pode ser efetuado mediante uma pequena alteração na declaração
local, acrescentando o comando var.
Exemplo:
program Prog;
var A,B,C : real;procedure MULT(X,Y : real; var Z: real);
begin
Z := X * Y;
end;
{­­* PROGRAMA PRINCIPAL *­­}
begin
A := 3;
B := 5;
MULT(A,B,C);
writeIn(C);
end.
OBS.: Quando se usa este tipo de declaração do procedimento (usando var), permite­se que um valor seja retomado
de um procedimento para utilização fora dele.
No exemplo, a variável local Z passou o valor 15 de volta para a variável global C, quando o processamento retornou
do procedimento para o programa principal.
Vejamos os dois exemplos a seguir:
program Prog;
var
A,B : real;
procedure SOMA(X,Y : real);
begin
X := X + Y;
writeIn (X);
end;
{­­* PROGRAMA PIIINCIPAL *­­}
begin
A := 2;
B := lo;
SOMA (A,B);
writeIn (A);
end.
02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 6/7
OBS.: Os resultados obtidos ao rodar o programa acima são, respectivamente 12 e 2. Observe que a variável global A
permanece com o mesmo valor, pois houve apenas a passagem de parâmetro no sentido de ida.
program Prog;
var A,B : real;
procedure SOMA(var X,Y : real);
begin
X := X + Y;
writeIn (X);
end;
{­­* PROGRAMA PRINCIPAL ­­}
begin
A := 2;
B := lo;
SOMA(A,B);
writeIn (A);
end.
    Desta vez, os resultados impressos são respectivamente 12 e 12. Devido a presença do var na declaração, o valor
da variável X foi passado de volta para a variável A ao retornar para o programa principal.
 
2. Exercícios
1. Construa uma sub­Rotina para ler uma matriz NXM DO tipo INTEGER. Os valores N e M deverão ser lidos.
2. Faça uma sub­Rotina para ler um vetor A de N elementos, e um vetor B de M elementos. Os valores M e N
deverão ser lidos.
3. Faça um algoritmo para ler as informações de N alunos, tais como: Nome, idade e sexo. Após construa sub­Rotina
para: a ­ Emitir um relatório ordenado crescentemente pelo Nome; b ­ Emitir um relatório ordenado
decrescentemente pela idade; c ­ Informar qual o percentual de alunos do sexo feminino.
4. Faça uma PROCEDURE para desenhar uma moldura no vídeo.
5 ­ Faça uma "PROCEDURE" para calcular A elevado a um expoente B.
6 ­ Faça uma "PROCEDURE" para calcular o fatorial de um número X qualquer.
7 ­ Faça um algoritmo para calcular a seguinte expressão matemática:
 
 
8 ­ Faça uma PROCEDURE que informe se uma STRING qualquer é palíndrome.
9 ­ Faça um algoritmo que leia um vetor de números inteiros. Após, emita um relatório com cada número diferente, e
02/06/2016 Curso Virtual Pascal ­ Aula 27
http://www.ufpa.br/sampaio/curso_de_icc/pascal/Aula_27_Pascal.htm 7/7
o número de vezes que o mesmo apareceu repetido no vetor.
Anterior.gif
(632

Outros materiais