sábado, 26 de diciembre de 2015

4 Sentencias iterativas

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