Estruturas de Seleção

Padrão

Olá pessoal! Não, eu não morri, só sumi por um tempo maior do que eu planejava. E não peguei a gripe suína também. Pelo menos por enquanto. A minha faculdade é uma das únicas da região que não suspendeu as aulas. Enfim, melhor assim. Sinceramente acho que essas medidas de suspender a volta às aulas por uma, duas semanas não adianta em nada.

Bem, mas vamos ao que interessa. No último post, eu deixei alguns exercícios pra vocês treinarem a elaboração de algoritmos e a implementação na linguagem Pascal. Então aqui você encontra as soluções para os exercícios (tanto a resolução algorítmica quanto as implementações em Pascal). As implementações foram feitas no PascalZim. Portanto, se alguém for compilar em algum outro ambiente, como o Turbo Pascal, não se esqueçam de adicionar depois da seção Program a seção Uses.

Vamos então ao nosso assunto de hoje. Até agora, todos os programas que fizemos eram totalmente sequenciais, ou seja, começavam da primeira linha e iam executando uma em seguida da outra, até a última linha. Dessa forma o nosso programa executa sempre as mesmas ações, o que não acontece com os programas em geral. Os programas geralmente, baseados em algum dado, selecionam porções do código a serem executadas, realizando operações diferenciadas a cada execução. Para representar essa seleção em nosso programa utilizamos as estruturas de seleção.

A primeira estrutura de seleção que iremos conhecer é o Se. O Se é utilizado quando esperamos por uma condição. O bloco de código referente só sera executado se a condição for verdadeira. A seguir temos um exemplo algoritmico da utilização dessa estrutura e sua implementação em Pascal.

leia(numero)
se (numero MOD 2 = 0) então
   início
      escreva("O número é par.")
   fim

 

readln(numero);
if (numero MOD 2 = 0) then
   begin
      write('O número é par.');
   end;

Neste exemplo, lemos do usuário a variável numero. Se o resto da divisão do conteúdo da variável for igual a zero, será mostrada na tela a frase O número é par. A partir disso, podemos criar condições para o nosso programa, executando determinadas tarefas somente se algumas condições forem satisfeitas. Mas e se, por exemplo o número não fosse par? Ele seria ímpar… mas como faríamos isso no programa? A estrutura do Se é composta do Senão, que é executado caso a condição do Se não seja satisfeita. A seguir temos o exemplo da utilização do Se com o Senão na forma algoritmica e na linguagem Pascal:

leia(numero)
se(numero MOD 2 = 0)
   então
      escreva("O número é par.")
   senão
      escreva("O número é impar.")
fim-se

 

readln(numero);
if (numero MOD 2 = 0) then
   begin
      write('O número é par.');
   end
else
   begin
      write('O número é ímpar.');
   end;

Dessa forma, se o número digitado fosse par, a mensagem O número é par. Caso contrário, a mensagem O número é ímpar. seria exibida. Além disso, podemos encadear vários ‘Ses’, criando uma série de condições. Podemos também, colocar mais de uma condição ou negar uma condição, com a utilização dos operadores lógicos e, ou e não.

leia(idade)
se (idade < 13)
   então
      Escreva("Criança")
senão se (idade >= 13 e < 21)
      escreva("Adolescente")
   senão
      escreva("Adulto")
fim-Se

 

readln(idade);
if (idade < 13) then
   begin
      write('Criança');
   end
else if (idade >= 13 and idade < 21) then
   begin
      write('Adolescente');
   end
else
   begin
      write('Adulto');
   end;

Ah, um detalhe. Percebam que em Pascal, somente o último End de uma sequência de Ifs tem ponto-e-vírgula! Observando o exemplo acima, podemos realizar diversas tarefas, encadeando diversos Ifs / Elses. Apesar de simples, esta estrutura é vastamente utilizada na programação. Porém, quando precisamos conferir o valor de uma variável frente a muitos valores, o uso de Ifs encadeados torna-se trabalhoso, principalmente ao programador, além de deixar o código repleto de Begins e Ends. Para resolver problemas do tipo, utilizamos uma estrutura chamada Escolha ou Case. Com ela, podemos comparar o conteúdo de uma variável frente a diversas constantes, de uma forma bem mais organizada que o simples encadeamento de Ifs. A seguir, temos um exemplo de um programa de apuração de votos, com a utilização do Escolha.

...
escolha (votos)
   caso (votos = 1) : candidato1 ← candidato1 + 1
   caso (votos = 2) : candidato2 ← candidato2 + 1
senão
   escreva("Voto inválido")
fim-escolha

 

case votos of
   1 : candidato1 := candidato1 + 1;
   2 : candidato2 := candidato2 + 2;
else
   write('Voto inválido');
end;

Neste caso, a variável votos foi comparada com os valores 1 e 2. Dependendo do seu conteúdo,  incrementa-se a variável correspondente ao candidato. Caso o voto não confira com nenhuma das opções do case, ele irá executar o comando para escrever Voto inválido na tela. Nesta estrutura, assim como no se, o uso do senão é facultativo, ou seja, ele não precisa necessariamente estar presente, sendo utilizado de acordo com a necessidade. Outro ponto é que os valores constantes comparados não precisam ser necessariamente inteiros. Podem ser, por exemplo, um tipo caracter.

Bom, pessoal, é isso. No começo pode ser que vocês estranhem um pouco estas estruturas, mas com o tempo elas virão a estar presente em praticamente todas as aplicações que vocês fizerem. E lembrem-se que, em caso de dúvida, podem me mandar um e-mail (rafaelmgn@yahoo.com.br ou rafaeldtoledo@gmail.com) ou simplesmente deixar um comentário aqui no blog.

Obrigado pela visita e até o próximo post com as Estruturas de Repetição. Abraço a todos! 🙂

Um comentário sobre “Estruturas de Seleção

  1. Joao Georges Panagiotis Taiplo

    Boa noite,

    estou iniciando agora minha jornada nesse mundo, estou adorando seu blog, ate agora entendendo (acho eu), eu gostaria de saber se vc poderia montar um desses exmplos acima de uma forma completa para eu rodar no pascal para poder entender melhor, por exemplo

    esse algoritmo

    leia(idade)

    se (idade = 13 e < 21)

    escreva("Adolescente")

    senão

    escreva("Adulto")

    fim-Se

    vc poderia transcrever ele completo ja pronto para rodar, se vc pudesse eu concerteza entenderia.

Deixe uma resposta