If e Else
Com relação às estruturas de controle de fluxo vistas no curso de Linguagem C, o C++ também utiliza as instruções if para testar se uma condição é verdadeira e oferecer um caminho ao fluxo de dados, como também o else para oferecer um caminho alternativo caso a condição não seja satisfeita.
Se abaixo o exemplo clássico que testa se o número digitado pelo usuário é par ou impar:
- #include <iostream>
- using namespace std;
- int main()
- {
- int x;
- cout<<"Digite um número inteiro: ";
- cin>>x;
- if (x%2==0)
- {
- cout<<x<<" é um numero par!";
- }
- else
- {
- cout<<x<<" é um numero impar!";
- }
- return 0;
- }
A novidade do Else If
O que temos de novidade no C++ é a implementação de uma instrução else if que oferece uma terceira via para o fluxo de dados caso if e else não sejam contemplados. Ficando assim a estrutura básica dessas declarações:
Exemplo:
- #include <iostream>
- using namespace std;
- int main()
- {
- int x;
- cout<<"Digite um número inteiro: ";
- cin>>x;
- if (!x)
- {
- cout << "Você não digitou um número!";
- }
- else if (x%2==0)
- {
- cout<<x<<" é um numero par!";
- }
- else
- {
- cout<<x<<" é um numero impar!";
- }
- return 0;
- }
Experimente copiar e colar esse código no GDB Online para testá-lo. Teste digitando uma letra ao invés de um número inteiro. Se você fizer isso verá que mostra a mensagem "Você não digitou um número!". Porque?
Ele primeiro testará a condição if (!x), isto é, se não x que equivale a perguntar se x não é válido. Se você digita um número válido ele passa direto por essa condição e vai testar a segunda. Se o resto da divisão por 2 é zero ele mostra que par, senão, mostra que é impar.
Quando você digita letras satisfaz a condição if (!x), isto é, o x não é número válido, por isso a mensagem que não é número.
Switch Case
O Switch Case do C continua valendo e funcionando da mesma forma em C++, porem se temos o else if como alternativa, ele acaba sendo usado apenas quando as condições de teste são simples.
No exemplo abaixo ele até funcionará, mas se o usuário digitar uma letra dará um erro e especificar uma condição adequada para corrigir isso na linha 9 dará muito mais trabalho que no exemplo do else if.
- #include <iostream>
- using namespace std;
- int main()
- {
- int x,y;
- cout<<"Digite 0 ou 1: ";
- cin>>x;
- switch (x)
- {
- case 0:
- cout<<"você digitou 0!";
- break;
- case 1:
- cout<<"você digitou 1!";
- break;
- default:
- cout<<"você digitou outra coisa!";
- }
- return 0;
- }
Referências
DEITEL, H. M. DEITEL, P. J. C++: Como programar. Pearson Education do Brasil. 2006.
GBDONLINE. Learn C++ Programming. Disponível em: <https://learn.onlinegdb.com/c%2B%2B_for_beginners> Acesso em 05 ago. 2024.
W3SCHOOLS. C++ Tutorial. Disponível em: <https://www.w3schools.com/cpp/default.asp> Acesso em 05 ago. 2024.