Temas a tratar en este capítulo:
- Iteración
- ¿Porqué se producen los ciclos infinitos?
- Ejemplo
- Ejercicios propuestos
Iteración
Una instrucción de iteración (ciclo, o también bucle) permite realizar un proceso una o varias veces hasta que se cumpla una condición.
Siempre debe existir alguna sentencia que afecte la condición, en caso contrario se convertirá en un ciclo infinito (loop).
1.- While (Mientras)
while(condición){
Sentencia 1;
...
Sentencia n;
}
2.- Do-While (Hacer-Mientras)
do{
Sentencia 1;
...
Sentencia n;
}while(condición);
3.- For (Para)
for(condición inicial; expresión lógica; operación){
Sentencia 1;
...
Sentencia n;
}
4.- Switch
switch(condición){
case 1:
Sentencia A1;
...
Sentencia An;
break; // Se utiliza para finalizar el ciclo (romperlo)
case 2:
Sentencia B1;
...
Sentencia Bn;
break;
...
default: // Esta función cumple el mismo rol que "else"
Sentencia M1;
...
Sentencia Mn;
}
¿Porqué se producen los ciclos infinitos?
A continuación tenemos un fragmento de un programa que utiliza una sentencia de tipo iterativa (while):
int i=1, n=20;
while(i<n){
printf("El numero es: %d", i);
}
Si analizamos el fragmento, nos daremos cuenta de que se trata de un bucle infinito, pues el programa mostrará infinitamente la variable “i” (que equivale a 1) ya que no existe ninguna sentencia que afecte esa condición. La pregunta ahora es ¿Cómo evitarlo? La respuesta está en añadir alguna o algunas sentencias que transformen el proceso infinito, en un proceso finito.
int i=1, n=20;
while(i<n){
printf("El numero es: %d", i);
i++;
}
Si a la variable "i" le vamos sumando 1 en cada iteración, por ejemplo, en algún momento el ciclo se detendrá, ya que para el veinteavo proceso la condición no se cumplirá (i=20 no es menor que n=20) y el ciclo terminará, evitando de esta manera un loop.
Ejemplo
Escribir un algoritmo en C o C++ que muestre por pantalla los n primeros números naturales (n se ingresa desde teclado).
En C:
#include <stdio.h>
int main()
{
int i=1, n;
printf("Ingrese n: ");
scanf("%d", &n);
while(i<=n){
printf("%d\n", i);
i++;
}
}
En C++:
#include <iostream>
int main()
{
int i=1, n;
cout << "Ingrese n: ";
cin >> n;
while(i<=n){
cout << i << "\n";
i++;
}
}
Ejercicios propuestos
1.- Escribir un algoritmo en C o C++ que muestre por pantalla los n primeros números naturales impares (n se ingresa desde teclado).
2.- Escribir un algoritmo en C o C++ que dado un número cualquiera (ingresado por teclado), determine todos sus divisores y los muestre por pantalla.
No hay comentarios:
Publicar un comentario