O documento descreve diferentes estruturas de controle de fluxo no C++, incluindo if/else, if/else if/else, switch/case e goto. O comando if executa declarações condicionalmente dependendo do resultado de uma expressão lógica. If/else garante que uma das declarações seja executada. Switch/case escolhe declarações a executar com base no valor de uma variável.
1. Comando if
Sua forma geral é:
if (condição lógica) declaração;
A condição lógica será avaliada, se o resultado for
verdadeiro ( 1 ) a declaração será executada, se for falsa (0),
a declaração não será executada
2. Exemplo:
#include <iostream>
using namespace std;
int main (int argc, char *argv[ ]) {
int num;
cout<<"Digite um numero: “;
cin>>num;
if (num > 10)
cout<<"nnO numero e maior que 10”;
if (num == 10) {
cout<<"nnVoce acertou!n”;
cout<<"O numero e igual a 10.";
}
if (num < 10)
cout<<"nnO numero e menor que 10”;
return(0);
}
3. Comando if / else
Podemos pensar no comando else como sendo um
complemento do comando if.
O comando if / else completo tem a seguinte forma geral:
if (condição lógica)
comando_1;
else
comando_2;
4. A condição lógica será avaliada, se ela for verdadeira ( 1 ) os
comandos pertencentes ao if serão executados, caso
contrário o else será executado automaticamente.
É importante nunca esquecer que, quando usamos a
estrutura if-else, estamos garantindo que uma das duas
declarações será executada. Nunca serão executadas as
duas ou nenhuma delas.
5. #include <iostream>
int main (int argc, char *argv[ ]) {
int num;
cout<<"Digite um numero: “;
cin>>num;
if (num==10) {
cout<<"nnVoce acertou!n";
cout<<"O numero e igual a 10.n”;
}
else {
cout<<"nnVoce errou!n";
cout<<"O numero e diferente de 10.n”;
}
return(0);
}
6. O if / else-if / else
A estrutura if / else-if / else é apenas uma extensão da estrutura
if / else. Sua forma geral pode ser escrita como sendo:
if (condição lógica 1)
declaração_1;
else if (condição lógica 2)
declaração_2;
else if (condição lógica 3)
declaração_3;
...
else if (condição_n) declaração_n;
else declaração_Final;
7. A estrutura acima funciona da seguinte maneira: o programa
começa a testar as condições começando pelo primeiro if, se
a condição lógica for verdadeira os comandos pertencentes
ao if serão executados, caso contrário a condição lógica do
primeiro else if é testada, se o resultado for verdadeiro os
comandos pertencentes ao else if serão executados, caso
contrário os demais else if sertão testados até que ele ache
uma condição lógica cujo resultado dê verdadeiro.
O else só será executado no caso de todas as condições
lógicas resultarem em valor lógico falso.
8. #include <iostream>
using namespace std;
int main (int argc, char *argv[ ]) {
int num;
cout<<"Digite um numero: ";
cin>>num;
if (num>10)
cout<<"nnO numero e maior que 10”;
else if (num==10) {
cout<<"nnVoce acertou!n”;
cout<<"O numero e igual a 10.";
}
else
cout<<"nnO numero e menor que 10";
return(0);
}
9. Exercícios:
As Organizações Tabajara resolveram dar um aumento de salário aos
seus colaboradores e lhe contrataram para desenvolver o programa que
calculará os reajustes.Faça um programa que recebe o salário de um
colaborador e o reajuste segundo o seguinte critério, baseado no salário
atual:
salários até R$ 280,00 (incluindo) : aumento de 20%
salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
salários de R$ 1500,00 em diante : aumento de 5%
Após o aumento ser realizado, informe na tela:
o salário antes do reajuste;
o percentual de aumento aplicado;
o valor do aumento;
o novo salário, após o aumento.
10. Estrutura switch
O comando switch é próprio para se testar uma variável em
relação a diversos valores pré-estabelecidos.
O switch testa a variável e executa a declaração cujo case
corresponda ao valor atual da variável. A declaração default
é opcional e será executada apenas se a variável, que está
sendo testada, não for igual a nenhuma das constantes.
Sua forma geral é:
11. switch (variável) {
case <valor1>:
declaração_1;
break;
case <valor2>:
declaração_2;
break;
. ..
default :
declaração_default;
}
12. O comando break, faz com que o switch seja interrompido
assim que uma das declarações seja executada. Mas ele não
é essencial ao comando switch.
Se após a execução da declaração não houver um break, o
programa continuará executando.
Veremos agora um exemplo do comando switch:
13. #include <iostream>
int main (int argc, char *argv[ ]) {
int num;
cout<<"Digite um numero: “;
cin>>num;
switch (num) {
case 9:
cout<<"nnO numero e igual a 9.n";
break;
case 10:
cout<<"nnO numero e igual a 10.n";
break;
default:
cout<<"nnO numero nao e nem 9 nem 10 n";
}
return(0);
}
14. Exercício:
Faça um programa que receba do usuário o número de lados e o
tamanho dos lados de um polígono regular e imprima o valor da área do
polígono. O programa deve utilizar uma estrutura switch-case para decidir
que fórmula de cálculo utilizar, de acordo com o número de lados do
polígono. Se o número de lados for diferente de 3, 4 ou 6 o programa
deve informar: “não sei calcular a área”. Áreas:
Triângulo: A = L*L*1.73/4
Quadrado: A = L*L
Hexágono: A = 6*L*L*1.73/4;
15. Estrutura goto
O goto é o último comando de controle de fluxo. Ele pertence
a uma classe à parte: a dos comandos de salto incondicional.
O goto realiza um salto para um local especificado. Este local
é determinado por um rótulo. Forma geral:
nome_do_rótulo: ....
goto nome_do_rótulo;
....
16. Devemos declarar o nome do rótulo na posição para a qual
vamos dar o salto seguido de :.
O goto pode saltar para um rótulo que esteja mais à frente ou
para trás no programa.
Uma observação importante é que o rótulo e o goto devem
estar dentro da mesma função.
18. NomeRotulo:
if (condição) {
declaração;
incremento;
goto NomeRotulo;
}
O comando goto deve ser utilizado com parcimônia, pois o
abuso no seu uso tende a tornar o código confuso. O goto
não é um comando necessário, podendo sempre ser
substituído por outras estruturas de controle.
19. #include <iostream>
using namespace std;
int main(int argc, char *argv[ ]) {
int opcao;
REFAZ:
cout<<"nn Escolha uma opcao entre 1 e 5: ";
cin>>opcao;
if ((opcao > 5) || (opcao <1))
goto REFAZ;
return(0);
}