estructuras_repetitivas

Anuncio
7.1 Introducción
Un ciclo es una estructura que nos permite representar un conjunto de instrucciones que
debe repetirse una cantidad limitada de veces, normalmente dependiente de una condición o
de una cantidad determinada de repeticiones o iteraciones. Los ciclos permiten iterar todo un
proceso tantas veces como el programador (ó el usuario) lo determine.
Es común, que en la solución de muchos problemas algorítmicos, se requiera realizar la
repetición de cierto bloque de instrucciones, con el fin de obtener el objetivo buscado por el
algoritmo. Para implementar repetición de bloques de instrucciones se utilizan los estructuras
de control llamadas ciclos o estructuras repetitivas.
7.2 Concepto General
Un ciclo puede definirse como una estructura que nos permite repetir o iterar un conjunto de
instrucciones y que tiene las siguientes características:




El conjunto de instrucciones a repetir dentro del ciclo debe ser finito
La cantidad de veces que se repita dicho conjunto de instrucciones
también debe ser finita. En algunos casos esta cantidad de veces va a
depender de una condición explícita y en otros casos va a depender de una
condición implícita. Una condición es explícita cuando depende solamente
de la misma ejecución del programa sin que sea importante la participación
del usuario. Asimismo una condición es implícita cuando depende
solamente de la voluntad del usuario y por lo tanto la cantidad de
iteraciones o repeticiones del ciclo podría llegar a ser diferente cada vez
pues sería posible que cambiara con cada usuario.
Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos
en los cuales solo exista una instrucción a iterar, no serán necesarias
dichas marcas.
Dentro de un ciclo podrá ir cualquiera de las otras estructuras, incluyendo
otros ciclos.
7.3 Tipos de Ciclos
A continuación se describe la estructura de construcción de cada uno de los ciclos tal como
son concebidos por la mayoría de lenguajes de programación y posteriormente se utilizaran
para representar el mismo algoritmo con cada una de las estructuras.
7.3.1 Ciclo while (Mientras)
El ciclo while representa el esquema general de trabajo para todos los ciclos, esto quiere decir
que si se entiende claramente la lógica de funcionamiento de este ciclo se facilita entender
no solo los otros ciclos. Es útil saber que este ciclo también es llamado en algunos libros el
Ciclo Mientras Que.
La estructura general de este ciclo en lenguaje C es la siguiente:
while (expresion_condicional)
{
...
instrucciones_del_cuerpo_del_ciclo
...
instrucciones_que_modifican_el_resultado_de_la_condicion
}
Su forma de ejecución es muy sencilla: Mientras se cumpla que la condición sea Verdadera
entonces se ejecutará el Cuerpo del Ciclo. De igual forma también se podría decir que el
Cuerpo del Ciclo se repetirá tantas veces como lo permita la condición o mientras dicha
condición sea Verdadera. En condiciones normales la cantidad de veces que se repita el
cuerpo del ciclo será siempre una cantidad finita y deberá existir, dentro del mismo cuerpo
del ciclo, una o mas instrucciones que hagan que en algún momento la condición sea Falsa.
La siguiente ilustración muestra un esquema de la forma como el ciclo mientras funciona en
el lenguaje C:
Figura 7.1. Esquema Ciclo while.
El ciclo while se puede describir de la siguiente forma: cuando el computador encuentra la
estructura while verifica la condición del ciclo, si la condición es verdadera se ejecutan las
instrucciones al interior del ciclo, luego de ejecutar la última condición del ciclo se vuelve a
evaluar la condición, sí continúa siendo cierta se vuelve a ejecutar el bloque de instrucciones
del ciclo. Cuando la condición se hace falsa el computador se salta el bloque de instrucciones
del ciclo y continúa con la ejecución del resto de instrucciones del programa.
7.3.2 Ciclo for (Para o Desde)
La estructura general de este ciclo en lenguaje C es la siguiente:
for (control=valor_inicial;control<=valor_tope;incremento_control)
{
...
instrucciones_del_cuerpo_del_ciclo
...
}
La forma de ejecución del ciclo es la siguiente: control representa una variable que va a tomar
valores iniciando en valor_inicial y terminando en valor_tope avanzando con un incremento.
En los casos en los que no se especifica el valor del paso la mayoría de los lenguajes de
programación asume el incremento de 1, sin embargo el lenguaje C requiere que la variable
de control sea incrementada, P.Ej.: Si la variable de control se llama vi y el paso es de 1 el
incremento de la variable de control se define así, vi=vi+1. El Cuerpo del Ciclo se ejecutará
una vez por cada valor que tome la variable control. Veamos con un ejemplo cuál sería la
aplicación de este ciclo.
En el siguiente ejemplo se muestra una aplicación de esta estructura.
Ejemplo 1. Escribir los números impares comprendidos entre 1 y 100.
#include <stdio.h>
int main()
{
int numero,vc;
for(vc=1; vc<=100; vc=vc+2)
{
printf("\nImpar %d: %d",vc/2+1,vc);
}
return(0);
}
El programa del ejemplo produce una salida por pantalla similar a: "Impar 3: 5". Y serán 50
salidas, una por cada impar entre 1 y 100.
El siguiente ejemplo resuelve el mismo problema pero usando la estructura while mencionada
en el apartado anterior.
Ejemplo 2. Escribir los números impares comprendidos entre 1 y 100.
#include <stdio.h>
int main()
{
int vc;
vc=1;
while(vc<=100)
{
printf("\nImpar %d: %d",vc/2+1,vc);
vc=vc+2;
}
return(0);
}
Los dos programas de ejemplo logran el mismo objetivo lo cual significa que ambas versiones
son correctas. Es importante anotar que cada ciclo siempre va a tener una variable que es la
que almacena el valor de inicio del ciclo, es la que va a estar presente en la evaluación de la
condición y es la que se incrementa para que en algún momento la condición sea Falsa. Es
evidente que esta variable es muy importante por ello a éste tipo de variables se le ha dado el
nombre de índice o variable de control del Ciclo. Se puede decir que el índice del ciclo es la
variable que permite la ejecución del cuerpo del ciclo. Un ciclo puede llegar a tener varios
índices al tiempo.
Como los índices no son mas que variables entonces varios ciclos pueden tener el mismo
índice siempre que se utilice éste en un ciclo solo hasta cuando haya terminado la ejecución
del ciclo anterior que utilizó esta variable.
7.3.3 Ciclo do / while
Este ciclo carece de representación algorítmica equivalente, sin embargo es similar en
funcionalidad al ciclo repetir hasta o hacer hasta, con la diferencia que el ciclo hacer hasta se
repite siempre que la condición resulte falsa y el ciclo do - while se repite si la condición es
verdadera, lo que implicaría que en un algoritmo que utiliza la estructura hacer- hasta, en su
implementación en lenguaje C debe hacerse un pequeño cambio en la forma de la condición.
La estructura general de este ciclo en lenguaje C es la siguiente:
do{
...
instrucciones_del_cuerpo_del_ciclo
...
instrucciones_que_modifican_el_resultado_de_la_condicion
}while (expresion_condicional);
Podría decirse que esta es una inversión de la estructura del ciclo while. En este ciclo el
cuerpo del mismo se repite mientras la condición sea Verdadera y su única diferencia con el
ciclo while es que en el Ciclo do - while primero se ejecuta el cuerpo del ciclo y luego se evalúa
la condición en cambio en el ciclo while primero se evalúa la condición y luego se ejecuta el
cuerpo del ciclo. Tenga en cuenta que al final de la condición en el ciclo do-while se debe
poner punto y coma (;), a diferencia de los ciclos anteriores.
Ejemplo 3. Escribir los números impares comprendidos entre 1 y 100.
#include <stdio.h>
int main()
{
int vc;
vc=1;
do{
printf("\nImpar %d: %d",vc/2+1,vc);
vc=vc+2;
}while(vc<=100);
return(0);
}
Documentos relacionados
Descargar