Los ciclos son una herramienta fundamental en los lenguajes de programación, y en C++ estos nos permiten iterar un bloque de código sobre una lista o un rango numérico. Por ejemplo, si queremos realizar una operación en cada elemento de una lista de números, los ciclos facilitan este proceso repetitivo. Aquí te guiaré a través de los fundamentos de los ciclos for en C++.
¿Qué es un ciclo for?
Un ciclo for es una instrucción que permite ejecutar repetidamente un bloque de código un número determinado de veces. En C++, esta estructura es útil para iterar sobre rangos numéricos o sobre listas, permitiéndonos ejecutar el mismo código varias veces de manera eficiente.
Sintaxis básica de un ciclo for
La estructura básica de un ciclo for en C++ es la siguiente:
for(int i =0; i <10; i++){// Código a ejecutar}
Inicialización: Declaramos e inicializamos una variable, generalmente int i = 0.
Condición: Evaluamos una condición (ej. i < 10) que debe ser verdadera para que el ciclo continúe.
Incremento: Se incrementa el valor de la variable (ej. i++ es i = i + 1).
Dentro del bloque de código, podemos utilizar esta variable para operaciones específicas. Por ejemplo, imprimir su valor en cada iteración:
std::cout << i << std::endl;
¿Cómo iterar con un límite variable?
En ocasiones, el límite de las iteraciones no es un número fijo. Podemos utilizar variables para establecer este límite, lo que añade flexibilidad al ciclo.
int limite;std::cout <<"Límite: ";std::cin >> limite;for(int i =0; i < limite; i++){ std::cout << i << std::endl;}
Con esta estructura, el programa pregunta al usuario cuántas iteraciones debe realizar.
¿Cómo iterar sobre listas?
Los ciclos for también nos ayudan a realizar operaciones en cada elemento de una lista. Veamos cómo multiplicar cada elemento por dos:
int lista[]={100,200,300};for(int i =0; i <sizeof(lista)/sizeof(lista[0]); i++){ std::cout << lista[i]*2<< std::endl;}
Aquí, utilizamos sizeof para determinar el tamaño de la lista, dividiéndolo por el tamaño de un elemento en bytes.
¿Cómo interrumpir un ciclo for?
Podemos utilizar la instrucción break para salir de un ciclo for bajo ciertas condiciones. Por ejemplo, queremos detenernos al encontrar el número 200:
for(int i =0; i <sizeof(lista)/sizeof(lista[0]); i++){if(lista[i]==200)break; std::cout << lista[i]<< std::endl;}
Cuando se encuentra el número 200, el ciclo se interrumpe gracias a la instrucción break.
¿Cómo puedo practicar?
Una forma excelente de practicar es realizar ejercicios prácticos que te desafíen a implementar lo que has aprendido. Por ejemplo, intenta escribir un ciclo que solo muestre números pares de una lista utilizando condicionales.
Con estos fundamentos de ciclos for en C++, estás listo para continuar explorando las posibilidades que ofrece este lenguaje. ¡Sigue aprendiendo y experimentando con estas estructuras!
Por si no lo conocian también existe el for range en c++
#include <iostream>using namespace std;int main(int argc, char const*argv[]){ int lista[]={100,200,300};for(auto &&i : lista){ cout << i << endl;}return0;}
Super interesante el aporte Gracias.
Cierto, buen aporte!!!!
Les dejo el código y el reto :)
Parte Uno:
#include <iostream>using namespace std;int main(){ int limit; cout <<"Enter the max number: "; cin >> limit;for(int i =0; i <= limit; i++){ cout << i << endl;}}
Parte Dos:
#include <iostream>using namespace std;int main(){ int list[]={1,20,25}; int limit =sizeof(list)/sizeof(list[0]);for(int i =0; i < limit; i++){ cout << list[i]<< endl;}}
El Reto:
#include <iostream>using namespace std;int main(){ int limit; cout <<"Enter the max number: "; cin >> limit;for(int i =1; i < limit; i++){if(i %2==0){ cout << i << endl;}}}
Se les ocurre otra solución?
Otra solución es simplemente hacer que el siclo itere de dos en dos 😂, es decir cambiar el "i++" por "i += 2" así solo se mostraran números pares entre el 0 y la cantidad pedida por el usuario...
muy bien
Tuve que investigar un poco para el reto, ya que no conocia del modulo %.
#include <iostream>// obtener datos de entrada o de salidausing namespace std;//te permite utilizar, en el código, //nombres estandar de c++, para poder importarlas //sin necesidad de escribir desde donde la estamos importando//mostrar solo los numeros paresint main(){ int limit; cout <<"Introduzca su valor maximo: "; cin >> limit;for(int i =2; i < limit; i++){if(i %2==0){ cout << i << endl;}}}
Yo aprendí sobre "modulo" fue programando, porque siempre te piden este ejercicio sin importar el lenguaje.
Gracias a que observé bien tu código, también aprendí acerca del operador módulo
#include <iostream>using namespace std;int main(){ int numbers[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100}; int limite =sizeof(numbers)/sizeof(numbers[0]);for(int i =0; i < limite ; i++){if(numbers[i]%2==0){ cout<< numbers[i]<< endl;}}}
Estudio con la misma division de pantalla ,jaja
x3, yo igual jajaja
Vengo de Python, por lo que me resultó facil utilizar el operador modulo (%). Este operador nos da el resto de dividir dos numeros. En este caso si dividimos un número entre 2 y el resto es igual a cero, significa que es par.
#include <iostream>using namespace std;int main(){ int list[]={1,2,3,4,5,6}; int limite =sizeof(list)/sizeof(list[0]);for(int i =0; i < limite; i +=1){if(list[i]%2==0){ cout << list[i]<< endl;}}}
Dejo mi código con 2 versiones del reto
#include <iostream>using namespace std;int main(){ int limite; cout <<"Ingresa un número: "; cin >> limite;for(int i =0; i <= limite; i++){if(i %2==0){ cout << i << endl;}}}
#include <iostream>using namespace std;int main(){ int lista[]={2,5,7,8,11,14,18,21,22}; int limite =sizeof(lista)/sizeof(lista[0]);for(int i =0; i < limite; i++){if(lista[i]%2==0){ cout << lista[i]<< endl;}}}
¿Cómo se hace el ejerció que mando yo lo hice sin las lista y sin for pero lo hice if ya que se me hace mas fácil.
<code> #include <iostream>using namespace std;int main(){ int numer =0; cout <<"deme un numero;"; cin >> numer;if(numer%1){ cout <<"es par";}else{ cout <<"es impar";}return0;}
La idea es que puedas practicar el for, pero si funciona está bien. :)
esta bueno resolver el problema y luego hablarlo con chat gpt para reforzar lo que no hayas entendido y a parte entender mejor el funcionamiento, por otra parte pueden tambien preguntarle como hacer el codigo mas corto, que suele ser una ventaja que tienen los lenguajes, poder hacer lo mismo con menos lineas de codigo:
#include <iostream>using namespace std;int main(){/*
int lista[]= {100,200,300};
int limite = sizeof (lista)/sizeof(lista[0]);
//cout << "Limite: ";
//cin >> limite;
for (int i = 0 ; i < limite;i += 1){
cout << lista[i] << endl;
}*/ int lista[]={100,232,5,12,52,333,56,37,560,35,1,200,300}; int limite =sizeof(lista)/sizeof(lista[0]);for(int i =0; i< limite; i +=1){/*
if (!(lista[i]%2)){
cout << lista[i]<< endl;
}else{
cout << lista[i];
cout << " ";
cout << "Este numero no es par :C" << endl;
}
*/ cout << lista[i]<<(!(lista[i]%2)?"":" Este numero no es par :C")<< endl;}}```dejo tambien la conversacion con chatgpt
Mi humilde ejercicio:
Programa para detectar pares e impares
<#include <iostream>using namespace std;int main(){ int limite =1; cout <<"Evaluacion de pares e impares - Ingrese numero: "; cin >> limite;for(int i =0; i <= limite ; i +=1){if(i %2==0){ cout <<"Este numero es par: "<< i << endl;}else{ cout <<"Este numero no es par: "<< i << endl;};}}>
esto es como saber el la cantidad de elementos de un arreglo en c++ diferente a otros lenguajes comunes
Reto (2 alternativas)
Les comparto 2 alternativas para hacer el reto.
V1, usando un ciclo for y un if
#include<iostream>usingnamespace std;intmain(){constint cantidad_de_numeros =100; cout <<"Primeros "<< cantidad_de_numeros <<" números pares"<< endl;for(int i =0; i < cantidad_de_numeros; i++){if(i %2==0){ cout << i << endl;}}}
V2, usando ciclo for e incrementador de este mismo.
#include<iostream>usingnamespace std;intmain(){constint cantidad_de_numeros =100; cout <<"Primeros "<< cantidad_de_numeros <<" números pares"<< endl;for(int i =0; i < cantidad_de_numeros; i +=2){ cout << i << endl;}}
**Aquí va mi reto **
int lista[]={4,10,20,5,200,400,3,7,9}; int limite =sizeof(lista)/sizeof(lista[0]);//Obteniendo el tamaño total de la lista para solo // iterar las veces necesariasfor(int i =0; i < limite; i++){if(lista[i]%2==0){ cout << lista[i]<< endl;}}
Reto de la clase:
#include<iostream>using namespace std;// This list contains the numbers from 1 to 100.int numbers[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100};// Get list's elements.int limite =sizeof(numbers)/sizeof(numbers[0]);intmain(){// for loop to through list and get list's elements.for(int i =0; i < limite; i++){// if conditional to only display even numbers.if(numbers[i]%2==!0){continue;} cout << numbers[i]<< endl;}}
Buen aporte, sin embargo, si pones el limite para que sea digitado por el usuario o lo pones directamente en el for en i < 100, resultaría lo mismo.
Para resolver la tarea, use módulo (%), este operador nos devuelve 1 si en la división existe un residuo. Si el residuo es 0, es decir es par, devuelve 0.
#include <iostream>using namespace std;int main(){// el ciclo for es un iterable int lista[]={1,28,32,12,23,46,47,28,19,160};// lista de números int tam_lista =sizeof(lista)/sizeof(int);// obtenemos la cantidad de elementos de nuestra lista// variable a iterar; condicional o sentencia a evaluar ; pasofor(int i =0; i < tam_lista; i+=1){if(lista[i]%2==0){// condicional, usando modulo (%) para evaluar si la división tiene residuo 0 cout << lista[i]<< endl;}}}
Reto <3
Completando el reto...
Cuando escribo caracteres especiales (virgulilla de la ñ o tildes) en un cout me sale algo extraño.
Si, windows tiene problemas porque no utiliza el sistema de caracteres estandar, es normal, en windows tendrás esa restricción, se que hay formas de configurar el compilador, pero no he trabajado eso con windows.
Tienes que ingresar una librería que traerá archivos que contienen paquetes de datos para manipular caracteres del lenguaje español. incluye locale.h y luego en la función principal declara el llamado a la función setlocale(LC_CTYPE,"Spanish");
Iría así:
#include <iostream>
#include <locale.h>
using namespace std;
int main(){
setlocale(LC_CTYPE,"Spanish");
//todo tu código aquí abajo
return0;
}
Cual es la diferencia entre usar i += 1 y i++?
En tu ejemplo no hay diferencia, sin embargo, cuando usamos i++, solo se aumenta el valor mas 1. Pero con el += se puede aumentar el mismo valor por 2,3,4,10, etc.
¡Hola!
La utilidad es la misma, sumar 1 a la variable i. La diferencia es la sintaxis que se utiliza en diferentes lenguajes de programación. Algo curioso es utilizar la variable después de ++, acá un ejemplo:
int a =0;int b = a++;// now b == 0 and a == 1int c =++a;// now c == 2 and a == 2int d =(a +=1);// now d == 3 and a == 3