O que é o if else em C++?
O if else em C++ é uma estrutura condicional de controle que permite executar (ou saltar) um bloco de código apenas quando uma expressão for verdadeira, e também executar outros blocos de código se a expressão for falsa. Na realidade, para ser mais preciso, o if é uma estrutura condicional que pode (mas isso não é obrigatório) ser acompanhado pelas estruturas else e else if (e esses apenas podem ser usados junto com o if).
Sintaxe: if else
if (<inicializador>; <expressão condicional>) {
<corpo do if>
} else if (<expressão condicional do else if>) {
<corpo do else if>
} else {
<corpo do else>
}
Como funciona o if else em C++?
O if else é verificado de maneira sequencial, ou seja, primeiro é verificada a expressão condicional do if, e se a condição for verdadeira, o corpo do if é executado e todo o bloco if-else se encerra; se a condição for falsa, é verificada a condição do else if, e o procedimento se repete até que se chegue ao else e o bloco todo acabe.
Note que o else if permite adicionar uma segunda condição a ser testada, mas o else não: se a execução do programa chegar no else, nenhuma condição será testada e o corpo do else será executado.
Vejamos a seguir um exemplo de uso do if else em C++.
Exemplo 1 – Uso simples do if else em C++
#include <iostream> using namespace std; void processarNota(const double x) { if (x == 10) { cout << "Excelent!" << endl; } else if (x > 8) { cout << "Muito bom!" << endl; } else if (x > 6) { cout << "Ok" << endl; } else { cout << "Boa sorte na próxima prova!" << endl; } } int main() { const double x = 8.6; processarNota(x); return 0; }
Vemos no exemplo acima que a saída é Muito bom!, pois o valor passado para a função processarNota foi 8.6, e portanto a expressão condicional x == 10
do if dentro da função resultou em false
, passando à condição do else if, que é verdadeira (x > 8
), causando a saída que vimos e encerrando a execução do bloco if else, da função e em seguida do programa.
Perceba quão importante é a ordem da condições em um bloco if else: se eu houvesse usando uma nota 10 e invertido o if com o else if, eu teria obtido na saída o valor Muito bom!, quando na verdade a minha intenção era obter Excelente!.
Sempre preste atenção à ordem nas quais as expressões condicionais aparecem em um bloco if else.
Inicializadores e if else em C++17
O C++17 introduziu consigo um novo campo nos blocos de controle if else: os inicializadores.
Os inicializadores permitem criar uma variável (ou executar uma expressão de inicialização) antes de começar o teste condicional do if, e tal variável é valida apenas dentro do bloco if-else.
No exemplo abaixo eu criei uma classe simples chamada Programador para poder inicializar um objeto desse tipo no campo de inicialização do meu if. A classe possui dois construtores: um construtor padrão e um construtor que recebe um parâmetro de tipo string que é usado para inicializar o atributo nivel do objeto. Por padrão, o valor de nível é junior. Dêem uma olhada no exemplo 2 e eu retomarei a discussão logo após ele.
Exemplo 2 – if else em C++17 com inicializadores
#include <iostream> using namespace std; class Programador { public: Programador() = default; Programador(std::string iNivel): nivel(iNivel) {}; string nivel {"junior"}; }; int main() { if (Programador junior {}; junior.nivel == "junior") { cout << "Programador junior." << endl; } else if (junior.nivel == "pleno") { cout << "Programador pleno." << endl; } else { cout << "Programador senior." << endl; } }
Vemos na saída do exemplo acima o texto Programador junior, indicando que o valor do atributo nivel do objeto junior
criado com o construtor padrão da classe Programador é “junior”. Se você tiver lido com atenção, terá notado que declarei a variável junior
dentro do if, no campo do inicializador, logo antes do ponto-e-vírugla (;) e da expressão condicional.
A variável junior existe apenas dentro do escopo do if, e se eu tentasse utilizá-la após o if (no fim da main, por exemplo) haveria um erro de compilação como o seguinte: “error: ‘junior’ não foi declarado neste escopo”.
As variáveis criadas no campo de inicialização do if em C++ só existem no escopo do if em questão.
Próximos passos
Chegamos ao fim deste artigo sobre if else em C++, e agora que você já conhece a principal das estruturas de controle condicional da linguagem, é importante conhecer também uma outra estrutura que lhe é muito semelhante: o switch case. Por isso, eu recomendo que você leia o meu artigo sobre switch case em C++. Boa leitura!
Switch case em C++: estruturas condicionais de controle »
Ah, quase esqueci! Se quiser ficar por dentro das novidades do CppModerno e não quiser perder nenhum dos nossos artigos, se inscreva na nossa newsletter usando o formulário abaixo (você pode se desinscrever quando quiser, não se preocupe).
créditos de imagem: Freepik
Sou apaixonado por tecnologia, literatura e também filosofia. O cultivo dessas paixões ao longo da minha trajetória me inspiraram a compartilhar aquilo que aprendo com os outros da maneira mais clara que eu possa. Sou formado em Engenharia Elétrica no Brasil, e também sou engenheiro formado na França. Trabalho atualmente como programador C++ em uma multinacional francesa, uma das maiores empresas de TI do mundo.