Respostas
respondido por:
0
Não. O switch nào substitui sempre o if. Quer dizer, não de forma trivial. Mais sobre isso adiante.
O switch é muito confundido com um "super if" que suportaria mais de duas possibilidades. O if é pobre perto do switch né ? O if só pode ter duas possibilidades : algo se for verdadeiro, outra coisa se for falso. Já o switch .. poxa... o switch tem infinitas (well... quase infinitas tá?) possibilidades. Só que tem um problema. O switch só suporta possibilidades que sejam um número inteiro. 0, 1, 2, 3 e assim por diante. Oxente ? Porque essa "restrição".
A ideia do switch é fazer um salto para qualquer uma das n possibilidades de forma imediata. No if testamos uma possibilidade e se essa falhar executamos a outra. O switch não é uma sequencia de if's ... o switch na verdade é como se fosse um vetor de códigos, de saltos. Quando o switch é avaliado, resulta num número que vai indicar para qual índice do vetor de endereços ele vai saltar. Por isso que o switch é infinitamente mais rápido que um if. A aplicação do switch é quando o código , o algoritmo, muda de acordo com a situação. Não deve ser usado para quando o dado muda de acordo com a situação. Nesses casos é melhor usar um vetor.
Bom, eu deixei uma brecha lá em cima para explicar que ... sim ... é possível um switch substituir um if mas não é trivial. Dá um trabalho danado. A ideia básica é reduzir as condições que formam o if, a expressao booleana, e converte-la para os inteiros 0 (caso falso) e 1 (caso verdadeiro) .
Aí usa um switch com label 0 para o caso falso e label 1 para caso verdadeiro. Ou seja, na teoria, é sim possível.
Na prática, não vale a pena substituir if's por switchs, então a resposta é um rotundo NAO !
O switch é muito confundido com um "super if" que suportaria mais de duas possibilidades. O if é pobre perto do switch né ? O if só pode ter duas possibilidades : algo se for verdadeiro, outra coisa se for falso. Já o switch .. poxa... o switch tem infinitas (well... quase infinitas tá?) possibilidades. Só que tem um problema. O switch só suporta possibilidades que sejam um número inteiro. 0, 1, 2, 3 e assim por diante. Oxente ? Porque essa "restrição".
A ideia do switch é fazer um salto para qualquer uma das n possibilidades de forma imediata. No if testamos uma possibilidade e se essa falhar executamos a outra. O switch não é uma sequencia de if's ... o switch na verdade é como se fosse um vetor de códigos, de saltos. Quando o switch é avaliado, resulta num número que vai indicar para qual índice do vetor de endereços ele vai saltar. Por isso que o switch é infinitamente mais rápido que um if. A aplicação do switch é quando o código , o algoritmo, muda de acordo com a situação. Não deve ser usado para quando o dado muda de acordo com a situação. Nesses casos é melhor usar um vetor.
Bom, eu deixei uma brecha lá em cima para explicar que ... sim ... é possível um switch substituir um if mas não é trivial. Dá um trabalho danado. A ideia básica é reduzir as condições que formam o if, a expressao booleana, e converte-la para os inteiros 0 (caso falso) e 1 (caso verdadeiro) .
Aí usa um switch com label 0 para o caso falso e label 1 para caso verdadeiro. Ou seja, na teoria, é sim possível.
Na prática, não vale a pena substituir if's por switchs, então a resposta é um rotundo NAO !
Perguntas similares
6 anos atrás
6 anos atrás
8 anos atrás
8 anos atrás
9 anos atrás
9 anos atrás