Está en la página 1de 17

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.

Se pueden considerar tres tipos básicos de estructuras repetitivas


1.- Hacer mientras que …………. (while)
2.- Hacer hasta que ………… (do..while)
3.- Desde o para ………… (for)

ESTRUCTURA HACER MIENTRAS QUE

Es aquella en la que el número de repeticiones del bucle no se conoce por anticipado y el


cuerpo del bucle se repite mientras se cumple una determinada condición, es decir:

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++

Formato 1 Formato 2 Ejemplo Codigo en C++


….. Generar los números consecutivos de 1, 2,
….. ……. ……… …….n, uno en cada línea, y calcular #include <iostream>
while (C) ……. la sumatoria. #include <conio.h>
a1; while (C) Datos using namespace std;
b1; { a1; Entrada //programa principal
b2; a2; N. de términos a generar: n : v:entero int main()
…… a3; Salida {//declaracion de
…… ….. Acum. de números generados: s: v.entero variables de E/S
….. Contador de núm. generados : t : v.entero int n,t,s,i;
an; Variable de rep del bucle. i V.entero //Datos
} Algoritmo genera cout<<"Ingrese el
b1; Variables: numero de terminos a
b2; Entero: n,t,s generar : "<<endl;
….. Inicio cin>>n;
Escribir (“ingrese número de términos : “) //Proceso
Leer (n) t=1;i=1;
t<-1, s<-0,i=1 s=0;
Mientras (i<=n) Hacer while(i<=n)
Escribir (t) {cout<<t<<endl;
s<-s+t s=s+t;
t<-t+1 t=t+1;
i<-i+1 i=i+1;
Finmientras }
Escribir (s) cout<<"Sumatoria :
Fin "<<s<<endl;
getche();
return 0;
}

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: ss:v.real
Aumento: sa: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)

Pseudocódigo #include <iostream>


Algoritmo suma_serie #include <conio.h>
Variables: using namespace std;
Entero: n,i,t,sw,suma //programa principal
Inicio int main()
//datos {//declaracion de variables de E/S
Escribir(“Ingrese el numero de terminos: “) int i,t,sw,suma,n;
Leer(n)
//proceso //Datos
I<-1,sw<-1,t<-2,suma<-0 cout<<"Ingrese numero de terminos : "<<endl;
Mientras (i<=n) hacer cin>>n;
Escribir(t)
suma<-suma+t //Proceso
si (i<n) i=1;sw=1;t=2;suma=0;
Entones while(i<=n)
Escribir (‘,’), {cout<<t;
finsi suma=suma+t;
Si (sw=1) if(i<n)
Entonces cout<<",";
t<-t+3 if (sw==1)
sw<-0 {t=t+3;
Sino sw=0;
t<.t+2 }
sw<-1 else
Finsi {t=t+2;
I<-i+1 sw=1;
Finmientras }
Escribir (“suma serie : “,suma) i=i+1;
Fin }
cout<<" = "<<suma<<endl;
getche();
return 0;
}

Estructura Hacer Hasta Que ----- (do…while)

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”)
-----

La condición de validación es el complemento de los datos correctos

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

Rango 2 : r2: variable entero

Rango 3 : r3: variable entero

Rango 4 : r4: variable entero

PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4
Real: cal, s, pro
Inicio
Suma0,r10, r20, r30, r40,
Hacer
Escribir (“Ingrese número de alumnos del grupo”)
Leer(n)
Mientras (n<=0)
I1
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
Ii + 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

METODO SOLICITAR AL USUARIO LA CONTINUACION DEL BUCLE


Datos
Entrada
Calificaciones : cal: variable real
Salida
Suma de calificaciones: suma: variable real
Promedio pro: variable real
Contador de calificaciones : i: variable entero (contador)
Variable de condición de ciclo : op: variable carácter
Contadores de calificaciones por rango
Rango 1 : r1: variable entero

Rango 2 : r2: variable entero

Rango 3 : r3: variable entero

Rango 4 : r4: variable entero


PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4,i=0
Real: cal, s, pro
Inicio
Suma0,r10, r20, r30, r40,
op  ‘S’
Mientras (op=’s’ v op=’S’)
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
ii + 1
Escribir ("Hay mas datos a procesar (S/N) )
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
METODO DEL INTERUPTOR
Datos
Entrada
Calificaciones : cal: variable real
Salida
Suma de calificaciones: suma: variable real
Promedio pro: variable real
Contador de calificaciones : i: variable entero (contador)
Variable de condición de ciclo : op: variable entero
Contadores de calificaciones por rango

Rango 1 : r1: variable entero


Rango 2 : r2: variable entero
Rango 3 : r3: variable entero
Rango 4 : r4: variable entero

PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4,i=0
Real: cal, s, pro
Inicio
Suma0,r10, r20, r30, r40,
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
Ii + 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

METODO DEL V ALOR CENTINELA


El valor centinela es un valor distinto del dato, que nos permita salir del bucle
Cal: 12,15,8,9,10,16,11,…………..(-1)
(-1) es el valor centinela, es decir si ingresamos a cal -1 debe finalizar el proceso.
Datos
Entrada
Calificaciones : cal: variable real
Salida
Suma de calificaciones: suma: variable real
Promedio pro: variable real
Contador de calificaciones : i: variable entero (contador)
Contadores de calificaciones por rango
Rango 1 : r1: variable entero

Rango 2 : r2: variable entero

Rango 3 : r3: variable entero

Rango 4 : r4: variable entero

PSEUDOCODIGO
Algoritmo calificaciones
Variables:
Entero: n,r1,r2,r3,r4,i=0
Real: cal, suma, pro
Inicio
Suma0,r10, r20, r30, r40,
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
ii + 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

Estructura Para o desde ------- (for)

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
-----
-----

…….
…….

La sentencia o el conjunto de sentencias se van ha ejecutar


Mientras Vc<=Vf,Vc parte de un valor inicial Vi.

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<<t; 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;

2.-Deduzca el salario neto de N trabajadores, a partir de los siguientes datos de entrada:


nombre, horas trabajadas, precio de la hora, y sabiendo que los impuestos son el 10%
sobre el salario bruto.
Datos
Entrada Pseudocodigo
N° de trabajadores: n:v.real PROGRAMA SUELDO
Nombre trab: nomper:v.cadena Constante:
Horas Trab : hortra:v.entero P10<-0.1
Pagoxhora: paghor:v: real Variables:
Salida Cadena: nomper
Suelodo neto :suenet:v.real Real: paghor,hortra, suenet
Sueldo bruto:suebru:v.real Entero:i,n
Desc. Ley: dscley:v.rea Algoritmo salario
Inicio
paghor  .
hortra  .
suenet  .
Escribir ‘Ingresa el N° de Trabajadores’
Lee (n)
Para (i  1; i<=n;i++) hacer
Leer (nomper)
Escribir “horas trabajada”
Leer (hortra)
Escribir ‘pago por hora’
Leer (paghor)
dscley<-(paghor*hortra)*p10
suenet  (paghor*hortra)-dscley
Escribir, nomper, “SUELDO NETO”, suenet
Fin-Para

3.- 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.
 La tarifa de las horas diurnas es de 10 nuevos soles
 La tarifa de las horas nocturnas es de 15 nuevos soles
 En caso de ser domingo, la tarifa se incrementa en 8 nuevos soles el turno diurno
y al doble en turno nocturno
4.- Programa que permita calcular el producto de 2 números usando solamente sumas.

#include <stdlib>
#include <iostream>
using namespace std;

int main()
{
int i, num1, prod,num2;
prod =0;
cout<<"Ingrese Primer Numero : ";
cin>>num1;
cout<<"\n Ingrese Segundo Numero: ";
cin>>num2;
for (i =1 ; i <=num1 ; i++)
{
prod =prod + num2;
}
cout<<"El producto es "<<prod;
cout<<"\n";
system("PAUSE");
return EXIT_SUCCESS;
}

ESTRUCTURAS REPETITIVAS ANIDADAS


Las reglas para construir estructuras repetitivas anidadas son:
1.- La estructura interna debe estar totalmente incluido
dentro de la externa, es decir:

2.- No debe haber intersecciones

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

Un bugle infinito se genera con la estructura desde (for) sin


parámetros, es decir:

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

También podría gustarte