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;


Sintaxe:

         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}