Informática, perguntado por mluisashow2292, 1 ano atrás

em linguagem de programação O switch sempre pode substituir o if?

Soluções para a tarefa

Respondido por bokomoko
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 !

Perguntas interessantes