Pascal
37 pág.

Pascal


DisciplinaLógica de Programação e Algoritmos2.906 materiais33.205 seguidores
Pré-visualização7 páginas
\u2022\u2022 SE = IF
\u2022\u2022 ENTÃO = THEN
\u2022\u2022 SENÃO = ELSE
\u2022\u2022 INÍCIO = BEGIN
\u2022\u2022 FIM = END
Exemplo com apenas uma instrução:
 Uses Crt;
 
 var X, Y : Integer;
 
 begin
 Writeln ('Entre com dois Números:'); { Mostra na tela 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 
nesse 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); 
Estrutura Condicional 17
{Entra nesse comando se Y for maior ou igual a X}
 end.
Exemplo com mais de uma instrução:
 Uses Crt;
 
 var X, Y : Integer;
 
 begin
 Writeln ('Entre com dois Números:'); { Mostra na tela 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 { Repare 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 ";"}
Estrutura Condicional Aninhada
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:
Estrutura Condicional 18
 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.
Else Pendente
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
Estrutura Condicional 19
 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
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:
 { 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, 
Estrutura Condicional 20
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.
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.
Exercícios
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 \u2013
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; 
Estrutura Condicional 21
 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 é
\u201cEQUILÁTERO\u201d, \u201cISÓCELES\u201d OU \u201cESCALENO\u201d.
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. (
\u201cAPROVADO\u201d, \u201cREPROVADO POR FALTA\u201d ou \u201cREPROVADO POR MÉDIA\u201d ) Observação \u2013 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