Está en la página 1de 14

Programación Básica Estructuras Repetitivas Parte1 – Cap2

_________________________________________________________________________________________________

ESTRUCTURAS REPETITIVAS (Parte 1)


Las computadoras están especialmente diseñadas para todas aquellas aplicaciones en las
cuales una operación o conjunto de ellas deben repetirse muchas veces. Un tipo muy
importante es la estructura Repetitiva donde en el algoritmo o programa es necesario usar
éstas para repetir una o varias acciones un número determinado de veces.
En la solución de algunos problemas, se requiere que el algoritmo ejecute la misma tarea
de forma repetitiva; es ahí donde cobran protagonismo estas estructuras de repetición.
Estas estructuras también reciben el nombre de ciclos o de bucles, ellas permiten que una
instrucción o un bloque de ellas se puedan ejecutar más de una vez, controlado en cada
repetición por una condición. A cada ejecución de un ciclo se le denomina iteración.
En esta parte del avance de la materia se estudiaran las siguientes estructuras de
repetición:
En Pseudocódigo y Diagrama de Flujo:

1. Mientras – Fin Mientras 2. Repetir – Mientras Que

3. Repetir – Hasta Que 4. Para – FinPara

Conceptos básicos
Es importante señor estudiante que antes de iniciar la construcción de los algoritmos que
las incluyen, se familiarice con algunos conceptos básicos entorno a ellas.
________________________________________
MSc. Ing. Nelson Coca Párraga -1-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

1.- Bucles o Ciclos Repetitivos.


Un bucle o ciclo repetitivo es una estructura repetitiva y es una bifurcación condicional que
envía el flujo del programa hacía atrás produciendo la repetición de una o más instrucciones
un número determinado de veces dependiendo la finalización de una condición (cada
repetición se denomina también Iteración).
Un bucle o ciclo repetitivo tiene 3 partes: La condición, el cuerpo y la salida.

2.- Contador
Como su nombre lo indica, es una variable que tiene la función de llevar la cuenta de
determinadas situaciones que se repiten dentro de los ciclos.
Por ejemplo, es común contar:
 Goles en un juego de un partido de futbol.
 Cantidad de términos que tiene una serie numérica.
 Los amigos que se tienen en Facebook.
 Cantidad de votos que obtienen los candidatos en unas elecciones.
 El número de visitas a un video en YouTube.
Esta clase de variables se declaran de tipo Entero. Deben inicializarse antes de entrar al
ciclo, es decir, se le debe asignar un valor inicial que corresponde al número desde el cual
se requiere que inicie el conteo, generalmente se inicializan en 0; aunque todo depende del
problema que se va a resolver.
Dentro del ciclo debe haber una instrucción que modifique el valor del contador (cont), su
forma general es la siguiente:
cont ← cont + valorIncremento
cont ← cont - valorDecremento
El valor a incrementar o decrementar es una constante, hace referencia a cualquier cantidad
de tipo numérico, en la cual aumenta o disminuye su valor en cada iteración del ciclo. Los
valores a incrementar o decrementar son cantidades constantes, es importante
recalcar.

________________________________________
MSc. Ing. Nelson Coca Párraga -2-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

En los ejemplos anteriores, la cantidad de amigos en Facebook se incrementa en el


momento que se confirme una solicitud de amistad o se decrementa cuando se elimina un
contacto de la lista de amigos.
3.- Acumulador
Un acumulador es una variable que funciona de forma similar a un contador, la diferencia
radica en que aumentan o disminuyen en cantidades variables y no en forma constante
como es el caso de los contadores. Algunos autores le dan también la denominación de
totalizador.
Un acumulador (acum) se puede usar para:
 Almacenar el puntaje acumulado en un juego.
 Calcular el saldo en una cuenta de ahorros.
 Obtener el valor de una sumatoria de notas que luego puede ser usada para calcular
un promedio.
 Determinar el valor a pagar en un supermercado cuando se compran varios artículos.
 Conocer el acumulado de puntos que se tienen por compras en un almacén o
establecimiento comercial que ofrezca este beneficio.
Esta clase de variables se declaran de tipo numérico, bien sea Entero o Real. Deben
inicializarse antes de entrar al ciclo, es decir, se le debe asignar un valor inicial que
dependerá del problema a resolver, generalmente se inicializan en 0.
Dentro del ciclo debe haber una instrucción que modifique el valor del acumulador (acum),
su forma general es la siguiente:
acum ← acum + variable
acum ← acum - variable
El valor a incrementar o valor a decrementar es una variable, se refiere a cualquier cantidad
de tipo numérico, en la cual el acumulador aumenta o disminuye su valor en cada iteración
del ciclo. Los valores a incrementar o decrementar son cantidades variables.
En los ejemplos anteriores, el saldo en una cuenta de ahorros se incrementa con las
consignaciones y se decrementa con los retiros. De igual forma sucede con los puntos por
compras, incrementan por cada compra que se realice y decrementan en el momento en
que se haga un canje por algún artículo o promoción.
Existen casos especiales donde la forma general no trabaja con operaciones de suma o
resta, sino que se involucran operaciones de multiplicación o división:
acum ← acum * variable
acum ← acum / variable

Interruptor.-
En ocasiones por ejemplo en las series u otras operaciones repetitivas se tienen procesos
ALTERNOS, en los que es necesario utilizar variables denominadas interruptor o bandera.

________________________________________
MSc. Ing. Nelson Coca Párraga -3-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

El INTERRUPTOR o BANDERA (Flag), es una variable que solo puede tomar dos valores
(encendido o apagado) durante la ejecución del bucle repetitivo, permitiendo realizar
procesos alternos.
BANDERA Estado Abierto (encendido)  True ó 1
Estado Cerrado (apagado)  False ó 0
Una bandera o interruptor, es una variable que se debe inicializar antes de entrar al
bucle repetitivo, como encendido (True o 1) o en su caso apagado (False o 0) según sea
más conveniente para resolver el Problema.
Ejemplo: Acumulador: suma = 1 – 2 + 3 – 4 + 5 – 6 + ……….
Interruptor: Band 1 0 1 0 1 0 ………

ESTRUCTURA REPETITIVA MIENTRAS (while) (PARTE 1)


La estructura repetitiva mientras es aquella en la que el número de iteraciones (repeticiones)
no se conoce por anticipado y el cuerpo del bucle se repite mientras la condición sea verdad.
Su representación en Diagrama de Flujo y en Pseudocódigo es:

La Condicion1 o expresión lógica que puede ser simple o compuesta. Los operadores
que se utilizan son:
==, =. >, <, >=, >=, &&, ||, 
Funcionamiento:
Lo primero que hace la estructura es analizar en la Condición1 si se ingresa o no al bucle
para ejecutar las instrucciones repetitivas correspondientes (acción p), para lo cual se
evalúa la condición, si es verdad ingresa al bucle y efectúa las repeticiones ejecutando el
cuerpo del bucle y retornar nuevamente a la Condicion1. En cada repetición se evalúa la
condición, cuando ésta en algún momento sea falsa termina la repetición, saliendo del bucle.
Teniendo en cuenta que la estructura Mientras-FinMientras es una instrucción repetitiva
condicionada al inicio, se debe prestar especial cuidado en inicializar la variable o las
variables que serán evaluadas en la condición, ya que de esto depende que se ejecute o no
el cuerpo del ciclo; es por ello que dentro de la anterior forma general se contempla una
Instrucción de inicialización. De igual manera la inicialización también se aplica a los
contadores y acumuladores que serán modificados dentro del ciclo. La inicialización puede
estar implícita en el mismo algoritmo o puede ser suministrada por el usuario.
________________________________________
MSc. Ing. Nelson Coca Párraga -4-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

Cuando se evalúe por primera vez la condición y el resultado sea falso, las instrucciones
que componen el cuerpo del ciclo no se ejecutan; el control lo asume la Instrucción externa.
En conclusión, este ciclo itera mientras el valor de la condición sea verdadero.
Es importante tener presente que todo ciclo debe terminar de ejecutarse cuando cumpla con
la tarea para la cual fue diseñado, para ello dentro de su cuerpo se encuentra la Instrucción
modificadora de condición (acción p) cuyo propósito es cambiar el estado de la condición.
De omitir la instrucción modificadora, se obtendrá lo que se conoce como un “Ciclo infinito”,
debido a que su ejecución “nunca termina”.

EJEMPLO DE VALIDACION CON ESTRUCTURA MIENTRAS:

La Validación de datos, se la realiza al introducir datos por teclado que deben ser
evaluados bajo una determinada condición establecida por el programador en base al
problema, esta acción se las realiza utilizando las estructuras repetitivas sobre todo.

EJERC. 7.TAREAC DESARROLLE UN ALGORITMO PARA GENERAR Y MOSTRAR 5


NÚMEROS IMPARES, PARTIENDO DEL VALOR DE INICIO VINI
QUE ES ENTERO POSITIVO.
Análisis del Problema: Este problema se los planteará empleando la estructura repetitiva
Mientras, tanto en la validación, como en la generación de los 5 números impares, que
solicita el problema.
Datos de entrada:
Se tiene un valor entero positivo vini de tipo entero, que debe ser leído por teclado y debe
validarse con la condición, que Mientras sea negativo no ingresa al algoritmo vini <= 0 o
bien si no es cero o negativo, será positivo e ingresara.
Para ello se pedirá el valor de vini y si es negativo o cero se volverá a pedir, hasta que no
sea negativo o cero, es decir positivo. La petición de datos usando la Estructura Mientras,
debe hacerse dos veces antes del ciclo y en el ciclo, pues la condición está al inicio del
bucle.
Resultados de Salida:
Se tiene 5 valores impares que deben generarse y mostrar, partiendo del valor de inicio
vim de tipo entero
Especificar método o proceso:
Al ingresar un valor para vini se tiene 2 posibilidades de ingreso:
1. Que el valor de ingreso sea impar
Ejem. Si vini ← 9
Los 5 valores impares que deben generarse, partiendo de éste, serán
9 11 13 15 17
Si contamos serán: 1 2 3 4 5 esta tarea de contar lo hará cont

________________________________________
MSc. Ing. Nelson Coca Párraga -5-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

Que debe inicializarse en 0 cont ← 0, pues empieza a contar desde 1 es decir:


cont ← cont + 1
Y si analizamos los números estos se incrementan de a 2 partiendo del primero, o
sea se puede utilizarse otro contador:
cim ← cim + 2
que se inicializará en el valor de inicio, es decir cim ← vini
Acá se presentará un ciclo repetitivo donde debe generarse 5 numeros impares, o
sea que debe haber una condición de control, y este será que Mientras el cont sea
menor a 5 ingresa al ciclo para generar y mostrar un número impar con el contador
cim y debe mostrar. Y repetir hasta cumplir con lo solicitado.
2. Si el valor es impar
Ejem. Si vini ← 16
Los 5 valores impares que deben generarse, partiendo de éste, serán
17 19 21 23 25
Si contamos serán: 1 2 3 4 5 esta lo hará también cont
Que debe inicializarse en 0 cont ← 0, pues empieza a contar desde 1 es decir:
cont ← cont + 1
Si analizamos nuevamente los números también éstos se incrementan de a 2, o sea
que se puede utilizarse este mismo contador de a 2:
cim ← cim + 2
sólo que para este caso se inicializará en el valor de inicio incrementado en 1 es decir
cim ← vini + 1 por el hecho de ser par, esta tarea se colocará dentro del ciclo.
Nuevamente acá se presentará el mismo ciclo repetitivo donde debe generarse 5
números impares con la condición de control, que Mientras el cont sea menor a 5
ingresa al ciclo para generar y mostrar el número impar generado por el contador cim
y debe mostrarse. Y repetir también hasta cumplir con lo solicitado.
Los dos casos que se presenta se los condicionará usando la estructura selectiva
doble, donde inicializaremos la variable contar impares o generar.
Si vini mod 2 = 1 es decir si es impar Entonces cim ← vini
Sino es decir si es par cim ← vini + 1

DISEÑO DEL ALGORITMO.-

________________________________________
MSc. Ing. Nelson Coca Párraga -6-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

PRUEBA DE ESCRITO:
Se realizará las dos prueba que se ha presentado,
además de la validación con un dato negativo, que
vuelve a pedirse su ingreso.
Prueba 1:

Prueba 2:

________________________________________
MSc. Ing. Nelson Coca Párraga -7-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

EJEMPLO MIENTRAS1: DESARROLLE UN ALGORITMO PARA CALCULAR LA NOTA


PROMEDIO DE LOS N ALUMNOS DE SIS100 DE SU PRIMER
PARCIAL Y ADEMÁS CALCULAR EL PORCENTAJE DE LOS
APROBADOS.SI SE CONOCEN LAS N NOTAS DEL PRIMER
PARCIAL DE LOS ALUMNOS.
Análisis del problema:
Datos de Entrada:
Después de leer el problema se puede deducir que se tienen como datos de entrada por
teclado:
n cantidad de alumnos de tipo entero y como es cantidad debe cumplir la condición
lógica que debe ser positivo o sea n>0
cal Notas de los alumnos del primer parcial como son varios, se leerán uno por
uno, hasta llegar a las n notas, que deberán validarse en el rango de 0 a 100, es
decir que (cal>=0 y cal <= 100)
Resultados de Salida:
Pide como salida el promedio de las notas de los n alumnos, que se debe calcular sumando
las notas de cada uno de los alumnos en un ciclo repetitivo de lectura de las notas,
ahí se utilizara un contador para contar las notas leídas hasta que sean n
cont ← cont + 1
luego de contar se deben sumar usando un acumulador, es decir:
acum ← acum + cal
Con la suma calculada se podrá calcular el promedio, dividiendo entre los n alumnos, es
decir:
prom ← acum / n
Para el cálculo del porcentaje de aprobados, se requiere saber cuántos alumnos han
aprobado, para lo cual se debe contar haciendo uso de otro contador:
conapr ← conapr + 1
Solo si su nota cal es mayor a 50 es decir si cal>50
Y el porcentaje se calcula dividiendo entre el total de alumnos, multiplicado por 100, es decir
porc ← conapr / n * 100
Tanto el contador de notas, el contador de notas aprobadas y el acumulador de notas, deben
ser inicializados antes del ciclo en cero, pues al inicio nada se contó, ni se sumó. Es decir:
cont ← 0 conapr ← 0 acum ← 0
Especificar método o proceso:
El procedimiento para resolver será:
________________________________________
MSc. Ing. Nelson Coca Párraga -8-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

1. Leer y validar la cantidad de n alumnos con la estructura Mientras


2. Iniciar en cero los contadores y acumuladores
3. Iniciar un ciclo de lectura de las notas una por una con la estructura Mientras,
validando la lectura de cada nota que ingresa también con otra estructura Mientras.
4. Dentro del ciclo de lectura de las notas se debe sumar cada nota ingresada y contar
5. Dentro del mismo ciclo se debe condicionar la nota leída si está aprobada se cuenta,
sino no se lo toma en cuenta, usando la estructura de selección simple.
6. Terminado el ciclo de lectura se calcula el promedio y el porcentaje de aprobados y
se los muestra en pantalla.
DISEÑO DEL ALGORITMO.-
En Pseudocodigo:

________________________________________
MSc. Ing. Nelson Coca Párraga -9-
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

En Diagrama de Flujo:

________________________________________
MSc. Ing. Nelson Coca Párraga - 10 -
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

PRUEBAS DE ESCRITORIO:
Prueba 1: En esta prueba se ingresara una cantidad de notas negativa, la que no será aceptada.
Luego una cantidad de notas positiva
Luego notas que salen del rango de 0 a 100, que no seran aceptadas, y se verá que las nota serán
pedidas las n veces hasta cumplir la condición.

________________________________________
MSc. Ing. Nelson Coca Párraga - 11 -
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

EJEMPLO MIENTRAS 2: DESARROLLE UN ALGORITMO PARA QUE GENERE Y


MUESTRE AUTOMATICAMENTE LA SIGUIENTE SERIE
NÚMEROS:
1-2+3-4+5-6…
Y CALCULE SU SUMA PARA N TÉRMINOS.
ANÁLISIS:
Datos de entrada:
Se tiene como dato de entrada n cantidad de números a generar en la serie, de tipo entero
y bajo la condición de ser positivo, pues toda cantidad por lógica será positivo, es decir n>0
Resultados de salida:
Se desea generar, mostrar y sumar la serie dada: 1-2+3-4+5-6…
Que como se puede observar la serie es generada por un contador c con incremento de a
1 es decir: c ← c + 1 dentro de un ciclo repetitivo que irá desde 1 hasta n con el uso de
una estructura Mientras. Es decir Mientras el contador c <= n se genera el número y se
muestra.
La alternabilidad de los signos, una vez positivo y otra vez negativo de manera sucesiva, se
la realizará usando una variable denominada Interruptor flag que tendrá el valor de 1 para
positivo y el valor de 0 para negativo, se iniciará en 1 porque el primer términos es positivo,
para ello se utilizará una estructura de selección doble, la que permitirá ir cambiando su
valor de manera alterna entre el 1 y el 0 de la siguiente manera:
Si flag = 1 Entonces
Escribir ' + ',c //Mostramos el numero positivo
su <- su+c // sumar los números positivos
flag <- 0 // Cambiamos a cero
SiNo
Escribir ' - ',c //mostramos el numero positivo
su <- su-c // Restar los números negativos
flag <- 1 // Cambiamos a uno
FinSi
Especificar método o proceso:
Se procederá de la siguiente manera:
1. Se leerá n cantidad de números y se validará
2. Se iniciará el contador en 1 para generar el primer número
3. Se inciara el sumador su en 0 y la bandera flag en 1 por ser positivo

________________________________________
MSc. Ing. Nelson Coca Párraga - 12 -
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

4. Se iniciará un ciclo Mientras para contar la cantidad de números generados de la


serie, mostrando cada número.
5. Dentro del ciclo se usará una estructura selectiva doble para generar los positivos y
los negativos de manera alterna
6. A su vez dentro de la estructura selectiva doble se sumará cada número de la serie
por una parte y en otra corrida se restará de manera alterna
7. Al terminar el ciclo se mostrará la suma de los números de la serie generada.
DISEÑO DEL ALGORITMO.-
Para el diseño del algoritmo utilizaremos PSeInt Teniéndose el siguiente resultado:
En Pseudocódigo:

________________________________________
MSc. Ing. Nelson Coca Párraga - 13 -
Programación Básica Estructuras Repetitivas Parte1 – Cap2
_________________________________________________________________________________________________

En Diagrama de flujo:

PRUEBAS DE ESCRITORIO:
Para la prueba del algoritmo se ingresara cantidad de
números cero, que será rechazado y pedirá otra
cantidad de números, se ingresará uno positivo y
mostrará lo generado y el resultado de la suma.

________________________________________
MSc. Ing. Nelson Coca Párraga - 14 -

También podría gustarte