Os comando de decisão if
e else
é usado em casos que precisamos fazer uma comparação entre valores, para definir as funções executadas pelo programa.
O condicional simples é feito apenas com a declaração if
(significando "se") é usado para especificar um bloco de código que deverá ser executado, ao retornar true.
Veja um exemplo de uso:
int num1 = 8;
if(num1 > 10) {
cout << "O valor é maior que 10" << "\n";
}
O condicional composto é feito com o if junto com o else
(significando "senão"). O else se usa para executar um segundo bloco de código ao retornar false.
Veja um exemplo:
int num1 = 100;
int num2 = 50;
if(num1 < num2) {
cout << "O valor de " << num1 << " é menor que " << num2 << "\n";
}
else {
cout << "O valor de " << num1 << " é maior que " << num2 << "\n";
}
Existe ainda o condicional composto alinhando, que entre o if e o else tem o else if
. O else if executa um segundo código ao if retornar false, antes de executar o else.
Veja um exemplo, baseado no anterior:
int num1 = 100;
int num2 = 50;
if(num1 < num2) {
cout << "O valor de " << num1 << " é menor que " << num2 << "\n";
}
else if(num1 > num2) {
cout << "O valor de " << num1 << " é maior que " << num2 << ".\n";
}
else {
cout << "Os valores " << num1 << " e " << num2 << " são iguais.\n";
}
PS: Em qualquer linguagem que tenha if, se colocar variáveis que recebam valores true e false (1 e 0 no C++), elas podem ser colocadas diretamente nos parênteses do if (apesar da maioria colocarem a comparação da variável com true), assim:
int sol = 1;
if(sol) {
cout << "Vou ao clube!";
}
else {
cout << "Vou ao cinema!";
}
Como visto anteriormente, essa é uma estrutura simples com if e else no C++:
int n1, n2, res;
cout << "Digite a primeira nota: ";
cin >> n1;
cout << "Digite a segunda nota: ";
cin >> n2;
res = (n1 + n2) / 2;
if(res >= 6) {
cout << "\nAprovado!\n";
}
else {
cout << "\nReprovado\n";
}
E vimos também que existe o else if, como no exemplo abaixo:
int n1, n2, res;
cout << "Digite a primeira nota: ";
cin >> n1;
cout << "Digite a segunda nota: ";
cin >> n2;
res = (n1 + n2) / 2;
if(res >= 6) {
cout << "\nAprovado!\n";
}
else if(res >= 4 && res < 6) {
cout << "\nRecuperação\n";
}
else {
cout << "\nReprovado\n";
}
Já o comando goto
(vai para) que direciona o ponteiro de execução do nosso programa, quando ele encontra o goto, ele vai até o label indicado em qualquer ponto do programa (criado apenas com o nome e dois pontos), e o goto apenas usará o nome do label que indicará.
Veja um exemplo do uso do goto:
int n1, n2, res;
char opc; // Variável usada no label.
inicio: // Label, indicado com dois pontos.
system("cls"); // Adicione cstdlib ou stdlib.h, são os comandos do terminal do sistema operacional à ser compilado.
cout << "Digite a primeira nota: ";
cin >> n1;
cout << "Digite a segunda nota: ";
cin >> n2;
res = (n1 + n2) / 2;
if(res >= 6) {
cout << "\nAprovado!\n";
}
else if(res >= 4 && res < 6) {
cout << "\nRecuperação\n";
}
else {
cout << "\nReprovado\n";
}
cout << "\nDeseja Digitar Outras Notas? [S/N]: ";
cin >> opc;
if((char)toupper(opc) == 'S') { // Inclua cctype pro toupper
goto inicio; // Indicação do Label.
}
PS: pode notar que adicionamos um system("cls")
para limpar a tela, mas o system necessita da biblioteca cstdlib
para funcionar. Isso são os comandos do sistema operacional pro qual o programa será compilado (só lembrando que se usar o Linux, devemos usar "clear"). Note também que usamos o método toupper()
para transformar a letra em maiúscula, e fazemos o mesmo com tolower()
para transformar em minúscula (lembrando que em ambos os caso usamos o typecast de char e incluímos a biblioteca cctype).
A declaração condicional switch
(chaveamento) é usada quando é preciso realizar diferentes ações baseadas em distintas condições. Pra simplificar o código, geralmente se usa no lugar de um condicional alinhado.
O case
é o valor comparado com a expressão, se corresponder, o código associado será executado. O break
garante que a estrutura seja finaliza ao encontrar uma correspondência. E o default
é o bloco de códigos que será executado se nenhum caso corresponder à expressão.
Veja que depois do case e do default, nesse caso, se usa dois pontos :
, e que ele diferencia minúsculas e maiúsculas.
Veja um exemplo de uso:
int val;
cout << "Selecione uma cor:\n";
cout << "1 - Verde\n2 - Azul\n3 - Vermelho\n\n";
cin >> val;
switch(val) {
case 1:
cout << "Cor selecionada: Verde\n";
break;
case 2:
cout << "Cor selecionada: Azul\n";
break;
case 3:
cout << "Cor selecionada: Vermelho\n";
break;
default:
cout << "Valor inválido\n";
break;
}
Veja outro exemplo, com vários cases:
int val;
cout << "Selecione uma cor:\n";
cout << "1 a 3- Verde\n4 a 6 - Azul\n\n";
cin >> val;
switch(val) {
case 1:
case 2:
case 3:
cout << "Cor selecionada: Verde\n";
break;
case 4:
case 5:
case 6:
cout << "Cor selecionada: Azul\n";
break;
default:
cout << "Valor inválido\n";
break;
}
Também podemos usar switchs aninhados, por exemplo:
int val;
cout << "Selecione um transporte:\n";
cout << "1 - Carro\n2 - Moto\n3 - Avião\n4 - Helicóptero\n\n";
cin >> val;
switch(val) {
case 1:
case 2:
cout << "Transporte Terrestre.\n";
switch(val) {
case 1:
cout << "Carro Selecionado.";
break;
case 2:
cout << "Moto Selecionada.";
break;
}
break;
case 3:
case 4:
cout << "Transporte Aéreo.\n";
switch(val) {
case 3:
cout << "Avião Selecionado.";
break;
case 4:
cout << "Helicóptero Selecionado.";
break;
}
break;
default:
cout << "Transporte Desconhecido.\nNenhum Selecionado.\n";
break;
}