LP 1 - Unidade 4

Page 1

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. Prof. Anderson Fernandes

simples

if condicao then bloco;

composta

if condicao then bloco1 else bloco2;


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; Prof. Anderson Fernandes end.


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) while condição do begin comandos; end;

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. 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;

for var := inicial to final do begin comandos; end;

begin for aluno := 1 to 5 do begin readln (nota1, nota2); writeln (‘Média = ‘, (nota1+nota2)/2); end; 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 comandos; unYl condicao;

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 ; ... 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;

7,2

4,8

6,4

5,1

2,2

9,2

8,3

7,4

5,9

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; 1

1

2

3

4

2

5

6

7

8

3

9

10

11

12

4

13

14

15

16

1

2

3

4

Prof. Anderson Fernandes

X:=Matriz[3,2];

{ X←10 }


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.

CADASTRO PESSOAL Nome: Endereço: Bairro: Data de nascimento:

Cidade: /

/

Profissão:

Prof. Anderson Fernandes

UF:


Registros Var Idennficador: record cadastro: record componentes; nome: string[40]; endereco: string[100]; end; bairro: string[40]; cidade: string[40]; Ex: Writeln(´Nome: ´, cadastro.nome); uf: string[2]; dia_nasc, mes_nasc, ano_nasc: integer; profissao: string[40]; end;

Prof. Anderson Fernandes


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

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;

Prof. Linguagem Anderson PFASCAL ernandes


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

Var camisas: record descricao: string[100]; preco: real; estoque: real; end; mercadorias: array[1..100] of camisas;

Prof. Anderson Fernandes

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


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.