If
Then Else
O comando If permite ao programa
tomar decisões. Ele pode ter duas sintaxes:
Primeira
sintaxe:
If <expressão_lógica> Then Comando;
Expressão_lógica pode ser simples
ou até relações complexas. Se a expressão_lógica resultar verdadeira (TRUE),
então o comando será executado caso contrário não. Para os casos em que
tivermos mais de um comando para serem executados, eles deverão vir delimitados
pelas palavras Begin e End.
If <expressão_lógica> Then
Begin
Comando_1;
Comando_2;
Comando_3;
. . .
End;
No caso acima, se
expressão_lógica for TRUE
então todos comandos inclusos entre as palavras Begin e End
serão executados, caso contrário não.
Segunda sintaxe:
If <expressão_lógica> Then Comando_1
Else Comando_2;
Neste caso, se expressão_lógica
for TRUE então comando_1 será executado e comando_2 não, caso contrário,
comando_2 será executado e comando_1 não. Repare que não temos ; no final de comando_1.
Podemos também escrever:
If <expressão> Then Begin
Comando_1;
Comando_2;
. . .
End (*
não tem ; *)
Else Begin
Comando_3;
Comando_4;
. . .
End;
Exemplos:
Program Exemplo_1;
Uses CRT;
Var i : Integer;
Begin
Clrscr;
Write('Digite um inteiro maior que 100
--> ');
Readln(i);
Writeln;
Writeln;
If (i>100)
Then Writeln('Você conseguiu')
Else Writeln(i,' não e maior que
100');
End.
Program Exemplo_2;
{Programa para determinar o maior numero entre dois lidos do teclado}
Uses CRT;
Var Numero_1,Numero_2 : Integer;
Begin
ClrScr;
Write('Primeiro numero ----> ');
Readln(Numero_1);
Write('Segundo numero -----> ');
Readln(Numero_2);
Writeln;
Writeln;
If (Numero_1 > Numero_2)
Then Write(Numero_1,' e o
maior')
Else If (Numero_2 > Numero_1)
Then
Writeln(Numero_2,' e o maior')
Else Writeln('são iguais');
End.
Program
Exemplo_3;
{Programa para colocar em ordem crescente 3 números lidos do teclado}
Uses CRT;
Var x,y,z : Integer;
Begin
ClrScr;
Write('Primeiro numero --> ');
Readln(x);
Write('Segundo numero ---> ');
Readln(y);
Write('Terceiro numero --> ');
Readln(z);
Writeln;
Writeln;
If (x>=y)
Then If (x>=z)
Then If (y>=z)
Then Writeln(x,'
',y,' ',z)
Else Writeln(x,'
',z,' ',y)
Else Writeln(z,' ',x,' ',y)
Else If (y>=z)
Then If (x>=z)
Then Writeln(y,' ',x,' ',z)
Else Writeln(y,'
',z,' ',x)
Else Writeln(z,' ',y,' ',x);
End.
Labels
e Goto
A instrução Goto permite desviar a seqüência de execução do programa para um determinado
Label pré-definido. Para utilizarmos
algum Label, ele deve, obrigatoriamente,
ser declarado na subárea Label.
Exemplos:
Program Exemplo_1;
{Programa para colocar em ordem crescente 3 números lidos do teclado}
Uses CRT;
Label Inicio;
Var x,y,z : Integer;
tecla : Char;
Begin
Inicio:
ClrScr;
Write('Primeiro numero --> ');
Readln(x);
Write('Segundo numero ---> ');
Readln(y);
Write('Terceiro numero --> ');
Readln(z);
Writeln;
Writeln;
If (x>=y)
Then If (x>=z)
Then If (y>=z)
Then Writeln(x,'
',y,' ',z)
Else Writeln(x,'
',z,' ',y)
Else Writeln(z,' ',x,' ',y)
Else If (y>=z)
Then If (x>=z)
Then Writeln(y,'
',x,' ',z)
Else Writeln(y,'
',z,' ',x)
Else Writeln(z,' ',y,' ',x);
Writeln;
Write('Deseja Continuar --> ');
Tecla:=Readkey;
If ((Tecla = 'S') OR (Tecla = 's')) Then
Goto Inicio;
End.
Program
Exemplo_2;
{Programa para determinar se 3 valores lidos do teclados são lados de
um triângulo
Observações:
Supondo que x,y,z, sejam os valores lidos, então:
1-) Se x<y+z e y<x+z e z<x+y então x,y,z são lados de um
triângulo e se:
2-) x=y=z então é um triângulo Equilátero
3-) x=y ou x=z ou y=z então é um triângulo Isósceles
4-) x<>y<>z então é escaleno}
Label INICIO;
Uses CRT;
Var x,y,z : Real;
Tecla : Char;
Begin
INICIO:
ClrScr;
Write('X = ');
Readln(x);
Write('Y = ');
Readln(y);
Write('Z = ');
Readln(z);
Writeln;Writeln;
If (x<y+z) and (y<x+z) and (z<x+y)
Then If (x=y) and (x=z)
Then Writeln('TRIÂNGULO
EQUILÁTERO')
Else If (x=y) Or (x=z) Or
(y=z)
Then
Writeln('TRIÂNGULO ISÓSCELES')
Else
Writeln('TRIÂNGULO ESCALENO')
Else Writeln('X,Y,Z NÃO SÃO
LADOS DE UM TRIÂNGULO');
Writeln;Writeln;
Write('Deseja Continuar ? --> ');
Tecla:=ReadKey;
If (Tecla='s') Or (Tecla='S')
Then Goto INICIO;
End.
For
Este comando permite que um grupo
de operações ou comandos sejam repetidos um certo número de vezes. Sintaxe
geral:
For <variável> := <valor
inicial> to/downto <valor final> do <comando>;
A variável deverá ser,
obrigatoriamente, do tipo integer (qualquer um), char ou Boolean. A variação de
variável entre valor inicial e valor final será crescente e de um em um, quando
utilizamos a palavra to, e decrescente de um em um, quando utilizamos a palavra
downto.
Exemplos:
Program Exemplo_1;
Uses CRT;
Var i : Integer;
Begin
ClrScr;
For i:=10 to 15 do Writeln(i); (* para i igual a 10 até 15 faça escreva i
*)
End.
Program Exemplo_2;
Uses CRT;
Var i : Integer;
Begin
ClrScr;
For i:=10 downto 1 do Writeln(i);
End.
Program Exemplo_3;
Uses CRT;
{
Este programa escreve na tela os quadrados dos números de 1 até 20 }
Var i : Integer;
Begin
ClrScr;
For i:=1 to 20 do
Begin
Write('Valor de i --> ');
Write(i:3);
Write('..... quadrado de i
= ');
Writeln(i*i:5);
End;
End.
Program Exemplo_4;
Uses CRT;
{Este programa calcula a soma entre todos os números compreendidos
entre dois números lidos do teclado }
Label INICIO;
Var i,Numero_1,Numero_2,soma : Integer;
Tecla : Char;
Begin
INICIO:
ClrScr;
Write('Primeiro Numero --> ');
Readln(Numero_1);
Write('Segundo Numero ---> ');
Readln(Numero_2);
Writeln;
Writeln;
Soma:=0;
For i:=Numero_1 to Numero_2 do
Soma:=Soma+i;
Writeln('Soma entre ',Numero_1,' e
',Numero_2,' = ',soma);
Writeln;
Writeln;
Write('Deseja Continuar ? --> ');
tecla:=ReadKey;
If ((Tecla = 'S') OR (Tecla='s')) Then
Goto INICIO;
ClrScr;
Write('Tchau .........');
End.
Program Exemplo_5;
Uses CRT;
{Programa para cálculo de fatorial de um número lido do teclado.
Lembrando que fatorial de um número é definido como segue:
N! = 1.2.3.4...N
e 0! = 1}
Label Inicio,fim;
Var n,Fatorial,i : Integer;
Begin
Clrscr;
Inicio:
Write('N = ( menor que 0 = fim) -->
');
Readln(n);
If n<0 then goto Fim;
Fatorial:=1;
Writeln;
If (n>0)
Then For i:=1 to n do
Fatorial:=Fatorial*i;
Writeln('Fatorial de ':30,n,' =
',fatorial);
Writeln;
Goto Inicio;
Fim:
End.
Repeat
Until
Repete um bloco de instruções até
que uma certa condição seja satisfeita. Sua sintaxe é:
Repeat
Comando_1;
Comando_2;
Comando_3;
. . .
Until (expressão_lógica);
Neste caso, todos os comandos
entre as palavras reservadas Repeat e Until serão executadas, até que a
expressão lógica seja verdadeira (TRUE), obviamente, devemos ter o cuidado para
que ela venha a ser TRUE em determinado momento, pois caso contrário, teremos
um LOOP INFINITO, (o programa fica preso
dentro da estrutura Repeat - Until).
Exemplos:
Program Exemplo_1;
Uses CRT;
{Programa exemplo para mostrar o funcionamento da estrutura Repeat
Until}
Var i : Integer;
Begin
ClrScr;
i:=1;
Repeat
Writeln(i);
i:=i+1;
Until i=10;
End.
Program Exemplo_2;
Uses CRT;
{Programa que soma os números pares compreendidos entre dois números
lidos do teclado}
Var par,numero_1,numero_2,soma:Integer;
Begin
Clrscr;
Soma:=0;
Write('Primeiro Numero ---> ');
Readln(numero_1);
Write('Segundo Numero ----> ');
Readln(numero_2);
par:=numero_1;
If par MOD 2 <> 0 then par:=par+1;
(* Verifica se o primeiro número é par,
se não for adiciona-se um *)
Repeat
Soma:=soma+par;
par:=par+2;
Until par>numero_2;
Writeln;writeln;
Write('Soma dos números pares
entre ');
Writeln(numero_1,' e ',numero_2,' =
',soma);
end.
Program Exemplo_3;
Uses CRT;
{Programa para cálculo de fatorial.}
Label inicio,fim;
Var n,i,fatorial:integer;
Begin
ClrScr;
inicio:
Write('N = (menor que 0 = fim) -->
');
Readln(n);
If n<0 then goto fim;
Writeln;
fatorial:=1;
i:=1;
if n>1
then Repeat
i:=i+1;
fatorial:=fatorial*i;
Until i=n;
Writeln('fatorial de ':30,n,' =
',fatorial);
Writeln;
goto inicio;
fim:
End.
While
Do
A estrutura While..Do permite controlar o número de vezes que uma
instrução ou bloco de instruções será executado. Ela difere da instrução Repeat..Until
porque esta só avalia a expressão lógica no final do primeiro Loop, enquanto que a instrução While..Do
avalia a expressão lógica antes da primeira interação, isto significa que,
eventualmente, pode não ocorrer sequer a primeira interação.
A sintaxe de While..Do é:
While <expressão_lógica> Do
<comando>;
ou
While <expressão_lógica> Do
Begin
comando_1;
comando_2;
. . .
End;
Exemplos:
Program Exemplo_1;
Uses CRT;
{Programa exemplo que escreve na tela de 0
até 10}
Var i : Integer;
Begin
ClrScr;
i:=0;
While (i<11) Do
Begin
Writeln(i);
i:=i+1;
End
End.
Program Exemplo_2;
Uses CRT;
{Programa que lê números do teclado e depois informa a média dos
números lidos, a quantidade lida, e soma deles}
Label INICIO;
Const Quant_de_num : Integer = 0;
Soma : Real = 0;
Media : Real = 0;
Var
Numero : Real;
Tecla : Char;
Begin
INICIO:
ClrScr;
Write('Valor numérico (menor que 0=fim)
--> ');
Readln(Numero);
While (Numero>=0) Do
Begin
Soma := Soma + Numero;
Quant_de_num := Quant_de_num + 1;
Write('Valor numérico (menor que
0=fim) --> ');
Readln(Numero);
End;
If Quant_de_num > 0
Then Begin
Media :=
Soma/Quant_de_num;
Writeln;
Writeln('Quantidade de números
= ',Quant_de_num);
Writeln('Soma ................
= ',Soma:10:2);
Writeln('Media ............... =
',Media:10:2);
End
Else Writeln('Não se realizou
cálculos');
Writeln;
Write('Deseja continuar ? ---> ');
tecla:=ReadKey;
If (Tecla='s') Or (Tecla='S') Then
Begin
Quant_de_num:=0;
Soma := 0;
Goto Inicio;
End;
End.
Case
Esta instrução nos permite
selecionar uma opção baseada no valor de uma variável ou expressão. Existem
duas sintaxes, a saber:
Sintaxe número 1:
Case <expressão ou variável> of
<valor 1> : Comando_1;
<valor 2> : Comando_2;
. . .
<valor n> : Comando_n;
End;
ou
Case <expressão ou variável> of
<valor 1> : Begin
comando_1;
comando_2;
. . .
End;
<valor 2> : Begin
comando_1;
comando_2;
. . .
End;
. . .
<valor n> : Begin
comando_1;
comando_2;
. . .
End;
End;
A expressão ou variável no
comando Case deve ser do tipo simples, normalmente Char ou Integer. Após a
avaliação da expressão, seu valor ou o valor da variável é comparado com os
diversos valores discriminados. Se houver algum que satisfaça, o comando
subsequente será executado.
Sintaxe número 2:
Case <expressão ou variável> of
<valor 1> : Comando_1;
<valor 2> : Comando_2;
. . .
<valor n> : Comando_n;
Else Comando;
End;
Neste caso, se o resultado da
expressão ou o valor da variável não satisfizer nenhum dos valores
discriminados, então o comando que estiver na frente da cláusula Else será executado.
Exemplos:
Program Exemplo_1;
Uses CRT;
{Programa exemplo da instrução Case. Calcula a soma, ou a subtração, ou
a multiplicação, ou a divisão entre dois números lidos do teclado}
Var
oper : Char;
x,y : Real;
Begin
ClrScr;
Write('Valor de X = ');
Readln(x);
Write('Valor de Y = ');
Readln(y);
Writeln;
Write('Operação --> ');
oper:=ReadKey;
Writeln(oper);Writeln;
Case Oper of
'+' : Write('X + Y = ':10,x+y:6:2);
'-' : Write('X - Y = ':10,x-y:6:2);
'*' : Write('X * Y = ':10,x*y:6:2);
'/' : Write('X / Y = ':10,x/y:6:2);
Else Writeln(oper,' não e operação');
End; (* case *)
End. (* programa *)
Program Exemplo_2;
Uses CRT;
{Programa para cálculo de área de figuras}
Var escolha,continua : Char;
x,y : real;
Begin
Repeat
ClrScr;
Write('Calculo de área de
figuras':53);
Gotoxy(25, 5);Write('1 - Sair do
programa');
Gotoxy(25, 7);Write('2 - Triângulo');
Gotoxy(25, 9);Write('3 -
Quadrado');
Gotoxy(25,11);Write('4 - Retângulo');
Gotoxy(25,13);Write('5 - Circulo');
TextBackGround(7);
TextColor(0+16);
Gotoxy(10,17);Write('Sua escolha
---> ');
escolha:=ReadKey;
Textbackground(0);
Textcolor(14);
Case escolha of
'2' : Begin
ClrScr;
Writeln('Calculo
da área de triangulos':55);
continua:='s';
While Continua='s' Do
Begin
Writeln;
Write('Base = ');
Readln(x);
Write('Altura = ');
Readln(y);
Writeln;
Writeln('Área = ',x*y/2:8:2);
Writeln;
Writeln;
Write('Mais cálculos (s/n)
--> ');
continua:=ReadKey;
Writeln;Writeln;
End;
End;
'3' : Begin
ClrScr;
Writeln('Calculo da área de
quadrados':55);
continua:='s';
While Continua='s' Do
Begin
Writeln;
Write('lado = ');
Readln(x);
Writeln;
Writeln('Área = ',x*x:8:2);
Writeln;
Writeln;
Write('Mais cálculos
(s/n) --> ');
continua:=Readkey;
Writeln;Writeln;
End;
End;
'4' : Begin
ClrScr;
Writeln('Calculo da área
de retangulos':55);
continua:='s';
While Continua='s' Do
Begin
Writeln;
Write('comprimento =
');
Readln(x);
Write('largura = ');
Readln(y);
Writeln;
Writeln('Área = ',x*y:8:2);
Writeln;
Writeln;
Write('Mais cálculos
(s/n) --> ');
continua:=readkey;
Writeln;Writeln;
End;
End;
'5' : Begin
ClrScr;
Writeln('Calculo da área
de circulos':55);
continua:='s';
While Continua='s' Do
Begin
Writeln;
Write('raio = ');
Readln(x);
Writeln;
Writeln('Área = ',PI*x*x:8:2);
Writeln;
Writeln;
Write('Mais cálculos
(s/n) --> ');
continua:=readkey;
Writeln;Writeln;
End;
End;
End;
Until escolha='1';
End.
Nenhum comentário:
Postar um comentário