Baixe o app para aproveitar ainda mais
Prévia do material em texto
* * * Algoritmos com Seleção Comando CASE * * * Sejam os seguintes códigos e expressões para cálculo da variável Resultado Valor de Código Resultado 1 Resultado + 5 2 inalterado 3 resultado - 2 4 inalterado 5 resultado - 2 6 2* (resultado + 1) 7 inalterado 8 0 9 0 10 0 * * * 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} * * * (…) 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} * * * {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; * * * 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 S S N N N N S {uso de seleção composta} * * * {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; * * * {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; * * * Case Código 1 3 ou 5 6 8 a 10 <> 2, 4 ou 7 Resultado <- Resultado + 5 Resultado <- Resultado - 2 Resultado <- 2* (Resultado + 1) Resultado <- 0 ´Código inválido!´ CASE: funciona como uma condição composta * * * 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 * * * 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); * * * var LetraCor : char; begin Case LetraCor of 'V': writeln ('Vermelho'); 'B': writeln ('Branco'); 'A': writeln ('Azul') end; end. * * * 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; * * * Var Classificado : boolean; Case Classificado of true : writeln (´Candidato ´, Inscricao , classificado!´); false: writeln (´Candidato ´, Inscricao, ´desclassificado!´) end; * * * 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. * * * Expressão De qualquer tipo ordinal Tipo ordinal: Tipo onde os elementos aparecem em uma determinada ordem e são distintos e descontínuos. * * * Tipos ordinais simples padrão char ; boolean; byte; shortint ; integer * * * Instrução Simples ou Composta (duas ou mais instruções simples delimitadas por begin end) * * * Funcionamento do CASE * * * 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; * * * 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; * * * 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; * * * 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; * * * case expressão of Sintaxe . . , : constante constante Comando* ; else Comando* end * Comando simples ou composto * * * Vantagens e Desvantagens do CASE Desvantagem Serve 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!!) Vantagem O código produzido é mais claro. A lógica fica mais evidente.
Compartilhar