Você está na página 1de 9

Pascal - Comando de

Seleção Composto
 Os problemas abordados podiam ser resolvidos
utilizando apenas um comando de seleção. Eram
problemas que se limitavam a teste de apenas duas
alternativas.
 Foi o caso de testar se um número é par ou ímpar
 Em problemas mais complexos, nos defrontaremos
com teste de mais de duas alternativas.
 Neste caso, precisaremos utilizar mais de um
comando de seleção, até testarmos todas as
condições possíveis exigidas para a solução do
problema.
 Vejamos o caso da análise de um valor, para
sabermos se esse valor é positivo, nulo ou
negativo.
 Neste caso temos três alternativas para
testar. Para isto teremos que utilizar pelo
menos dois comandos de seleção. Uma
possível solução seria:
Exemplos

 Program testa_positivo_nulo_negativo;
Var
.....N : Integer;
Begin
.....Writeln('Digite um valor inteiro qualquer');
.....Readln(N);
.....if N > 0
..........then Writeln('Valor lido eh positivo");
.....if N = 0
..........then Writeln('Valor lido eh nulo");
.....if N < 0
..........then Writeln('Valor lido eh negativo"); ..........
.....Readln;
end.
 A solução anterior funciona, porém de forma não muito
eficiente.
 Observe que, em caso do número ser positivo, o primeiro
comando de seleção ativaria o comando de saída com a
mensagem 'Valor lido eh positivo', mas mesmo assim o
programa continuaria testando as outras duas condições
(N=0 e N<0), considerando-se que os próximos comandos
de seleção estão em sequência.
 Teríamos então execução de instruções desnecessárias, o
que comprometeria a performance do programa.
 Em programas simples como esse, o problema não seria
tão crítico. Porém em programas com grandes volumes de
processamento, a estrutura utilizada causaria certamente
ineficiência na execução.
 Para resolver esse problema, o
ideal é utilizarmos os comandos
de seleção na forma endentada,
em que a condicão falsa de um
primeiro teste implicaria em
testar uma nova condição, e
assim sucessivamente.
 A solução do mesmo problema usando comandos de seleção
endentados seria:
 Program testa_positivo_nulo_negativo;
Var
.....N : Integer;
Begin
.....Writeln('Digite um valor inteiro qualquer');
.....Readln(N);
.....if N > 0
..........then Writeln('Valor lido eh positivo")
.... .....else if N = 0
...............then Writeln('Valor lido eh nulo")
...............else Writeln('Valor lido eh negativo"); ..........
.....Readln;
end.
 Observe que neste caso precisamos
utilizar apenas dois comandos de
seleção, pois a negação de que N é
nulo implica que ele é negativo, desde
que a condição de N positivo foi
descartada no primeiro comando de
seleção
 Mais um Exemplo
Programa para obter a soma, diferença,
produto ou quociente de dois valores
lidos:

Você também pode gostar