Escolar Documentos
Profissional Documentos
Cultura Documentos
AGENDA
Decises Aninhadas Decises sem Aninhamento Estrutura CASE
DECISES ANINHADAS
So estruturas de deciso que possuem em seus ramos (seja no ramo then ou no ramo else) outros nveis de deciso. Exemplo de modelo: if <cond1> then comando1 else if <cond2> then comando2; Somente se o primeiro teste produzir F, o segundo ser feito.
F V
Cond 1
Comando 1
Cond 2
F
Comando 2
DECISES ANINHADAS
So estruturas de deciso que possuem em seus ramos (seja no ramo then ou no ramo else) outros nveis de deciso.
F V
Ou...
Cond 1
Comando 1
Cond 2
F
Comando 3
Comando 2
DECISES ANINHADAS
Exemplo: Determinar o maior entre dois nmeros, sabendo-se que eles podem ser iguais. read(n1,n2); if n1>n2 then write('Maior: ',n1) else
DECISES ANINHADAS
Exemplo: Determinar o maior entre dois nmeros, sabendo-se que eles podem ser iguais.
F V
n1>n2
Write (n1)
n2>n1
F
Write( Iguais);
Write (n2)
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros:
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 3 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 3 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 3 5
n1
n2
5
11
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 3 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 3 5 Maior: 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros:
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 5 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 5 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 5 5
n1
n2
5
18
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 5 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 5 5
n1
n2
DECISES ANINHADAS
Program maior; var n1,n2: integer; begin write(Entre com 2 nmeros: '); readln(n1,n2); if n1>n2 then write('Maior: ',n1) else Entre com 2 nmeros: 5 5 Nmero so iguais
n1
n2
DECISES ANINHADAS
n1>n2
read(n1,n2);
if n1>n2 then write('Maior: ',n1); if n2>n1 then write('Maior: ',n2);
n1=n2
Write (n1)
n2>n1
Write (n2)
Write (iguais)
22
DECISES ANINHADAS
Determinao do maior entre 3 nmeros diferentes... read(n1,n2,n3); Lembrar que antes de else, o uso de pontoe-vrgula proibido em Pascal...
if n1>n2 then
if n1>n3 then write('Maior: ',n1) else write('Maior: ',n3) else {n2>n1}
if n2>n3 then
write('Maior: ',n2)
DECISES ANINHADAS
24
DECISES ANINHADAS
Formao de blocos read(n1,n2,n3); if n1>n2 then begin if n1>n3 then write('Maior: ',n1) else write('Maior: ',n3) end else {n2>n1} begin if n2>n3 then write('Maior: ',n2) else write('Maior: ',n3) end;
25
DECISES ANINHADAS
read(n1,n2,n3); if (n1>n2) and (n1>n3) then write('Maior: ',n1); if (n2>n1) and (n2>n3) then write('Maior: ',n2); if (n3>n1) and (n3>n2) then write('Maior: ',n3); A soluo acima (3 comandos curtos) leva certa vantagem em termos de simplicidade...
26
DECISES ANINHADAS
Contudo, preciso estar consciente de que na soluo aninhada, no mximo dois testes sero realizados, em qualquer caso.
27
ESTRUTURA CASE
Consiste de uma expresso seletora e de uma lista de comandos, que sero executados conforme a avaliao da condio seletora. case <expresso> of <opo1>: comando1; <opo2>: comando2; ... <opoN>: comandoN; end; Se <expresso> casar com <opo1>, o primeiro comando ser executado (e o case encerra). Caso contrrio, se <expresso> casar com <opo2>, o segundo comando ser executado (e o case encerra).
28
ESTRUTURA CASE
Consiste de uma expresso seletora e de uma lista de comandos, que sero executados conforme a avaliao da condio seletora. case <expresso> of <opo1>: comando1; <opo2>: comando2; ... <opoN>: comandoN; end; Se <expresso> casar com <opo1>, o primeiro comando ser executado (e o case encerra). Caso contrrio, se <expresso> casar com <opo2>, o segundo comando ser executado (e o case encerra).
29
ESTRUTURA CASE
var Op: char; begin write('Fornea uma opo: '); readln(Opcao); case Opcao of '1': writeln('Voc escolheu a opo 1'); '2': writeln('Voc escolheu a opo 2'); '3': writeln('Voc escolheu a opo 3'); '4': writeln('Voc escolheu a opo 4'); end; end. Se um desses valores ('1', '2', '3' ou '4') for fornecido na leitura, a mensagem correspondente ser exibida. Caso contrrio, nada acontece.
30
ESTRUTURA CASE
Clusula Else case <expresso> of <opo1>: comando1; <opo2>: comando2; ... <opoN>: comandoN; else comandoExceo; end;
O comandoExceo ser executado sempre que no houver casamento da <expresso> com nenhuma das opes.
31
ESTRUTURA CASE
var Op: char; begin write('Fornea uma opo: '); readln(Opcao); case Opcao of '1': writeln('Voc escolheu a opo 1'); '2': writeln('Voc escolheu a opo 2'); '3': writeln('Voc escolheu a opo 3'); '4': writeln('Voc escolheu a opo 4') else writeln('Opo invlida') end; end.
32
ESTRUTURA CASE
Obs: Cada opo pode consistir de: faixas de constantes, indicadas por reticncias (..), ou uma ou mais constantes/faixas, separadas por vrgulas;
var Ch: char; begin write('Digite um caractere: '); read(Ch); write('Voc digitou '); case Ch of 'A'..'Z', 'a'..'z': writeln('uma letra'); '0'..'9' : writeln('um dgito'); '+', '-', '*', '/': writeln('um operador') else writeln('um caractere especial') end;
33
ESTRUTURA CASE
34
ESTRUTURA CASE
35
Contato: hilton@meta.edu.br
36