Aula 9
Estrutura CASE…OF
Estrutura Case (Voltar
ao Índice) |
||
|
|
|
|
Programa ordenar VAR num1,num2,temp:INTEGER; BEGIN WRITE('Numero 1: ');
READLN(num1); WRITE('Numero 2: '); READLN(num2); IF (num1 > num2) THEN BEGIN
temp:=num1; num1:=num2; num2:=temp; WRITELN('Numeros ..... ');
WRITE('Numero 1: '); WRITELN(num1); WRITE('Numero
2: '); WRITELN(num2); END ELSE BEGIN WRITELN('Numeros ........');
WRITE('Numero 1: '); WRITELN(num1);
WRITE('Numero 2: '); WRITELN(num2); END; readln; END. |
|
|
|
|
|
O comando CASE é importante para a
estruturação de um programa que possua diversas opções de execução,
tornando-o bem legivel e estruturado, evitando o
uso do IF de forma repetida. O comando CASE trás junto com ele
uma restrição, onde, seletor tem que ser do tipo char,
integer ou boolean. Sintaxe: CASE seletor OF alvo1
: comando1; alvo2
: comando2; alvo3
: comando3; END;
CASE seletor OF
alvo1 : BEGIN ... instruções ... END; alvo2
: comando2; alvo3
: BEGIN ... instruções ... END; ELSE comando4; END; |
Exemplo: Uses Crt; Var Y, X : Integer; Begin Readln (X, Y); Case X Of 1
: Begin Y :=
4; Writeln
('Entrou no Primeiro alvo'); End; 2
: Begin Y := 3; Writeln
('Entrou no Segundo alvo'); End; 3 : Writeln ('Entrou no Terceiro alvo'); Else Writeln ('Entrou
no Else'); End; End. |
|
Exemplo: { Um simples exemplo de como se trabalha com a Estrutura
Case } Uses Crt; Var X : Integer; Begin Readln (X); Case X Of 1 : Writeln ('Ola Mundo'); { E o valor de X for igual a 1, irá executar essa linha } 2 : Writeln ('GNOIA'); { X = 2, essa
linha será executada } 3 : Writeln ('Software Livre'); { X = 3 - essa linha será executada } End; End. |
Programa pascal que
permite verificar se uma letra é consoante ou vogal var C:char; begin readln (C); Case C of 'a','e','i','o','u' : WriteLn ('vowel
pressed'); 'y' : WriteLn
('This one depends on the language'); else WriteLn
('Consonant pressed'); end; readln; end. {FIM do begin principal} |
|
Programa
que permite trabalhar con strings var os:string; begin readln(os); Case lowercase(OS) of 'windows', 'dos' : WriteLn
('Microsoft playtform'); 'mac', 'darwin'
: Writeln('Apple platform'); 'linux', 'freebsd','netbsd' : Writeln('Community platform'); else WriteLn
('Other platform'); end; readln; end. {FIM do begin principal} |
Intervalo de números no pascal begin readln(number); Case
Number of 1..10 : WriteLn ('Small
number'); 11..100 : WriteLn
('Normal, medium number'); else WriteLn ('HUGE number'); end; readln; end. {FIM do begin principal} |
|
var {Definição
das variável opção como inteira} opcao, n : integer; saldo:real; begin saldo:=300; {Informar
opções ao utilizador.} writeln('Tecle 1 para Saldo'); writeln('Tecle 2 para Extrato
Parcial'); writeln('Tecle 3 para Extrato da
Ultima Conta'); writeln('Tecle 8 para Transferir
ligação para a Atendente'); writeln('Tecle 9 para Retornar
ao Menu anterior'); writeln('tecla 10 para tabuada
do 3'); readln(opcao); case opcao of 1: begin {código para apresentar saldo} writeln('O seu saldo e ',
saldo:2:2, ' euro'); end; 2: begin {código para
apresentar o Extrato Parcial} end; 3: begin {código para
apresentar o Extrato da última Conta} end; 10: begin {tab do 3} n:=3; writeln ('3X1=
',n*1 ); writeln ('3X1=
',n*2 ); writeln ('3X1=
',n*3 ); writeln ('3X1=
',n*4 ); end; 8:
{transferir a ligação para a atendente}; 9: {desviar
para o menu anterior}; else writeln('Opcao Invalida'); end; {end case} readln; end. |
VAR num_dia_sem:INTEGER; BEGIN WRITE('Dia de la semana (numero) -> '); READLN(num_dia_sem); CASE num_dia_sem OF 1: WRITELN('segunda'); 2: WRITELN('terça'); 3: WRITELN('quarta'); 4: WRITELN('5'); 5: WRITELN('6'); 6: WRITELN('S'); 7: WRITELN('Domingo'); ELSE WRITELN('No es un dia de la semana'); END; readln; END. |
|
Completa e corrige
o programa abaixo VAR x, A,
B,R:INTEGER; BEGIN WRITEln('Menu da maq. calcular'); Writeln(); Writeln ('para
multiplicação * --> 1'); Writeln ('para
Adição + --> 2'); READLN(x); CASE x OF 1: begin writeln ('digita um
numero'); readln (A,B); R:=A+B; writeln ('R ', R); end; 2: begin writeln ('digita um numero'); readln (A,B); R:=A*B; writeln ('R ', R); end; ELSE WRITELN('nada'); END; readln; END. |
VAR A, B,R:INTEGER; x:string; BEGIN WRITEln('Menu da maq. calcular'); Writeln(); Writeln ('para
multiplicação * --> mult'); Writeln ('para
Adição + --> soma'); READLN(x); CASE x OF 'soma': begin writeln ('digita um numero'); readln (A,B); R:=A+B; writeln ('R ', R); end; 'mult': begin writeln ('digita um
numero'); readln (A,B); R:=A*B; writeln ('R ', R); end; ELSE WRITELN('nada'); END; readln; END. |
|
Reescreve o algoritmo da tabuada com recurso ao
comando CASE …OF |
Programa CASO em
que podemos colocar um CASE dentro de outro var a,b,c,d:integer; begin readln (a); case a of {1º case - primeiro
que contala case B e C, seão
case D} 1: begin readln
(b); case b of {1.1º case - subcase B do case A} 1: writeln('
caso 1 do subcaso b do caso a');
2: writeln(' caso 2 do subcaso b do caso
a');
end; {FIM - 1.1º case - subcase B do case A} end; 2: begin readln
(c); case c of {1.2º case - subcase C do case A} 1: writeln('
caso 1 do subcaso C do caso a'); 2: writeln(' caso 2 do subcaso C do caso a');
end; {FIM - 1.2º case -
subcase C do case A} end; else readln (c); case c of {2º case - SENÃO case A então
case C} 1: writeln('
caso 1 do SENÃO caso a');
2: writeln(' caso 2 do SENÃO caso a'); end; {FIM - 2º case - SENÃO case
A então case C} end; {fim do primeiro
case que controla todos os outros} readln; end. {FIM do begin
principal} |
|