Es comn encontrar en la prctica algoritmos cuyas operaciones se deben ejecutar un nmero repetido de veces. Si bien las instrucciones son las mismas los datos sobre los que se opera varan. El conjunto de instrucciones que se ejecuta repetidamente se llama ciclo. Todo ciclo debe terminar de ejecutarse luego de un nmero finito de veces por lo que es necesario en cada interaccin del mismo, evaluar las condiciones necesarias para decidir si se debe seguir ejecutndose o si debe detenerse. En todo ciclo, siempre debe existir una condicin de parada o fin de ciclo. En algunos algoritmos podemos establecer a prior que el ciclo se repetir un numero definido de veces. Es decir, el nmero de repeticiones no depender de las proposiciones dentro del ciclo. Se llamar repetir a la estructura algortmica repetitiva que se ejecuta un nmero definido de veces. Por otra parte, en algunos algoritmos no podemos establecer a priori el nmero de veces que ha de ejecutarse el ciclo, sino que este nmero depender de las proposiciones dentro del mismo. Se llamara mientras a la estructura algortmica repetitiva que se ejecutar mientras la condicin evaluada resulta verdadera.
1.2 La estructura repetitiva repetir (FOR)
La estructura repetir conocida comnmente como FOR, es la estructura algortmica adecuada para utilizar en un ciclo que se ejecutar un nmero definido de veces. Este tipo de estructura est presente en todos los lenguajes de programacin ya sean estructurados u orientados a objetos. Por ejemplo cuando necesitamos calcular la nmina total de una empresa, tenemos que sumar los sueldos de N empleados de la misma. Cuando necesitamos obtener el promedio de calificaciones de un curso debemos sumar las N calificaciones de los alumnos y dividir esa suma entre N. Es decir, sabemos de antemano cuantas veces tenemos que repetir una determinada operacin, accin o tarea. El nmero de veces se obtiene del planteamiento del problema o de una lectura que indica que el nmero de iteraciones se debe realizar para N acciones.
El diagrama de flujo de la estructura algortmica repetir es la siguiente
Donde: V: Es la variable de control de ciclo VI: Es el valor inicial VF: Es el valor final ID: Es el incremento o decremento
V (contador del ciclo, generalmente representado por las letras I , J , K, V) toma un valor inicial y se compara con VF (valor final). El ciclo se ejecutara mientras V es menor, menor igual que el valor de VF. El valor de V se incrementa en cada iteracin. Cuando V supera el valor de VF entonces el ciclo se detiene. Observar la modificacin introducida al smbolo de la decisin (doble lnea en parte superior izquierda) en la estructura repetir, esto diferencia con la estructura repetitiva mientras. En pseudocdigo se tiene:
. . . Hacer V<-VI Repetir con V desde VI hasta VF . . . {proceso} . . . Hacer V<-V+INC {Fin del ciclo}
Ejemplo resuelto de repetitiva repetir (FOR)
Disear un programa que utilizando como datos los sueldos de 10 trabajadores en una empresa, obtenga el total de nmina de la misma. Considere adems que no se puede utilizar estructuras algortmicas repetitivas en la solucin del problema.
Donde: SUE1, SUE2,, SUE10 son variables por lo tanto SUEi es una variable de tipo real que representa el sueldo del trabajador i (1 10).
El diagrama de flujo es el siguiente:
Explicacin de las variables:
i Es una variable de tipo entero que representa la variable de control del ciclo. Contabiliza el nmero de veces que ha de repetirse una determina accin. El contador toma un valor inicial (genera una determinada accin. El contador toma un valor inicial (generalmente 0 1) y se incrementa en la mayora de los casos en una unidad en cada vuelta del ciclo. NOMINA Es una variable de tipo real que representa un acumulador. Este se utiliza cuando debemos obtener el total acumulado de una conjunto de cantidades. Generalmente se inicia con un cero. SUE Es una variable de tipo real. Representa el sueldo del trabajador.
El ejemplo resuelto de repetitiva repetir (FOR) en pseudocdigo es:
{El programa calcula el total de la nmina de un grupo de 10 empleados} {i es una variable de tipo entero. SUE y NOMINA son variables de tipo real}
1. Hacer NOMINA<-0 e i<-1 2. Repetir con i desde 1 hasta 10 Leer SUE Hacer NOMINA<-NOMINA+SUE e i<-i+1 3. {Fin del ciclo del paso 2} 4. Escribir NOMINA
El ejemplo resuelto en pseudocdigo utilizando PSeInt: Proceso ESREP_FOR_1
ESCRIBIR "PROGRAMA QUE CALCULA LA NOMINA TOTAL AL INGRESAR UN NMERO"; ESCRIBIR "DETERMINADO DE SALARIOS"; ESCRIBIR " ";
DEFINIR NOMINA,SUE Como Real; DEFINIR I,VF Como Entero;
NOMINA<-0; I<-1;
ESCRIBIR "INGRESE EL NUMERO DE SALARIOS A CONTAR"; LEER VF;
Repetir ESCRIBIR "INGRESE EL SALARIO DEL TRABAJADOR"; LEER SUE; NOMINA<-NOMINA+SUE; I<-I+1; Hasta Que I>VF; ESCRIBIR "LA NOMINA TOTAL ES:",NOMINA; FinProceso 1.2 La estructura repetitiva mientras (WHILE)
La estructura algortmica mientras, comnmente conocida como while es la estructura adecuada para utilizar en un ciclo cuando no sabemos el nmero de veces que ste se ha de repetir. Dicho nmero depende de las proposiciones dentro del ciclo.
Ejemplos en la vida cotidiana se encuentran: supongamos que tenemos que obtener el total de una serie de gastos, pero no sabemos exactamente cuntos son; o cuando tenemos que obtener el promedio de calificaciones de un examen, pero no sabemos precisamente a cuantos alumnos se le aplicaron. Tenemos que sumar las calificaciones e ir contando el nmero de alumnos, esto con el fin de poder obtener posteriormente el promedio. El ciclo se repite mientras tengamos calificaciones de alumnos.
La estructura mientras se distinguen dos partes: Ciclo: Conjunto de instrucciones que se ejecutaran repetidamente. Condicin de terminacin: La evaluacin de esta condicin permite decidir cundo finalizar la ejecucin del ciclo. La condicin se evala al inicio del mismo. El diagrama de flujo de la estructura algortmica mientras es el siguiente:
Debe existir tambin un enunciado dentro del ciclo que afecte la condicin, para evitar que el ciclo se ejecute indefinidamente.
La estructura mientras en pseudocdigo es: . . . Hacer PI<-Proposicin inicial Mientras PI es verdadero repetir . . . . {PROCESO} . . . Hacer PI<- modificacin de PI {Fin de ciclo}
Ejemplo resuelto de estructura repetitiva mientras (WHILE)
Suponer que se debe obtener la suma de los gastos que hicimos en nuestro ltimo viaje de vacaciones, pero no sabemos exactamente cuntos gastos fueron. Los datos son expresados de la forma:
Datos: GASTO 1 , GASTO 2 ,, -1 Donde: GASTO i Es una variable de tipo real que representa el gasto numrico i
Explicacin de las variables
SUMGAS: Es una variable de tipo real. Es un acumulador. Acumula los datos efectuados. GASTO: Es una variable de tipo real. Su valor en la primera lectura debe ser verdadero, es decir distinto a -1. Su valor se modifica cada vuelta del ciclo. Cuando gasto tome el valor de -1 entonces el ciclo se detendr
NOTA Observar que en este tipo de problemas se deber realizar dos lecturas, una antes de iniciar el ciclo y otra antes de finalizar el mismo.
La estructura del programa en pseudocdigo del ejemplo de estructura repetitiva mientras (WHILE) es:
{El programa obtiene el total de gastos de un viaje} {Gastos y SUMGAS son variables de tipo real} 1. Hacer SUMGAS<-0 2. Leer GASTO 3. Mientras GASTO<>-1 Repetir Hacer SUMGAS<-SUMGAS+GASTO Leer GASTO 4. {Fin de ciclo del paso 3} 5. Escribir SUMGAS
La estructura del programa en pseudocdigo utilizando PSeInt es: Proceso CAL_VIAJE
ESCRIBIR "**************************************************************"; ESCRIBIR " "; ESCRIBIR " ","PROGRAMA QUE CALCULA EL TOTAL DE GASTOS DE UN VIAJE"; ESCRIBIR " "; ESCRIBIR " ","PROGRAMACIN ESTRUCTURADA"; ESCRIBIR " "; ESCRIBIR "**************************************************************"; ESCRIBIR " "; ESCRIBIR "INGRESE GASTO EN UN VIAJE";
DEFINIR GASTO,SUMGAS COMO REAL;
LEER GASTO;
SUMGAS<-0;
Mientras GASTO<>-1 Hacer ESCRIBIR "INGRESE EL GASTO EN UN VIAJE"; SUMGAS<-SUMGAS+GASTO; LEER GASTO; FinMientras
ESCRIBIR "LA SUMA TOTAL DE GASTOS ES:", SUMGAS;
FinProceso Preguntas.
1.- Segn el documento Qu semejantes estructurales, y de identificadores presentan las estructuras repetir (for) y mientras (while)?
2.- Utilizando el PSeInt. Programar el Proceso CAL_VIAJE pero utilizando la estructura repetir. Guardar como U2_ESTREPW_1_CLAVE_XY en psc y jpg
3.- Utilizando el PSeInt. Programar el Proceso CAL_VIAJE con la estructura mientras (while) pero que al ingresar ya sea un salario de 1000, 2000, 3000 se termine el ciclo (esto en un solo programa). Guardar como U2_ESTREPW_2_CLAVE_XY en psc y jpg
Enviar la pregunta 1 contestadas al correo del profesor (en ningn documento adjunto). y los programas con su respectiva extensin en un solo correo.
Con titulo y/o asunto: U2_CUESREP2_CLAVE_XY, U2_ESTREPW_1_CLAVE_XY, U2_ESTREPW_2_CLAVE_XY
Donde: CLAVE: CQIA, para alimentos IB, para biotecnologa