Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem...

5

Click here to load reader

Transcript of Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem...

Page 1: Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem de Programação – 1 Estrutura Condicional em Pascal Existem situações em que alguns comandos

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.

Page 2: Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem de Programação – 1 Estrutura Condicional em Pascal Existem situações em que alguns comandos

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}

Page 3: Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem de Programação – 1 Estrutura Condicional em Pascal Existem situações em que alguns comandos

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.

Page 4: Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem de Programação – 1 Estrutura Condicional em Pascal Existem situações em que alguns comandos

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

Page 5: Estrutura Condicional em Pascal - Tecnologia da Informação · PDF fileLinguagem de Programação – 1 Estrutura Condicional em Pascal Existem situações em que alguns comandos

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.