Na programação desenvolvemos estruturas de código que seguem um padrão de execução,
porém nem sempre toda essa estrutura deve ser executada, ou não deve ser executada do
mesmo modo, logo precisamos criar soluções que “tratem” certos comportamentos do
algoritmo, e é para isso que servem as estruturas de decisão.
Mas como seria isso na prática?
Imagine um programa que com base nas notas de um aluno, lançadas pelo professor,
calculasse a média desse aluno, e informasse se o mesmo está aprovado ou não. (considerando
60.0 como média para aprovação)
algoritmo "Aprovacao"
var
nota1, nota2, nota3, nota4, media: real
inicio
escreval("Digite a 1a nota do aluno: ")
leia(nota1)
escreval("Digite a 2a nota do aluno: ")
leia(nota2)
escreval("Digite a 3a nota do aluno: ")
leia(nota3)
escreval("Digite a 4a nota do aluno: ")
leia(nota4)
se (media >= 60) entao
escreval("Aluno aprovado!")
senao
escreval("Aluno reprovado!")
fimse
fimalgoritmo
algoritmo "Aprovacao"
var
nota1, nota2, nota3, nota4, media: real
inicio
escreval("Digite a 1a nota do aluno: ")
leia(nota1)
escreval("Digite a 2a nota do aluno: ")
leia(nota2)
escreval("Digite a 3a nota do aluno: ")
leia(nota3)
escreval("Digite a 4a nota do aluno: ")
leia(nota4)
se (media >= 60) entao
escreval("Aluno aprovado!")
senao
escreval("Aluno reprovado!")
fimse
fimalgoritmo
Visualizando o código acima, já dá para ter uma noção do que vem a ser estrutura de decisão,
mesmo sem ler uma definição mais clara. Podemos observar que até na linha do cálculo da
média, não há nada “anormal”, temos apenas a entrada dos dados, e o processamento do
cálculo da média, porém logo abaixo desse cálculo vemos se (media >= 60) entao nessa linha
notamos que há uma espécie de verificação na média desse aluno, se media >= (maior ou igual)
a 60, caso essa expressão resulte num valor verdadeiro, as linhas onde temos escreval(“Aluno aprovado!”) será executada, caso resulte num valor falso essa linha será ignorada e o bloco de
código após o senao será executado, com isso exibindo “Aluno reprovado!” na tela.
A estrutura de decisão não se limita apenas no se...entao...senao, em Portugol temos também
o escolha...caso.
Veja abaixo um exemplo utilizando o escolha...caso:
Nesse exemplo, será exibida uma curiosidade referente a cor vinculada a opção informada pelo
usuário.
algoritmo "Cores"
var
op: inteiro
inicio
escreval("====================")
escreval("1 - Amarelo")
escreval("2 - Azul")
escreval("3 - Preto")
escreval("4 - Vermelho")
escreval("5 - Rosa")
escreval("====================")
escreva("Digite uma opção: ")
leia(op)
escolha (op)
caso 1
escreval("É a cor de tinta mais vendida no mundo.")
caso 2
escreval("A cor azul é inibidora de apetite.")
caso 3
escreval("Costumava ser a cor do vestido de")
escreval("noiva em Portugal até o séc. XX.")
caso 4
escreval("Homens e mulheres enxergam o vermelho de forma diferente.")
escreval("Mulheres veem mais variações do tom por causa do cromomossomo X.")
caso 5
escreval("Na Bélgica os bebês que nascem meninos se")
escreval("vestem com a cor rosa e as meninas com azul.")
outrocaso
escreval("Opção inválida!")
fimescolha
fimalgoritmo
algoritmo "Cores"
var
op: inteiro
inicio
escreval("====================")
escreval("1 - Amarelo")
escreval("2 - Azul")
escreval("3 - Preto")
escreval("4 - Vermelho")
escreval("5 - Rosa")
escreval("====================")
escreva("Digite uma opção: ")
leia(op)
escolha (op)
caso 1
escreval("É a cor de tinta mais vendida no mundo.")
caso 2
escreval("A cor azul é inibidora de apetite.")
caso 3
escreval("Costumava ser a cor do vestido de")
escreval("noiva em Portugal até o séc. XX.")
caso 4
escreval("Homens e mulheres enxergam o vermelho de forma diferente.")
escreval("Mulheres veem mais variações do tom por causa do cromomossomo X.")
caso 5
escreval("Na Bélgica os bebês que nascem meninos se")
escreval("vestem com a cor rosa e as meninas com azul.")
outrocaso
escreval("Opção inválida!")
fimescolha
fimalgoritmo
Utilizando a variável op para armazenar a opção que o usuário informar, é possível fazer com
que o algoritmo decida o que fazer, que nesse caso é exibir uma curiosidade para o usuário.
Para cada opção temos um caso com um bloco de instruções a serem executadas caso esse seja
requisitado, e “tratando” a possibilidade do usuário informar um valor que não faça parte da
nossa lista de casos, temos o outrocaso.