Índice

 

Estrutura Condicional

Esta estrutura é conhecida também como estrutura de decisão ou de seleção, e é caracterizada por execução de determinados códigos de programação dependendo da veracidade de uma condição. Neste tópico serão apresentadas as estruturas de condição simples, composta, aninhada (uma dentro da outra) e a estrutura Case.

Estrutura Condicional – Simples   (Voltar ao Índice)                                        [Não estamos a utilizar ELSE]

 

Estrutura condicional simples com apenas uma instrução:

Estrutura condicional simples com mais de uma instrução:

 

Sintaxe:

  SE condição

  ENTÃO comando

Nota: O comando só será executado se a condição for verdadeira. Uma condição é uma comparação que possui dois valores possíveis, verdadeiro ou falso.

 

Sintaxe:

  SE condição

  ENTÃO INÍCIO

     comando1               

     comando2

     comando3

        FIM

Nota: Aqui o comando também só será executado se a condição for verdadeira, a diferença dos dois exemplos acima é que, quando o número de instruções a serem executadas forem maior que um, então é necessário colocar as instruções dentro de blocos (Begin = INICIO e End = FIM).

  • SE = IF
  • ENTÃO = THEN
  • INÍCIO = BEGIN

FIM = END

 

Exemplo com apenas uma instrução:

Exemplo com mais de uma instrução:

 

A) Compila o seguinte programa e descreve, por palavras tuas o seu funcionamento

 

Uses Crt;

var X, Y : Integer;

begin

Writeln ('Digite dois Números:'); { Mostra no ecrã a mensagem}

Readln (X, Y); { Lê os dois números }

If (X > Y) Then {Condição - SE X for maior que Y}

Writeln ('X é Maior que Y, e seu valor é = ', X);

end.

 

D) Compila o seguinte programa e descreve, por palavras tuas o seu funcionamento

 

 uses Crt;

   var X, Y : Integer;

    begin

     Writeln ('Entre com dois Números:'); { Mostra no ecrã a mensagem}

     Readln (X, Y); { Lê os dois números }

     If (X = Y) Then {Condição - SE X for igual a Y}

     Begin  {INICIO - Repare abaixo que existe duas instruções, dois comandos Writeln, por isso estão entre BEGIN e END}

       Writeln ('X é igual que Y');

       Writeln ('O Valor de X é =', X);

     End; {FIM}

   end.

Para programar é preciso saber inglês

B) Compila o seguinte programa e traduz o enunciado

 

In the following program the user will input his/her age (integer type). The program will check if

the user is able to apply for a driving license. If the user is of legal age (i.e. 18), the program will

encourage the user to apply. Otherwise, the program will calculate the number of years remaining

till the age of 18.

 

Program driving;

Var

age : char;

begin

writeln(‘when to apply for a driving license’);

write(‘Type your age (try to be honest please!) : ‘);

readln(age);

if age < 18

then write(‘CONGRATULATIONS...you can apply’)

end.

E) Compila o seguinte programa e descreve, por palavras tuas o seu funcionamento

Exemplo utilizando operadores Lógicos:

   uses Crt;

   var X, Y : Integer;

   begin

     Writeln ('Entre com dois Números:'); { Mostra no ecrã a mensagem}

     Readln (X, Y); { Lê os dois números }

     If ((X > Y) And (Y <> 0)) Then {Condição - SE X for maior que Y E Y diferente de 0 - Repare no And}

     Begin  {INICIO - Repare abaixo que existe três instruções, três comandos Writeln, por isso estão entre BEGIN = INICIO e END = FIM}

       Writeln ('X é Maior que Y');

       Writeln ('Y é diferente de 0');

       Writeln ('O Valor de X é =', X);

     End; {FIM}

   end.

 

 

c) Compila o seguinte programa e escreve um enunciado para o programa

 

 

write('Introduza um numero real: ');

readln(A);

if (A>=0) then

writeln('Numero positivo ou nulo');

end;

Pré-requisitos: Recordar as tabelas de verdade

Notas: Repare no operador Lógico AND, só serão executados os comandos Writeln, se as duas condições forem verdadeiras. Se a variável X for maior que a variável Y e se a variável Y for diferente de 0 (zero).

F) Compila o seguinte programa e descreve, por palavras tuas o seu funcionamento

Exemplo utilizando operadores Lógicos:

   uses Crt;

    var X, Y : Integer;

    begin

     Writeln ('Entre com dois Números:'{ Mostra no ecrã a mensagem}

     Readln (X, Y); { Lê os dois números }

     If ((X > Y) Or (Y <> 0)) Then {Condição - SE X for maior que Y OU Y diferente de 0 (zero)- Repare no Or}

     Begin  {INICIO - Repare abaixo que existe três instruções, três comandos Writeln, por isso estão entre BEGIN = INICIO e END = FIM}

       Writeln ('X é Maior que Y');

       Writeln ('Y é diferente de 0');

       Writeln ('O Valor de X é =', X);

     End; {FIM}

   end.

Notas: Nesse caso acima utilizando o Operador Lógico OR (OU), serão executados os comandos Writeln, se uma das duas condições forem verdadeira. Se a variável X for maior que a variável Y OU Se a variável Y for diferente de 0 (zero).

 ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com)

6- programas (A, B, C, D, E, F)

4- explicações (A, D, E, F)

1- enunciado (C)

1 –tradução (B)

 

(Voltar ao Índice)

 

 

Estrutura Condicional – Composta   (Voltar ao Índice)                                       

 

Estrutura condicional composta com apenas um comando:

Estrutura condicional composta com mais de um comando:

 

Sintaxe:

  SE condição

  ENTÃO comando1

  SENÃO comando2

    

Notas: O comando1 só será executado se a condição for verdadeira, caso contrário, se a condição for falsa, será executado o comando2.

 

Sintaxe:

  SE condição

  ENTÃO INÍCIO

     comando1               

     comando2

     comando3

        FIM

  SENÃO INÍCIO

     comando4

     comando5      

        FIM 

 

SE = IF

ENTÃO = THEN

SENÃO = ELSE

INÍCIO = BEGIN

FIM = END

 

 

Exemplo com apenas uma instrução

Exemplo com mais de uma instrução:

 

A) Compila o seguinte programa e descreve, por palavras tuas o seu funcionamento  

Uses Crt;

 

   var X, Y : Integer;

 

   begin

     Writeln ('Digita dois Números:'); { Mostra no ecrã a mensagem}     Readln (X, Y); { Lê os dois números }

     If (X > Y) {Condição - SE X for maior que Y}

       Then Writeln ('X é Maior que Y, e seu valor é = ', X) {Entra no comando apenas se X for maior que Y - Repare que antes de ELSE não vai ";"}

       Else Writeln ('Y é maior ou igual a X, seu valor é = ',Y); {Entra no comando se Y for maior ou igual a X}

   end.

 

D) Compila o seguinte programa e descreve, por palavras tuas o seu funcionamento  

  

Uses Crt;

 

   var X, Y : Integer;

 

   begin

     Writeln ('Digita dois Números:'); { Mostra no ecrã a mensagem}

     Readln (X, Y); { Lê os dois números }

     If (X > Y) {Condição - SE X for maior que Y}

     Then Begin

            Writeln ('X é Maior que Y');

            Writeln ('O valor de X é =', X);  

          End       { Repara que não tem ponto e vírgula por que "End" está antes do "Else"}

     Else Begin

            Writeln ('Y é Maior ou Igual a X');

            Writeln ('O valor de Y é =', Y);

          End;

   end.        { Sempre no "End" do programa principal vai ponto final ".", e não ponto e virgula ";"}

 

 

B) Compila o seguinte programa e traduz o enunciado

 

In the following program the user will input his/her age (integer type). The program will check if

the user is able to apply for a driving license. If the user is of legal age (i.e. 18), the program will

encourage the user to apply. Otherwise, the program will calculate the number of years remaining

till the age of 18.

 

Program driving;

Var

age : char;

begin

writeln(‘when to apply for a driving license’);

write(‘Type your age (try to be honest please!) : ‘);

readln(age);

if age < 18

then write(‘CONGRATULATIONS...you can apply’)

else write(‘you have to wait ‘, 18 – age, ’years);

readln;

end.

E) Cria um algoritmo que verifique se um número introduzido pelo utilizador é maior ou menor que PI

Program Pzim ;

const PI=3.14;

var x : real;

 Begin

 writeln ('digite um numero');

 readln (x);

 if x< PI then

 writeln('x menor que PI')

 else

 writeln('x maoir que PI');

 End.

 

c) Compila o seguinte programa e escreve um enunciado para o programa

 

 

write('Introduza um numero real: ');

readln(A);

if (A>=0) then begin

writeln('Numero positivo ou nulo');

end

else begin

writeln('Numero negativo');

end;

F) Elabore um algoritmo que calcule a área de um quadrado e de um retângulo, juntamente com o resultado (área) informar o utilizador se a figura geométrica é um quadrado ou um retângulo.

Begin

 writeln('digite l1:');

 readln(l1);

  writeln('digite l2:');

 readln(l2);

  if L1=L2 then

    writeln ('a area é de um quadrado');

   else

  writeln ('a area e de um retangulo');

  End.

ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com)

6- programas (A, B, C, D, E, F)

4- explicações (A, D, E, F)

1- enunciado (C)

1 –tradução (B)

 

(Voltar ao Índice)

 

##Exercícios de fixação## Estrutura Condicional – Composta  (Voltar ao Índice)                                        

 

01- Sabendo que uma milha marítima equivale a um mil, oitocentos e cinquenta e dois metros e que um quilômetro possui mil metros, fazer um programa para converter milhas marítimas em quilômetros.

 

 

02- Calcular e exibir a tensão (V) de um determinado circuito eletrónico a partir dos valores da resistência (R) e corrente elétrica (I) que serão digitados. Utilize a lei de Ohm.

Quando essa lei é verdadeira num determinado condutor mantido à temperatura constante, este denomina-se condutor ôhmico. A resistência de um dispositivo condutor é dada pela fórmula:

 

R = V/I ou V = R I

 

Onde:

   V é a diferença de potencial elétrico (ou tensão, ou ddp) medida em volt (V);

   I é a intensidade da corrente elétrica medida em ampère (A) e

   R é a resistência elétrica medida em ohm (Ω).

 

03- Digitar o valor de uma temperatura em graus Celsius, calcular e exibir sua temperatura equivalente em Fahrenheit.

 

 

04- Digitados três valores distintos. Exibir o maior deles.

Program Pzim ;

 var a, b, c:real;

 Begin

  readln(a);

  readln(b);

    readln(c); 

     If (a>b)and (b>c)then

        writeln('maior a')

        else

        if (b>a) and(b>c) then

      writeln('maior b')

  else

        writeln('maior c');   

 End.

 

 

05- Digitar o peso e a altura de uma determinada pessoa. Após a digitação, mostrar se esta pessoa está ou não com seu peso ideal.

R=peso/altura².

Relação peso/altura² (R)

Mensagem

R < 0,0020

Abaixo do peso

0,0020 <= R <0,00 25

Peso ideal

R >= 0,0025

Acima do peso

 

06- Faça um programa para ler três números e escrever se estes podem ou não formar um triângulo.

Program Pzim ;

var l1, l2, l3: real;

 Begin

      readln(l1);

      readln(l2);

            readln(l3);

           

  if (l1+l2<l3) or (l1+l3<l2) or (l2+l3<l1)  then

writeln('não ')

else

writeln('OKOKOKOKOKKOKOK');

       End.

Observação – Para formar os lados de um triângulo cada um dos valores tem que ser menor que a soma dos outros dois.

 

07- Faça um programa para ler três números e se estes poderem formar um triângulo dizer se o triângulo é “EQUILÁTERO”, “ISÓCELES” OU “ESCALENO”.

 

Program Pzim ;

var l1, l2, l3:real ;

 Begin

  readln(l1);

  readln(l2);

    readln(l3);

  If (l1=l2)and (l2=l3) then

  writeln('equilátero todos os lados iguais')

  else

  if (l1<>l2)and(l2<>l3)then

  writeln('escaleno todos os lados diferentes') 

  else

  writeln('isósceles');

 End.

 

http://upload.wikimedia.org/wikipedia/commons/thumb/8/88/Triangolo-Equilatero.png/108px-Triangolo-Equilatero.png

http://upload.wikimedia.org/wikipedia/commons/thumb/1/19/Triangle.Isosceles.png/91px-Triangle.Isosceles.png

http://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Triangolo-Scaleno.png/120px-Triangolo-Scaleno.png

Triângulo equilátero

Todos os lados são iguais

Triângulo isósceles

Dois lados iguais e um diferente

Triângulo escaleno

Todos os lados são diferentes

 

08 – Digitar o peso, o sexo e a altura de uma determinada pessoa. Após a digitação, exibir se esta pessoa está ou não com seu peso ideal. Veja tabela da relação peso/altura².

 

Program Pzim ;

var sexo:real;

p, a, r:real  ;

 

 Begin

 writeln('digite o sexo da pessoa (F - Feminino 1) (M- Masculino)');

 readln(sexo);

 writeln('peso');

 readln(p);

  writeln('zl');

 readln(a);

 r:=p*(a*a);

 if (sexo=1) then

            begin

              if r<0.0019 then

                writeln('mulher a abeixo do peso',r)

                else

                if r>=0.0024       then

                    writeln('mulher a acima do peso',r)

                else

                   writeln('mulher a ok do peso',r);

             end

  else

 

          begin

               

              if r<0.0019 then

                writeln('mcccculher a abeixo do peso',r)

                else

                if r>=0.0024 then

                    writeln('mcccculher a acima do peso',r)

                else

                   writeln('mcccculher a ok do peso',r);

             end;

 

 End.

 

Peso/altura² (R) – Femininos

Mensagem

peso/altura² (R) - Masculinos

Mensagem

R < 0,0019

Abaixo do peso

R < 0,0020

Abaixo do peso

0,0019 <= R < 0,0024

Peso ideal

0,0020 <= R < 0,0025

Peso ideal

R >= 0,0024

Acima do peso

R >=0,0025

Acima do peso

 

 

ENVIAR AO PROFESSOR (PROFCARLOS2006@GMAIL.COM)

 

(Voltar ao Índice)

                          

 

Estrutura Condicional Aninhada (Voltar ao Índice)                                       

 

 

 

 

A estrutura condicional aninhada é semelhante à estrutura condicional com AND

 

 

 

 

O if aninhado é simplesmente um if dentro da declaração de um outro if externo. É necessário saber exatamente a qual if um determinado else está ligado, para não ocasionar erro na lógica do programa.

Exemplos de IF's aninhados:

   Uses Crt;

 

   Var X, Y, A, B : Integer;

 

   Begin

     Readln (X,Y,A,B);

     If (X > Y) Then { Entrará no Próximo If apenas se a variável X for maior que a variavel Y }

     | If (A > B)

     | | Then Writeln ('X é maior que Y e A é maior que B') {Sem ";"}

     | Else Writeln ('A não é Maior que B')   {Sem ";"}

     Else Writeln ('X não é maior que Y');

   End.

 

   { O caracter "|" serve para indicar qual IF pertence a qual ELSE}

   { Repare que antes do ELSE nao tem ";"}

 

Exemplo de IF's aninhados:

   Uses Crt;

 

   Var X, Y, A, B : Integer;

 

   Begin

     Readln (X,Y,A,B);

     If (X > Y) Then

     | If (A > B)

     |    Then Begin

     |    |    | Writeln ('X é maior que Y e A é maior que B');

     |    |    | Writeln ('O Valor de X é = ', X);

     |    |    | Writeln ('O Valor de A é = ', A);

     |    |    End

     |    Else Begin

     |         | Writeln ('A não é Maior que B');

     |         | Writeln ('O Valor de B é = ', B);

     |         End

     Else Writeln ('X não é maior que Y');

   End.

Notas: Repare que para cada BEGIN sempre terá um END, e tem que ficar atento sempre em relação a qual ELSE perfence a qual IF. Os programas acima para compilá-los é necessários tirar todos os caracteres "|" (pipe), que foi utilizado para mostrar a inter-relação entre BEGIN's - END's e IF's - ELSE's.

 

 

a) Compila o seguinte programa e escreve um enunciado para o programa

 

Var nota : Integer;

Begin

  writeln('digite uma nota');

  readln(nota);

  if nota >9 then

    begin

      writeln('aprovado');

    end;

    if nota<10 then

       begin

         if nota>=8 then

            begin

                 writeln('recuperaçao');

            end;

         if nota<8 then

            begin

                 writeln('reprovado');

            end;

       end;

   readln;

End.

 

A1) Tendo em conta que este tipo de abordagem à função SE é semelhante à utilização de AND. Reescreve o algoritmo utilizando IF…AND…Then   em vez do SE aninhado.

 

 

 

A

B

A^B

V

V

V

F

V

F

F

F

F

V

F

F

 

 

 

 

 

 

 

 

 

 

b) Compila o seguinte programa e escreve um enunciado para o programa

 

var

   { local variable definition }

   a, b : integer;

 

begin

   a := 100;

   b:= 200;

 

   (* check the boolean condition *)

   if (a = 100) then

      (* if condition is true then check the following *)

      if ( b = 200 ) then

         (* if nested if condition is true  then print the following *)

         writeln('Value of a is 100 and value of b is 200' );

 

   writeln('Exact value of a is: ', a );

   writeln('Exact value of b is: ', b );

   readln;

end.

 

 

c) Compila o seguinte programa e escreve um enunciado para o programa

 

var

nome:string;

n1,n2,n3,media:real;

f:integer;

Begin

 

   writeln('Digite os dados do aluno');

   write('Nome: ');

   readln(nome);

   write('3 notas: ');

   readln(n1,n2,n3);

   if (n1<0) or (n1>10) or (n2<0) or (n2>10) or (n3<0) or (n3>10) then

     begin

      write('Notas inválidas, digite notas de 0 a 10!');

      readln(n1,n2,n3);

     end;

   media:=(n1+n2+n3)/3;

   write('Quantidade de faltas :');

   readln(f);

   if f<0 then

     begin

       write('Faltas inválidas! digite um número maior ou igual a 0!');

       readln(f);

     end;

   write('O aluno ',nome,' está ');

   if (media>=5) and (f<18) then write('aprovado com média: ',media:2:2);

   if media<5 then write('reprovado por média: ',media:2:2);

   if f>17 then write('reprovado por falta: ',f:2);

   readln;

End.

 

 

d) Compila o seguinte programa e escreve um enunciado para o programa

 

var

    A,B,C:integer;

 Begin

 |  clrscr;

 |  writeln('Digite os lados do triângulo');

 |  readln(A,B,C);

 |  if (A<B+C) and (B<A+C) and (C<A+B) then

 |  |   begin

 |  |   |  write('Os números formam os lados de um triângulo ');

 |  |   |  if (A=B) and (B=C)and (C=A) then

 |  |   |  |  write('equilátero ')

 |  |   |  else

 |  |   |  | if (A=B) and (A<>C)or (B=C)and (C<>A)or(A=C)and (A<>B)then

 |  |   |  | | write('isósceles')

 |  |   |  | else

 |  |   |  | | write('escaleno');

 |  |   end    

 |  else write('Os números não formam os lados de um triângulo');

 |  readln;

 End.

 

 

e) Compila o seguinte programa e escreve um enunciado para o programa

var

 {Definição das variáveis saldo, limite e valorADebitar do tipo real}

 saldo, limite, valorADebitar : real;

 begin

 

 {Atribuição de valores a saldo e limite}

 saldo := 200;

 limite := 500;

 

 {Solicitar ao utilizador o valor a debitar.}

 writeln('Qual o valor a debitar?');

 readln(valorADebitar);

 

 {Se o saldo somado ao limite for maior que o valor a debitar,

então debite o valorADebitar do saldo}

 if (saldo + limite > valorADebitar) then

 begin

 saldo := saldo - valorADebitar;

 writeln('Debito efetuado com sucesso.');

 end

 {Senão, imprima: 'Saldo Insuficiente'}

 else

 begin

 writeln('Saldo insuficiente.');

 end;

 writeln('Fim da transacao. retire o cartão');

 readln;

 end.

 

 

Var nota : Integer;

Begin

  writeln('digite uma nota');

  readln(nota);

  if nota >9 then

    begin

      writeln('aprovado');

    end

   else if (nota<10) and (nota>=8) then

       begin

             writeln('recuperaçao');

            end

        else

            begin

                 writeln('reprovado');

            end;

          readln;

End.

 

ENVIAR AO PROFESSOR (PROFCARLOS2006@GMAIL.COM)

Enunciados a; b; c; d; e.

Programas A1.

(Voltar ao Índice)

 

Else Pendente (Voltar ao Índice)                                       

 

 

 

 

 

 

 

 

 

 

Else pendente acontece quando ele se encontra "perdido" dentro do código, ou seja, ele não sabe a qual If pertence.

Exemplo de Else pendente:

   Uses Crt;

 

   Var X, Y, A, B : Integer;

 

   Begin

     Readln (X,Y,A,B);

     If (X > Y) Then

       If (A > B) Then

         Writeln ('A é maior que B')

       Else  Writeln ('A não é Maior que B');

   End.

Notas: O compilador adota que o Else sempre será do If mais interno.



 

 

Exemplo de como resolver o problema do Else pendente:

   Uses Crt;

 

   Var X, Y, A, B : Integer;

 

   Begin

     Readln (X,Y,A,B);

     If (X > Y) Then

     Begin

       If (A > B) Then

         Writeln ('A é maior que B')

       Else  Writeln ('A não é Maior que B');

     End;

   End.

Notas: Para que não haja duvidas a qual If o Else pertence utilize os delimitadores BEGIN - END.

 

 

 

 

 

 

 

 

 

Estrutura Case (Voltar ao Índice)                                       

 

 

 

 

 

 

 

 

 

 

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.

 

 

 

 

 

 

 

Exercícios (Voltar ao Índice)                                       

 

01- Faça um programa para ler três números e escrever se estes podem ou não formar um triângulo. Observação – Para formar os lados de um triângulo cada um dos valores tem que ser menor que a soma dos outros dois.

Resolução:

 Program triangulo ;

 var

    l1,l2,l3:integer;

 Begin

   clrscr;

   writeln('Digite os lados do triângulo');

   readln(l1,l2,l3);

   if (l1<l2+l3) and (l2<l1+l3) and (l3<l1+l2) then

         writeln('Os números formam os lados de um triângulo')

   else  writeln('Os números não formam os lados de um triângulo');

   readkey;

 End.

 

 

 

02- Faça um programa para ler três números e se estes poderem formar um triângulo dizer se o triângulo é “EQUILÁTERO”, “ISÓCELES” OU “ESCALENO”.

Resolução:

 Program triangulo ;

 var

    A,B,C:integer;

 Begin

 |  clrscr;

 |  writeln('Digite os lados do triângulo');

 |  readln(A,B,C);

 |  if (A<B+C) and (B<A+C) and (C<A+B) then

 |  |   begin

 |  |   |  write('Os números formam os lados de um triângulo ');

 |  |   |  if (A=B) and (B=C)and (C=A) then

 |  |   |  |  write('equilátero ')

 |  |   |  else

 |  |   |  | if (A=B) and (A<>C)or (B=C)and (C<>A)or(A=C)and (A<>B)then

 |  |   |  | | write('isósceles')

 |  |   |  | else

 |  |   |  | | write('escaleno');

 |  |   end    

 |  else write('Os números não formam os lados de um triângulo');

 |  readkey;

 End.

 

 

03- Faça um programa que leia as três notas, as faltas e o nome de um aluno e imprima sua situação. ( “APROVADO”, “REPROVADO POR FALTA” ou “REPROVADO POR MÉDIA” ) Observação – A média para aprovação é 5.0 e o limite de faltas é 17.

Resolução:

 Program aluno;

 var

 nome:string;

 n1,n2,n3,media:real;

 f:integer;

 Begin

    clrscr;

    writeln('Digite os dados do aluno');

    write('Nome: ');

    readln(nome);

    write('3 notas: ');

    readln(n1,n2,n3);

    if (n1<0) or (n1>10) or (n2<0) or (n2>10) or (n3<0) or (n3>10) then

      begin

       write('Notas inválidas, digite notas de 0 a 10!');

       readln(n1,n2,n3);

      end;

    media:=(n1+n2+n3)/3; 

    write('Quantidade de faltas :');

    readln(f);

    if f<0 then

      begin

        write('Faltas inválidas! digite um número maior ou igual a 0!');

        readln(f);

      end; 

    write('O aluno ',nome,' está ');

    if (media>=5) and (f<18) then write('aprovado com média: ',media:2:2);

    if media<5 then write('reprovado por média: ',media:2:2);

    if f>17 then write('reprovado por falta: ',f:2);

    readkey;

 End.

 

 

Exemplo de um programa:

program exemplo;

const

 n1= 5;

 n2= 3;

var

 x,y:integer;

 comp: boolean;

begin

 writeln('Digite um multiplo de ',n1, ' e outro multiplo de ', n2, ': ');

 read(x,y);

 comp:= x > y;

 writeln(x, ' > ', y, ' = ', comp);

 readln; readln;

end.

 

No programa acima, o bloco de comandos que é executado começa logo após o begin.

O bloco contém 6 comandos. Os dois últimos estão escritos na mesma linha, mas apenas por conveniência. Cada comando deve ser separado do seguinte por um ponto-e-vírgula.

Após o ultimo comando de um bloco o ponto-e-vírgula é opcional.

No exemplo acima, n1 e n2 poderiam também ter sido declaradas como variáveis inteiras, em vez de constantes. Nesse caso, seus valores deveriam entrar como comandos de atribuição, dentro do bloco, como abaixo. O efeito seria exatamente o mesmo.

O exemplo mostra o uso de comentário delimitado por (*  e  *)  . Comentários podem também ser delimitados por {  e  } .

 

program exemplo2;

(******************************************************************

 Este exemplo evita usar constantes.

 Mas mostra o uso de comentários.

*******************************************************************)

var

 n1,n2,x,y:integer;

 comp: boolean;

begin

 n1:=5;

 n2:=3;

 writeln('Digite um multiplo de ',n1, ' e outro multiplo de ', n2, ': ');

 read(x,y);

 comp:= x > y;

 writeln(x, ' > ', y, ' = ', comp);

 readln; readln;

end.

 

 

Exemplo:

No exemplo abaixo, a expressão é uma variável c , do tipo caractere. O primeiro caso é uma lista com duas faixas de valores,  e inclui todas as letras maiúsculas entre A e Z, e todas as letras minúsculas entre a e z.  O segundo caso inclui os dígitos de 0 a 9. O terceiro caso inclui uma lista com 4 valores , que são os caracteres usados para as operações aritméticas. Caso a expressão c não tenha nenhum desses valores, os dois comandos após o else serão executados.

 

program exemplo;

 var c: char;

 begin

 write('Entre com um caractere: ');

 readln(c);

 case c of

 'A'..'Z','a'..'z': writeln('Caractere lido e'' letra.');

 '0'..'9': begin

           writeln('Caractere lido e'' um digito ');

           writeln('entre 0 e 9');

           end;

 '+','-','*','/': writeln('Caractere lido e'' um operador matematico.');

 else writeln('O caractere lido nao e'' letra, nem digito,');

      writeln('nem operador matematico.');

 end;

end.

 

Para melhor compreender o exemplo acima, segue abaixo o programa equivalente usando comandos if..then...else equivalentes:

 

program exemplo_if;

 var c: char;

 begin

 write('Entre com um caractere: ');

 readln(c);

 if (c>='A') and (c <= 'Z') or (c>= 'a') and (c <= 'z')

  then writeln('Caractere lido e'' letra.')

  else if (c>='0') and (c<= '9')

       then  begin

             writeln('Caractere lido e'' um digito ');

             writeln('entre 0 e 9');

             end

       else if (c='+') or (c='-') or (c='*') or (c= '/')

            then writeln('Caractere lido e'' um operador matematico.')

            else begin

                 writeln('O caractere lido nao e'' letra, nem digito,');

                 writeln('nem operador matematico.');

                 end;

 end.

EXERCÍCIOS DE FIXAÇÃO

 

 

1)      Escrever um programa em Pascal que solicita do usuário os coeficientes a, b e c da equação de segundo grau:  

           

ax2 + bx + c = 0

 

e imprime uma das seguintes respostas no ecrã:

a)      Existem duas raízes reais com valores <valor 1>  e  <valor 2>

b)      Existe apenas uma raiz real, com valor <valor único>

c)      Não existem valores reais.

 

O programa deve calcular inicialmente o determinante b24*a*c.  Caso seja positivo, calcula os valores (–b + sqrt(b*b-4*a*c))/(2*a)  e  (-b-sqrt(b*b-4*a*c))/(2*a)  e imprime a primeira resposta. Caso seja nulo, calcula o valor b /(2*a)  e imprime a segunda resposta. E caso seja negativo, imprime a terceira resposta.

 

2)      Escrever um programa em Pascal que calcula o Imposto de Renda anual de um contribuinte pessoa física. O usuário deve digitar os seguintes valores reais:

a)      o rendimento bruto tributável recebido no ano;

b)      o total de deduções a que tem direito;

c)      o valor de Imposto de Renda na fonte, já pago durante o ano.

 

Como resposta, o programa deve escrever uma das frases abaixo:

a)      Imposto a pagar:  <valor em euros e cêntimos>

b)      Imposto a receber por devolução:  <valor em euros e cêntimos >

 

O valor do cálculo do Imposto usa a tabela progressiva divulgada pelo Governo, que neste ano é a seguinte:

 

Base de cálculo anual em

Alíquota (%)

Parcela a deduzir do imposto em

Até 12.696,00

-

-

De 12.696,01 até 25.380,00

15,0

1.904,40

Acima de 25.380,00

27,5

5.076,90

 

A Base de cálculo acima é obtida subtraindo o total das deduções do rendimento bruto tributável recebido no ano. O imposto é calculado em partes, um valor para cada faixa de rendimentos.

begin

    writeln('digita milhas');

    readln(m);

    me:=m*1852;

    writeln('metros  ',me:4:4);

    readln;

    k:=((m*1852)/1000);

    writeln('metros   ',k:4:4);

    readln;

 end.