Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem...
Click here to load reader
Transcript of Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem...
Linguagem de Programação – 1
http://erinaldosn.wordpress.com
Estrutura Condicional em Pascal
Existem situações em que alguns comandos só devem ser executados se alguma
condição for verificada.
A verificação de que uma condição é satisfeita e, a partir daí, a decisão em
relação à execução ou não de uma determinada sequência de comandos é chamada de
estrutura de seleção, estrutura de decisão ou comando de seleção.
Estrutura condicional simples IF condição THEN
comando;
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. IF condição THEN
BEGIN
comando1;
comando2;
comando3;
END;
O comandos 1, 2 e 3 só serão executados se a condição for verdadeira.
Exemplo 1: programa para determinar o maior de dois números dados. PROGRAM EXEMPLO1;
VAR
A, B, MAIOR : INTEGER;
BEGIN
WRITE('Digite dois numeros: ');
READLN(A, B);
MAIOR := A;
IF (B > A) THEN
MAIOR:=B;
WRITELN('O maior dos numeros ',A,' e ',B,' e ',MAIOR);
READLN;
END.
Exemplo 2: programa para ordenar os conteúdos de duas variáveis. PROGRAM EXEMPLO2;
VAR
X, Y, AUX : INTEGER;
BEGIN
WRITE('Digite dois numeros: ');
READLN(X,Y);
WRITELN('Numeros digitados: x = ',X,' y = ',Y);
IF X > Y THEN
BEGIN
AUX := X;
X := Y;
Y := AUX;
END;
WRITELN('Numeros ordenados: x = ',X,' y = ',Y);
READLN;
END.
2 – Estrutura Condicional
http://erinaldosn.wordpress.com
Estrutura condicional composta IF condição THEN
comando1
ELSE
comando2;
Se a condição for verdadeira, será executado o comando1; caso contrário, se a
condição for false, será executado o comando2. IF condição THEN
BEGIN
comando1;
comando2;
END
ELSE
BEGIN
comando3;
comando4;
END;
Se a condição for verdadeira, o comando1 e o comando2 serão executados; caso
contrário, se a condição for falsa, o comando3 e o comando4 serão executados.
Antes do comando ELSE não existe ponto-e-vírgula.
Exemplo3: programa para verificar a paridade de um número. PROGRAM EXEMPLO3;
VAR
NUM : INTEGER;
BEGIN
WRITE('Digite um numero: ');
READLN(NUM);
IF ODD(NUM) = TRUE THEN
WRITELN(NUM,' e impar')
ELSE
WRITELN(NUM,' e par');
READLN;
END.
Se queremos determinar a paridade um número podemos determinar o valor de
ODD(numero). Se este valor for true, o número é impar; caso contrário, se for
false, o número dado é par.
O valor de ODD(numero) é um valor do tipo boolean (true ou false).
Exemplo4: programa para ordenar três números dados. PROGRAM EXEMPLO4;
VAR
X, Y, Z, AUX : INTEGER;
BEGIN
WRITE('Digite tres numeros: ');
READLN(X,Y,Z);
WRITELN('Numeros digitados: x = ',X,', y = ',Y,' e z = ',Z);
IF (X > Y) OR (X > Z) {X nÆo ‚ o menor}
THEN IF (Z > Y) {Y ‚ o menor}
THEN
BEGIN {permuta de x e de y}
AUX := X;
X := Y;
Y := AUX;
END
ELSE {Z ‚ o menor}
BEGIN {permuta de x e de z}
Linguagem de Programação – 3
http://erinaldosn.wordpress.com
AUX := X;
X := Z;
Z := AUX;
END;
IF (Y > Z) THEN {permuta de y e de z}
BEGIN
AUX := Y;
Y := Z;
Z := AUX;
END;
WRITELN('Numeros ordenados: x = ',X,', y = ',Y,' e z = ',Z);
READLN;
END.
Foi escrita no programa algumas frases explicativas das ações pretendidas. Estas
frases são chamadas comentários e devem ser escritas entre pares de caracteres chave, {
e }. O compilador desconsidera tudo o que vem entre os dois caracteres. Isso permite ao
programador registrar no próprio programa os comentários que ele achar conveniente. A
prática de se colocar comentários nos programas é muito importante e facilita sua
compreensão.
Estrutura CASE Em alguns problemas existem comandos mutuamente exclusivos, isto é, se um
comando for executado os demais não serão. Quando este for o caso, um comando
seletivo é o mais indicado. CASE seletor OF
lista de alvos1: comando1;
lista de alvos2: comando2;
alvo3: comando3;
alvo4: BEGIN
comando4;
comando5;
END;
END;
Se o seletor atingir a lista de alvos1, o comando1 será executado; se o seletor
atingir a lista de alvos2, o comando2 será executado; se o seletor atingir o alvo3, o
comando3 será executado ou se o seletor atingir o alvo4 então o comando4 e o
comando5 serão executados. Se nenhum alvo for atingido, nada será executado. CASE seletor OF
lista de alvos1:
BEGIN
comando1;
comando2;
END;
lista de alvos2: comando3;
ELSE
comando4;
END;
Se o seletor atingir a lista de alvos1, o comando 1 e o comando2 serão
executados; se o seletor atingir a lista de alvos2, o comando 3 será executado. Se
nenhum alvo for atingido, será executado o comando4.
4 – Estrutura Condicional
http://erinaldosn.wordpress.com
A restrição da estrutura CASE é que o seletor só pode ser uma variável do tipo
CHAR, INTEGER ou BOOLEAN.
Exemplo5: programa que determina o número de dias de um mês dado. PROGRAM EXEMPLO5;
VAR
MES, ANO, NUMDIAS : INTEGER;
BEGIN
WRITE('Digite o mes: ');
READLN(MES);
CASE MES OF
4, 6, 9, 11 : NUMDIAS := 30;
2 : BEGIN
WRITE('Digite o ano: ');
READLN(ANO);
IF((ANO MOD 4 = 0) AND (ANO MOD 100 <> 0)) OR (ANO MOD
400 <> 0)
THEN
NUMDIAS := 29
ELSE
NUMDIAS := 28;
END;
ELSE
NUMDIAS:= 31;
END;
WRITELN('O mes ',MES,' tem ',NUMDIAS,' dias');
READLN;
END.
Exemplo6: programa que determina o dia da semana de uma dada data, tomando como
base o ano de 1600 com o dia primeiro em um sábado. PROGRAM EXEMPLO6;
VAR
DIA, MES, ANO, DIASANO, DIAS31, ANOBISS : INTEGER;
ANOS, NUMDIAS : LONGINT;
BISS : BOOLEAN;
BEGIN
WRITE('DIGITE DIA, MES E ANO ');
READLN(DIA,MES,ANO);
BISS:=TRUE;
{verifica se o ano e bissexto}
IF ((ANO MOD 4 <>0) OR
((ANO MOD 100 = 0) AND
(ANO MOD 400 <> 0)))
THEN
BISS := FALSE;
ANOS := ANO - 1600;
{numero de meses com 31 dias at‚ o mes dado}
IF (MES < 9) THEN
DIAS31 := MES DIV 2
ELSE
DIAS31 := (MES+1) DIV 2;
{numero de dias do ano dado, considerando fevereiro como
tendo 30 dias}
DIASANO := 30*(MES-1) + DIA + DIAS31;
{retifica o numero de dias de fevereiro}
IF (MES > 2) THEN
Linguagem de Programação – 5
http://erinaldosn.wordpress.com
IF BISS THEN
DIASANO := DIASANO - 1
ELSE
DIASANO := DIASANO - 2;
{numero de anos bissextos entre o ano dado (exclusive) e
1600}
IF BISS THEN
ANOBISS := (ANO DIV 4 - 400) -
(ANO DIV 100 - 16) +
(ANO DIV 400 - 4)
ELSE
ANOBISS := (ANO DIV 4 - 400) -
(ANO DIV 100 - 16) +
(ANO DIV 400 - 4) + 1;
{numero de dias entre a data e 01/01/1600}
NUMDIAS := ANOS*365 + DIASANO + ANOBISS;
{dia da semana}
WRITE('O DIA ',DIA,'/',MES,'/',ANO,' CAIU(CAIRA) NUM(A)
');
CASE NUMDIAS MOD 7 OF
1 : WRITELN('SABADO');
2 : WRITELN('DOMINGO');
3 : WRITELN('SEGUNDA');
4 : WRITELN('TERCA');
5 : WRITELN('QUARTA');
6 : WRITELN('QUINTA');
0 : WRITELN('SEXTA');
END;
READLN;
END.
Para se calcular o número de dias entre uma data dada e 01/01/1600 basta
multiplicar o número de anos por 365, acrescentar o quantidade de anos bissextos e o
número de dias ocorridos no ano corrente.