Você está na página 1de 9

Estruturas de Seleção/Condição.

Até aqui já conseguimos fazer cálculos, fazer comparações e como


vimos já tivemos respostas na forma Booleana (Verdadeiro/ Falso).
Agora vamos pegar estas respostas e vamos executar instruções, ou
seja, vamos tomar decisões. Para isso vamos usar Estruturas de
Seleção/Condição.
Estrutura Simples  SE – ENTAO
Esta estrutura funciona do seguinte modo, depois do comando SE é
feita uma verificação da instrução ou instruções e caso retorne
“verdadeiro” ENTAO a instrução ou instruções são executadas.

SE <condição verdadeira> ENTAO


Executar comandos desejados.....
FIMSE

Vamos usar nosso programa “Media_Aluno”

Algoritmo “Media_Aluno”
var
nome: caracter
nota1,nota2,nota3,media:real
inicio
Escreva(“Digite o nome do Aluno: “)
Leia(nome)
Escreva(“Digite a nota 1: “)
Leia(nota1)
Escreva(“Digite a nota 2: “)
Leia(nota2)
Escreva(“Digite a nota 3: “)
Leia(nota3)
Media <- (nota1 + nota2+ nota3) /3
Escreva(“Media foi: “)
SE media >= 6 ENTAO
Escreval(nome,“ Aluno Aprovado com média”,media)
FIMSE
Fimalgoritmo

Vamos agora acrescentar mais a frequência de requisito para passar,


ou seja, o aluno tem que ter media >= 6 E Frequencia >=70

Algoritmo “Media_Aluno”
var
nome: caracter
nota1,nota2,nota3,media,frequencia:real
inicio
Escreva(“Digite o nome do Aluno: “)
Leia(nome)
Escreva(“Digite a nota 1: “)
Leia(nota1)

1
Escreva(“Digite a nota 2: “)
Leia(nota2)
Escreva(“Digite a nota 3: “)
Leia(nota3)
Escreva(“Digite a frequência do Aluno: “)
Leia(frequencia)
Media <- (nota1 + nota2+ nota3) /3
Escreva(“Media foi: “)
SE (media >= 6) E (frequencia >= 70) ENTAO
Escreval(nome," Aluno Aprovado com média e frequência",media)
FIMSE
Fimalgoritmo

Vamos criar um algoritmo onde o usuário irá entrar com o nome de


uma pessoa, sua data de nascimento, e vamos perguntar se esta pessoa
é alfabetizada, vai ser respondido com S(Sim) ou N(Não). Depois de
calcular a idade, vamos verificar SE a pessoa tem idade >= 18 E é
Alfabetizada = S, caso preencha os requisitos ENTAO receberá a
mensagem com seu nome e que está apta a tirar habilitação.

Algoritmo "Habilita_Apto"
var
nome,alfa: caracter
ano_nasc,idade:inteiro
inicio
Escreva("Digite o nome da pessoa: ")
Leia(nome)
Escreva("A pessoa é alfabetizada? S/N: ")
Leia(alfa)
Escreva("Digite ano de nascimento: ")
Leia(ano_nasc)
idade <- 2021 - ano_nasc
SE (idade >= 18) E (alfa = "S") ENTAO
Escreval(nome," Apto a tirar Carteira de Motorista")
FIMSE
Fimalgoritmo

Mais uma para aprender. Vamos criar um algoritmo onde o usuário irá
digitar uma letra o algoritmo deverá retornar se esta letra e vogal.
Aqui vamos observar a importância do OU.

algoritmo "Mostra_Vogal"
var
letra:caracter
inicio
Escreva("Digite uma letra: ")
Leia(letra)
SE(letra="a")OU(letra="e")OU(letra="i")OU(letra="o")
OU(letra="u") Entao
Escreval(letra," É vogal")
Fimse

2
fimalgoritmo

E para Consoantes Observe esse algoritmo a utilidade do NAO (NOT)

algoritmo "Mostra_Consoante"
var
letra:caracter
inicio
Escreva("Digite uma letra: ")
Leia(letra)
SE NAO((letra="a") OU(letra="e")OU(letra="i”) OU(letra="o") OU(letra="u")) Entao
Escreval(letra," É consoante")
Fimse
fimalgoritmo

Bem até aqui só usamos uma Estrutura Simples, só houve resposta do


nosso algoritmo caso as Condições retornassem VERDADEIRO, mas quando
o retorno foi FALSO?. Bem agora vamos utilizar uma Estrutura
Composta. ESTA É UMA DAS FORMAS QUE MAIS VAMOS USAR ESTRUTURAS DE
SELEÇÃO/CONDIÇÃO.

Estrutura Composta  SE – ENTAO – SENAO

SE <condição verdadeira> ENTAO


Executar Comandos Desejados.....
SENAO // Aqui entra caso a condição após o SE retorne FALSO
Executar Comando Desejados......
FIMSE

Vamos usar o nosso último algoritmo “Media_Aluno” e vamos fazer as


alterações.
Observe no algoritmo onde vamos fazer as alterações para entender
as mudanças e o que acontece.

Algoritmo "Media_Aluno"
var
nome: caracter
nota1,nota2,nota3,media,frequencia:real
inicio
Escreva("Digite o nome do Aluno: ")
Leia(nome)
Escreva("Digite a nota 1: ")
Leia(nota1)
Escreva("Digite a nota 2: ")
Leia(nota2)
Escreva("Digite a nota 3: ")
Leia(nota3)
Escreva("Digite a frequência do Aluno: ")
Leia(frequencia)
Media <- (nota1 + nota2+ nota3) /3

3
SE (media >= 6) E (frequencia >= 70) ENTAO
Escreval(nome," Aluno Aprovado com média e frequência",media)
SENAO
Escreval("O aluno: ",nome," foi reprovado")
FIMSE
Fimalgoritmo

Vamos fazer um algoritmo onde o usuário irá digitar dois números


inteiros e diferentes o algoritmo deverá mostrar qual número é o
maior se o primeiro ou segundo.

Algoritmo "Maior_Numero"
var
num1,num2:inteiro
inicio
Escreva("Digite o primeiro número: ")
Leia(num1)
Escreva("Digite o segundo número: ")
Leia(num2)
SE num1 > num2 ENTAO
Escreval(num1, " É maior que ",num2," primeiro é maior")
SENAO
Escreval(num2, " É maior que ",num1," segundo é maior")
FIMSE
Fimalgoritmo

E quando temos mais de duas situações que temos que trabalhar? Vamos
imaginar a seguinte situação, no nosso algoritmo “Media_Aluno”,
podemos ter a seguinte situação caso ao aluno tenha uma nota < 5
ele reprova, mas se a media > 5 até < 6 ele pode fazer recuperação
e caso ele tenha media >=6 ele está aprovado.
Vamos ver como podemos fazer, esse algoritmo é uma forma de solução,
você pode ter outra lógica, ou seja, ter outra forma se solucionar
este problema.
Agora vamos usar o que chamamos em programação se Seleção Encadeada,
pois vamos encadear as situações SE – SENAO – SE – ENTAO – SENAO (É
de pirar a cabeça, mas vamos ver na prática)

Algoritmo "Media_Aluno"
var
nome: caracter
nota1,nota2,nota3,media:real
inicio
Escreva("Digite o nome do Aluno: ")
Leia(nome)
Escreva("Digite a nota 1: ")
Leia(nota1)
Escreva("Digite a nota 2: ")
Leia(nota2)

4
Escreva("Digite a nota 3: ")
Leia(nota3)
Media <- (nota1 + nota2+ nota3) /3
SE (media <5) ENTAO
Escreval(nome," Aluno reprovado ",media)
SENAO
SE(media>=5) E (media < 6) ENTAO
Escreval(nome," Aluno em recuperação ",media)
SENAO
Escreval(nome," Aluno Aprovado ",media)
FIMSE
FIMSE
Fimalgoritmo

VAMOS VER MAIS UM ALGORITMO.

Vamos, a mais um probleminha, no nosso algoritmo “Maior_Numero” já


vimos que ele funciona muito bem se os números forem diferentes e
caso o usuário digite dois números iguais?

Queremos mostrar esta opção também.

Então vamos a solução, no caso meu algoritmo, você pode ter outra
solução.

POR CURIOSIDADE SE TESTAR O PROGRAMA ANTIGO QUANDO DIGITAR DOIS


NUMEROS IGUAIS SEMPRE VAI DAR A MENSAGEM QUE O SEGUNDO E MAIOR.

Algoritmo "Maior_Numero"
var
num1,num2:inteiro
inicio
Escreva("Digite o primeiro número: ")
Leia(num1)
Escreva("Digite o segundo número: ")
Leia(num2)
SE num1 > num2 ENTAO
Escreval(num1, " É maior que ",num2," primeiro é maior")
SENAO
SE num2 > num1 ENTAO
Escreval(num2, " É maior que ",num1," segundo é maior")
SENAO
Escreval("Os números são iguais ",num1," = ",num2)
FIMSE
FIMSE
Fimalgoritmo

5
Vamos aumentar um pouco grau de dificuldade?
No nosso exercício acima, agora vamos adicionar mais um número no
caso 3 números inteiros e diferentes (Não vamos nos preocupar com
igualdade de números) deverá retornar qual o maior número dos 3.
Algoritmo "Maior_Numero_Com_3"
var
num1,num2,num3:inteiro
inicio
Escreva("Digite o primeiro número: ")
Leia(num1)
Escreva("Digite o segundo número: ")
Leia(num2)
Escreva("Digite o terceiro número: ")
Leia(num3)
SE (num1 > num2) E (num1 > num3) ENTAO
Escreval(“Primeiro número é o maior ”,num1)
SENAO
SE (num2 > num1) E (num2 > num3) ENTAO
Escreval(“Segundo número é o maior ”,num2)
SENAO
Escreval(“Terceiro número é o maior ”,num3)
FIMSE
FIMSE
Fimalgoritmo

AGORA UM EXTRA PARA SEGUIRMOS EM DIANTE.

1 - Vamos fazer algo bem simples, vamos digitar dois números e


devemos apenas trocar de posição entre os números, digamos digitei
a variável num1 com valor 20 e depois num2 com valor 30, no final
deve apresentar as variáveis de novo só que com os valores invertidos
num1 deve aparecer com valor 30 e num2 com valor 20.
TENTE FAZER AI e depois veja o meu algoritmo (você pode ter o seu)
Vamos ver como isso vai funcionar.

Algoritmo "Troca_Numeros"
var
num1,num2,aux:inteiro
inicio
Escreva("Digite o primeiro número: ")
Leia(num1)
Escreva("Digite o segundo número: ")
Leia(num2)
Escreval("Primeiro Vale: ",num1)
Escreval("Segundo Vale: ",num2)
Escreval("************** Trocando Valores ****************")

6
aux <- num1
num1 <- num2
num2 <- aux
Escreval("Primeiro Vale: ",num1)
Escreval("Segundo Vale: ",num2)
Fimalgoritmo

Agora sim ali na parte selecionada isso você decora como fazer a
troca de posições em variáveis.

Então vamos usar o que aprendemos até aqui, vamos ver o seguinte
algoritmo

Crie um algoritmo onde o usuário irá digitar 2 números, caso o


primeiro número seja maior que o segundo nada será feito, mas caso
o segundo seja maior os números devem ser trocados de posição dentro
das variáveis, e observe também que pode acontecer de digitar números
iguais, então só avise que os números são iguais.

algoritmo "Troca_Posicao"
var
num1,num2,aux:inteiro
inicio
Escreva("Digite primeiro número ")
Leia(num1)
Escreva("Digite segundo número: ")
Leia(num2)
Se(num1 > num2) Entao
Escreval(num1,” – “,num2," Não houve troca")
Senao
aux <- num1
num1 <- num2
num2 <- aux
Escreval(num1,” – “,num2," Houve troca")
Fimse
Fimalgoritmo
Vamos aprender mais um pouco. PORCENTAGEM.

Este termo já conhecemos e já vimos em anos anteriores, usamos


porcentagem muitas vezes ao dia, por exemplo vemos quantos porcento
temos de desconto ou acréscimo numa compra, bem este um exemplo que
vamos usar das compras.
Então vamos imaginar que temos um produto que custa R$ 100,00 e
queremos dar um desconto de 20%, bem de cabeça já conseguimos fazer
já sabemos que vai dar R$ 20,00, mas temos que passar isso para
nossos algoritmos então aqui vamos ver que o calculo da porcentagem
vamos usar a seguinte formula. Estamos vendo que será dado desconto,
então vamos tratar de quem recebe o resultado dos cálculos vai se
chamar desconto.

DESCONTO = (valor original * valor porcentagem) /100


OU SEJA

7
desconto <- (100 * 20) /100

Vamos ver dentro de um programa, vamos ver a seguinte situação seja


digitado nome de um produto, seu preço e depois entraremos com uma
variável que vai ser o valor do desconto, o algoritmo deverá mostrar
o valor original o valor do desconto e o preço do produto com
desconto.

algoritmo "Desconto_Produto"
var
nomeprod:caracter
precoprod,porcent,desconto,novopreco:real
inicio
Escreva("Digite nome do Produto: ")
Leia(nomeprod)
Escreva("Digite preço do Produto: ")
Leia(precoprod)
Escreva("Digite a porcentagem que ser dado desconto: ")
Leia(porcent)
desconto <- (precoprod * porcent)/100
novopreco <- precoprod - desconto
Escreval("Preço original de: ",nomeprod," R$ ",precoprod:2:2)
Escreval("Valor do desconto: R$ ",desconto:2:2)
Escreval("Preço com Desconto: R$ ",novopreco:2:2)
Fimalgoritmo

Vamos agora aproveitar o que aprendemos para usar num algoritmo


que vai usar Estrutura de Seleção/Condição e uso de
porcentagem.

Imagine a seguinte situação vamos criar um algoritmo onde o usuário


irá digitar o nome de um produto, seu preço de venda e a quantidade
vendida, o programa deverá fazer os seguintes cálculos. Ver o valor
total da venda, caso a venda total seja < 500 não haverá desconto,
caso seja >=500 e <=1000 desconto de 2% e caso >1000 desconto de
5%. Mostre na tela para o usuário se a compra tem desconto e seu
novo valor, e mostre também caso não tenha desconto também.

algoritmo "Calculo_Preco"
var
produto:caracter
preco,total,desconto,novototal:real
quant:inteiro
inicio
Escreva("Digite nome do produto: ")
Leia(produto)
Escreva("Digite preço do produto: ")
Leia(preco)

8
Escreva("Digite quantidade vendida: ")
Leia(quant)
total <- preco * quant
Se total < 500 Entao
Escreval("Venda sem desconto",total)
Senao
Se(total >=500 ) E (total < 1000) Entao
desconto <- (total * 2)/100
novototal <- total - desconto
Escreval("Desconto de 2 % Pagar R$",novototal)
Senao
desconto <- (total * 5)/100
novototal <- total - desconto
Escreval("Desconto de 5 % Pagar R$",novototal)
Fimse
Fimse
fimalgoritmo