estruturas de decisÃo (seleÇÃo) - ufpa.br · entÃo faça natação senÃo faça uma caminhada...

70
PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EM FUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA ESTRUTURAS DE DECISÃO Prof. Benedito Ferreira - UFPA ESTRUTURAS DE DECISÃO (SELEÇÃO)

Upload: vutruc

Post on 20-Jan-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

ESTRUTURAS DE DECISÃO (SELEÇÃO)

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

São muito comuns em programação — assim como na nossa prática em geral — situações em que decidimos por um ou outro procedimento, de acordo com certas condições.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE estiver chovendo

ENTÃO pegue o guarda-chuva

Ao sair de casa...

Estáchovendo?

Peque o guarda-chuva

V

F

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE estiver chovendo

ENTÃO pegue o guarda-chuva

Ao sair de casa...

Realizaremos a ação <pegar o guarda-chuva> somente se determinada condição for verdadeira.

Caso contrário, nenhuma ação será feita.

Estáchovendo?

Peque o guarda-chuva

V

F

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE a piscina está livre ENTÃO faça nataçãoSENÃO faça uma caminhada

Em alguns casos, queremos especificar também o que será feito, caso a condição não se verifique...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE a piscina está livre ENTÃO faça nataçãoSENÃO faça uma caminhada

Em alguns casos, queremos especificar também o que será feito, caso a condição não se verifique...

a piscinaestá livre?

VF

Faça uma caminhada Faça natação

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE a piscina está livre ENTÃO faça nataçãoSENÃO faça uma caminhada

Em alguns casos, queremos especificar também o que será feito, caso a condição não se verifique...

a piscinaestá livre?

VF

Faça uma caminhada Faça natação

Agora, uma das duas ações será realizada, dependendo da condição.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE a piscina está livre ENTÃO faça nataçãoSENÃO faça uma caminhada

Em alguns casos, queremos especificar também o que será feito, caso a condição não se verifique...

a piscinaestá livre?

VF

Faça uma caminhada Faça natação

Note que somente um dos dois caminhos será percorrido...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE a piscina está livre ENTÃO faça nataçãoSENÃO faça uma caminhada

Em alguns casos, queremos especificar também o que será feito, caso a condição não se verifique...

a piscinaestá livre?

VF

Faça uma caminhada Faça natação

Somente um dos dois caminhos será percorrido...

este...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE a piscina está livre ENTÃO faça nataçãoSENÃO faça uma caminhada

Em alguns casos, queremos especificar também o que será feito, caso a condição não se verifique...

a piscinaestá livre?

VF

Faça uma caminhada Faça natação

Somente um dos dois caminhos será percorrido...

ou este.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE CONDENTÃO AÇÃO1SENÃO AÇÃO2

Assim, o formato básico das estruturas de decisão (ou seleção) será:

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE CONDENTÃO AÇÃO1SENÃO AÇÃO2

Assim, o formato básico das estruturas de decisão (ou seleção) será:

SE CONDENTÃO AÇÃO

Ou...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

SE CONDENTÃO AÇÃO1SENÃO AÇÃO2

Assim, o formato básico das estruturas de decisão (ou seleção) será:

SE CONDENTÃO AÇÃO

Ou...

O segundo formato é um caso particular do primeiro.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

AExemplos em programaçãoprogram conversao;var Tf,Tc:real;begin write('Forneça a temperatura em celsius: '); readln(Tc); Tf := 9*Tc/5+32; {conversão para fahrenheit} writeln('Temperatura em Fahrenheit: ',Tf:4:2); if Tf > 200 then write('Atenção – temperatura muito elevada!!'); end.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

AExemplos em programaçãoprogram identifica_maior;var n1,n2: real;begin write('Forneça dois números: '); readln(n1,n2); if n1>n2 then writeln(´Maior: ´,n1) else writeln(´Maior: ´,n2);end.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

2 3

2 3

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

2 3

2 3

F

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

2 3

2 3

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

EXECUÇÃO

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

2 3

2 3Maior: 3

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

EXECUÇÃO 2

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:EXECUÇÃO 2

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:EXECUÇÃO 2

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

7 3

7 3EXECUÇÃO 2

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

7 3

7 3EXECUÇÃO 2

V

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

3

7 3EXECUÇÃO 2

7

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

program identifica_maior;

var

n1,n2: real;

begin

writeln('Forneça dois números:');

readln(n1,n2);

if n1>n2 then

writeln(´Maior: ´,n1)

else writeln(´Maior: ´,n2);

end.

n1 n2

Forneça dois números:

3

7 3Maior: 7

EXECUÇÃO 2

7

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Formação de blocos

Há muitos casos em que, dependendo da condição ser verdadeira (ou falsa), queremos que sejam executados vários comandos.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Há muitos casos em que, dependendo da condição ser verdadeira (ou falsa), queremos que sejam executados vários comandos.

Isso se resolve da seguinte forma: em vez de um comando, coloca-se um bloco (em Pascal, delimitado por begin..end).

Formação de blocos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

if Delta = 0

then begin

raiz := (-1)*B/(2*A); writeln('Há 2 raízes reais e iguais.');

write('Valor: ', raiz); end

else begin

raiz1 = ((-1)*B+sqrt(Delta))/(2*A);

raiz2 = ((-1)*B-sqrt(Delta))/(2*A); writeln('Há 2 raízes reais distintas.');

write('Valores: ', raiz1,' e ',raiz2);

end;

Exemplo:

Formação de blocos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

if Delta = 0

then begin

raiz := (-1)*B/(2*A); writeln('Há 2 raízes reais e iguais.');

write('Valor: ', raiz); end

else begin

raiz1 = ((-1)*B+sqrt(Delta))/(2*A);

raiz2 = ((-1)*B-sqrt(Delta))/(2*A); writeln('Há 2 raízes reais distintas.');

write('Valores: ', raiz1,' e ',raiz2);

end;

Exemplo:

Formação de blocos

Por simplificação, adotamos que Delta nunca será negativo. Assim, se Delta = 0 for falso, necessariamente Delta será positivo e o segundo bloco (do else) será executado.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Operadores lógicos

Em certas situações a execução ou não de certo comando (ou bloco) será dependente de mais de uma condição.

Uma maneira de articular várias condições são os operadores lógicos. Os mais empregados são AND (E) e OR (OU).

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Operadores lógicos e seu significado

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

AND

Empregamos esse operador quando queremos que certo comando seja executado quando duas (ou mais) condições sejam verdadeiras ao mesmo tempo. Ex:

readln(Idade);if (Idade>10) AND (Idade<20) then

write('Adolescente');

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

AND

readln(Idade);if (Idade>10) AND (Idade<20) then

write('Adolescente');

Empregamos esse operador quando queremos que certo comando seja executado quando duas (ou mais) condições sejam verdadeiras ao mesmo tempo. Ex:

Somente quando as duas condições são verdadeiras, a pessoa será considerada adolescente (idade de 11 até 19).

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

OR

Empregamos esse operador quando queremos que certo comando seja executado quando uma das condições (ou ambas) sejam verdadeiras. Ex:

readln(Temperat);if (Temperat < 10) OR (Temperat > 38) then

write('Temperatura inadequada');

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

OR

Empregamos esse operador quando queremos que certo comando seja executado quando uma das condições (ou ambas) sejam verdadeiras. Ex:

readln(Temperat);if (Temperat < 10) OR (Temperat > 38) then

write('Temperatura inadequada');

Neste caso, espera-se que a temperatura se mantenha entre 10 e 38 graus. Para temperaturas abaixo ou acima dessa faixa, uma mensagem de advertência será dada.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

NOT

O operador NOT produz o contrário do operando, que poderá ser uma variável lógica ou uma outra operação lógica.

readln(Temperat);if (NOT Temperat > 45) then

write('Temperatura adequada')

else write('Temperatura inadequada');

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

NOT

O operador NOT produz o contrário do operando, que poderá ser uma variável lógica ou uma outra operação lógica.

readln(Temperat);if (NOT Temperat > 45) then

write('Temperatura adequada')

else write('Temperatura inadequada');

A temperatura adequada não pode ultrapassar 45 graus...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

NOT

O operador NOT produz o contrário do operando, que poderá ser uma variável lógica ou uma outra operação lógica.

readln(Temperat);if (NOT Temperat > 45) then

write('Temperatura adequada')

else write('Temperatura inadequada');

A temperatura adequada não pode ultrapassar 45 graus...

Uma temperatura superior (50 p. ex.) produzirá V no teste Temperat>45.

V

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

NOT

O operador NOT produz o contrário do operando, que poderá ser uma variável lógica ou uma outra operação lógica.

readln(Temperat);if (NOT Temperat > 45) then

write('Temperatura adequada')

else write('Temperatura inadequada');

A temperatura adequada não pode ultrapassar 45 graus...

Uma temperatura superior (50 p. ex.) produzirá V no teste Temperat>45. Com a aplicação do NOT, o resultado será F, com execução do segundo comando (else).

F

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

NOT

O operador NOT produz o contrário do operando, que poderá ser uma variável lógica ou uma outra operação lógica.

readln(Temperat);if (NOT Temperat > 45) then

write('Temperatura adequada')

else write('Temperatura inadequada');

Uma construção equivalente seria...

readln(Temperat);if (Temperat <= 45) then

write('Temperatura adequada')else write('Temperatura inadequada');

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

NOT

O operador NOT produz o contrário do operando, que poderá ser uma variável lógica ou uma outra operação lógica.

readln(Temperat);if (NOT Temperat > 45) then

write('Temperatura adequada')

else write('Temperatura inadequada');

Uma construção equivalente seria...

readln(Temperat);if (Temperat <= 45) then

write('Temperatura adequada')else write('Temperatura inadequada');

Observe que o oposto de maior é

menor-ou-igual...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Tabela-verdade

~A (negação/NOT): operador unário (um só operando) que produz sempre o inverso do valor do operando.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Tabela-verdade

A^B (conjunção/AND): será verdadeiro somente quando o valor dos dois operandos for verdadeiro.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Tabela-verdade

AᐯB (disjunção/OR): será falso somente quando o valor dos dois operandos for falso.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Tabela-verdade

AᐯB (ou exclusivo/XOR): será verdadeiro quando os operandos forem diferentes; ou seja, apenas um verdadeiro.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

Em um posto de saúde, de todos os atendidos, as mulheres que tenham idade entre 15 e 49 anos deverão ser vacinadas

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

Em um posto de saúde, de todos os atendidos, as mulheres que tenham idade entre 15 e 49 anos deverão ser vacinadas

...readln(idade,sexo);

if (sexo='F') AND (idade>14) AND (idade<50) then

write('Indicação para vacinação');...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

Em um posto de saúde, de todos os atendidos, as mulheres que tenham idade entre 15 e 49 anos deverão ser vacinadas

...readln(idade,sexo);

if (sexo='F') AND (idade>14) AND (idade<50) then

write('Indicação para vacinação');...

Somente quando todas as condições forem verdadeiras, a mensagem será executada.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

Supor agora que os homens é que serão vacinados, mas somente aqueles com menos de 20 anos, ou então com mais de 60 anos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

Supor agora que os homens é que serão vacinados, mas somente aqueles com menos de 20 anos, ou então com mais de 60 anos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

O que temos acima é um erro de programação.

Supor agora que os homens é que serão vacinados, mas somente aqueles com menos de 20 anos, ou então com mais de 60 anos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Várias condições articuladas

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

O que temos acima é um erro de programação.

Vejamos as prioridades entre os operadores...

Supor agora que os homens é que serão vacinados, mas somente aqueles com menos de 20 anos, ou então com mais de 60 anos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade mais alta: NOT

Prioridade média: AND

Prioridade mais baixa: OR - XOR

Prioridade entre operadores lógicos

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade mais alta: NOT

Prioridade média: AND

Prioridade mais baixa: OR - XOR

Prioridade entre operadores lógicos

OBS: a aplicação de parênteses altera essas regras, forçando uma ordem de execução desejada.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

Assim, no código antes apresentado...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

As operações serão agrupadas desta forma.

Assim, no código antes apresentado...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

As operações serão agrupadas desta forma.

Assim, no código antes apresentado...

O resultado é que homens com menos de 20 anos serão indicados...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

As operações serão agrupadas desta forma.

O resultado é que homens com menos de 20 anos serão indicados...

Assim, no código antes apresentado...

...assim como as pessoas acima de 60 anos (de qualquer sexo).

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

Ver esta situação, por exemplo:

sexo idade

F 65

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

Ver esta situação, por exemplo:

sexo idade

F 65

falso falso falso E falso ⇒ falso

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

Ver esta situação, por exemplo:

sexo idade

F 65

falso verdadeiro

falso OU verdadeiro ⇒ verdadeiro

(indicação para vacinação...)

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND (idade<20) OR (idade>60) then write('Indicação para vacinação');

...

Para que a intenção original fosse alcançada...

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND ((idade<20) OR (idade>60)) then write('Indicação para vacinação');

...

Para que a intenção original fosse alcançada...

Um par de parênteses deveria indicar a ordem de execução desejada.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Prioridade entre operadores lógicos

...

readln(idade,sexo);

if (sexo='M') AND ((idade<20) OR (idade>60)) then write('Indicação para vacinação');

...

Para que a intenção original fosse alcançada...

Agora as operações serão agrupadas conforme indicado acima.

PROGRAMA DE FORMAÇÃO/CERTIFICAÇÃO EMFUNDAMENTOS DE PROGRAMAÇÃO IMPERATIVA

ESTRUTURAS DE DECISÃO

Pro

f. B

ened

ito F

err

eira

- U

FP

A

Desenvolvido com software livre.