lp 1 - unidade 4
Post on 19-Mar-2016
236 Views
Preview:
DESCRIPTION
TRANSCRIPT
Prof. Anderson Fernandes
Unidade 3 Estruturas de Programação
Prof. Anderson Fernandes
Unidade 3.1 Estrutura Seqüêncial
Prof. Anderson Fernandes
Estrutura Seqüêncial
início
inteiro: A, B;
leia (A,B);
C:= (A+B)*B;
imprima (C);
fim.
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.
Prof. Anderson Fernandes
Unidade 3.2 Estrutura de Decisão
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.
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;
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.
Prof. Anderson Fernandes
Condição: CASE
CASE <expressão> OF <opção1> : <comando1>; <opção2> : <comando2>; ... ... <opçãoN> : <comandoN>; [ ELSE <comando>; ]
END;
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.
Prof. Anderson Fernandes
Unidade 3.3 Estrutura de Repetição
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.
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;
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; ...
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); ...
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;
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.
Prof. Anderson Fernandes
RepeYção: for (para...)
program x; var c: char; begin
for c:=´Z´ downto ´A´ do
write (c);
end.
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;
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.
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.
Prof. Anderson Fernandes
Unidade 3.4 Combinação de Estruturas
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 }
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.
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.
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 }
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.
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:
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);
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);
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);
top related