Diferencia entre revisiones de «if... else»
(→Referencias) |
(→Ejemplo 4) |
||
(No se muestran 18 ediciones intermedias del mismo usuario) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
El condicional '''if()''' permite un mayor control del flujo de código al permitir ejecutar o no un grupo de instrucciones según el resultado de una condición. | El condicional '''if()''' permite un mayor control del flujo de código al permitir ejecutar o no un grupo de instrucciones según el resultado de una condición. | ||
+ | |||
+ | {{Tip|También llamado condicional simple.}} | ||
Además se puede usar '''else''' dentro de las llaves de modo que, si la condición es falsa, se ejecute un segundo juego de códigos. | Además se puede usar '''else''' dentro de las llaves de modo que, si la condición es falsa, se ejecute un segundo juego de códigos. | ||
Línea 38: | Línea 40: | ||
== Parámetros == | == Parámetros == | ||
;condición: es una expresión que se evalúa como verdadera o falsa. | ;condición: es una expresión que se evalúa como verdadera o falsa. | ||
− | |||
− | |||
− | |||
== Comentarios == | == Comentarios == | ||
Línea 48: | Línea 47: | ||
{{Nota|Se puede poner varias expresiones unidas por los operadores lógicos [[or]] o [[and]].}} | {{Nota|Se puede poner varias expresiones unidas por los operadores lógicos [[or]] o [[and]].}} | ||
+ | |||
+ | == Advertencias == | ||
+ | * No confundir el comparador de [[igualdad]] (<nowiki>==</nowiki>) con el operador de [[asignacion]] (<nowiki>=</nowiki>). | ||
== Ejemplo 1 == | == Ejemplo 1 == | ||
Se puede comprobar una entrada analógica y realizar una acción si el valor de la entrada es menor que 500 y realizar otra acción distinta si la entrada es 500 o mayor. | Se puede comprobar una entrada analógica y realizar una acción si el valor de la entrada es menor que 500 y realizar otra acción distinta si la entrada es 500 o mayor. | ||
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
if (analogRead(A3) < 500) { | if (analogRead(A3) < 500) { | ||
Línea 61: | Línea 64: | ||
== Ejemplo 2 == | == Ejemplo 2 == | ||
Aquí usamos dos comparaciones con distintas expresiones. | Aquí usamos dos comparaciones con distintas expresiones. | ||
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
if (analogRead(A3) < 500){ | if (analogRead(A3) < 500){ | ||
//instrucciones A | //instrucciones A | ||
− | }else if (digitalRead( | + | }else if (digitalRead(LED_BUILTIN)){ |
//instrucciones B | //instrucciones B | ||
}else{ | }else{ | ||
Línea 72: | Línea 76: | ||
== Ejemplo 3 == | == Ejemplo 3 == | ||
− | Con este código producimos un parpadeo | + | Con este código producimos un parpadeo. |
+ | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
void setup(){ | void setup(){ | ||
− | pinMode( | + | pinMode(LED_BUILTIN, OUTPUT); |
} | } | ||
void loop(){ | void loop(){ | ||
− | if (digitalRead( | + | if (digitalRead(LED_BUILTIN)){ |
− | digitalWrite( | + | digitalWrite(LED_BUILTIN, LOW) //Apaga LED |
}else{ | }else{ | ||
− | digitalWrite( | + | digitalWrite(LED_BUILTIN, HIGH) //Prende LED |
} | } | ||
delay(500); | delay(500); | ||
Línea 87: | Línea 92: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | {{Tip|No es necesario poner if (digitalRead(LED_BUILTIN) <nowiki>==</nowiki> HIGH).}} | |
+ | |||
+ | == Ejemplo 4 == | ||
+ | Podemos usar una condicional simple dentro de [[Serial.print()]] o [[Serial.println()]] | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | for (byte n=2; n<14; n++){ | ||
+ | pinMode(n, INPUT); | ||
+ | } | ||
+ | } | ||
+ | void loop(){ | ||
+ | for (byte n=2; n<14; n++){ | ||
+ | Serial.print(n); | ||
+ | Serial.print(" = "); | ||
+ | Serial.println(digitalRead(n)?"Prendido":"Apagado"); | ||
+ | } | ||
+ | Serial.println("---------"); | ||
+ | delay(1000); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 5 == | ||
+ | En este ejemplo no cambiamos el valor del PWM entre 86~126. Nota que al definir la variable tipo [[byte]] luego del 255 el siguiente numero es 0 nuevamente. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | byte n; | ||
+ | void setup(){ | ||
+ | pinMode(LED_BUILTIN, OUTPUT); | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | n++; | ||
+ | if (n>85 && n<169){ | ||
+ | analogWrite(LED_BUILTIN, 127); | ||
+ | }else{ | ||
+ | analogWrite(LED_BUILTIN, n); | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Estructura control</categorytree> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Referencias == | == Referencias == | ||
− | * [ | + | * [http://arduino.cc/en/Reference/If Guia de referencia de Arduino] |
− | * [https://programarfacil.com/blog/arduino-blog/if-else-arduino/ Programar Facil] | + | * [https://programarfacil.com/blog/arduino-blog/if-else-arduino/ if el Arduino] - Programar Facil |
+ | * [https://aprendiendoarduino.wordpress.com/2017/10/14/estructuras-de-control-4/ Estructuras de control] - Enrique Crespo | ||
− | [[Category:Estructura]] | + | [[Category:Estructura control]] |
Revisión actual del 01:23 27 jun 2019
Contenido
Descripción
El condicional if() permite un mayor control del flujo de código al permitir ejecutar o no un grupo de instrucciones según el resultado de una condición.
Tip: También llamado condicional simple.
Además se puede usar else dentro de las llaves de modo que, si la condición es falsa, se ejecute un segundo juego de códigos.
También se puede anidar condicionales simples con else if(), de manera que se pueden establecer varias estructuras condicionales anidadas de forma que sean mutuamente excluyentes. Recuerde sin embargo qué sólo un conjunto de declaraciones se llevará a cabo dependiendo de las condiciones impuestas.
Nota: Tenga en cuenta que un bloque if() se puede usar con o sin un bloque else y viceversa. Se permite un número ilimitado de ramificaciones usando else if().
Sintaxis
Condicional simple
if (condicion) { //Ejecuta si condición es verdadera }
Condicional compuesta
if (condicion) { //Ejecuta si condición es verdadera }else{ //Ejecuta si condición es falsa }
Condicionales anidadas
if (condicion 1) { //Ejecuta si condición 1 es verdadera }else if (condicion 2){ //Ejecuta si condición 1 es falsa y condicional 2 es falsa }else{ //Ejecuta si ambas condiciónes son falsa }
Parámetros
- condición
- es una expresión que se evalúa como verdadera o falsa.
Comentarios
- Si se omiten las llaves solo se ejecuta una instrucción.
- Si tienes una función que de por si da como resultado true/false la puedes usar directamente sin evaluar. Eso implica que es lo mismo poner digitalRead(13) que digitalRead(13) == true.
- Recuerda que true es lo mismo que HIGH o 1 y false es lo mismo que LOW o 0.
Nota: Se puede poner varias expresiones unidas por los operadores lógicos or o and.
Advertencias
- No confundir el comparador de igualdad (==) con el operador de asignacion (=).
Ejemplo 1
Se puede comprobar una entrada analógica y realizar una acción si el valor de la entrada es menor que 500 y realizar otra acción distinta si la entrada es 500 o mayor.
if (analogRead(A3) < 500) {
//acción A
}else{
//acción B
}
Ejemplo 2
Aquí usamos dos comparaciones con distintas expresiones.
if (analogRead(A3) < 500){
//instrucciones A
}else if (digitalRead(LED_BUILTIN)){
//instrucciones B
}else{
//instrucciones C
}
Ejemplo 3
Con este código producimos un parpadeo.
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
}
void loop(){
if (digitalRead(LED_BUILTIN)){
digitalWrite(LED_BUILTIN, LOW) //Apaga LED
}else{
digitalWrite(LED_BUILTIN, HIGH) //Prende LED
}
delay(500);
}
Tip: No es necesario poner if (digitalRead(LED_BUILTIN) == HIGH).
Ejemplo 4
Podemos usar una condicional simple dentro de Serial.print() o Serial.println()
void setup(){
Serial.begin(9600);
for (byte n=2; n<14; n++){
pinMode(n, INPUT);
}
}
void loop(){
for (byte n=2; n<14; n++){
Serial.print(n);
Serial.print(" = ");
Serial.println(digitalRead(n)?"Prendido":"Apagado");
}
Serial.println("---------");
delay(1000);
}
Ejemplo 5
En este ejemplo no cambiamos el valor del PWM entre 86~126. Nota que al definir la variable tipo byte luego del 255 el siguiente numero es 0 nuevamente.
byte n;
void setup(){
pinMode(LED_BUILTIN, OUTPUT);
}
void loop(){
n++;
if (n>85 && n<169){
analogWrite(LED_BUILTIN, 127);
}else{
analogWrite(LED_BUILTIN, n);
}
}
Vea también
Referencias
- Guia de referencia de Arduino
- if el Arduino - Programar Facil
- Estructuras de control - Enrique Crespo