Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

25
Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE

Transcript of Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Page 1: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Algoritmos com Seleção

Comando CASE

Page 2: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Valor de Código Resultado1 Resultado + 52 inalterado3 resultado - 24 inalterado5 resultado - 26 2* (resultado + 1)7 inalterado8 09 0

10 0

Sejam os seguintes códigos

e expressões para cálculo da variável Resultado

Page 3: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Código = 1

Código = 3 ou 5

Código = 6

Código > 7 e < 11

Resultado <- Resultado + 5

Resultado <- Resultado -2

Resultado <- 2 * (Resultado + 1)

Resultado <- 0

S

S

S

S

N

N

N

N

{uso de seleção simples}

Page 4: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

(…)

Código = 1

Código = 3 ou Código = 5

Código > 7 e < 11

Resultado <- Resultado + 5

Resultado <- Resultado -2

Resultado <- 0

S

S

S

N

N

N

{uso de seleção simples}

Page 5: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

{uso de seleção simples}

if (Codigo = 1)

then

Resultado := Resultado + 5;

if (Codigo = 3) or (Codigo = 5)

then

Resultado := Resultado - 2;

if (Codigo = 6)

then

Resultado := 2 * (Resultado + 1);

if (Codigo > 7) and (Codigo < 11)

then

Resultado := 0;

Page 6: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Código = 1

Código=3 ou 5

Código = 6

Resultado <-

Resultado + 5

Resultado <-

Resultado +-2

Resultado <- 2*

(Resultado + 1)

Código >= 8 e <= 10

Resultado <-0

S SS

NN NN

S

{uso de seleção composta}

Page 7: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

{uso de seleção composta}if (Codigo = 1)

then

Resultado := Resultado + 5

else

if (Codigo = 3) or (Codigo = 5)

then

Resultado := Resultado - 2

else

if Codigo = 6

then

Resultado := 2 * (Resultado + 1)

else

if (Codigo >= 8) and (Codigo <= 10)

then

Resultado := 0;

Page 8: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

{uso de seleção múltipla}

case Codigo of

1 : Resultado := Resultado + 5;

3 , 5 : Resultado := Resultado - 2;

6 : Resultado := 2 * (Resultado + 1);

8..10 : Resultado := 0;

else

if (Codigo <> 2) and

(Codigo <> 4) and

(Codigo <> 7)

then

writeln(´Codigo invalido´)

end;

Page 9: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Case Código13 ou 5

6 8 a 10

<> 2, 4 ou 7Resultad

o <-

Resultado

+ 5

Resultado <-

Resultado

- 2

Resultado <- 2*

(Resultado

+ 1)

Resultado <- 0

´Código inválido!´

CASE: funciona como uma condição composta

Page 10: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Código = 1

Resultado <-

Resultado + 5

Código >= 8 e <= 10

Resultado <-0

S

N N

CASE: funciona como uma condição composta

S

...Código<> 2

4 ou 7

Código Inválido

S

N

Page 11: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

write ('Valor de Codigo: '); readln (Codigo); Resultado := 0; case Codigo of 1 : Resultado := Resultado + 5; 3 , 5 : Resultado := Resultado - 2; 6 : Resultado := 2 * Resultado + 1; 8 .. 10 : Resultado := 0; else if (Codigo <> 2) and (Codigo <> 4) and (Codigo <> 7) then writeln ('Codigo invalido!') end; if (Codigo >= 1) and (Codigo <= 10) then writeln('Resultado: ', Resultado);

Page 12: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

var LetraCor : char;begin Case LetraCor of 'V': writeln ('Vermelho'); 'B': writeln ('Branco'); 'A': writeln ('Azul') end;end.

Page 13: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

TipPizza : char;NomePizza : string;

case TipPizza of 'A' , 'a' : NomePizza := 'Brotinho'; 'B' , 'b' : NomePizza := 'Media'; 'C' , 'c' : NomePizza := 'Grande'; 'D' , 'd' : NomePizza := 'Calzone'; else writeln

('Tipo de pizza desconhecido!')end;

Page 14: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Var

Classificado : boolean;

Case Classificado of

true : writeln (´Candidato ´, Inscricao , classificado!´);

false: writeln (´Candidato ´, Inscricao, ´desclassificado!´)

end;

Page 15: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Comando CASE

• Estrutura de controle condicional.

• Permite que grupos particulares de instruções sejam escolhidos entre grupos possíveis.

• Escolha é baseada no valor correspondente de uma expressão.

Page 16: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Expressão

• De qualquer tipo ordinal

• Tipo ordinal: Tipo onde os elementos aparecem em uma determinada ordem e são distintos e descontínuos.

Page 17: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Tipos ordinais simples padrão

• char ;

• boolean;

• byte;

• shortint ;

• integer

Page 18: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Instrução

• Simples

ou

• Composta

(duas ou mais instruções simples delimitadas por begin end)

Page 19: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Funcionamento

do

CASE

Page 20: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

• As seqüências de constantes não precisam aparecer numa ordem específica, mas devem ser únicas (ou seja, mesmo valor não pode aparecer implícita ou explicitamente em mais de uma seqüência!)

Ex.:

case ValorInteiro of

9: writeln(´Valor 9´);

4..8: writeln(´Entre 4 e 8´´);

{ 7: writeln(´valor 7´);

ERRADO! O valor 7

está implícito no rótulo anterior.}

end;

Page 21: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

•Valores nas listas de constantes devem pertencer ao mesmo tipo ordinal do valor da expressão.Ex.: case ValorChar of

´A´: writeln(´A maiusculo´); a : writeln(´Vai dar erro´);

{ a deveria ser uma constante caractere, logo deveria estar entre apostrofos}

1: writeln(´Tambem vai dar erro!´); {idem acima, o um tambem deveria estar entre apostofros} end;

Page 22: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

• Uma instrução será executada sempre que uma das constantes de uma seqüência coincidir com o valor corrente da expressão.

Ex.:SoNumeros := 5;case SoNumeros of

1..3: (…); 7: (…);

5: (…); {a instrução do rotulo acima sera executada, já que a constante 5 vai coincidir com o valor corrente da expressao (SoNumeros) que eh 5 no momento} 4:(…); end;

Page 23: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

•Se valor corrente da expressão não coincidir com qualquer valor de uma seqüência, nada será executado (o Turbo Pascal possibilita o tratamento de valores não previstos através do Else).Ex.:

Valor := 10

Case Valor of

1..9: Somatorio := Somatorio + Valor;

{observar que antes de ELSE de CASE pode ponto e vírgula}

else

writeln(´Valor não valido!´)

end;

Page 24: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

case expressão of

Sintaxe

. .

,

: constante

constante

Comando*

;

else Comando* end

* Comando simples ou composto

Page 25: Aula 4 - V. 2 - Cida Livi Algoritmos com Seleção Comando CASE.

Aula 4 - V. 2 - Cida Livi

Vantagens e Desvantagens do CASE

DesvantagemServe como alternativa apenas para estruturas aninhadas IF-THEN-ELSE que testam igualdades valendo-se de variáveis ordinais.

Não pode ser usada com strings ou reais, por exemplo!!!

(IF-THEN-ELSE é mais abrangente!!)

VantagemO código produzido é mais claro.

A lógica fica mais evidente.