Sei sulla pagina 1di 10

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

SEMINARIO DE ENCUENTRO # 4

Estructuras Repetitivas

TEMAS

Creación de ciclos.
Seguimiento y depuración
de ciclos.
Solución de problemas con
ciclos

CICLOS
Generalmente al hacer referencia a programas de computador, se piensa en tareas repetitivas,
programas o máquinas que realizan millones y millones de cálculos para encontrar un
resultado.

Con el manejo de estructuras secuenciales y condicionales, es posible diseñar programas que


realicen muchísimas instrucciones, pero para ello sería necesario escribir muchísimas líneas de
código.

Esto no sería muy útil, pues resultaría más complicado escribir las instrucciones para realizar
todos los cálculos necesarios que realizar los cálculos manualmente, o al menos sin la ayuda
del computador.

Qué puede hacerse cuando es necesario resolver un problema en el que es indispensable


realizar muchos cálculos ? Debe recurrirse a procesos repetitivos o cíclicos en los que se repitan
las operaciones necesarias. Esto se hace a través de estructuras repetitivas, iterativas o
cíclicas.

Existen distintos tipos de estructuras repetitivas, pero su objetivo siempre es el mismo :


ejecutar un conjunto o bloque de instrucciones varias veces, la diferencia entre estas
estructuras está en su sintaxis y en lo apropiadas que son para la realización de tareas
específicas y diferentes.

Normalmente cuando se utiliza un ciclo, quiere repetirse un conjunto de instrucciones, pero no


se repetirán las mismas instrucciones con los mismos datos, pues se produciría siempre el
mismo resultado, la situación mas común es que se repitan las mismas instrucciones, pero se
modifiquen los datos sobre los que están operando. Al diseñar un algoritmo que involucre el
uso de estructuras repetitivas, debe prestarse especial atención a cuáles son las instrucciones
que deben repetirse, qué datos se modificarán en cada ejecución de éstas instrucciones y
cuántas veces se ejecutarán estas instrucciones.

CICLOS MIENTRAS

Cualquier ciclo involucra la ejecución repetida de un conjunto de instrucciones (que constituyen


el cuerpo del ciclo o bucle). El programador controla la cantidad de veces que se ejecutará el
cuerpo del ciclo, y los valores que se modificarán en cada iteración del mismo.

Los ciclos mientras contienen dos partes : una expresión de prueba o condición y el cuerpo del
ciclo como tal. Cuando el flujo del algoritmo alcanza una instrucción mientras, se prueba la
condición, si la condición es verdadera, se ejecuta el cuerpo del ciclo y se continúa la ejecución

Luís Fernando González Alvarán Ciclos


1 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

del mismo hasta que la condición se haga falsa. Cuando la condición es falsa, no se ejecuta el
cuerpo del ciclo y el flujo del algoritmo se transfiere a la siguiente instrucción después de la
finalización del ciclo (fin_mientras).

Algoritmo CicloMientras La palabra reservada mientras


Variables indica el comienzo del ciclo. Va
entero: i seguida de una condición que
condició sirve como expresión de prueba.
inicio
i  1
mientras (i<=5) hacer
El cuerpo del ciclo se
escribir ("Iteración ", i) repite mientras la
i  i + 1 condición sea
verdadera.
fin_mientras
Fin del
fin
Ejemplo

PREGUNTAS ORIENTADORAS. SALIDA

Estudie el algoritmo de Iteración 1 Esta es la salida


ejemplo y la salida producida Iteración 2 que se producirá
por él para determinar cómo Iteración 3 en pantalla al
opera un ciclo mientras. Iteración 4 seguir el algoritmo
Iteración 5 anterior.

EXPLICACIÓN :
En la sintaxis de la estructura repetitiva mientras, se
incluyen las palabras reservadas mientras, hacer,
SINTAXIS
fin_mientras.
El encabezado de la estructura repetitiva está
mientras (condicion) hacer
determinado por las palabras mientras y hacer, entre
sentencia1 ellas, debe incluirse una expresión de prueba, o
sentencia2
condición, que debe ser una expresión lógica válida, tal
... como ocurre para las estructuras selectivas.
sentenciaz
La palabra reservada fin_mientras indica la finalización
fin_mientras del ciclo.
Entre las palabras hacer y fin_mientras, se incluyen
todas las sentencias que deben ejecutarse cuando la
condición sea verdadera (mientras la condición sea verdadera). Este conjunto de sentencias se
conocen como cuerpo del ciclo ó cuerpo del bucle.

OPERACIÓN DE UN CICLO MIENTRAS

Cuando en el flujo del programa se alcanza el encabezado del ciclo (mientras (condicion)
hacer), se prueba la condición, si esta es verdadera se ejecuta el cuerpo del ciclo, si esta es

Luís Fernando González Alvarán Ciclos


2 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

falsa, se transfiere el control de flujo a la siguiente línea después del final del ciclo
(fin_mientras). Cuando se ejecuta el ciclo, y se alcanza la línea fin_mientras, se vuelve al
comienzo del ciclo y se prueba nuevamente la condición. El proceso se repite hasta que la
condición sea falsa y se termine la ejecución del ciclo.

La condición siempre se evalúa una vez mas que lo


que se ejecuta el cuerpo del ciclo. Cuando la
condición es falsa, el cuerpo del ciclo no se ejecuta
y se continúa la ejecución del algoritmo en la
siguiente instrucción.
fals
condicio Cada ejecución del cuerpo del ciclo se conoce
como iteración, así, en el ejemplo anterior, se
presentan 5 iteraciones.
verdade
ra Para conseguir el correcto funcionamiento de un
cuerpo del ciclo mientras, debe garantizarse que la condición
puede probarse inicialmente, así que es necesario
inicializar las variables involucradas en esta
condición antes de llegar al ciclo, adicionalmente,
es necesario que dentro del cuerpo del ciclo se
modifique la o las variables involucradas en la
condición, para garantizar que en algún momento
la condición sea falsa y el ciclo dejará de
ejecutarse.

CICLOS QUE NUNCA SE EJECUTAN

Puesto que al utilizar los ciclos mientras, siempre se prueba la condición, antes de definir si se
ejecuta o no el cuerpo del ciclo, es posible que éste ciclo nunca se ejecute. Esto ocurrirá si la
condición (expresión de prueba) es falsa inicialmente.

EJEMPLO :
EXPLICACIÓN
Algoritmo Mientras01
Variables Este ciclo nunca se ejecuta, porque
entero : i inicialmente la condición ( i < 10 ) es
inicio falsa, pues i tiene exactamente el
i  10 valor de 10, ya que la condición es
mientras (i<10) hacer falsa, no se ejecuta el cuerpo del ciclo
escribir ("El valor de i es : ",i) ni siquiera una vez, aunque la
condición si se probó una vez para
i  i + 1 determinar que el cuerpo del ciclo no
fin_mientras se ejecutaría.
fin

PREGUNTAS DE REVISIÓN

Modifique el algoritmo anterior para que el ciclo se ejecute al menos una vez y muestre los
valores de i entre 10 y 20 inclusive.
Luís Fernando González Alvarán Ciclos
3 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

CICLOS INFINITOS

Se producen ciclos o bucles infinitos, cuando la condición siempre es verdadera, con certeza
este no sería el objetivo al diseñar un algoritmo. Este tipo de situaciones deben evitarse a toda
costa.

EXPLICACIÓN
Algoritmo Mientras02
Inicialmente la condición es
Variables verdadera, pues i tiene el valor de
entero : i 10, así que la condición ( i <=10 ) es
inicio verdadera.
i 10 Se entra a ejecutar el cuerpo del
mientras (i<=10) hacer ciclo, así que se muestra el primer
escribir ("El valor de i es : ",i) mensaje y se ejecuta la instrucción i
i i - 1  i – 1, de modo que i tomará el
fin_mientras valor de 9.
fin El ciclo se seguirá ejecutando y la
variable i se seguirá decrementando

ANATOMÍA DE UN CICLO MIENTRAS

ALGORITMO

Algoritmo mientras03 OBSERVACIO


Variables N
entero : i, doble Para este ciclo, i es la
inicializac variable de control. Está
inicio
i 10 involucrada en tres
condición sentencias indispensables
para el correcto
mientras ( i > 0 ) hacer
funcionamiento del ciclo:
doble i * 2 inicialización
escribir ( i, " x 2 = ", doble) expresión de prueba
i i – 1 (condición ).
fin_mientras actualización.
fin actualizac

La variable que se utiliza para establecer la condición del ciclo, se denomina también variable
de control del ciclo debido a que su valor determina si el cuerpo del ciclo se ejecuta o no. La
variable de control del ciclo debe ser:

• inicializada : Es decir, esta variable debe tener un valor antes de que se alcance la
instrucción mientras, de forma que la condición pueda ser evaluada con el valor real de
la variable de control.

Luís Fernando González Alvarán Ciclos


4 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

• comprobada : Antes de la ejecución del cuerpo del ciclo, se prueba la condición


establecida a través de la variable de control. La variable de control está incluida en la
expresión de prueba que constituye la condición.
• actualizada : El valor de la variable de control debe modificarse dentro del cuerpo del
ciclo, para que en cada iteración, su valor se modifique y sea posible salir del ciclo en el
momento en el que la condición deje de ser verdadera. Si la variable de control no se
actualiza, el ciclo se ejecutará siempre, lo que se denomina un ciclo infinito. La
actualización puede hacerse por medio de operaciones de asignación o de operaciones
de lectura.

Luís Fernando González Alvarán Ciclos


5 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

PREGUNTAS DE REVISIÓN

1. Realice un seguimiento del ejemplo anterior (Algoritmo mientras03) y determine:


• Cuántas veces se ejecuta el cuerpo del ciclo, es decir, cuántas iteraciones se producen ?
• Cuántas veces se prueba la condición ?
• Cuál es la salida producida por el algoritmo ?
• Qué ocurriría si se modifica la condición y en su lugar se utiliza ( i<>0 )?

2. Respecto al algoritmo mientras03, qué ocurriría si se modifica la sentencia de actualización


y en su lugar se utiliza i  i +1 ?
3. Escriba un algoritmo que utilice una estructura mientras para calcular el cuadrado de los
números comprendidos entre 10 y 20.
4. Modifique el algoritmo del punto anterior, para que se calcule la raíz cuadrada de los
números terminados en 0 entre 10 y 100 ( 10, 20, 30, ...100)

VARIABLES USADAS EN CICLOS

Contador: Un elemento cuyo valor se incrementa o decrementa en un valor constante en cada


iteración de un bucle, y se utiliza para controlar la condición del bucle. Se usan
fundamentalmente para contar, por lo tanto son valores enteros.

contador  contador + 1

Acumulador: Es una variable que también se suele usar en los bucles y que se incrementa o
decrementa en cada iteración del bucle, pero no en una cantidad constante. Su función es
almacenar valores numéricos que generalmente se suman o multiplican en cada iteración, así
que son valores reales o enteros.

suma  suma + numero

Bandera (interruptor o flag): Es una variable de tipo lógico que sirve como indicador de una
determinada información y que solo puede tomar uno de dos valores que se utilizan para
determinar el valor de verdad de una condición.

Centinela : Mas que una variable, es un valor que puede tomar una variable, que se usa para
controlar un ciclo : El ciclo se ejecutará siempre que la variable no tome el valor centinela.
Normalmente se elige como centinela un valor fuera del rango de datos válidos.

EJEMPLO : CICLO CONTROLADO POR CONTADOR

Algoritmo mientras04 EXPLICACIÓN :


Variables
entero : cont, num, sum La variable de control del ciclo es cont y se
inicio utiliza como contador : Cada vez que se
cont 0 ejecuta el cuerpo del ciclo, ésta variable se
sum 0 incrementa en 1 (uno).
mientras (cont <> 3) hacer
escribir ("Numero = ?") Nota : Tradicionalmente, se utilizan como
leer ( num ) contadores las variables i, j y k. Sin
sum sum + num embargo, es posible utilizar cualquier
cont cont + 1 variable de tipo entero como contador.
fin_mientras
escribir ("Suma = ", sum)
Luís
finFernando González Alvarán Ciclos
6 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

PRUEBA DE ESCRITORIO

cont sum num Pantalla


0 0 Numero = ? 5
5
5
1 Numero = ? 2
2
7
2 Numero = ? 6
6
13
3 Suma = 13

EJEMPLO

Diseñar un algoritmo que muestre en orden descendente todos los números impares
comprendidos en un intervalo definido por el usuario.

ANÁLISIS:

Modelaje

Datos de entrada : Dos números enteros que determinarán el intervalo.


Datos de salida : Todos los números impares en el intervalo definido.

E/S/ Descripción Identificad Tipo


A or
E Primer número para definir el intervalo A enter
o
E Segundo número para definir el intervalo B enter
o
S Cada uno de los números impares en el Impar enter
intervalo o
A Variable para intercambiar a y b si es Aux enter
necesario o

Especificación

PRE : { a ∈ Z, b ∈ Z } POS: { a = ∅, b = ∅, impar ∈ Z / impar mod 2 = 1, b>= impar


>=a}

Plan de solución

inicio
pedir al usuario los límites del intervalo (a, b)
si los números son diferentes (a <> b) entonces
si a > b entonces
aux  a
ab
b  aux
Luís Fernando González Alvarán Ciclos
7 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

fin_si
si b mod 2 = 0 entonces
bb-1
fin_si
impar  b
utilizar un ciclo controlado por contador que empiece en b y termine en a, decrementándose
de 2 en 2 , para generar los impares en el intervalo y mostrarlos en orden descendente
si_no
no hay un intervalo porque los números son iguales
fin_si
fin

PREGUNTAS ORIENTADORAS

A continuación se muestra el algoritmo correspondiente a este ejemplo.


• Identifique :
o la variable de control del ciclo.
o sentencia de inicialización de la variable de control.
o sentencia de actualización de la variable de control.
• Puede decirse, en este caso, que la variable de control es un contador ?
• Realice el seguimiento del algoritmo suponiendo que los valores de entrada son 10 y 4
respectivamente. Cuántas veces se ejecuta el ciclo ?
• Al finalizar el algoritmo, cuál es el valor de la variable impar ?

Algoritmo Impares_A_B
Variables
entero : a, b, impar, aux
inicio
escribir ("Límites del intervalo")
escribir ("Primer número = ")
leer (a)
escribir ("Segundo número = ")
leer (b)
si (a <> b) entonces
si (a > b) entonces
aux a
a b
b aux
fin_si
si (b mod 2 = 0) entonces
b b – 1
fin_si
impar b
mientras (impar >= a) hacer
escribir (impar)
impar impar - 2
fin_mientras
si_no
escribir ("Los números son iguales")
fin_si
fin

Luís Fernando González Alvarán Ciclos


8 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

PRUEBA DE ESCRITORIO

a b impar aux Pantalla

Luís Fernando González Alvarán Ciclos


9 / 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID

Fundamentos de Programación 1

EJERCICIOS

1. Diseñe un algoritmo que permita calcular el promedio de los números pares en un intervalo
establecido por el usuario.

2. Diseñe un algoritmo que permita realizar el cálculo la multiplicación de dos números


enteros, a x b, utilizando sumas.

3. Se desea calcular la nómina de una empresa con N empleados. Para cada empleado se
conoce su nombre y código. El código corresponde a una letra A para ejecutivos, B para
asesores comerciales y C para el resto del personal. Los ejecutivos tendrán un incremento
del 7.5% de su sueldo anterior, los asesores comerciales tendrán un incremento de 4.5%
sobre su sueldo anterior si su promedio de ventas mensuales es inferior a $ 3500000, pero
tendrán un incremento del 8% si su promedio de ventas mensuales es de al menos $
3500000. Los empleados con código C tendrán un aumento del 8.7% sobre su sueldo
anterior. Se conoce tanto el sueldo anterior para cada clase de empleado así como el
promedio de ventas mensuales para cada uno de los empleados de código B. Al solicitar
esta información no se conoce con certeza la cantidad de empleados de cada tipo.
El programa debe calcular el nuevo sueldo para cada empleado, el total de la nómina
mensual de la empresa y el porcentaje de esta nómina correspondiente a cada uno de los
tipos de empleados.

Luís Fernando González Alvarán Ciclos


10 / 10