Diferencia entre revisiones de «for»
(→Vea también) |
(→Ejemplo 4) |
||
(No se muestran 17 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
== Descripción == | == Descripción == | ||
La declaración '''for''' se usa para repetir un bloque de sentencias encerradas entre llaves un número determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve a comprobar la condición. | La declaración '''for''' se usa para repetir un bloque de sentencias encerradas entre llaves un número determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve a comprobar la condición. | ||
+ | |||
+ | {{Nota|Se usa para cuando tu sabes de antemano cuantas veces debes repetir el bucle.}} | ||
== Sintaxis == | == Sintaxis == | ||
Línea 10: | Línea 12: | ||
== Parametros == | == Parametros == | ||
− | ;declaracion-initialization: | + | ;declaracion-initialization: declaración e inicialización de variables a utilizar en el ciclo. |
;condicion: condicional que debe cumplir desde el principio | ;condicion: condicional que debe cumplir desde el principio | ||
− | ;incremento: incremento o decremento. | + | ;incremento: incremento o decremento. Son un conjunto de instrucciones (separadas por coma ''',''' ) que se ejecutan cada vez que se completa una iteración del ciclo. A diferencia de la condición, esta parte nunca ocurre la primera vez. |
+ | |||
+ | {{Nota|Todos los parámetros se pueden omitir (sin embargo los dos ''';''' siguen siendo obligatorios), pero si se omite la condición, esta siempre se asumirá verdadera; lo que resultaría en un bucle infinito hasta encontrarse con una sentencia [[break]].}} | ||
== Advertencias == | == Advertencias == | ||
Nada. | Nada. | ||
− | == Ejemplo == | + | == Ejemplo 1 == |
− | < | + | En este ejemplo conectamos un LED en un pin digital PWM y hacemos variar iluminacion con [[analogWrite()]]. |
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
const byte pin = 10; //LED | const byte pin = 10; //LED | ||
void setup() { | void setup() { | ||
− | + | pinMode(pin, OUTPUT); | |
} | } | ||
void loop(){ | void loop(){ | ||
for (byte i=0; i<=255; i++){ | for (byte i=0; i<=255; i++){ | ||
analogWrite(pin, i); //PWM | analogWrite(pin, i); //PWM | ||
+ | delay(100); | ||
} | } | ||
− | |||
} | } | ||
− | </ | + | </syntaxhighlight> |
+ | |||
+ | == Ejemplo 2 == | ||
+ | Revisa este curioso ejemplo donde no hay el 3er termino en el for() que normalmente incrementa la variable. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | for (unsigned long start=millis(); millis()-start<1000;){ | ||
+ | Serial.println(start); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | //Nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 3 == | ||
+ | En este ejemplo es el [[break]] quien termina el ciclo for. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | for (byte n=0; n<254; n++){ | ||
+ | Seral.println(n); | ||
+ | if (n>10){ | ||
+ | break; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | void loop(){ | ||
+ | //Nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 4 == | ||
+ | Error de novato. Como ya sabes [[byte]] soporta valores entre 0 y 255. Asi que '''siempre''' se cumplira la condicion n<256 y este for nunca terminara. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | for (byte n=0; n<256; n++){ | ||
+ | Seral.println(n); | ||
+ | } | ||
+ | } | ||
+ | void loop(){ | ||
+ | //Nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Ejemplo 5 == | ||
+ | En matemáticas, la sucesión o serie de '''Fibonacci''' es la siguiente sucesión infinita de números naturales: 0,1,1,2,3,5,8,13,21,34,55,89,144.. | ||
+ | |||
+ | <syntaxhighlight lang="c++"> | ||
+ | byte s[13] ; | ||
+ | |||
+ | void setup(){ | ||
+ | Serial.begin(9600); | ||
+ | for (byte n=0; n<13; n++) { | ||
+ | if (n==0 || n==1) { | ||
+ | s[0]=0; | ||
+ | s[1]=1; | ||
+ | }else{ | ||
+ | s[n] = s[n-1]+s[n-2]; | ||
+ | } | ||
+ | Serial.println(s[n]); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void loop(){ | ||
+ | //Nada | ||
+ | } | ||
+ | </syntaxhighlight> | ||
== Vea también == | == Vea también == | ||
− | + | <categorytree mode=all>Estructura control</categorytree> | |
− | |||
− | |||
− | |||
− | == Referencias == | + | == Referencias externas == |
− | * [ | + | * [http://arduino.cc/en/Reference/For Guia de referencia de Arduino] |
+ | * [https://aprendiendoarduino.wordpress.com/tag/estructuras-de-control/ Estructuras de control] - Enrique Crespo | ||
− | [[Category: | + | [[Category:Estructura control]] |
Revisión actual del 21:29 6 jun 2020
Contenido
Descripción
La declaración for se usa para repetir un bloque de sentencias encerradas entre llaves un número determinado de veces. Cada vez que se ejecutan las instrucciones del bucle se vuelve a comprobar la condición.
Nota: Se usa para cuando tu sabes de antemano cuantas veces debes repetir el bucle.
Sintaxis
for (declaracion-initialization; condicion; incremento) { //instrucción(es); }
Parametros
- declaracion-initialization
- declaración e inicialización de variables a utilizar en el ciclo.
- condicion
- condicional que debe cumplir desde el principio
- incremento
- incremento o decremento. Son un conjunto de instrucciones (separadas por coma , ) que se ejecutan cada vez que se completa una iteración del ciclo. A diferencia de la condición, esta parte nunca ocurre la primera vez.
Nota: Todos los parámetros se pueden omitir (sin embargo los dos ; siguen siendo obligatorios), pero si se omite la condición, esta siempre se asumirá verdadera; lo que resultaría en un bucle infinito hasta encontrarse con una sentencia break.
Advertencias
Nada.
Ejemplo 1
En este ejemplo conectamos un LED en un pin digital PWM y hacemos variar iluminacion con analogWrite().
const byte pin = 10; //LED
void setup() {
pinMode(pin, OUTPUT);
}
void loop(){
for (byte i=0; i<=255; i++){
analogWrite(pin, i); //PWM
delay(100);
}
}
Ejemplo 2
Revisa este curioso ejemplo donde no hay el 3er termino en el for() que normalmente incrementa la variable.
void setup(){
Serial.begin(9600);
for (unsigned long start=millis(); millis()-start<1000;){
Serial.println(start);
}
}
void loop(){
//Nada
}
Ejemplo 3
En este ejemplo es el break quien termina el ciclo for.
void setup(){
Serial.begin(9600);
for (byte n=0; n<254; n++){
Seral.println(n);
if (n>10){
break;
}
}
}
void loop(){
//Nada
}
Ejemplo 4
Error de novato. Como ya sabes byte soporta valores entre 0 y 255. Asi que siempre se cumplira la condicion n<256 y este for nunca terminara.
void setup(){
Serial.begin(9600);
for (byte n=0; n<256; n++){
Seral.println(n);
}
}
void loop(){
//Nada
}
Ejemplo 5
En matemáticas, la sucesión o serie de Fibonacci es la siguiente sucesión infinita de números naturales: 0,1,1,2,3,5,8,13,21,34,55,89,144..
byte s[13] ;
void setup(){
Serial.begin(9600);
for (byte n=0; n<13; n++) {
if (n==0 || n==1) {
s[0]=0;
s[1]=1;
}else{
s[n] = s[n-1]+s[n-2];
}
Serial.println(s[n]);
}
}
void loop(){
//Nada
}
Vea también
Referencias externas
- Guia de referencia de Arduino
- Estructuras de control - Enrique Crespo