O switch verifica se um valor é igual a outro, ou mais especificamente, qual dos casos é igual ao valor.
Escrevendo:
Um "switch" seguido de uma expressão entre ( ).
Diferentes casos "case" seguidos de com um valor, e um código a executar.
Um "break" no fim de cada caso (opcional, será explicado).
Um "switch" seguido de uma expressão entre ( ).
Diferentes casos "case" seguidos de com um valor, e um código a executar.
Um "break" no fim de cada caso (opcional, será explicado).
switch(x){ case 3: cout << "It's a 3!" << endl; break; case 4: cout << "It's a 4!" << endl; break; }
Neste caso, queremos verificar o valor da variável x (inteiro).
Temos os casos 3 e 4.
Se o valor da variável for 3, é feito o print de "It's a 3!".
Se o valor da variável for 4, é feito o print de "It's a 4!".
Se não for nenhum dos dois, nada acontece.
Apenas valores integrais (int)
No switch, apenas podemos verificar valores integrais.
Estes são int e char (porque char também é inteiro, devido aos ASCII, vou falar disto muito brevemente).
Então, por exemplo, não podemos verificar uma string.
Isto não é possível e dá erro.
E mesmo podendo verificar um carácter, temos de ter em atenção para não usarmos aspas duplas (""), mas sim estas (''). Porque "" são para strings.
Isto não é possível e dá erro.
Default
Para que aconteça algo se nenhum dos casos corresponde à expressão, usamos o default.
O default é um caso especial opcional cujo código é executado só se nenhum dos outros casos for válido.
Em vez de "case" escrevemos "default", sem nenhum valor a seguir.
Estamos a avaliar uma variável x novamente no switch.
Se for 1 ou 2, é feito o print de "1" ou "2", respetivamente.
Se não for nenhum dos dois, é executado o código do caso default, onde é feito o print de "Default".
Temos os casos 3 e 4.
Se o valor da variável for 3, é feito o print de "It's a 3!".
Se o valor da variável for 4, é feito o print de "It's a 4!".
Se não for nenhum dos dois, nada acontece.
Apenas valores integrais (int)
No switch, apenas podemos verificar valores integrais.
Estes são int e char (porque char também é inteiro, devido aos ASCII, vou falar disto muito brevemente).
Então, por exemplo, não podemos verificar uma string.
string s; switch(s){ case "42": cout << "Answer to everything" << endl; break; }
E mesmo podendo verificar um carácter, temos de ter em atenção para não usarmos aspas duplas (""), mas sim estas (''). Porque "" são para strings.
char c; switch(c){ case "1": cout << "Not valid!" << endl; break; }
Default
Para que aconteça algo se nenhum dos casos corresponde à expressão, usamos o default.
O default é um caso especial opcional cujo código é executado só se nenhum dos outros casos for válido.
Em vez de "case" escrevemos "default", sem nenhum valor a seguir.
switch(x){ case 1: cout << "1" << endl; break; case 2: cout << "2" << endl; break; default: cout << "Default" << endl; break; }
Se for 1 ou 2, é feito o print de "1" ou "2", respetivamente.
Se não for nenhum dos dois, é executado o código do caso default, onde é feito o print de "Default".
Break
Certo, então devemos colocar "break" no fim de cada caso. Mas porquê?
É opcional mas se não o utilizarmos vai acontecer algo que não queremos de forma alguma.
Ao não termos o break, quando um caso é válido e o seu código é executado, o código de todos os outros casos abaixo dele também vai ser executado, até que se encontre um break.
Certo, então devemos colocar "break" no fim de cada caso. Mas porquê?
É opcional mas se não o utilizarmos vai acontecer algo que não queremos de forma alguma.
Ao não termos o break, quando um caso é válido e o seu código é executado, o código de todos os outros casos abaixo dele também vai ser executado, até que se encontre um break.
switch(x){ case 1: cout << "1" << endl; case 2: cout << "2" << endl; case 3: cout << "3" << endl; break; case 4: cout << "4" << endl; break; case 5: cout << "5" << endl; break; }
- Ou seja, se x for 1, é feito o print de "1";
- Como não existe break no final do caso, também se executa o caso 2, print de "2";
- Novamente como não há break, executa-se o caso abaixo, print de "3";
- Encontra-se um break então acaba aqui.
Programa exemplo~
#include <iostream> using namespace std; int main() { int month; cout << "Enter this month's number: "; cin >> month; switch(month){ case 1: cout << "January" << endl; break; case 2: cout << "February" << endl; break; case 3: cout << "March" << endl; break; case 4: cout << "April" << endl; break; case 5: cout << "May" << endl; break; case 6: cout << "June" << endl; break; case 7: cout << "July" << endl; break; case 8: cout << "August" << endl; break; case 9: cout << "September" << endl; break; case 10: cout << "October" << endl; break; case 11: cout << "November" << endl; break; case 12: cout << "December" << endl; break; default: cout << "Invalid month number!" << endl; break; } }
Se o número não for de 1 a 12, é ativado o caso default que faz print da mensagem "Invalid month number!".
Referências - 3/12/2019
Sem comentários:
Enviar um comentário
Comente de forma construtiva...
Nota: só um membro deste blogue pode publicar um comentário.