31
Prof. Anderson Fernandes Unidade 3 Estruturas de Programação

LP 1 - Unidade 4

Embed Size (px)

DESCRIPTION

Procedure, functions

Citation preview

Page 1: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Unidade 3 Estruturas de Programação

Page 2: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Unidade 3.1 Estrutura Seqüêncial

Page 3: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Estrutura  Seqüêncial  

início  

     inteiro:  A,  B;    

     leia  (A,B);  

     C:=  (A+B)*B;  

     imprima  (C);  

fim.  

Page 4: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Sequência  

program Calculo; var A,B,C: real; begin

read (A, B); C:=(A+B)*B; write (A, B, C);

end.

Page 5: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Unidade 3.2 Estrutura de Decisão

Page 6: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Estruturas  de  controle:  Condição  

início  

     inteiro:  A,  B;    

     A←1;  

     B←2;  

     se  A>B  

           então  

                 A←5;  

           senão  

                 A←10;  

   fim  se;  

fim.  

Page 7: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Condição:  IF/ELSE  

program x; var A, B, C, menor: real; begin

if (A<B) and (A<C) then menor:=A else if B<C then menor:=B else menor:=C; write (menor);

end.

simples    

if  condicao  then    bloco;  

composta    

if  condicao  then    bloco1  

else    bloco2;  

Page 8: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Condição:  IF/ELSE  

program x; var nome: string;

nota1, nota2, nota3: real; media: real; aprovado: boolean;

begin write (´Digite seu nome: ´); readln (nome); write (´Digite suas 3 notas: ´); readln (nota1, nota2, nota3); media := (nota1+nota2+nota3)/3; aprovado:=(media>=6);

 if  aprovado  then    begin      writeln  (´Parabens  ´,  nome,  ´  você  está  aprovado  !´);      writeln  (´Sua  média  foi  ´,  media:5:2);    end    else    begin      writeln  (nome,  ´,  você  está  reprovado  !´);      writeln  (´Sua  média  foi  ´,  media:5:2);    end;  

end.    

Page 9: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Condição:  CASE  

CASE  <expressão>  OF      <opção1>  :  <comando1>;      <opção2>  :  <comando2>;      ...  ...      <opçãoN>  :  <comandoN>;      [  ELSE  <comando>;  ]    

END;    

Page 10: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Condição:  CASE  

program  x;  var  letra:  char;  begin  read  (letra);  case  letra  of    

 ‘a’..’z’  :  letra  :=  chr  (  ord  (letra)  -­‐  32  );    ‘ç’  :  letra  :=  ‘Ç’;      ...    ‘ñ’  :  begin        writeln(‘Não  usado  na  língua  portuguesa!’);        letra:=  ‘?’;      end;      else  begin      writeln(‘Não  está  na  lista  dos  aceitos...’);        letra:=  ‘?’;      end;  

end;  end.  

Page 11: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Unidade 3.3 Estrutura de Repetição

Page 12: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Estruturas  de  controle:  RepeYção  

início inteiro: A, B, I, C;

A←1;

B←1;

I←1;

enquanto I<5 faça

C←A+B;

A←B;

B←C;

I ←I+1;

fim enquanto;

fim.

Page 13: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  while  (enquanto)  

program  x;  var  resp:  char;  begin    resp  :=  ‘X’;    while  (  resp  <>  ‘N’  )  and  (  resp  <>’n’  )  do  begin    

 writeln  (‘Olá!’);      write  (‘Novamente  (S/N)  ?  ‘);      readln  (Resp);    

end;    end.

while  condição  do  begin  

 comandos;  end;  

Page 14: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  while  (enquanto)  

 ...    readln  (Media);        {  parar  com  -­‐1  (flag=sinal)  }    while  Media  <>  -­‐1  do    begin    

 if  Media  >=  6.0  then  writeln  (‘Aprovado’)      else  writeln  (‘Reprovado’);      readln  (Media);    

end;     ...

Page 15: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  while  (enquanto)  -­‐  ERROS!  

 ...    WHILE  Idade  <  20        {  Laço  Infinito!  }    DO  Salario  :=  Salario  –  Desconto;    ...      X  :=  1.0;    WHILE  X  <  10.0                    {  Condição  mal  definida  }    DO  X  :=  X  –  0.1;    ...      Resp  :=  ‘?’;          {  Laço  Infinito!  }  WHILE  Resp  <>  ‘S’    DO  WriteLn  (‘Novamente  (S/N)  ?  ‘);    ReadLn  (Resp);    ...    

Page 16: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  for  (para...)  

program  x;  var      aluno:  integer;  

 nota1,  nota2:  real;  

begin  

 for  aluno  :=  1  to  5  do  begin    

 readln  (nota1,  nota2);      writeln  (‘Média  =  ‘,  (nota1+nota2)/2);    

end;    

end.

for  var  :=  inicial  to  final  do  begin  

 comandos;  end;  

Page 17: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  for  (para...)  

program  x;  var  f,  i,  N:  integer;  begin  

 read  (N);  

 f:=1;  

 for  i:=1  to  N  do  

   f:=f*i;    write  (f);  

end.

Page 18: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  for  (para...)  

program  x;  var  c:  char;  begin  

 for  c:=´Z´  downto  ´A´  do  

   write  (c);  

end.

Page 19: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

RepeYção:  repeat  ...  unYl  

 repeat      writeln  (‘Olá!’);      write  (‘Novamente  (S/N)  ?  ‘);      readln  (resp);    

unnl  (  resp  =  ‘N’  )  or  (  resp  =’n’  )  ;    ...    repeat  {  -­‐1  pára  o  programa  }    begin    

 readln  (Media);      if  (Media  <>  -­‐1)  then      if  (  Media  >=  6.0  )  then  writeln  (‘Aprovado’)        else  writeln  (‘Reprovado’);    

end;    unnl  Media  =  -­‐1  ;    ...      

repeat    comandos;  

unYl  condicao;  

Page 20: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Exercício  

•  Fazer  um  programa  que  calcule  o  valor  de  ex  através  da  série:  

   ex  =  x0  +  x1/1!  +  x2/2!  +  x3/3!  +  ...    com  erro  inferior  a  0,0001.  

Page 21: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Trabalho  

•  Fazer  um  programa  para  calcular  o  número  de  dias  decorridos  entre  duas  datas,  sabendo-­‐se  que:  –  cada  par  de  datas  é  lido  numa  linha,  a  úlnma  linha  contém  o  dia  neganvo  (-­‐1)  :          “dia1  mês1  ano1  dia2  mês2  ano2”  

–  a  data1  é  mais  annga  que  a  data2;  –  o  ano  está  digitado  com  4  dígitos;  –  considerar  os  anos  bissextos.  Um  ano  é  bissexto  se  for  divisível  por  400.  

Page 22: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Unidade 3.4 Combinação de Estruturas

Page 23: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Arrays  (“Variáveis  compostas  homogêneas”)  

•  Arrays  unidimensionais:  iden0ficador:  array  [inicial..final]  of  0po;    ex:      var    Nota:  array  [1..10]  of  integer;      

4,8   6,4   5,1  7,2   2,2   8,3   7,4   5,9  9,2   8,9  

1   2   3   4   5   6   7   8   9   10  

X:=Nota[3];        {  X  ←  6,4  }  

Page 24: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Arrays  (“Variáveis  compostas  homogêneas”)  

•  Exr:  Leia  cinco  elementos  e  imprima    

program  Le;  var  a:  array[1..5]  of  integer;          i:  integer;  

begin          for  i:=1  to  5  do        read  (a[i]);          for  i:=1  to  5  do        writeln  (a[i]);  

end.            

Page 25: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Arrays  (“Variáveis  compostas  homogêneas”)  

•  Exr:  Ler  e  ordenar  uma  lista  de  N  números    

 Idéia:  Para  inserir  um  número  aj  supõe-­‐se    a1,  a2,  ...,  aj-­‐1  já  ordenados,  então  compara-­‐se  aj  com  aj-­‐1,  aj-­‐2,  ...  até  se  descobrir  que  ele  deve  ser  inserido  entre  ai  e  ai+1.        Move-­‐se  então  ai+1  e  os  elementos  seguintes,  já  ordenados,  atribuindo-­‐se  a  ai+1  o  valor  original  de  aj.        

Page 26: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Arrays  (“Variáveis  compostas  homogêneas”)  

•  Arrays  mulndimensionais:      iden0ficador:  array  [i1..f1,  i2..f2,  ...,  in..fn]  of  0po;  

ex:      var    Matriz:  array  [1..4,  1..4]  of  integer;  

14   15   16  13  

1   2   3   4  

10   11   12  9  

6   7   8  5  

2   3   4  1  1  

2  

3  

4  

X:=Matriz[3,2];    

{  X←10  }  

Page 27: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Exercício  

•  Implementar  um  programa  em  PASCAL  que  leia  duas  matrizes  A4x4  e  B4x4  e  imprima  a  matriz  resultado  C  =  A*B.  

   

Page 28: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Registros  (“Variáveis  compostas  heterogêneas”)  

•  São  conjuntos  de  dados  logicamente  relacionados,  mas  de  npos  diferentes.  

   

Nome:

Endereço:

Bairro: Cidade:

CADASTRO PESSOAL

UF:

Data de nascimento: / / Profissão:

Page 29: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Registros  

Var    cadastro:  record    nome:  string[40];    endereco:  string[100];    bairro:  string[40];    cidade:  string[40];    uf:  string[2];    dia_nasc,  mes_nasc,  ano_nasc:  integer;    profissao:  string[40];  

end;        

Idennficador:  record  

 componentes;  

end;  

Ex:  Writeln(´Nome:  ´,  cadastro.nome);  

Page 30: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  Linguagem  PASCAL  

Registros  dentro  de  Registros  

Var    cadastro:  record        nome:  string[40];        endereco:  record            rua:  string[100];            bairro:  string[40];            cidade:  string[40];            uf:  string[2];                      end;        dia_nasc,  mes_nasc,  ano_nasc:  integer;        profissao:  string[40];                  end;    

   

Ex:  Writeln(´Estado:  ´,  cadastro.endereco.uf);  

Page 31: LP 1 - Unidade 4

 Prof.  Anderson  Fernandes  

Conjunto  de  Registros  

Var    camisas:  record    descricao:  string[100];    preco:  real;    estoque:  real;  

end;    mercadorias:  array[1..100]  of  camisas;    

   

idennficador:  array  [i1..f1,  i2..f2,  ...,  in..fn]  of  Ypo;    

Writeln(´Estoque  da  camisa  cod.55:  ´,  mercadorias[55].camisas.estoque);