Fundamentos de Programación
Iteraciones
Sentecias de ciclo iterativo.
Los ciclos permiten que una o más sentencias de código se repitan
hasta que una condición deje de cumplirse, es muy similar a lo que
sucede con un conductor de la formula uno, el cual estará dando
vueltas hasta que la cantidad de vueltas que ha dado deje de ser
insuficientes para ganar la carrera, dicho en un lenguaje más
informático si la cantidad de vueltas que debe dar el vehículo son
diez, podremos expresarlo como mientras la cantidad de vueltas
sea menor a 10, entonces debe seguir corriendo.
Sentecias de ciclo iterativo.
Veamos un ejemplo de uno de los ciclos más utilizados, el cual
recibe como nombre el ciclo “mientras” al que de ahora en
adelante lo conoceremos por su traducción al inglés while.
While
int vuelta = 0;
while(vuelta < 10) {
vuelta++;
}
tiempo++;
Sentecias de ciclo iterativo - While
Aquí la ejecución ocurrirá de la siguiente forma, lo primero que
hará while será evaluar si el valor de la variable vuelta es o no
menor a 10, si el valor fuese por ejemplo 11, la condición no se
cumplirá y para este caso se comportará muy similar al if dejando
de ejecutar todo lo que se encuentre entre el inicio y cierre de
bloques, de manera que la variable vuelta no se incremente, sin
embargo si el valor es 8, la condición será verdadera lo que
provocará que si se ejecute todo lo que esta dentro de los bloques
haciendo entonces el incremento de la variable.
Sentecias de ciclo iterativo - While
Cuando haya finalizado el incremento el while, a diferencia del if,
no pasará directo a incrementar el tiempo, dado que cuando
alcance el cierre de bloque volverá a preguntar por el valor de
vuelta, el cual será 9 y dado que 9 aún es menor que 10 entonces
while volverá a ejecutarse, incrementando el valor de vuelta en
uno, al llegar al final de bloque nuevamente se va a evaluar si
vuelta es menor a 10, esta vez la condición no se cumple y es
entonces cuando el ciclo termina para dar paso al incremento del
tiempo.
Sentecias de ciclo iterativo
For
Existen varias estructuras que permiten iterar una o más líneas de
código, el ciclo for es uno de ellos, pero antes de continuar, es
importante aclarar que si bien entre ellos existen diferencias todos
tienen el mismo objetivo, por ende no existirá nunca una limitante
para uno u otro, pudiendo utilizar cualquiera de ellos cuando se
necesite iterar, sin embargo cada uno tiene una estructura y
sintaxis diferente, el criterio de selección estará dado
principalmente por el que te acomode más y de las necesidades
que tengas.
Sentecias de ciclo iterativo - for
Volvamos al ejemplo de las vueltas en una pista de carreras. En
aquel ejemplo el while tiene por misión cerciorarse de que la
variable vuelta llegue a 10, pero dentro de su estructura no se
preocupa del valor inicial de la variable por lo que se debe poner
como instrucción adicional antes del while.
int vuelta=0;
while(vuelta<10) {
vuelta++;
}
tiempo++;
Sentecias de ciclo iterativo - for
El ciclo while cumple a la perfección con nuestro propósito, sin
embargo en el algoritmo hay 3 elementos a considerar: primero
hay una inicialización se variable, la cual hemos agregado
recientemente al solicitar que vuelta siempre comience en cero,
luego tenemos una condición y un incremento, para este tipo de
casos el for es principalmente provechoso dado que permite
escribir de forma muy cómoda estos tres elementos. Veamos
como luce este while convertido en un cliclo for.
Sentecias de ciclo iterativo - for
for(int vuelta=0; vuelta<10;vuelta++) {
}
tiempo++;
Como se puede ver este ciclo contiene los tres elementos como
parte de la declaración del ciclo, por ende el cuerpo de este ha
quedado vacío, ya que hemos cambiado la lógica de incremento
de la variable a otro lugar.
Sentecias de ciclo iterativo - for
La forma de ejecutarse no es igual que en while, para que lo
entendamos mejor vamos a decir que el for está dividido en
partes:
• La primera es una declaración, en la cual declaramos e
inicializamos el valor de la variable vuelta.
• La segunda es la condición en la que decimos que vuelta no
debe ser mayor a 10 y finalmente,
• La tercera, una sección donde incrementamos el valor de la
variable vuelta en uno.
Sentecias de ciclo iterativo - for
En resumen, la forma en la que el ciclo for funciona es la siguiente:
• Lo primero que ocurre es la declaración e inicialización, con
esto se asegura de que la variable exista y tenga un valor inicial.
Esta sección sólo se ejecuta una vez.
• El siguiente paso es verificar si luego de la inicialización de la
variable la condición se cumple, de cumplirse ejecutará todo lo
que este entre los inicios y cierre de bloques, el cual tenemos
vacío por ahora.
Sentecias de ciclo iterativo - for
• Al igual que el while el for intentará hacer una iteración, pero
sólo a partir de la segunda vuelta y hasta que termine lo que
hará es primero ejecutar la sección de incremento, haciendo
que vuelta pase de cero a uno para luego verificar si la
condición aún se cumple. De cumplirse volverá a ejecutar todo
lo que se encuentre entre el inicio y cierre de bloques, al
finalizar nuevamente hará el incremento y luego evaluará la
condición. Este proceso se repetirá hasta que la condición ya no
se cumpla.
Sentecias de ciclo iterativo - for
Por ejemplo, contemos la cantidad de bencina que gasta por cada
vuelta almacenándola en una variable llamada consumo.
int consumoPorVuelta = 0;
for(int vuelta=0; vuelta<10; vuelta++) {
consumo += consumoPorVuelta;
}
tiempo++;
Sentecias de ciclo iterativo - for
El ciclo for se puede adaptar a varias situaciones gracias a que
cualquiera de sus partes puede ser omitida, en el siguiente
ejemplo la declaración e inicialización de la variable es quitada del
for y declarada antes.
int vuelta=0;
for( ; vuelta<10 ; vuelta++) {
}
Sentecias de ciclo iterativo - for
Así podemos entonces obtener un for cuyo comportamiento es
idéntico al de un while.
int vuelta=0;
for( ; vuelta<10; ) {
vuelta++;
}
En este caso este for ha quedado exactamente como el ciclo while
que vimos en un comienzo. Podrá parecer extraño pero incluso la
condición puede ser omitida, sin embargo eso nos obliga a tener
que agregar a nosotros una forma de quebrar el ciclo para que no
este iterando de forma indefinida.
Sentecias de ciclo iterativo - for
Sobre los quiebres de ciclos se hablará más adelante en la sección
de break y continues, pero por ahora como demostración de que
todas las partes son opcionales lo haremos analizando el siguiente
ejemplo:
for(; ; ;) {
}
En este extraño caso no hay ninguna de las partes, la ausencia de
una condición da por defecto falso, así que luego de comprobar
que no hay nada que inicializar, evaluará falso y omitirá la
ejecución del ciclo for.
Sentecias de ciclo iterativo
Do … While.
Si del ciclo do while traducimos la palabra do veremos que
significa “hacer”, pues esta es la principal diferencia con el ciclo
while que vimos en una primera oportunidad, la condición es
evaluada al final, es decir que toda la lógica agregada entre los
inicios y cierres de bloque se ejecutará siempre al menos una vez.
Supongamos ahora que el vehículo de carreras debe dar 10
vueltas seguidas para hacer reconocimiento de la pista de forma
obligatoria, pero si ya ha dado 10 entonces sólo se le permitirá dar
una.
Sentecias de ciclo iterativo – do while
do {
vuelta++;
} while(vuelta<10);
Como se puede ver, la condición se encuentra al final, por lo tanto
lo primero que sucederá es incrementar el número de vueltas en
uno, sin ninguna condición que pueda evitarlo.
Sentecias de ciclo iterativo – do while
Supongamos que el valor de la variable acaba de incrementarse a
8, por lo tanto el corredor debe de forma obligatoria completar
sus 10 vueltas, dado que 8 es menor a 10 la condición se hace
verdadera dando paso a una nueva ejecución del bloque
incrementando el valor de la variable a 9, con este valor la
condición vuelve a evaluarse siendo verdadera dado que aún es
menor a 10, en su última iteración la variable se incrementa a 10 y
la condición se vuelve falsa, saliendo así del ciclo.
Sentecias de ciclo iterativo – do while
Sin embargo, la diferencia está dada en que si se vuelve a ejecutar
este ciclo con un valor de 10 o superior, con un while el vehículo
no hubiese sido aceptado, sin embargo con este ciclo no se evalúa
la cantidad de vueltas al comienzo, por lo que las sentencias de
código se ejecutarán haciendo que vuelta sea 11, luego de la
primera ejecución el ciclo evaluará si debe proseguir, como la
condición es falsa, el vehículo no dará una segunda vuelta.
Sentecias de ciclo iterativo – EJERCICIOS
1. Leer 10 números e imprimir solamente los números positivos.
Sentecias de ciclo iterativo – EJERCICIOS
2. Leer 20 números e imprimir cuantos son positivos, cuantos
negativos y cuantos son ceros.
Sentecias de ciclo iterativo – EJERCICIOS
3. Leer 15 números negativos, convertirlos a positivos e imprimir
dichos números.
Sentecias de ciclo iterativo – EJERCICIOS
4. Suponga que se tiene un conjunto de calificaciones de un
grupo de 40 alumnos. Realizar un algoritmo para calcular la
calificación media y la calificación más baja de todo el grupo.
Sentecias de ciclo iterativo – EJERCICIOS
5. Calcular e imprimir la tabla de multiplicar de un número
cualquiera. Imprimir el multiplicando, el multiplicador y el
producto.
Sentecias de ciclo iterativo – EJERCICIOS
6. Simular el comportamiento de un reloj digital, imprimiendo la
hora, minutos y segundos de un día desde las 0:00:00 horas
hasta las 23:59:59 horas.
Sentecias de ciclo iterativo – EJERCICIOS
7. Una compañía de seguros tiene contratados a N vendedores.
Cada uno hace tres ventas a la semana. Su política de pagos es
que un vendedor recibe un sueldo base y un 10% extra por
comisiones de sus ventas. El gerente de la compañía desea
saber cuanto dinero obtendrá en la semana cada vendedor por
concepto de comisiones por las tres ventas realizadas y cuanto
le corresponderá tomando en cuenta su sueldo base y sus
comisiones.
Sentecias de ciclo iterativo – EJERCICIOS
8. Diseñe un algoritmo que determine cuantos hombres y
cuantas mujeres se encuentran en un grupo de N personas.
Suponga que los datos son extraídos persona por persona.
Sentecias de ciclo iterativo – EJERCICIOS
9. Obtener el promedio de calificaciones de un grupo de n
alumnos.
Sentecias de ciclo iterativo – EJERCICIOS
10. Una persona desea invertir su dinero en un banco, el cual le
otorga un 2% de interés mensual. ¿Cuál será la cantidad de
dinero que esta persona tendrá al cabo de un año si la
ganancia de cada mes es reinvertida?.
Sentecias de ciclo iterativo – EJERCICIOS
11. Calcular el promedio de edades de hombres, mujeres y de
todo un grupo de alumnos.
Sentecias de ciclo iterativo – EJERCICIOS
12. Encontrar el menor y el mayor valor de un conjunto de n
números dados.
Sentecias de ciclo iterativo – EJERCICIOS
13. Un teatro otorga descuentos según la edad del cliente.
Determinar la cantidad de dinero que el teatro deja de percibir
por cada una de las categorías. Tomar en cuenta que los niños
menores de 5 años no pueden entrar al teatro y que existe un
precio único en los asientos. Los descuentos se hacen
tomando en cuenta el siguiente cuadro:
Categorías
Edad
Descuento
Categoría 1 5 - 14
35 %
Categoría 2 15 - 19
25 %
Categoría 3 20 - 45
10 %
Categoría 4 46 - 65
25 %
Categoría 5 66 en adelante
35 %
Descargar

Oficial 07 - Iteraciones