Diferencia entre revisiones de «switch... case»
(→Vea también) |
(→Referencias externas) |
||
(No se muestran 28 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
− | Es un condicional | + | Es un condicional múltiple permitiendo evaluar una sola variable y que se ejecute uno o mas trozos de código, comparando la variable con cada uno de los valores especificados en las instrucciones '''case'''. Cuando se encuentra una sentencia case cuyo valor coincide con el de la variable, el código bajo esa declaración '''case''' se ejecuta. |
+ | |||
+ | {{Tip|También llamado condicional múltiple.}} | ||
La palabra reservada [[break]] interrumpe la sentencia '''switch''', y se usa normalmente al final de cada declaración case. Sin una declaración [[break]], la sentencia '''switch''' continuará la ejecución de las siguientes expresiones hasta que se alcanza una interrupción o hasta el final de la sentencia '''switch'''. | La palabra reservada [[break]] interrumpe la sentencia '''switch''', y se usa normalmente al final de cada declaración case. Sin una declaración [[break]], la sentencia '''switch''' continuará la ejecución de las siguientes expresiones hasta que se alcanza una interrupción o hasta el final de la sentencia '''switch'''. | ||
+ | |||
+ | La palabra reservada '''default''' se usa para ejecutar código cuando el valor ingresado no coincide con ninguno de los '''case'''. Si esto último llega a suceder pero no hay sección '''default''', la sentencia '''switch''' simplemente se ignorará y flujo de código seguirá como si no estuviera ahí. | ||
== Sintaxis == | == Sintaxis == | ||
Línea 15: | Línea 19: | ||
default: | default: | ||
// instrucciones | // instrucciones | ||
− | break; | + | [break;] |
} </pre> | } </pre> | ||
+ | |||
+ | == Parámetros == | ||
+ | ;var:Variable a evaluar | ||
+ | ;labeln:Valor posible de la variable | ||
+ | ;default:Es el grupo de instrucciones a ejecutar solo si '''ninguna''' label se alcanzo. | ||
+ | |||
+ | == Comentarios== | ||
+ | * Puede poner tantos '''case''' como quieras pero siempre se evaluara la misma variable. | ||
== Advertencias == | == Advertencias == | ||
− | + | No debes olvidar el [[break]] o todas las sentencias serán ejecutas. Puedes olvidar [[break]] solo en la ultima condición. | |
− | == Ejemplo == | + | == Ejemplo 1 == |
− | < | + | En este ejemplo evaluamos la variable '''var''' que obtuvo un dato de un pin analógico. |
+ | <syntaxhighlight lang="c++"> | ||
+ | int var = analogRead(A0); | ||
switch (var){ | switch (var){ | ||
case 1: | case 1: | ||
Línea 32: | Línea 46: | ||
default: //Opcional | default: //Opcional | ||
//si nada coincide, hace lo predeterminado | //si nada coincide, hace lo predeterminado | ||
− | |||
} | } | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | == Ejemplo 2 == | ||
+ | En este ejemplo evaluamos la variable '''var''' que obtuvo un dato de un pin analógico. | ||
+ | <syntaxhighlight lang="c++"> | ||
+ | int var = analogRead(A0); | ||
+ | switch (var){ | ||
+ | case 1: | ||
+ | case 2: | ||
+ | case 3: | ||
+ | //hace algo cuando var es igual a 1, 2 o 3. | ||
+ | break | ||
+ | case 4: | ||
+ | case 5: | ||
+ | case 6: | ||
+ | //hace algo cuando var es igual a 4, 5 o 6. | ||
+ | break; | ||
+ | default: //Opcional | ||
+ | //si nada coincide, hace lo predeterminado | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | Al no poner [[break]] luego de algunos case se logra que cualquiera de esos valores ejecute el mismo codigo. | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | En este ejemplo ponemos un LED RGB (rojo, verde y azul) en los pines digitales 2, 3 y 4. Luego desde el teclado si pulsamos R se prende el LED rojo y lo volvemos a pulsar se apaga. Similar con verde y azul. | ||
+ | |||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup() { | ||
+ | Serial.begin(9600); | ||
+ | pinMode(2, OUTPUT); //Rojo | ||
+ | pinMode(3, OUTPUT); //Verde | ||
+ | pinMode(4, OUTPUT); //AZUL | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | //Esperamos una tecla | ||
+ | if Serial.available()) { | ||
+ | char tecla = Serial.read(); | ||
+ | switch (tecla){ | ||
+ | case 'R': | ||
+ | digitalWrite(2, !digitalRead(2)); | ||
+ | break; | ||
+ | case 'G': | ||
+ | digitalWrite(3, !digitalRead(3)); | ||
+ | break; | ||
+ | case 'B': | ||
+ | digitalWrite(4, !digitalRead(4)); | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Estructura control</categorytree> | |
− | |||
− | |||
− | |||
− | == Referencias == | + | == Referencias externas == |
− | * [https://www.arduino.cc/reference/ | + | * [https://www.arduino.cc/reference/en/language/structure/control-structure/switchcase/ Guia de referencia de Arduino] |
+ | * [http://manueldelgadocrespo.blogspot.com/p/instruccion-swi.html switch] - Manuel Delgado | ||
+ | * [http://www.arduino.utfsm.cl/referencia/switch-case/ switch case] - UTFSM | ||
+ | * [http://diwo.bq.com/maquinas-de-estado-switch-case/ Maquina de estado] - Diwo | ||
− | [[Category: | + | [[Category:Estructura control]] |
Revisión actual del 18:44 24 jun 2019
Contenido
Descripción
Es un condicional múltiple permitiendo evaluar una sola variable y que se ejecute uno o mas trozos de código, comparando la variable con cada uno de los valores especificados en las instrucciones case. Cuando se encuentra una sentencia case cuyo valor coincide con el de la variable, el código bajo esa declaración case se ejecuta.
Tip: También llamado condicional múltiple.
La palabra reservada break interrumpe la sentencia switch, y se usa normalmente al final de cada declaración case. Sin una declaración break, la sentencia switch continuará la ejecución de las siguientes expresiones hasta que se alcanza una interrupción o hasta el final de la sentencia switch.
La palabra reservada default se usa para ejecutar código cuando el valor ingresado no coincide con ninguno de los case. Si esto último llega a suceder pero no hay sección default, la sentencia switch simplemente se ignorará y flujo de código seguirá como si no estuviera ahí.
Sintaxis
switch (var) { case label1: // instrucciones break; case label2: // instrucciones break; default: // instrucciones [break;] }
Parámetros
- var
- Variable a evaluar
- labeln
- Valor posible de la variable
- default
- Es el grupo de instrucciones a ejecutar solo si ninguna label se alcanzo.
Comentarios
- Puede poner tantos case como quieras pero siempre se evaluara la misma variable.
Advertencias
No debes olvidar el break o todas las sentencias serán ejecutas. Puedes olvidar break solo en la ultima condición.
Ejemplo 1
En este ejemplo evaluamos la variable var que obtuvo un dato de un pin analógico.
int var = analogRead(A0);
switch (var){
case 1:
//hace algo cuando var es igual a 1
break
case 2:
//hace algo cuando var es igual a 2
break;
default: //Opcional
//si nada coincide, hace lo predeterminado
}
Ejemplo 2
En este ejemplo evaluamos la variable var que obtuvo un dato de un pin analógico.
int var = analogRead(A0);
switch (var){
case 1:
case 2:
case 3:
//hace algo cuando var es igual a 1, 2 o 3.
break
case 4:
case 5:
case 6:
//hace algo cuando var es igual a 4, 5 o 6.
break;
default: //Opcional
//si nada coincide, hace lo predeterminado
}
Al no poner break luego de algunos case se logra que cualquiera de esos valores ejecute el mismo codigo.
Ejemplo 3
En este ejemplo ponemos un LED RGB (rojo, verde y azul) en los pines digitales 2, 3 y 4. Luego desde el teclado si pulsamos R se prende el LED rojo y lo volvemos a pulsar se apaga. Similar con verde y azul.
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT); //Rojo
pinMode(3, OUTPUT); //Verde
pinMode(4, OUTPUT); //AZUL
}
void loop() {
//Esperamos una tecla
if Serial.available()) {
char tecla = Serial.read();
switch (tecla){
case 'R':
digitalWrite(2, !digitalRead(2));
break;
case 'G':
digitalWrite(3, !digitalRead(3));
break;
case 'B':
digitalWrite(4, !digitalRead(4));
break;
}
}
}
Vea también
Referencias externas
- Guia de referencia de Arduino
- switch - Manuel Delgado
- switch case - UTFSM
- Maquina de estado - Diwo