quinta-feira, 26 de março de 2009

Estruturas de Decisão

ESTRUTURAS DE DECISÃO
Imagine um programa que apresente a média escolar de um aluno. Até aqui, muito simples; mas além de calcular a média, o programa deve apresentar uma mensagem indicando se o aluno foi aprovado ou reprovado. Esta variável, que até então servia para cálculos, agora passa a ser uma variável de controle, onde partir dela poderemos tomar uma decisão sobre o status do aluno. Em Pascal existem duas instruções para efetuar tomadas de decisão e desvios de operações:
a instrução de decisão simples if...then; e
a instrução de decisão composta if...then...else.

Instrução if..then

A instrução if...then tem por finalidade tomar uma decisão e efetuar um desvio no processamento, dependendo, é claro, da condição atribuída ser verdadeira ou falsa.
Sendo a condição verdadeira, será executada a instrução que estiver escrita após a instrução if..then. Se a instrução for falsa, serão executadas as instruções que estejam após as instruções consideradas verdadeiras.
Sintaxe:

if then
;
;

Vejamos um exemplo de um trecho de programa com o uso da instrução

if...then:
...
if (x > 10) then
writeln(“O valor da variavel X e 10”);
...
Caso venha a existir mais de uma instrução verdadeira para uma determinada condição, estas deverão estar inseridas em um bloco. Um bloco é o conjunto de instruções estar entre begin e end.




Sintaxe:
if then
begin




end;

Observe que o end é finalizado com um ponto-e-vírgula ( ; ) e não apenas ponto. O uso de ponto ao final de um end ocorre somente na finalização de um programa.
Vejamos um exemplo de um trecho de programa com a utilização de um bloco de instruções:
...
if (x > 10) then
begin
writeln(“O valor da variavel X e 10”);
x : = x + 1;
writeln(“O valor da variavel X agora e11”);
end;
...
Vejamos um exemplo completo de um programa com o uso da instrução if...then.

“Ler dois valores inteiros e independentemente da ordem em que foram inseridos, estes deverão ser exibidos em ordem crescente, ou seja, se forem fornecidos 5 e 3 respectivamente, deverão ser apresentados 3 e 5. O programa em questão deverá efetuar a troca dos valores entre as duas variáveis”

Algoritmo
1. Ler dois valores inteiros (estabelecer variáveis A e B);
2. Verificar se o valor de A é maior que o valor de B:
a. se for verdadeiro, efetuar a troca de valores entre as variáveis;
b. se for falso, pedir para executar o que está estabelecido no passo 3;
3. Apresentar os valores das duas variáveis.

Programa em Pascal

program ORDENA;
var
X, A, B : integer;
begin
write (‘Informe uma valor para a variavel A: ‘);
readln(A);
write (‘Informe uma valor para a variavel B: ‘);
readln(B);
writeln;
if (A > B) then
begin
X := A;
A := B;
B := X;
end;
writeln(‘Os valores ordenados são: ‘);
write(A, ‘ ‘, B);
end.
Instrução if...then...else

Assim como a instrução if...then, a instrução if...then...else tem por finalidade tomar uma decisão e efetuar um desvio no processamento. Se a condição for verdadeira será executada a instrução logo abaixo do if. Sendo a condição falsa, será executada a instrução que estiver posicionada logo após a instrução else. O conceito de blocos de instruções vale também para esta instrução.

Sintaxe:

if then

else
;
Caso venha a existir mais de uma instrução verdadeira ou falsa para uma condição, estas deverão estar inseridas em um bloco.

Sintaxe:

if then
begin
;
;
end
else
begin
;
;
end;

Observe que nos dois casos abordados acima, qualquer instrução que antecede a instrução else está escrita sem o ponto-e-vírgula (;). Isto ocorre pelo fato de a instrução else ser uma extensão da instrução if...then, e sendo assim, o final da condição somente ocorre após o processamento da instrução else.
Vejamos um exemplo:
“Ler dois valores numéricos e efetuar a adição. Caso o valor somado seja maior ou igual a 10, este deverá ser apresentado somando-se a ele mais 5. Caso o valor somado não seja maior ou igual a 10, esta deverá ser apresentado subtraindo-se 7.”

Algoritmo
1. Ler dois valores (variáveis A e B);
2. Efetuar a soma dos valores A e B, atribuindo o resultado da soma a uma variável X;
3. Verificar se X é maior ou igual a 10:
a. se for verdadeiro, mostrar X+5;
b. se for falso, mostrar X-7.

Programa em Pascal

program ADICIONA_NUMEROS;
var
X, A, B : integer;
begin
write(‘Informe um valor para a variavel A: ‘);
readln(A);
write(‘Informe um valor para a variavel B: ‘);
readln(B);
writeln;
X := A + B;
write (‘O resultado equivale a: ‘);
If (X>=10) then
writeln(X+5)
else
writeln(X-5)
end.
Podemos trabalhar com o relacionamento de duas ou mais condições dentro da instrução if...then. Para estes casos, é necessário trabalhar com os operador lógicos, vistos anteriormente. Vejamos alguns exemplos:

Operador AND

program TESTA-LOGICA-AND;
var
NUMERO : integer;
begin
write(‘Informe um numero: ’);
readln(NUMERO);
writeln;
if (NUMERO >= 20) and (NUMERO <=90) then
writeln(‘O numero esta na faixa de 20 a 90’)
else writeln(‘O numero esta fora da faixa de 20 a 90’);
end.

Operador OR

program TESTA-LOGICA-OR;
var
A, B : integer;
begin
write(‘Informe um valor para a variavel A: ‘);
readln(A);
write(‘Informe um valor para a variavel B: ‘);
readln(B);
writeln;
if (A>0) or (B>0) then
writeln(‘Um dos numeros e positivo’);

Operador NOT

program TESTA-LOGICA-NOT;
var
A, B, C, X : integer;
begin
write(‘Informe um valor para a variavel A: ‘);
readln(A);
write(‘Informe um valor para a variavel B: ‘);
readln(B);
write(‘Informe um valor para a variavel X: ‘);
readln(X);
if not (X>5) then
C := (A + B) * X
else
C := (A - B) * X;
writeln(‘O resultado da variavel C corresponde a:’, C);
end.

Nenhum comentário:

Postar um comentário