4° Guía De Estructuras De Control Repetitivas

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

Transcript of 4° Guía De Estructuras De Control Repetitivas

Page 1: 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;

Page 2: 4° Guía De Estructuras De Control Repetitivas

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

Page 3: 4° Guía De Estructuras De Control Repetitivas

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

Page 4: 4° Guía De Estructuras De Control Repetitivas

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

Page 5: 4° Guía De Estructuras De Control Repetitivas

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;

}

}

Page 6: 4° Guía De Estructuras De Control Repetitivas

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

Page 7: 4° Guía De Estructuras De Control Repetitivas

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

Page 8: 4° Guía De Estructuras De Control Repetitivas

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

Page 9: 4° Guía De Estructuras De Control Repetitivas

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;

}

Page 10: 4° Guía De Estructuras De Control Repetitivas

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

Page 11: 4° Guía De Estructuras De Control Repetitivas

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

Page 12: 4° Guía De Estructuras De Control Repetitivas

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;

}

}

Page 13: 4° Guía De Estructuras De Control Repetitivas

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

Page 14: 4° Guía De Estructuras De Control Repetitivas

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

Page 15: 4° Guía De Estructuras De Control Repetitivas

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