Até agora estávamos trabalhando com algoritmos puramente sequenciais, ou seja, todas as instruções eram executadas seguindo a ordem do algoritmo sequencialmente linha a linha. Neste capítulo começaremos a estudar estruturas de seleção, ou seja, comandos de condição. Pode ser que uma linha de comando seja executada ou não.

Algoritmos com seleção

Uma estrutura de seleção, como o próprio nome já diz, permite que determinadas instruções sejam selecionadas, dependendo do resultado de uma condição (teste). Agora nossos algoritmos terão mais de uma saída.
Serão opções de desvio condicional, executadas de acordo com o proposto nos enunciados / problemas, a serem resolvidos pelos algoritmos.

Comando SE

O funcionamento do comando SE é muito intuitivo e bem próxima da vida real, como neste caso:

Escolha o produto que deseja comprar…
SE tem dinheiro para comprá-lo ENTÃO
Coloque no carrinho
SENÃO
                Devolva para prateleira
Escolha uma marca mais barata…

FIMSE

Exemplo – Escreva um algoritmo para ler um valor qualquer. Se o valor lido for igual a 6, escrever a mensagem ‘Valor lido é o 6.’, do contrário, escrever a mensagem ‘Valor lido não é 6.’.

algoritmo “Igual a 6”
var
num:inteiro
inicio
Escreval (“Entre com o número para ser testado:”)
leia (num)
Se num=6 entao
Escreval (“O número é 6.”)
senao
Escreval (“O número não é 6.”)
fimse
fimalgoritmo

Repare no exemplo acima que não usamos o til ( ~) nas palavras entao e senao.
E também passamos a usar um operador relacional, o igual ( = ).

  Operadores Relacionais

Operações relacionais são as comparações permitidas entres valores, variáveis, expressões e constantes.

Um algoritmo clássico que as principais bibliografias sobre algoritmos utiliza é o Algoritmo Maior.
Vamos desenvolver um algoritmo que lê dois números inteiros e determina qual dos dois números é o maior.

 

Agora um exemplo com o operador relacional “diferente de ” ( <> ) . Utilizamos o símbolo ‘menor que ‘ e o ‘maior que’ em sequencia, para representa-lo.

Vamos considerar o Barcelona, mesmo sem o Neymar, o maior e melhor time do mundo. Façamos um algoritmo que pergunte qual o melhor time do mundo e se a resposta for diferente de Barcelona o algoritmo mostra na tela uma mensagem bem humorada. Tente desenvolver no VisualG.

algoritmo “Melhor time do mundo”
var
time:caracter
inicio
Escreval (“Qual o melhor time de futebol do mundo?”)
leia (time)
Se time <> “Barcelona” entao
Escreval (time,” ??? Você está de brincadeira?”)
Escreval (“O melhor time do mundo é o Barcelona.”)
senao
Escreval (time,” !!! Acertou!!! Vi que conhece de futebol.”)
fimse
fimalgoritmo

Uma particularidade nas comparações com variáveis caractere ou caracter é a presença das aspas duplas. Nas comparações com valores declarados em variáveis de outro tipo não é necessário colocar aspas.

Exemplo com o operador relacional “maior ou igual a” ( >= ) .
Escreva um algoritmo que leia as duas notas de um aluno e calcule a média aritmética.
Se sua média for maior ou igual a 7 escreva “ O aluno está aprovado!”, mas se sua média for menor do que 7 escreva na tela: O aluno está reprovado!

 

OBS: Lembre-se da identação ou endentação! Na informática temos a identação – Significa deixar o seu código mais limpo, mais legível, definindo a estrutura do algoritmo.

Variável tipo lógica na estrutura SE

Chegou a hora de utilizamos um tipo de variável que foi mostrada na segunda aula do curso, mas não esteve presente em nenhum algoritmo até a gora. É a variável do tipo lógico.
Esta variável como teste de condição tem uma aplicação específica; define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.
Como este tipo de variável armazena somente VERDADE ou FALSO, aplicamos somente em algoritmos específicos, o que não nos impede de resolver o mesmo algoritmo com outros tipos de variáveis, exemplo:

Vamos desenvolver um algoritmo que lê a idade de uma pessoa e mostra na tela se esta pessoa é maior de idade ou menor de idade. Vamos definir o valor 18 em uma variável / constante chamada limite.
Neste caso especifico, vamos utilizar a variável do tipo lógica, declarada como  maior, conforme exemplo abaixo.

Algoritmo “Maior de idade”
var
idade,limite: inteiro
maior:logico
inicio
limite<-18
Escreval (“Digite a idade da pessoa:”)
leia (idade)
Se idade>=limite entao
maior<-Verdadeiro
senão
maior<-Falso
fimse
Se (maior) entao
Escreval (“É maior de idade.”)
senao
Escreval (“É menor de idade.”)
fimse
fimalgoritmo

Muitas linhas para resolver um problema simples, não é mesmo. Na aulas futuras daremos um sentido melhor para a variável do tipo lógica.

Desafio – Simplifique o algoritmo acima utilizando variáveis inteiras.

Outros desafios:

  • Faça um algoritmo que solicite ao usuário a quantia em dinheiro que tem sobrando e sugira gastar. Uma pergunta do tipo: “Digite quanto você têm para gastar hoje:” – Caso ele tenha R$ 50,00 ou mais, o algoritmo sugere que vá ao cinema. Se não tiver, que fique em casa vendo TV.
  • Desenvolva um algoritmo que leia um número qualquer e mostre na tela o seu posterior apenas se esse número for menor ou igual a 100. Do contrário, mostre a resposta: Este número é maior do que 100.
  • Fazer um algoritmo para ler o ano de nascimento de uma pessoa. Em seguida o algoritmo deve calcular e mostrar na tela sua idade hoje, verificar e mostrar também se esta pessoa já possui idade para votar (16 anos ou mais).
  • Desenvolva um algoritmo que leia o salário e o nome do funcionário de uma certa empresa.Aplique um aumento de 20% sobre o salário deste funcionário desde que o mesmo possua um salário abaixo ou menor do que R$ 1500,00. Escreva na tela o salário do funcionário(a) com aumento. Caso contrário, informe que o funcionário(a) não teve direito ao aumento.
  • Desenvolva um algoritmo que só permite emprestar dinheiro se o valor da prestação contratada comprometer menos de 30% do salário bruto do funcionário.
  • Um cliente do banco Salveandré possui saldo positivo de R$1.000,00. (definir esta constante). Desenvolva um algoritmo que receba o valor de um cheque a ser descontado da conta deste cliente. Se o cheque for inferior ou igual ao saldo, o cheque pode ser descontado – mostrar na tela o saldo do cliente após o desconto. Do contrário, informar na tela que o cliente não possui limite.

* Entre em contato com o Professor Paulo Mota para receber orientação sobre estas questões.

 

Na próxima aula entramos no ninho de “SEs”, onde teremos algoritmos com mais de duas condições. Para isso conheceremos os operadores lógicos. Clique aqui.