Switch Statement Flowchart

Declaração  = switch / case 

Como o próprio nome já diz, switch(interruptor) ... case(caso) controla o fluxo de programas, permitindo aos programadores, especificar diferente código que deve ser executado em várias condições.

Em particular, uma declaração  switch compara o valor de uma variável com os valores especificados nas declarações de case. Quando uma declaração case encontra o valor correspondente ao da variável, o código dessa declaração case é executado.

A palavra-chave break(pausa) permite a saída de uma declaração switch, e é normalmente usada no final de cada caso. Sem uma sentença break, a função switch continuará executando as seguintes expressões sem interrupção, até uma pausa (break) ou quando o fim da função switch é encontrado.

Examplo:

switch (var) 
{
case 1:
// execute algo quando a variável é igual a 1
break;

case 2:
// execute algo quando a variável é igual a 2
         break; 

default:
// Se nada é comparado então execute default
// default é opcional
}


Sintaxe:

switch (var) 
{
case label:
// declarações
break;

case label:
        // declarações
break;

default:
// declarações
}


Parâmetros:

var:  a variável cujo valor é usada para comparar com os vários casos 

label (etiqueta) : um valor para ser comparado à variável

Referência :

http://arduino.cc/en/Reference/SwitchCase#.Uwyxh_ldWa8

Sugestões, correções, exemplos são bem vindos.

Exibições: 10704

Responder esta

Respostas a este tópico

Na verdade o case é compilado como uma tabela. Por isso ele é rapido.

É feita uma busca do valor na tabela de opcoes. Se encontra ele le o label destino (para onde ir em assembler) e vai.

Para uma sequencia de ifs ele vai fazer cada um deles até chegar em algum verdadeiro.

O case é muuuuuito mais rápido, incomparável, mas tem seus limites por ser compilado como tabela. Sequer numeros float aceita. 

Nos dias de hj onde o pessoal mete int onde um byte (unsigned char) resolve fica dificil falar em otimização. A galera da informática dominou esse mundo. Deles vem esses sistemas de libs e tal. Essa é uma diferença gritante do pessoal da informatica de da eletrônica. Para o eletrônico superdimensionar um processador é rasgar dinheiro, já que custo gerado a mais vai ser multiplicado pela quantidade produzida de equipamentos. O firmware não vai crescer. Superdimensionar sem justificativa plausível é quase um crime. A ideia é otimizar para usar processadores menores.

Já para a informática existe a máxima de que o código vai se expandir até ocupar todo o sistema, independente de qual sistema é, então se deve superdimensionar para que o sistema dure um pouco mais.

Inclusive o ARM implementa um tipo de JUMP específico para compilar o Case:

http://www.keil.com/support/man/docs/armasm/armasm_dom1361289912399...

Ref:

https://en.wikipedia.org/wiki/Switch_statement

Polemizando...

Sobre Python (e lua), acredito que sejam otimas linguagens para introduzir um novato na programação. Só isso. Não acho que sejam mais fáceis, melhores, evoluções nem nada. Apenas mais linguagens que morrerão com o tempo assim como foi com o java, javascript, basic, pascal, portugol, cobol, dbase,  etc. (Embora ainda use e goste do Delphi (Pascal)). Vão ficando no esquecimento e a linguagem C sempre presente. Não vejo motivos para migrar. Fiz um projetinho bobo em Python unicamente pq era um bot do Telegram e o exemplo estava em Python. Não achei melhor identar que colocar colchete ou begin/end. Até pior. Sobre lua, também tive que usar. Uma linguagem onde os dados não são tipados simplesmete dá um nó na cabeça de qualquer um que queira escrever alem da decima linha. Desnecessário.

 

Olá Eduardo!

Concordo com você: No mundo Arduino estou com o C e não abro. Não vejo necessidade de mudar.

A linguagem C é a mais utilizada ainda hoje e deu origem a maioria das linguagens "modernas" (Java, C#, PHP, C++, etc.)

No entanto, quando se fala em programação para computadores, Celulares, WEB, prefiro outras linguagens.

Como trabalho com linguagens de programação, tenho obrigação de conhecer as particularidades de cada uma e, quando me perguntam, qual linguagem usar, costumo dizer: Use aquela que você gosta.

Isso, é claro, é só uma brincadeira para dizer que todas as linguagens são muito parecidas. Basta conhecer lógica de programação.

Mas, para os jovens que vão entrar no mercado de trabalho na área de desenvolvimento de sistemas, o melhor conselho é: Aprenda HTML, CSS e Javascript. Essas 3 tecnologias estão dominando o mundo da programação e vão dominar por um bom tempo.

Mas todo mundo tem sua linguagem preferida. A minha é Python, devido às suas estruturas de dados como listas, Mapas, Dicionários, etc.

Outro ponto a favor de Python é que ela reúne 3 grandes paradigmas das linguagens de programação:

Programação Estruturada, Orientada a Objetos e Funcional.

 

Grande José Cintra, bom dia

Me tire uma dúvida, por favor. O Python pode ser compilado, ou ainda é somente interpretado?

Esse foi uma dos motivos, para que eu não me aprofundasse em Python. Gostei muito dela, pela facilidade, mas quando eu vi que ela era interpretada, magoei.

Como eu já disse, estou muito empolgado com a linguagem Kotlin. O Kotlin é compilado e facílimo de aprender. É uma linguagem moderna e prática. 

Obrigado  e abraços.

Olá Gustavo! Ótima pergunta a sua.

Esse assunto sobre linguagens interpretadas e compiladas é complexo, mas vou tentar resumir aqui porque o assunto é extenso.

Na verdade, não é uma linguagem que é interpretada ou compilada, mas sim sua implementação.

Você sabia que existem implementações da linguagem C que são interpretadas? Veja aqui.

Existem 3 tipos de implementações para linguagens:

- Compilada - Arquivos executáveis em código nativo (Essas normalmente são mais rápidas)

- Interpretada - Necessitam ser acompanhadas de um arquivo executável tipo Run-Time que lê o código e o executa (interpreta)

- Híbridas - Possuem um compilador (JIT) que geram um código intermediário que é executado por uma máquina virtual. (esse termo híbrido já está um pouco antiquado, mas ele descreve bem)

Kotlin, na verdade é híbrida pois executa em máquina virtual, mas está em versão beta um compilador para para gerar código nativo. Não sei se já está pronto.

Javascript é interpretada, mas o interpretador está no próprio Browser, o que dificulta o desenvolvimento, pois existem várias implementações do interpretador (Firefox, Chrome, etc).

Kotlin tem a vantagem de poder compilar código em JavaScript também.

A linguagem lua (criada no Brasil) é híbrida e sua grande vantagem é poder ser embutida em outras aplicações com linguagens diferentes. Isso a torna muito versátil e está sendo amplamente utilizada

Veja que curioso: Cometi um erro acima falando que JavaScript é interpretada. Na verdade, deveria dizer que: A maioria das implementações de JavaScript são interpretadas. Esse assunto está se complicando cada vez mais, pois existe implementações de Javascript que rodam no servidor, como o Node Js.

Existem implementações da linguagem Python que são compiladas e outras que são híbridas (rodam na máquina virtual Java). Mas eu prefiro não inventar e usar a versão original

Ultimamente, as linguagens híbridas estão se disseminando mais (Java, DOT NET, Kotlin).

Mas recentemente foi criada uma linguagem compilada pelos mesmos desenvolvedores do Unix que está se destacando. É a GOLANG

Porque você não gosta de linguagens interpretadas? (outro termo incorreto)

O fato de ser interpretada não é um ponto negativo. Existem linguagens híbridas que conseguem ser tão rápidas quanto as compiladas. É o caso da linguagem Julia, própria para aplicações matemáticas.

Espero ter ajudado. Se tiver outras dúvidas, diga aí.

Abraço.

Caro José Cintra , 

Esse é o meu objetivo e porque prefiro linguagem compilada (outros motivos abaixo) 

"- Compilada - Arquivos executáveis em código nativo (Essas normalmente são mais rápidas)" 

Kotlin para Android começou como linguagem híbrida. Mas como você mesmo já disse, já estão em andamento compiladores nativos para Kotlin !

https://blog.jetbrains.com/kotlin/2017/04/kotlinnative-tech-preview...

No meu entender , não me interesso em linguagens interpretadas (que usam interpretadores) pois eles, os interpretadores são necessários na plataforma. Na verdade meu interesse são códigos compilados que geram programas executáveis. Odeio quando tenho que instalar um programa (no caso interpretador) para poder executar outro. E quando se usa programação Real time, o interpretador sempre será mais lento do que um executável (compilado). 

https://docs.python.org/3/faq/general.html#what-is-python

Não conheço o Golang, pois não uso o Linux em PC. Mas gosto muito do Raspbian (Debian) do Raspberry Pi. Tem Golang para Debian/Raspberry pi ?

Obrigado e abraços.

Olá Gustavo,

A GOLANG é multiplataforma e roda em Windows, Linux e Mac. Eu uso em Windows e Linux.

Veja a página de Downloads: https://golang.org/dl/

É possível instalar no RaspBerry: https://dave.cheney.net/2012/09/25/installing-go-on-the-raspberry-pi

Para estudar a linguagem, o interessante que a Google disponibiliza um tutorial ONLINE onde você pode testar os códigos online também. Muito bom!

https://tour.golang.org/welcome/1

A GOLANG é uma das linguagens mais rápidas e é compilada.

Abraço

Legal, vou dar uma pesquisada ! 

Muito obrigado e abraços. 

Bom dia José Augusto, 

Devido à uma necessidade do trabalho encontrei uma solução com a linguagem Golang.

E fiquei impressionado! A Golang é fantástica! Fácil de aprender e é até parecida com o C++ do Arduino.

Estou estudando ainda, mas estou muito otimista com essa linguagem! 

Mais uma vez, obrigado pela dica!

Abraços. 

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço