Estructuras de Control Repetitivas o Iterativas
Estructuras de Control Repetitivas o Iterativas
Estructuras de Control Repetitivas o Iterativas
Conceptos.
Contador.- Es un campo de memoria cuyo valor se incrementa o decremento en una
cantidad fija, se utiliza para contabilizar el número de veces que se desea ejecutar una
operación o grupo de operaciones.
Formato:
Contador = contador + 1;
Un contador toma un valor inicial antes de empezar sus funciones.
Acumulador.
Se encarga de almacenar en una variable el resultado de una o varias operaciones que se
encuentran dentro de una sentencia repetitiva, para obtener el total acumulado, en sumas
se debe inicializar en 0 y en producto en 1.
Formato: acum = acum + variable;
Bucle.
Conjunto de iteraciones que se repiten.
Iteración.
Cada una de las veces que se desea ejecutar el bucle.
1.- Hacer mientras que ………….. (while)
2.- Hacer hasta que ………… (do..while)
3.- Desde o para ………… (for)
D:F PS
Inicio
……..
………
Inicializar Inicializar condición
Mientras (C) Hacer
a1
C a2
B F a3
U V ……
C .…..
L A a1 an
E a2 Finmientras
…… b1
an b2
…..
…
Modificar
condicion
Codificación en C++
Ejemplo 1.
Calcule el aumento de sueldos para N empleados de una empresa bajo el siguiente
criterio.
Si el sueldo es menos de 1000 soles aumento 12 %
Si el sueldo esta comprendido entre 1000 y 2500 aumento 10%
Si el sueldo es mayo a 2500 aumento 8%
Mostrar lo siguiente:
Sueldo, aumento y nuevo sueldo
Monto total del sueldo, aumento y nuevo sueldo
Solución
Datos
Entrada
Entrada Salida
Número de empleados: n:v.entero Aumento: a :v.real
Sueldo del empleado: s: v.real Nuevo sueldo: ns: v.real
Variable de condición de ciclo: i: v.entero Acumuladores:
Sueldo: ns:v.real
Aumento: a:v.real
Nuevo sueldo: sns: v.real
Pseudocódigo
Algoritmo aumento_de_suldos
Constantes:
P12<-0’.12 //12%
P10<-0.10 //10%
P8 <- 0.08 //8%
Variables
Entero: n,i
Real: s,a,ns,ss,sa,sns
Inicio
//Datos
Escribir (“Ingrese número de empleados :”)
Leer(n)
//proceso
I<-1
ss<-0,sa<-0,sns<-0
Mientras (i<n) Hacer
Escribir (“Ingrese el sueldo del empleado : “,i
Leer(s)
Si (s<=0)
Entonces
Escribir (“Dato errado “)
Sino
Si (s<1000)
Entonces
a<-s*p12
Sino
Si (s>1000 ^ s<=2500)
Entonces
a<- s*p10
Sino
a<- s*p8
finsi
finsi
escribir (“sueldo : “,s,” uamento : “,a,”nuev.sueldo : “ns;
ss<-ss+s
sa<- sa+a
sns<- sns+ns
finsi
i<-i+1
finmientras
escribir (“Total sueldo : “,ss)
escribir (total aumento : “,sa)
escribir (“total nuev. Sueldo : “,sns)
fin
Ejemplo 2.
Escriba un pseudocódigo para obtener la suma y muestre los términos de la siguiente
serie: 2,5,7,10,12,15,27,20,…………..n.
Datos
Entrada Salida
Numero de términos : n v.entero Variable de condición de ciclo : i v.entero
Términos generados : t : v.entero
Acumulador de términos : suma : v.entero
Interruptor : sw: v.entero (para sumar 3 o 2 en t)
Se diferencia del anterior en que la primera ejecución del bucle se realiza sin evaluar la
condición, ambas estructuras son complementarias.es decir:
Diagrama de flujo Pseudocódigo Codificación en C++
-
- -----
Hacer o repetir do
a1 a1 {a1;
a2 a2 a2;
… a3 a3;
an --- ------
--- ------
an an;
C Hasta que (C) sea falso }while(C);
V F b1 b1;
b2 b2;
--- -----
La estructura do.. while, se utiliza generalmente para realizar la consistencia de los datos
de entrada.
Ejemplo.
Consistencia que los datos ingresados sean positivos.
Entrada Pseudocódigo
Numero entero: n v.entero (n>0)
Salida Algoritmo consistencia
Mensaje : Dato correcto Variables:
Entero n
Inicio
Hacer
Escribir (“Ingrese un numero entero >0”)
Leer(n)
Hasta que (n<=0)
Escribir (“Dato correcto”)
-----
Terminación de bucles
Las estructuras de control mientras que (while) y hasta que (do while), pueden ser
controladas por:
Contador (Nº de datos)
Condicional
1. Solicitar al usuario la continuación del bucle
2. Interruptor
3. Valor Centinela
Ejemplo
Se tienen las calificaciones de un grupo de alumnos que se presentaron a un examen,
escribir un algoritmo para calcular el promedio y mostrar cuantas calificaciones hay en
cada uno de los siguientes rangos:
[0 a 10.5>
[10.5 a 15.5>
[15.5 a 18.5>
[18.5 a 20.0>
METODO DEL CONTADOR
Datos
Entrada
Numero de calificaciones del grupo:n: variable entero
Calificaciones : cal: variable real
Salida
Suma de calificaciones: suma: variable real
Promedio pro: variable real
Variable de control de ciclo : i: variable entero (contador)
Contadores de calificaciones por rango
Rango 1 : r1: variable entero
PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4
Real: cal, s, pro
Inicio
Suma0,r10, r20, r30, r40,
Hacer
Escribir (“Ingrese número de alumnos del grupo”)
Leer(n)
Mientras (n<=0)
I1
Mientras (i<=n)
Hacer
Escribir (“Ingrese la calificación del alumno “,i)
Leer(cal)
Mientras (cal<0 v cal>20)
Suma suma +cal
Si (cal>=0 y c al<10.5)
Entoces
R1 r1 +1
Sino
Si (cal>=10.5 y c al<15.5)
Entoces
R2 r2 +1
Sino
Si (cal>=15.5 y c al<18.5)
Entoces
R3 r3 +1
Sino
R4 r4 +1
Finsi
Finsi
finsi
Ii + 1
finmientras
pro suma/n;
escribir ("Promedio general : ",pro)
escribir ("Rango : [0.00 - 10.5> hay ",r1," Alumnos “
escribir ("Rango : [10.5 - 15.5> hay ",r2," Alumnos”
escribir ("Rango : [15.5 - 18.5> hay ",r3," Alumnos”
escribir ("Rango : [18.5 - 20.0> hay ",r4," Alumnos”
Fin
PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4,i=0
Real: cal, s, pro
Inicio
Suma0,r10, r20, r30, r40,
op 1
Mientras (op=1)
Hacer
Escribir (“Ingrese la calificación del alumno “,i+1)
Leer(cal)
Mientras (cal<0 v cal>20)
Suma suma+cal
Si (cal>=0 y c al<10.5)
Entoces
R1 r1 +1
Sino
Si (cal>=10.5 y c al<15.5)
Entoces
R2 r2 +1
Sino
Si (cal>=15.5 y c al<18.5)
Entoces
R3 r3 +1
Sino
R4 r4 +1
Finsi
Finsi
finsi
Ii + 1
Escribir ("Hay más datos a procesar Si [1], No [0])
Leer(op)
finmientras
pro suma/i;
escribir ("Promedio general : ",pro)
escribir ("Rango : [0.00 - 10.5> hay ",r1," Alumnos “
escribir ("Rango : [10.5 - 15.5> hay ",r2," Alumnos”
escribir ("Rango : [15.5 - 18.5> hay ",r3," Alumnos”
escribir ("Rango : [18.5 - 20.0> hay ",r4," Alumnos”
Fin
PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4,i=0
Real: cal, suma, pro
Inicio
Suma0,r10, r20, r30, r40,
Hacer
Escribir (“Ingrese la calificación del alumno “,i+1)
Leer(cal)
Mientras( (cal<0 v cal>20) y cal!=-1)
Mientras(cal!=-1)
Suma suma+cal
Si (cal>=0 y c al<10.5)
Entoces
R1 r1 +1
Sino
Si (cal>=10.5 y c al<15.5)
Entoces
R2 r2 +1
Sino
Si (cal>=15.5 y c al<18.5)
Entoces
R3 r3 +1
Sino
R4 r4 +1
Finsi
Finsi
finsi
Ii + 1
Hacer
Escribir (“Ingrese la calificación del alumno “,i+1)
Leer(cal)
Mientras( (cal<0 v cal>20) y cal!=-1)
finmientras
pro suma/i;
escribir ("Promedio general : ",pro)
escribir ("Rango : [0.00 - 10.5> hay ",r1," Alumnos “
escribir ("Rango : [10.5 - 15.5> hay ",r2," Alumnos”
escribir ("Rango : [15.5 - 18.5> hay ",r3," Alumnos”
escribir ("Rango : [18.5 - 20.0> hay ",r4," Alumnos”
Fin
Esta sentencia se utiliza cuando se conozca por anticipado el número de veces que se desea
ejecutar el bucle, existe una variable que controla el número de veces que se repite el
bucle, esta variable se incrementa o decremento automáticamente, es decir:
Diagrama de Flujo Pseudocodigo
……..
INICIO ……..
Desde(Vc=Vi;Vc<=Vf;Vc++)Hacer
a1
Vc=Vi;Vc<=Vf;Vc++ a2
a3
------
------
a1 an
a2 Findesde
….. B1
B2
-----
-----
…….
…….
Parámetros
Vc : variable de control de ciclo (contador de tipo entero)
Vi : valor inicial
Vf : valor final
Vc++ incremento o decremento
Codificación en C++
Formato 1 Formato 2
for(Vc=Vi;Vc<=Vf;Vc++) for(Vc=Vi;Vc<=Vf;Vc++)
a1; {a1,
b1; a2;
b2; ---
----- an;
}
b1;
b2;
-----
Ejemplos
1.-Escribir un algoritmo que muestre la suma y los n terminos
de la siguiente serie. 1,2,4,7,11,16,22,………,n
Datos
Entrada Pseudocódigo
Nro detérminos: n:V.entero
Algoritmo serie
Salida Variables
Términos gen. :t: v.entero Entero:i,t,n,s
Suma serie :s: v.entero Inicio
Variable de condición de //datos
ciclo: i:v.entero(cont) Escribir(“Ingrese el nro de
terminos a generar”)
Código en C++ Leer(n)
//proceso
----- t<-1
----- s<-0
t=1; desde(i=1;i<=n;i++)
s=0; escribir(t)
for(i=1;i<=n;i++) si(i<n)
{cout<<i; entonces
if (i<n) escribir(“,”)
Cout<<”,”; finsi
s=s+t; s<s+t
t=t+i; t<-t+i
} findesde
cout<<” = “<<s<<endl; escribir (“ = “,s)
getche(); Fin
return 0;
3.- Se debe ingresar una lista de nacionalidades y se desea saber cuantos chilenos y
peruanos han sido ingresados a su vez deberá UD. indicar cuantas personas ingresaron
CONTPER
CONTCHI
CONTOT
NAC
RP
Algoritmo NACIONALIDAD
Variable:
Entero:CONTPER, CONTCHI, CONTOT
Cadena:NAC
Carácter: RP
Inicio
CONTPER 0
CONTCHI 0
CONTOT 0
RP ‘S’
Mientras RP = ‘S’
NAC ‘ ‘
Escribir ‘nacionalidad’ :
Leer NAC
Si NAC = ‘Peruano’ OR NAC = ‘Peruana’
CONTPER CONTPER + 1
F-Si
Si NAC = ‘CHILENO’ OR NAC= ‘CHILENA’
CONTCHI CONTCHI + 1
F-Si
CONTOT CONTOT + 1
Escribir ‘Desea continuar <S/N>’
Leer RP
Fin – Mientras
Escribir ‘El total de peruanos es:’, CONTPER
Escribir ‘El total de Chilenos es:’, CONTCHI
Escribir ‘El total de nacionalidades ingresadas es:’, CONTOT
Fin-Inicio
4.- Los empleados de una fábrica trabajan en dos turnos, diurno y nocturno. Se desea
calcular el jornal diario de acuerdo con los siguientes puntos.
1. La tarifa de las horas diurnas es de 10 nuevos soles
2. La tarifa de las horas nocturnas es de 15 nuevos soles
3. En caso de ser domingo, la tarifa se incrementa en 8 nuevos soles el turno diurno y al
doble en turno nocturno
5.- Programa que permita calcular el producto de 2 números usando solamente sumas.
#include <cstdlib>
#include <iostream>
using namespace std;
Ejemplo
Escribir un algoritmo que permita ingresar un numero entero
positivo menor o igual a 15, y un carácter, y mostrar con el
carácter ingresado un triangulo rectángulo que tenga por
cateto el numero ingresado.
Datos
Entrada Pseudocódigo
Num entero: n:v.enter 1<n<=15 Algoritmo triangulo_rectangulo
Carácter: car;v.char Variables
Salida Entero: n,f,c
Variables de codi. de ciclo Carácter:car:v.caracter
Filas: f:v.entero Inicio
Columnas: c:v.entero //datos
Hacer
Escribir (“Ing.n<=15”)
Leer (n)
Mientras (n>=1 y n>15)
Escribir (“Ing.un carácter”)
Leer (car)
//proceso
desde (f=1;f<=n;f++) hacer
desde (c=1;c<=f;c++) hacer
Escribir (car)
Findesde
Findesde
fin
BUGLE INFINITO
Pseudocódig o C++
Desde (;;)hacer for(;;)
…… .. {……
…….. …..
…….. …..
Si (cont=10) salir If (cont==10) break;
Findesde }
… ….
… ….
Tabla de multiplicacion
Algoritmo tabla
variables
entero: i,j
//datos
Repetir
escribir "Ingrese un numro entero posivo ";
leer n;
Hasta Que (n>0);
//proceso
para i<-1 hasta n con paso 1 hacer
escribir "TABLA DEL ",i;
para j<-1 hasta n con paso 1 hacer
escribir i," x ",j," = ",i*j;
FinPara
FinPara
FinAlgoritmo