4° Guía De Estructuras De Control Repetitivas
-
Upload
jhon-fabrizio-rojas-martinez -
Category
Documents
-
view
20 -
download
4
Transcript of 4° Guía De Estructuras De Control Repetitivas
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Estructuras de control repetitivas
Cuando se requiere repetir una o varias instrucciones (sentencias) para llevar
a cabo una tarea; se cuenta en la programación con estructuras que permiten
realizar este proceso llamados también bucles, iterativas, lazos.
Las estructuras repetitivas en C++ son while y for que permiten resolver todo
problema que involucre procesos repetitivos.
Cuando se trabajan con estas estructuras se utilizan términos como:
contadores, acumuladores, forzar la salida del bucle y continuar al inicio del
bucle.
Contadores:
Son variables enteras que se incrementan (+) o decrementan (-) con un valor
constante, pej. Una variable cuyo valor se incrementa de 1 en 1 y se conoce
como variable contador.
c=c+1;
i+=2;
j--;
Acumuladores:
Variables de cualquier tipo que almacenan valores variables, pej. La variable c
cuyo valor se incrementa por el valor que va tomando otra variable llamada x.
c=c+x;
i+=c;
j-=i;
Salir del bucle
Instrucción que permite forzar la salida de un bucle, para esto el lenguaje C++
incorpora la sentencia break para realizar dicha operación.
break;
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Continuar al inicio del bucle
Es una instrucción que permite saltar al inicio del bucle para volver a
ejecutarse, para esto C++ incorpora la sentencia continue.
continue;
Sentencia While
Permite repetir una o más instrucciones mientras que la condición (expresión
lógica) sea verdadera, cuando la condición es falsa sale del bucle.
While (Exp. lógica))
{
Sentencia 1;
:
Sentencia n;
}
Mientras Exp. Lógica
Sentencia 1
Sentencia n
Fin Mientras
Expresión
lógica
Sentencia 1 Sentencia n
F
V
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Ejemplo
Obtener la suma de los primeros n números naturales
Inicio
i, n, s : Entero
Leer n
i 1
i<=n
s s+i i i+1
Escribir s
Fin
F
V
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
// Obtener la suma de los primeros n números naturales positivos. // #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //Variables int i,n,s = 0; //Entrada cout<<"Numero: "; cin>>n; //Proceso i = 1; while(i <= n){ s = s + i; i+= 1; } //Salida cout<<"\n"; cout<<"Suma: "<<s<<"\n"; system ("pause"); return 0; }
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
While anidado
Dentro de la estructura repetitiva es posible colocar una o más estructuras
repetitivas.
Exp.
lógica
Sentencia 1 Sentencia n
Exp.
lógica
F
F
V
V
Mientras Exp. Lógica
Mientras Exp. Lógica
Sentencia 1
Sentencia n
Fin Mientras
Fin Mientras
while (Exp. lógica)
{
while (Exp. lógica)
{
Sentencia 1;
Sentencia n;
}
}
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
// mostrar para los valores de i<=3, los valores de j<=4 // #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int i=1, j=1; while (i<=3) //mientras i sea menor o igual que 3 { cout << "para i=" <<i <<":"<<"\t"; while (j<=4) //mientras j sea menor o igual que 4 { cout <<"j =" <<j <<"\t"; j++; //aumentar i en una unidad } cout <<"\n"; //avanza una nueva línea i++; //aumentar i en una unidad j=1; // iniciar j de Nuevo a 1 } system ("pause"); return 0; }
Al ejecutar este programa se obtiene el siguiente resultado:
Para i = 1 j = 1 j = 2 j = 3 j = 4
Para i = 2 j = 1 j = 2 j = 3 j = 4
Para i = 3 j = 1 j = 2 j = 3 j = 4
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Este resultado demuestra que el bucle exterior se ejecute tres veces y por cada
una de estas, el bucle interior se ejecuta cuatro veces. De esta forma es como
se ejecutan los bucles anidados.
Observe también que cada vez que finaliza la ejecución de la sentencia while
interior, avanzamos a una nueva línea, incrementamos el valor de i en una
unidad e inicializamos de nuevo j al valor 1.
do While
La sentencia do ejecuta una sentencia, simple o compuesta, una o más veces
dependiendo del valor de una expresión (while).
Su sintaxis es la siguiente:
do
sentencia 1;
while (Exp. lógica) ;
Cuando se utiliza una estructura do - while el bloque de sentencias se ejecuta
al menos una vez, porque la condición se evalúa al final. En cambio, cuando se
ejecuta una estructura while puede suceder que el bloque de sentencias no se
ejecute, lo que ocurrirá siempre que la condición sea inicialmente falsa.
Ejemplo:
Realice un programa que le obligue a ingresar un número >= 0
Hacer
Sentencia 1;
Mientras Exp. Lógica
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
// Programa que obliga a ingresar un número >= 0 #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { double n ; do { cout<<"Numero:"; cin>>n ; } while (n<0); system ("pause"); return 0; }
Sentencia For
Permite repetir una o más instrucciones una cantidad de veces.
i es la variable contador donde se establece el valor inicial.
vi valor inicial
vf valor final de la variable contador
+1 valor de incremento
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Para i vi Hasta vf Inc+1
Sentencias;
Fin Para
Sentencias;
i vi
i i+1
i <=vf
V
F
for (i=vi; i<=vf; i++)
{
Sentencias;
}
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Ejemplo
Dado un rango de números enteros, obtener la cantidad de
números enteros que contiene.
Inicio
i, c, ni, nf: Entero
Leer ni, nf
ni ni+ 1
nf nf-1
c c+1
Escribir c
Fin
F
V
i ni
i <=nf
i i+1
V
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
// Dado un rango de números enteros, mostrar la cantidad de número enteros que contiene #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int i,ni,nf,c = 0; //Entrada cout<<"Num. Inicial: "; cin>>ni; cout<<"Num. Final: "; cin>>nf; //Proceso ni = ni + 1; nf = nf - 1; for(i = ni; i<=nf; i++) {
c += 1; } cout<<"\n"; cout<<"Cantidad: "<<c<<"\n"; system ("pause"); return 0; }
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
For anidado
Dentro de la estructura repetitiva es posible colocar una o más estructuras
repetitivas así como otras estructuras.
Ejemplo:
Determinar cuántos números primos hay en los primeros N números enteros
positivos.
j vi
j <=vf
j j+1
Sentencias;
F
V
i vi
i <=vf
i i+1
F
V
Para i vi Hasta vf Inc+1
Para j vi Hasta vf Inc +1
Sentencias
Fin Para
Fin Para
for (i=vi; i<=vf; i++)
{
for (j=vi; j<=vf; j++)
{
Sentencias;
}
}
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Inicio
n, c, i, j : entero flag : Lógico
Leer n
j 2
j <=i/2
j j+1
flag falso salir
F
V
i 2
i <=n
i i+1
F
flag verdadero
i Mod j=0
V
flag
c c+1
Fin
Escribe c
F
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Ejemplo:
// Determine cuántos números primos hay en los primeros n números enteros positivos. #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //Variables int n,c = 0,i,j; bool flag; //Entrada cout<<"Numero: "; cin>>n; //Proceso for(i = 2; i<=n; i++) { flag = true; for(j = 2; j <= i / 2; j ++) { if(i % j == 0) { flag = false; break; } } if(flag) { c += 1; flag = true; } } //Salida cout<<"\n"; cout<<"Cantidad: "<<c<<"\n"; system ("pause"); return 0; }
Lenguaje de Programación C++ Ing. Ana Lenny Hospinal
Ejercicios Propuestos
1. Dado un rango de números enteros obtener la cantidad de números
pares que contiene.
2. Obtener la cantidad de los primeros n números múltiplos de 5
(mediante while y for)
3. Dado un número determinar cuántos dígitos tiene
4. Dado un número entero en base 10, convertir el número a otra base
menor a 10.
5. Obtener el factorial de un número.
6. Obtener la suma de pares e impares de los primeros N números
enteros positivos.
7. Hallar cuántos múltiplos de M hay en un rango de números enteros
(debe ingresar Ni, Nf y M).