Escolar Documentos
Profissional Documentos
Cultura Documentos
Estruturas de Controlo PDF
Estruturas de Controlo PDF
i. SELEÇÃO SIMPLES
Quando precisamos de testar uma uma certa condição antes de executar uma ação,
usamos uma seleção simples, que segue o seguinte modelo:
se <condição> então
//comando único (ação primitiva)
fimse
leia(t2)
escreval("Informe a média do terceiro trimestre ")
leia(t3)
media<-(t1+t2+t3)/3
se media >= 10 entao
escreval("O aluno está aprovado com média ",media)
fimse
fimalgoritmo
se <condição> então
//Sequencia de comandos (bloco de verdade)
senao
//ação primitiva
fimse
Exemplo:
Problema: Do problema do exemplo anterior vamos incluir agora a informação que
provem do resultado falso da condição (media>=10), ou seja, a reprovação do aluno.
Algoritmo "media"
var
t1, t2, t3, media: inteiro
Inicio
escreval("Informe a média do primeiro trimestre ")
leia(t1)
escreval("Informe a média do segundo trimestre ")
leia(t2)
escreval("Informe a média do terceiro trimestre ")
leia(t3)
media<-(t1+t2+t3)/3
se media >= 10 entao
escreva("O aluno está aprovado com média ",media)
escreva("Parabéns ")
senao
escreva("O aluno está reprovado com média ",media)
escreva("Estude mais!")
fimse
fimalgoritmo
fimse
fimse
Exemplo:
Problema: Dados 3 (três) valores A,B e C, verifique se eles podem ser os
comprimentos dos lados de um triângulo e, se forem, verifique se é um triângulo
equilátero, isósceles ou escaleno. Se eles não formarem um triângulo, escreva uma
mensagem.
Considere que:
O comprimento de cada lado de um triângulo é menor do que a soma dos
outros dois lados;
Chama-se equilátero o triângulo que tem três lados iguais
Denomina-se isósceles o triângulo que tem o comprimento de dois lados iguais
leia(A,B,C)
se ((A<B+C) e (B<A+C) e (C<A+B)) entao
se ((A=B) e (B=C)) entao
escreva("Triângulo equilátero")
senao
se ((A=B) ou (A=C) ou (B=C)) entao
escreva("Triângulo isósceles")
senao
escreva("Triângulo escaleno")
fimse
fimse
senao
escreva("Não formam um triângulo")
fimse
fimalgoritmo
fimse
Após cada entao existe outro se, não existem senãos; temos uma estrutura encadeada
homogenea. Está claro que o comando W só será executado quando todas as
condicoes forem ao mesmo tempo verdadeiras, portanto, seria equivalente a escrever,
simplificadamente:
se (<condição 1> e <condição 2> e <condição 3> e <condição 4>) entao
W
fimse
se senao se
Vamos supor que em determinado algoritmo uma variável X possa assumir apenas
quatro valores, V1, V2, V3, V4, e que exista um comando diferente que será
executado para cada valor armazenado em X.
Teremos, por exemplo, a seguinte situação:
se (X = V1) entao
C1
fimse
se (X = V2) entao
C2
fimse
se (X = V3) entao
C3
fimse
se (X = V4) entao
C4
fimse
Somente um, e apenas um, comando pode ser executado, isto é, trata-se de uma
situação exclusiva (se X é igual a V3, não é a V1 nem a V2 nem a V4).
Se prestarmos atenção a situação acima proposta podemos notar que não se trata de
uma estrutura encadeada, pois as seleções não estão interligadas. Por isso, todas as
condições (X = Vn) serão avaliadas e ocorrerão testes desnecessários. Para diminuir a
quantidade de testes dessa estrutura podemos transformá-la em um conjunto de
seleções encadeadas, conforme o seguinte modelo:
se (X = V1) entao
C1
senao
se (X = V2) entao
C2
senao
se (X = V3) entao
C3
senao
se (X = V4) entao
C4
fimse
fimse
fimse
fimse
Nessa estrutura, o número médio de testes a serem executados foi reduzido, onde os
testes terminam depois de encontrada a primeira condição verdadeira.
Essa construção após cada senao existe outro comando se, e depois do entao existe
uma ação qualquer (que não seja outra seleção), compondo uma estrutura típica que
denominaremos se-senao-se.
Por constituir um encadeamento homogéneo, pode ser simplificado, e para tal
utilizaremos uma nova estrutura, a seleção de múltipla escolha.
Exemplo:
Problema: Escreva um algoritmo que leia o código de um determinado produto e
mostre a sua classificação. Utilize a seguinte tabela como referencias:
Código Classificação
1 Alimento não-perecível
2, 3 ou 4 Alimento perecível
5 ou 6 Vestuário
7 Higiene pessoal
8 até 11 Limpeza e utensílios domésticos
Qualquer outro código Inválido
Resolução no VisualG:
Algoritmo "classproduto"
Var
C: inteiro
classe: caracter
Inicio
escreval("Informe o codigo do produto")
leia(C)
escolha C
caso 1
classe<-"Alimento não-perecível"
caso 2, 3 ,4
classe<-"Alimento perecível"
caso 5, 6
classe<-"Vestuário"
caso 7
classe<-"Higiene pessoal"
caso 8, 9, 10, 11
classe<-"Limpeza e utensílios domésticos"
outrocaso
classe<-"Inválido"
fimescolha
escreva("O produto é classificado por: ",classe)
Fimalgoritmo