Algoritmos Con Estructuras Ciclicas 2014-U
Algoritmos Con Estructuras Ciclicas 2014-U
Algoritmos Con Estructuras Ciclicas 2014-U
ESTRUCTURAS CICLICAS
K = 0
{Escribir la frase por primera vez (K= 0+1)}
K = K +1
Escribir Programar computadoras es fcil
{Escribir la frase por segunda vez (K= 1+1)}
K = K +1
Escribir Programar computadoras es fcil
{Escribir la frase por tercera vez (K= 2+1)}
K = K +1
8
es tambin una
variable auxiliar o de proceso, cuyo propsito es
sumar (acumular) diferentes valores del mismo
tipo.
Por su parte
el Acumulador
10
11
Bucles
Bucles
repetitiva
contiene
las
siguientes
13
{Instrucciones de proceso}
Instrucciones de proceso
Generalmente la implementacin de
contador, tiene la siguiente estructura:
algoritmos
con
{Inicializar el contador}
K=0
REPETIR
{Actualizar contador}
K=K+1
{Instrucciones de proceso}
HASTA QUE (K=Nmero de veces) {Controlar si contador llego
al final}
La parte de {Instrucciones de proceso} es la que generalmente
varia de un algoritmo a otro, y puede estar constituido por:
Instrucciones de entrada, asignacin, salida, estructuras
selectivas e incluso por otras estructuras repetitivas.
18
do
{
cout << "Introduzca un numero entre 1 y
10" << endl;
cin >> numero;
}
while (!((1<=numero) && (numero <= 10)));
i= 1;
do
{ if (N%i==0)
C++;
}
i++;
while (i<N);
if (C==1)
cout<<"El Numero es
Primo";
else
cout<<"El Numero es
Compuesto";
getch();
}
22
ESTRUCTURAS CICLICAS
BUCLE FIJO: ESTRUCTURA REPETIR DESDE
La estructura Repetir desde es utilizada en aquellos
algoritmos en los que se conoce previamente el numero de
veces que se deben repetir la ejecucin de un bloque de
instrucciones.
DESDE Variable =Vinicio HASTA Vfin, INCRE/ DECRE HACER
INICIO
Bloque de instrucciones del bucle
FIN // Algunos autores tambin utilizan:
ESTRUCTURAS CICLICAS
ESTRUCTURA
REPETIR-DESDE. Esta estructura
corresponde a las denominadas estructuras repetitivas
fijas y especialmente diseadas para simplificar la
escritura de los ciclos controlados por un contador.
Repetir desde Contador = 1 Hasta 5, INCRE 1
Inicio
Escribir PERU
Fin
Cada vez que se ejecuta la instruccin escribir PERU, la
variable
de
control
Contador
se
incrementa
automticamente en 1, de manera que se escribir 5 veces
la cadena de caracteres PERU
24
ESTRUCTURAS CICLICAS
IMPORTANTE. La estructura Repetir desde no es de
propsito general, por lo que al momento de usarla se debe
recordar lo siguiente:
La variable de control del ciclo no puede cambiarse
desde dentro del ciclo, pero si puede utilizarse.
Despus de ejecutarse el bloque de instrucciones de
proceso, la variable de control se incrementa o
decrementa automticamente.
Se debe verificar que al momento de iniciarse el ciclo el
valor inicial de la variable de control debe ser menor o
igual al valor final que debe de tomar
No se debe poner una condicin adicional de terminacin
25
del ciclo.
ESTRUCTURAS CICLICAS
Formato de codificacin en C++:
for (<expres_ini>;<expres_bool>;<expres_inc>)
<sec_sent>
PARTES:
Parte de inicializacin (<expres_ini>), que inicializa las
variables de control del bucle. Se puede utilizar variables
de control de bucle simples o mltiples. Lo mas normal es
inicializar en este punto una sola variable cuyo valor varia
luego en la parte de incremento. Si se inicializan varias
variables de control, cada inicializacin se separa de la
anterior con una coma.
26
ESTRUCTURAS CICLICAS
Formato de codificacin en C++:
Parte de iteracin (<expres_bool>), que contiene una
expresin lgica que hace que el bucle realice las
iteraciones de las sentencias, mientras que a expresin
sea verdadera.
Parte de incremento (<expres_inc> ), que modifica la
variable o variables de control de bucle. Si se modifican
varias variables de control, cada operacin se separa de la
anterior por una coma.
Sentencias (secsent), acciones o sentencias que se
ejecutaran por cada iteracin del bucle.
27
ESTRUCTURAS CICLICAS
Codificacin en C++ Ej.:
int limite = 1;
int i;
for (i=0; i<=limite; i++)
{
cout << i << endl;
limite++;
}
Nota: Debemos asegurarnos que la expresin de
inicializacin del bucle y la expresin de incremento haran
que la condicin del bucle se convierta en falsa en algn
momento.
28
ESTRUCTURAS CICLICAS
Codificacin en C++ Ej. :
for (v = valor1; v<=valor2; v=v+paso)
{
// sentencias
}
Otra forma:
for (v1=valor1, v2=valor2; v1+v2<=100; v1++, v2++){
// sentencias
}
29
31
32
sumasf=sumasf+ptt
fin si
Escribir Empleado: ,nombre, Pago total:, ptt
Fin-Desde
Escribir El total de sueldos a pagar a los hombre es:.
sumasm, El promedio es:, sumasm/sm
Escribir El total de sueldos a pagar a las mujeres es :,
sumasf, El promedio de sueldos es: , sumasf/sf
Fin
34
Codificacin en C++:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main(void)
{ int x,pht,nht,ptt,sumasm,sumasf, sexo;
float sm,sf;
char nombre[20];
sumasm=0;
sumasf=0;
sm=0;
sf=0;
for(x=1; x<=6;x++)
{cout<<"ingrese sexo 1 varn, 2 mujer\n ";
cin>>sexo;
cout<< "ingrese nombre \n ;
cin>>nombre;
cout<<"ingrese nro. de horas trabajadas \n;
35
Continuacin:
cin>>nht;
cout<<"ingrese pago por hora trabajada\n";
cin>>pht;
ptt=nht*pht;
cout<<Nombre :<<nombre <<Gana: << ptt<< Bs.f\n\n,;
if(sexo==1)
{sm=sm+1;
sumasm=sumasm+ptt;}
else
{sf=sf+1;
sumasf=sumasf+ptt;}
}
cout<<"los HOMBRES GANAN TOTAL: <<sumasm<< Bs.
F<< ELPROMEDIO ES:<<sumasm/sm<< \n\n;
cout<<" las MUJERES GANAN TOTAL:<<sumasf<< Bs. F<<
ELPROMEDIO ES:<<sumasf/smf< \n\n;
36
}
38
ESTRUCTURAS CICLICAS
ESTRUCTURA REPETIR MIENTRAS
{Inicializacin de la variable del test de salida}
MIENTRAS Condicin HACER
INICIO
{Instrucciones de Proceso}
{Actualizacin de las variables del test de salida}
FIN
ESTRUCTURAS CICLICAS
ESTRUCTURA REPETIR MIENTRAS.
ESTRUCTURAS CICLICAS
ESTRUCTURA REPETIR MIENTRAS. Ej.: Escribir un
algoritmo que escriba los n primeros enteros positivos.
inicio {Escribir los N primeros nmeros enteros}
leer N
ESTRUCTURAS CICLICAS
DIFERENCIA DE LAS ESTRUCTURAS MIENTRAS Y
REPETIR HASTA
ESTRUCTURAS CICLICAS
Formato de codificacin en C++:Estructura while
while (<expres_bool>)
<sec_sent>;
while(expresin)
{ proposicin 1 ;
proposicin 1 ;
proposicin2;
...............
proposicin n ; }
43
ESTRUCTURAS CICLICAS
Formato de codificacin en C++:Por ejemplo, si queremos
leer una serie de enteros y encontrar su suma, parando
cuando se lea un numero negativo, podemos hacer
sum = 0;
cin >> i;
while (i >= 0)
{
sum = sum + i;
cin >> i;
}
44
while (i<=exp)
{resultado=resultado*b;
i++; }
cout<<"El Resultado
Es:"<<resultado;
getch();
}
45
#include <iostream.h>
#include <stdlib.h>
int main() {
int inumtab, i;
cout << "\n Numero de la Tabla de Multiplicar:<<endl;
cin >> inumtab;
i=1;
while (i<=10)
{cout<< inumtab <<" * "<<i<< "<<i*inumtab<<endl;
i++;
}
system("PAUSE");
return 0;
46
}
48
{mayor=N2;
menor=N1;}
49
50
#include<iostream.h>
#include<conio.h>
void main()
{clrscr();
unsigned N,r;
gotoxy(4,4);
cout<<"Ingrese Numero:";
cin>>N;
do
{ r=0;
while(N>0)
{r=r+N%10;
N=N/10;}
N=r;
}
while(r>9);
gotoxy(4,8);
cout<<"Lo Min Es:"<<r;
getch ();
}
51
52
SENTENCIA BREAK Y E
ESTRUCTURAS CICLICAS
El BREAK, sirve para terminar loops producidos por
WHILE , DO-WHILE y FOR antes que se cumpla la
condicin normal de terminacin. En el EJEMPLO siguiente
vemos su uso para terminar un WHILE indeterminado:
#include <iostream.h>
#include <conio.h>
main() { char c ;
cout<<"ESTE ES UN LOOP INDEFINIDO ;
while(1)
{ cout<< "DENTRO DEL LOOP INDEFINIDO (presiona una tecla): ;
if( (c = getch()) == 'Q' )
break;
cout<<"\nNO FUE LA TECLA CORRECTA PARA ABANDONAR EL LOOP
"; }
cout<<"\nTECLA CORRECTA : FIN DEL WHILE ; }
53
SENTENCIA BREAK Y E
ESTRUCTURAS CICLICAS
Obsrvese que la expresin while(1) SIEMPRE es cierta ,
por lo que el programa correr imparable hasta que el
operador oprima la tecla "secreta" Q . Esto se consigue en
el IF , ya que cuando c es igual al ASCII Q se ejecuta la
instruccin BREAK ,dando por finalizado el WHILE.
.
El mismo criterio podra aplicarse con el DO-WHILE con
FOR , por ejemplo haciendo
for (;;) { /* loop indefinido */
............
if( expresin ) break ; /* ruptura del loop cuando
expresin sea verdadera */ }
54
SENTENCIA CONTINUE Y
ESTRUCTURAS CICLICAS
La sentencia CONTINUE es similar al BREAK con
la diferencia que en lugar de terminar
violentamente un loop, termina con la realizacin
de una iteracin particular, permitiendo al
programa continuar con la siguiente.
55
ALGUNOS EJEMPLOS
56
Ejemplo 1:
Elaborar un programa que muestre los nmeros pares
comprendidos
entre 20 y 10 inclusive(orden descendente).
# include<iostream.h>
int main()
{int i;
cout<<"Los numeros pares entre 20 y 10 inclusive son:\n;
for(i=20;i>=10;i=i-2)
cout<<i;
return 0;
}
57
Ejemplo 2:
Mostrar la tabla de caracteres ASCII a partir del Cdigo
(el espacio en blanco) hasta el Cdigo 164 (o sea la )
32
sin incluir las minsculas (rango del 97 al 122)
# include<iostream.h>
int main()
{
int i;
cout<<"Los Caracteres ASCII son: \n;
for(i=32;i<=164;i++) {
if(i<97 || i>122)
cout<<i<<\t<<i;
}
return 0;
}
58
nmeros
comprendidos entre 21 y 27.
# include<stdio.h>
main()
{int i,m3,m7,s;
m3=0;
m7=0;
printf("Suma de los mltiplos de 3 y 7: \n");
for(i=9;i<=45;i++) {
if(i<21 || i>27) {
if (i%3 == 0) { m3 +=i;}
if (i%7 == 0) { m7 +=i;}
}}
s = m3 + m7;
cout<<"la suma es:<< s< < \n;
return 0;}
59