Estructuras de Control: Iteraciones

Revisión del 20:36 14 nov 2019 de Javier martinez1867 (discusión | contribuciones) (La instrucción do/while)
Estructuras de Control: Iteraciones
Información sobre la plantilla
Diagite.jpg
La estructura iterativa o de repetición permite ejecutar una o varias instrucciones, un número determinado de veces o, indefinidamente, mientras se cumpla una condición.
DesarrolladorMicrosoft Corporation.
Modelo de desarrolloC#
Lanzamiento inicial2003
LicenciaComercial.
Sitio web
http://www.microsoft.com/net

Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle.

En la vida diaria existen situaciones que frecuentemente se resuelven realizando una determinada secuencia de pasos que puede repetirse muchas veces, ejemplo:

El proceso que seguimos para comer, mientras no se termine la comida. El proceso de insertar monedas, hasta que se abone la cantidad necesaria. Las operaciones que realizamos para llamar por teléfono, mientras no se logre la comunicación. Como se puede observar estos son algoritmos que se hacen cotidianamente, pero tienen la particularidad de que la ejecución de alguno de sus pasos puede repetirse muchas veces, mientras no se logre la meta trazada. A este tipo de algoritmo se le conoce como algoritmos iterativos o repetitivos. En C#, las instrucciones while, do/while, y for, permiten ejecutar iteraciones, bucles o ciclos. En cada caso se ejecuta un bloque de instrucciones mientras la condición que se evalúa tome valor verdadero. Se resalta que cualquiera de las 3 instrucciones cumple con el mismo objetivo que es el de ejecutar una secuencia de pasos, más de una vez.

La instrucción while

La instrucción while tiene la siguiente sintaxis:

Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle. Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle.

La instrucción do/while

Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle.

La estructura de control for

Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle. Una de las características importantes que se pueden aprovechar de las computadoras es precisamente su capacidad de repetir la ejecución de secuencias de instrucciones a una gran velocidad y con alto grado de confiabilidad. Para estos fines, precisamente se definen en los lenguajes de programación las estructuras de control iterativas. El objetivo de estas estructuras es permitir la expresión de la repetición de una secuencia de instrucciones, a estas estructuras se les denomina ciclo, lazo o bucle.

Caso de Estudio

Para mejor entendimiento de lo expuesto anteriormente, se presenta el siguiente caso de estudio en que se trabajará con cada una de las estructuras repetitivas.

CasoEstudioIteraciones.JPG

MCD()

Para implementar la responsabilidad de la clase de calcular el Máximo Común Divisor MCD se utilizará el algoritmo de Euclides que consiste en:

  • P1: Si los números son iguales, tomar el primer número como respuesta y concluir la ejecución del algoritmo, en otro caso pasar al paso 2.
  • P2: Determinar cuál de los dos números es mayor.
  • P3: Sustituir el número mayor por la diferencia entre los números mayor y menor.
  • P4: Pasar al paso 1.

Obsérvese como se repiten los pasos 1,2 y 3 y el paso 4 consiste precisamente en regresar al paso 1, esta repetición se conoce normalmente con el nombre de iteración, nótese que esta no es infinita, precisamente en el primer paso se especifica que los pasos siguientes (2, 3, 4) han de ejecutarse si no cumple la condición de que los números sean iguales. Esta condición es una expresión booleana.

  • Ejecutar el algoritmo para un par de valores (8 y 20 por ejemplo)

Para implementar el método que permita calcular el máximo común divisor utilizaremos la estructura de control while se evaluará la condición de que los números sean diferentes y en dependencia del resultado de la misma se ejecutarán o no los pasos que forman parte del ciclo. El método MCD, quedaría de la siguiente manera:

MCD.JPG

CantDigitos()

Para determinar la cantidad de dígitos que tiene el número, primeramente se divide el número entre 10, si el cociente de la división es 0, se toma 1 como respuesta, sino, se toma dicho cociente y se divide entre 10, este proceso se estará repitiendo mientras el nuevo cociente sea distinto de 0. Como se observa, al menos se necesita realizar una división, por lo que la estructura do/while es la indicada para implementar este algoritmo. Para implementar el método hay que tener en cuenta lo siguiente:

  • P1: Se realiza la división del número entre 10.
  • P2: Se almacena el cociente en una variable y se cuenta que número de división es.
  • P3: Si el resultado del cociente es distinto de 0, se repite el paso 1.

El método quedaría de la siguiente manera:

CantDigitos.JPG

Factorial()

Para implementar la última responsabilidad propuesta, Calcular el Factorial, utilizaremos la estructura de control for, ya que se conoce de antemano la cantidad de operaciones (multiplicaciones) que hay que realizar. Recuerde que el factorial de un número es el resultado de la multiplicación desde 1 hasta el número en cuestión.

  • Ejemplo: Factorial de 5 es: 1 * 2 * 3 * 4 * 5 = 120

El método quedaría de la siguiente manera.

Factorial.JPG

Ciclos Anidados

En muchos casos de la vida diaria no basta con repetir un grupo de instrucciones una cantidad de veces sino que esas repeticiones deben ser realizadas al mismo tiempo un número de ocasiones. Este tipo de problemas da origen a los algoritmos con ciclos compuestos o ciclos anidados. Los ciclos anidados o compuestos no son más que ciclos que tienen otros ciclos dentro del bloque de instrucciones que deben ejecutar. Esta facilidad de componer uno o más ciclos en combinación con algunas estructuras de almacenamiento resulta muy útil para la solución de algunos algoritmos de búsqueda y ordenación que se verán más adelante en el curso. Usualmente los ciclos que se componen para resolver un algoritmo en particular son los ciclos por variable de control, lo que no quiere decir que no se pueda hacer con ciclos con condición o con una combinación de ellos dos, lo que resultan menos frecuentes estos casos.

Fuentes

  • Grady Boosh. Análisis y Diseño Orientado a Objetos con Aplicaciones
  • Bertran Meyer. Touch of Class
  • M. Katrib, E. Quesada; Programación con Pascal, Pueblo y Educación, 1991.
  • Colectivo de autores. Programación Orientada a Objetos con C#