Você está na página 1de 5

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA

CAMPUS NATAL - CENTRAL


DIRETORIA DE EDUCAO E TECNOLOGIA DA INFORMAO
Av. Sen. Salgado Filho, 1559, Natal/RN, 59015-000. Fone/FAX (084) 4005-2637
E-mail: dietinf@ifrn.edu.br - Site: http://www.ifrn.edu.br/dietinf
Curso: - Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas
- Superior de Tecnologia em Redes de Computadores
Disciplina: - Algoritmos e Tcnicas de Programao
- Introduo Programao
Professor: Fabiano Papaiz

ESTRUTURAS DE CONTROLE DE FLUXO CONDICIONAL


(se...seno e escolha...caso)
Todos os algoritmos vistos at agora foram do tipo sequencial - com fluxo contnuo.
Isso significa que todos os passos sempre so executados, desde o primeiro at o ltimo.
Mas veremos agora um exemplo de algoritmo onde precisaremos executar alguns
passos somente se uma condio for considerada "verdadeira". Nestes casos precisaremos
utilizar os chamados controles de fluxo condicionais.
O algoritmo dever receber um valor em reais e exibir uma das seguintes mensagens:

"Voc tem dinheiro suficiente para ir ao cinema": se o valor informado for maior ou
igual a 10

"Infelizmente voc vai ficar em casa assistindo TV": se o valor informado for menor
que 10.
Algoritmo:
1. Receba o valor em reais
2.

Guarde o valor em meu_dinheiro

3.

Se meu_dinheiro for maior ou igual a 10 ento

4.
5.
6.

meu_dinheiro

exiba "Voc tem dinheiro suficiente para ir ao cinema"


Seno
exiba "Infelizmente voc vai ficar em casa assistindo TV"

Perceba que neste algoritmo o passo 4 s ser executado se (e apenas se)

condio "meu_dinheiro for maior ou igual a 10" for "verdadeira" (true). Assim como o passo 6 s
ser executado se a condio for "falsa" (false).
O uso de condies altera o fluxo das instrues de um algoritmo, permitindo que
diferentes instrues sejam executadas de acordo com os valores de entrada.
Em nossos algoritmos, iremos utilizar dois comandos de controle de fluxo
condicionais: o se...seno e o caso. A seguir iremos detalhar o uso de cada um deles.

Comando se...seno
Para escrever este comando, podemos utilizar a alternativa simples ou a composta.
Alternativa Simples
1.

...

2.

...

3.

se < condio_booleana > ento

4.

faa isso

5.

faa aquilo

6.

...

7.

...

bloco se

Nesta alternativa, utilizamos um se sem o seno. Se a condio booleana for


verdadeira (true) os comandos dentro do bloco se sero executados (passos 4 e 5), caso
contrrio, a execuo do algoritmo continuar na linha seguinte ao bloco se (passo 6).
Importante observar que, uma condio booleana uma expresso que resultar
apenas um dentre os dois valores possveis: verdadeiro ou falso (ou true e false). Isto significa
que uma condio booleana ou retornar verdadeiro ou falso.
Abaixo esto alguns tipos de condies booleanas:

(3+4) = 7

-> verdadeiro: 7 = 7

meu_dinheiro >= 10

(5*2) < (1+2+3) -> falso: 10 < 6

-> verdadeiro se meu_dinheiro for 15, falso se for 7

Alternativa Composta
1.

...

2.

...

3.

se < condio_booleana > ento

4.

faa isso

5.

faa aquilo

6.

seno

7.

faa outra coisa

8.

faa mais outra coisa

9.

bloco se

bloco seno

...

10. ...

Na alternativa composta, se a condio booleana for verdadeira (true) os comandos


dentro do bloco se sero executados (passos 4 e 5), caso contrrio, os comandos dentro do bloco
seno sero executados (passos 7 e 8), e por fim, a execuo do algoritmo continuar no seu
fluxo normal (passo 9).
Os comandos se..seno tambm podem ser encadeados de vrias maneiras,
formando fluxos condicionais mais complexos. A seguir temos um exemplo:
2

1.

...

2.

...

3.

se < condio_booleana > ento

4.

faa A

5.

faa B

6.

seno

7.

se < outra_condio_booleana > ento

8.

faa C

9.

faa D

10.

seno

11.

faa E

12.

faa F

13. ...
14. ...

Perceba que, no exemplo acima temos um bloco seno que formado por outros dois
blocos se e seno.

Comando escolha...caso
Em algumas situaes, precisaremos executar um mesmo bloco de instrues se
diversas condies forem verdadeiras para uma mesma varivel. Nestas situaes, o comando
escolha...caso nos fornece uma forma mais prtica de escrevermos o nosso algoritmo.
Para exemplificar, vejamos dois algoritmos - que resolvem o mesmo problema - mas
um utilizando o comando se..senao e o outro o escolha...caso.

Exemplo: um algoritmo que deve receber um cargo de um funcionrio de uma


empresa e a partir dele exibir a localizao de seu assento em um auditrio da seguinte forma:

se for presidente ou gerente: camarote

se for diretor: setor A

se for chefe ou sub-chefe: setor B

se for qualquer outro: setor C

Usando se..senao
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

Receba o nome do cargo


armazene em cargo
se (cargo = "presidente") ou (cargo = "gerente") entao
exiba "Dirija-se ao camarote"
senao
se (cargo = "diretor") entao
exiba "Dirija-se ao setor A"
senao
se (cargo = "chefe") ou (cargo = "sub-chefe") entao
exiba "Dirija-se ao setor B"
senao
exiba "Dirija-se ao setor C"

Usando escolha...caso
1. Receba o nome do cargo
2. armazene em cargo
3. escolha pelo valor de cargo
4.
caso "presidente", "gerente"
5.
exiba "Dirija-se ao camarote"
6.
caso "diretor"
7.
exiba "Dirija-se ao setor A"
8.
caso "chefe", "sub-chefe"
9.
exiba "Dirija-se ao setor B"
10.
outrocaso
11.
exiba "Dirija-se ao setor C"

Neste exemplo, foi preciso testar o valor da varivel cargo diversas vezes. E um
mesmo bloco de instruo foi executado para mais de um valor em cargo, como em:
se (cargo = "presidente") ou (cargo = "gerente") entao....

Perceba como nessa situao a utilizao do comando escolha...caso tornou nosso


algoritmo mais claro e fcil de ler.
Agora responda:
1. Se precisssemos incluir uma nova condio nesse algoritmo, em qual dos dois
exemplos seria mais fcil fazer esta alterao?

2. Quando usar se..senao e quando utilizar o escolha...caso?

Exerccios:

1. Em uma construo se sem seno, o que acontece se a condio de teste for falsa?
a) O controle procura pelo ltimo seno do algoritmo.
b) No acontece nada.
c) O controle passa a instruo seguinte ao comando se.
d) O bloco do comando se executado.

2. O seno de um comando se...seno executado quando?


a) A expresso de teste do se for falsa.
b) A expresso do teste do se for verdadeira.
c) A expresso do teste do seno for falsa.
d) A expresso do teste do seno for verdadeira.

3. Verdadeiro ou falso: Toda construo escolha...caso pode ser transformada em se...seno


encadeados.
4. Construa um algoritmo que leia um nmero inteiro e mostre uma mensagem indicando se
este nmero par ou mpar, e se positivo ou negativo.
5. Construa um algoritmo que leia 4 notas, calcule a mdia dessas e escreva: Reprovado
(mdia < 5), Recuperao (mdia >= 5 e < 7) e Aprovado (mdia >= 7).
6. Construa um algoritmo que leia a idade de um nadador e exiba sua categoria segundo as
regras: A(5 at 7); B(8 at 10); C(11 at 13); D(14 at 18) e E( Idade > 18).
7. Escreva um algoritmo que leia dois nmeros inteiros, uma operao matemtica (+,-,*,/) e
faa o calculo destes nmeros segundo a operao lida. Lembre-se de mostrar o
resultado.
8. Monte um algoritmo que leia o nome e a idade de trs pessoas e informe o nome da
pessoa mais velha e o nome da pessoa mais nova. Considere que no existem idades
iguais.
9. Construa um algoritmo que leia dois nmeros inteiros A e B e informe se A mltiplo,
divisor ou nada de B.
10. Monte um algoritmo que leia trs nmeros e mostre-os em ordem crescente.
11. Escreva um algoritmo que leia o salrio, a idade, o tempo de trabalho e o nmero de
dependentes de um funcionrio. A seguir, deve-se calcular e exibir o seu novo salrio com
base nos seguintes critrios:
a) para cada dependente, o salrio deve ser reajustado em 5%;
b) caso o funcionrio tenha entre 0 e 10 anos de trabalho, seu aumento ser de 5%;
c) caso o funcionrio tenha entre 11 e 20 anos de trabalho, seu aumento ser de 10%;
d) caso o funcionrio tenha entre 21 e 55 anos, seu aumento ser de 15%;
e) para o funcionrio maior que 55 anos, seu aumento ser de 20%.
12. Dados 3 valores A, B, C, verifique se estes podem ser valores de lados de um tringulo
sabendo que cada lado deve ser menor do que a soma dos outros dois.