You are on page 1of 11

UNIVERSIDAD DON BOSCO

FACULTAD DE ESTUDIOS TECNOLGICOS


ESCUELA DE COMPUTACION
GUIA DE LABORATORIO #7
Nombre de la Practica: Uso de Estructuras Repetitivas en C/C++
Lugar de Ejecucin: Centro de Computo
CICLO: 01/ 2013
Tiempo Estimado: 2 horas y 30 minutos
MATERIA: Introduccin a la Programacin

I. OBJETIVOS

Que el estudiante sea capaz de:

Reconocer y emplear los diferentes tipos de estructuras repetitivas en C


Implementar los parmetros de una estructura FOR
Disee estructuras repetitivas anidadas
Realice la conversin apropiada entre tipos de estructuras repetitivas

II. INTRODUCCION TEORICA

Mtodos para repetir instrucciones en Lenguaje C/C++


Muchas veces dentro de algn programa, es necesario repetir varias veces un procedimiento representado por un
conjunto de instrucciones bien definidas. Para este tipo de situaciones los lenguajes de programacin brindan un
conjunto de instrucciones que se conocen con sentencias repetitivas, llamadas tambin ciclos, lazos o bucles.

Tipos de estructuras repetitivas


El lenguaje C/C++ proporciona tres tipos de sentencias repetitivas que son conocidas como ciclos:
1. f o r
2. w h i l e
3. d o - w h i l e .

Instruccin for

Un lazo f o r es una estructura de control que permite repetir un grupo de sentencias un nmero especificado de
veces. Las sintaxis de un lazo for se muestran a continuacin:

Mtodo 1: Para una sola instruccin a repetir Mtodo 2: Para repetir un bloque de instrucciones
for(expresion1; expresion2; expresion3)
for(expresion1; expresion2; expresion3) {
instruccinUnica; //instruccin1 ;
//instruccin2 ;
.
.
//instruccionN;

1 / 11
Gua #7: Uso de Estructuras Repetitivas en C/C++

La e x p r e s i n 1 , conocida como inicializacin, es una asignacin de una ms variables, en la que se establece


el valor inicial de la variable de control (contador) del ciclo, la e x p r e s i n 2 , conocida como condicin, es una
condicin de algn tipo que, mientras sea evaluada como VERDADERA, permite la ejecucin de las instrucciones
del ciclo, y e x p r e s i n 3 , conocida como incremento, es otra asignacin, en donde se realiza el incremento o
decremento de la variable de control o contador del lazo.

Todas estas expresiones contenidas en el parntesis del for deben estar separadas por (;) PUNTO Y COMA y no
por comas simples.

Si va a utilizar ms de una variable de control (dos contadores), debe separar las instrucciones de inicializacin,
de condicin y de incremento con comas. Sin embargo, la condicin puede ser, en este caso, una sola expresin
compuesta por las dos variables de control.

No es imprescindible que existan todas las expresiones dentro del


for ( ; exp2 ; exp3 ) tambin
parntesis del for. Pueden aparecer vacas algunas de ellas; o incluso,
for ( exp1 ; ; ) tambin
todas, por ejemplo: for ( ; ; )

Estas dos ltimas expresiones son interesantes desde el punto de vista de su falta de trmino relacional, lo que
implica que el programador en C deber haber previsto alguna manera alternativa de salir del lazo
(probablemente haciendo uso de las instrucciones b r e a k r e t u r n como veremos ms adelante) ya que sino, la
ejecucin del mismo se volver infinita (o tan larga como se mantenga encendida la computadora). A este tipo de
lazo o ciclo errneo se le denomina lazo o ciclo infinito.

Instruccin while

La sentencia repetitiva while es el segundo de tipo de iteraciones posibles en C. Su sintaxis podra expresarse de
las siguientes formas

Mtodo 1: Para una sola instruccin a repetir Mtodo 2: Para repetir un bloque de instrucciones

while(condicion) while(condicion)
instruccionUnica; {
//bloque de instrucciones a repetir
instruccion1;
Instruccion2;
.
.
.
instruccionN;
}

La sintaxis del lazo w h i l e expresada en palabras significa: mientras e x p r e s i o n de un resultado VERDADERO


se ejecutar el bloque de instrucciones hasta la ltima i n s t r u c c i n N del bloque.

La expresin es evaluada antes de iniciar el primer ciclo, por lo que, en caso de ser falsa esta condicin, nunca
entrara al ciclo y C continuara con el resto del programa, ignorando todo el lazo while.
Por lo general, dentro del bloque de instrucciones, se modifican variables de la expresin condicional del while,
para controlar as la duracin de la iteracin.

Introduccin a la Programacin 2
Gua #7: Uso de Estructuras Repetitivas en C/C++

Instruccin do while
Su sintaxis es la siguiente:

Mtodo 1: Para una sola instruccin a repetir Mtodo 2: Para repetir un bloque de instrucciones

do do {
instruccion Unica a repetir; //instruccion1;
while(condicion); //Instruccion2;
.
.
//instruccionN;
} while(condicion);

Expresado en palabras, esto significa que: se ejecutar el bloque de instrucciones siempre la primera vez,
independientemente del resultado de la condicin, y luego, dependiendo del resultado de la expresin
condicional colocada al final dentro del while, si esta es VERDADERO, se repetir la ejecucin del bloque de
instrucciones, de lo contrario se terminar el ciclo o lazo.

Instrucciones de control de ciclos

El lenguaje C/C++ presenta dos instrucciones para controlar la ejecucin de un ciclo/lazo, para as alterar la
ejecucin normal en cada ciclo. Estas dos instrucciones son: break y continue.

La instruccin break
Esta instruccin se utiliza para producir una salida inmediata de cualquier estructura de control, ya sea selectiva
mltiple (como el switch), o para producir la salida anticipada de un ciclo o lazo de tipo while, dowhile o for.
La ejecucin del programa contina con la primera instruccin fuera de la estructura de control suspendida.

Por ejemplo:

#include<iostream>
using namespace std;

main(){
int num;

num = 1;
while (num <= 10)
{
if (num == 5)
{
break;
};

cout<<" - "<<num;
num = num + 1;
};
cout<<endl;
system("pause");
}

Introduccin a la Programacin 3
Gua #7: Uso de Estructuras Repetitivas en C/C++

El cdigo anterior imprime:

Cuando la variable num toma el valor 5, la condicin del while se cumple, al ingresar al bloque se evala en la
estructura if si num es igual a 5 y como es verdadero se ejecuta el break saliendo del bloque while.
num termina con el dato 5 pues jams se ejecuta la suma num = num + 1.
La instruccin continue
Esta permite escapar el resto de las instrucciones del ciclo o lazo en ejecucin, pero a diferencia de la instruccin
break, lenguaje C/C++ contina con la siguiente iteracin de ese ciclo. La condicin de continuidad del ciclo se
evala nuevamente despus de ejecutar la instruccin continue, y si el resultado es VERDADERO el ciclo
contina, de lo contrario (si es FALSO) se termina.

Por ejemplo:

#include<iostream>
using namespace std;

main(){
int num;

num = 0;
while (num <= 10)
{
num = num + 1;
if (num == 5)
{
continue;
};

cout<<" - "<<num;

};
cout<<endl;
system("pause");
}

El cdigo anterior imprime en pantalla:

Como se puede observar, en la salida de datos el nmero 5 no se imprime.

Puede utilizar la instruccin continue con los ciclos while, dowhile o for.

Introduccin a la Programacin 4
Gua #7: Uso de Estructuras Repetitivas en C/C++

Conclusiones sobre las estructuras repetitivas

 El lazo f o r se suele utilizar cuando se sabe cuantas veces se repetir un bloque de instrucciones, en
cambio las 2 estructuras restantes (w h i l e ) y (d o - w h i l e ) se utilizan cuando no se conoce con exactitud
cuantas veces se repetir un bloque, sino que todo depende de una condicin a evaluar al inicio o final de
c/ciclo

 Los lazos f o r y w h i l e son similares, porque ambos pueden repetir NINGUNA, UNA o VARIAS VECES
un bloque de instrucciones. En otras palabras, podemos decir que: en lenguaje C/C++, una estructura
for es simplemente una manera abreviada de expresar una estructura while.

 Las diferencias entre un lazo f o r y un w h i l e son las siguientes:


a) En un f o r se pueden colocar 3 expresiones de control que le indican: 1. conteo inicial, 2. condicin
de paro del ciclo y 3. incremento de variable de conteo de ciclos.
b) Un w h i l e solo permite una expresin de control, la 2. condicin de paro del ciclo. El conteo
inicial hay que indicarlo ANTES DE ENTRAR AL CICLO y el incremento de la variable se debe
realizar DENTRO DEL CUERPO del lazo. De otra manera, un lazo while puede generar un lazo
infinito.

Veamos la comparacin de sus respectivas sintaxis (observe con cuidado la ubicacin de las 3 expresiones
en ambas estructuras):

Sintaxis de un lazo for La sintaxis for de la izquierda es equivalente a un


while as:

for(ex presion1;ex presion2;ex presion3) expresion1;


{
proposicin1; while(ex p re s i o n2){
proposicin2; proposicion1;
.............. proposicion2;
} ..............

expresion3
}

 La diferencia fundamental entre los lazos (w h i l e ) y (d o - w h i l e ) es que do-while se ejecuta SIEMPRE AL


MENOS una vez, sea cual sea el resultado de expresin; en cambio while puede NUNCA LLEGAR A
EJECUTARSE.

III. MATERIALES Y EQUIPO

Para la realizacin de la gua de prctica se requerir lo siguiente:

No. Requerimiento Cantidad


1 Gua de Laboratorio # 7 de IP 1
2 Compilador de C++. 1
3 Memoria USB 1

Introduccin a la Programacin 5
Gua #7: Uso de Estructuras Repetitivas en C/C++

IV. PROCEDIMIENTO

1. Cree una carpeta que tenga su nmero de carnet en Documentos para que guarde sus archivos de
ejemplos y del anlisis de resultados.

2. Ahora desarrolle los siguientes programas, teniendo cuidado de aplicar estas reglas:
 Cuide el uso de maysculas y minsculas en al redactar palabras reservadas y los nombres de
variables, ya que lenguaje C es sensible a maysculas y minsculas.
 Las lneas en negrita, redactarlas en una sola lnea, o sino generaran errores de compilacin.

3. En el ejercicio 1, ejercicio 2 y ejercicio 3 se desarrolla un programa que despliega en pantalla la tabla de


multiplicar de un nmero digitado por el usuario. El nmero a ingresar solo es permitido entre 1 a 10,
sino, se muestra un mensaje de error y termina el programa.

Ejercicio1_guia7. Uso de la estructura for

4. Digite el siguiente cdigo:

/*Programa que muestra tabla de multiplicar */


#include<iostream>
using namespace std;
#include<math.h>
#include<conio.h>

main(){
/*numero para ver su tabla multiplicar(TM)*/
int N;
/*contador usado para generar TM del N anterior */
int i;
/*valor de multiplicar contador por N */
int mul;

cout<<"VER TABLA DE MULTIPLICAR\n\n";


cout<<"Ingrese un numero entre solamente (1 y 10):\t";
cin >>N;

if((N>=1)&&(N<=10)){
cout<<"\nTabla de multiplicar del "<<N;
/*la estructura for controla la cantidad de veces que se realizara la
operacin multiplicacion*/
for(i=1;i<=10;i=i+1){
mul=N*i; //operacion multiplicacion
cout<<"\n "<<N<<" por "<<i<<" es "<<mul; //mostando la salida
}//fin for i
}else{
cout<<"\n\nError, numero incorrecto..";
}//fin if

getch();
}//fin main

5. Compile y ejecute su programa

Introduccin a la Programacin 6
Gua #7: Uso de Estructuras Repetitivas en C/C++

Ejercicio2_guia7. Uso de la estructura while

6. Digite el siguiente cdigo:

/*Programa que muestra tabla de multiplicar */


#include<iostream>
using namespace std;
#include<math.h>
#include<conio.h>

main(){
/*numero para ver su tabla multiplicar(TM)*/
int N;
/*contador usado para generar TM del N anterior */
int i;
/*valor de multiplicar contador por N */
int mul;

cout<<"VER TABLA DE MULTIPLICAR\n\n";


cout<<"Ingrese un numero entre solamente (1 y 10):\t";
cin >>N;

if((N>=1)&&(N<=10)){
cout<<"\nTabla de multiplicar del "<<N;

i=1;//inicializador del contador


/*la estructura while controla la cantidad de veces que se realizara la
operacion multiplicacion*/
while(i<=10){
mul=N*i; //operacion multiplicacion
cout<<"\n "<<N<<" por "<<i<<" es "<<mul;
i=i+1; //incremento del contador
}//fin while i
}else{
cout<<"\n\nError, numero incorrecto..";
}//fin if

getch();
}//fin main

7. Compile y ejecute su programa

Ejercicio3_guia7. Uso de la estructura do-while

8. Digite el siguiente cdigo:

/*Programa que muestra tabla de multiplicar */


#include<iostream>
using namespace std;
#include<math.h>
#include<conio.h>

main(){
/*numero para ver su tabla multiplicar(TM)*/
int N;
/*contador usado para generar TM del N anterior */

Introduccin a la Programacin 7
Gua #7: Uso de Estructuras Repetitivas en C/C++

int i;
/*valor de multiplicar contador por N */
int mul;

cout<<"VER TABLA DE MULTIPLICAR\n\n";


cout<<"Ingrese un numero entre solamente (1 y 10):\t";
cin >>N;

if((N>=1)&&(N<=10)){
cout<<"\nTabla de multiplicar del "<<N;

i=1;//inicializador del contador


/*la estructura while controla la cantidad de veces que se realizara la
operacion multiplicacion*/
do{
mul=N*i; //operacion
cout<<"\n "<<N<<" por "<<i<<" es "<<mul;
i=i+1; //incremento del contador
}while(i<=10);//fin do-while i
}else{
cout<<"\n\nError, numero incorrecto..";
}//fin if

getch();
}//fin main

9. Compile y ejecute su programa

10. En el ejercicio 4 se permite al usuario ingresar los valores necesarios para mostrar un conteo en pantalla,
los valores necesarios son: un valor inicial, un valor final y un incremento.

Por ejemplo: si tenemos los siguientes valores valor inicial de 4, un valor final de 16 y un incremento de 3,
se mostrara en pantalla:
<4> < 7> <10> < 13> <16>

Ejercicio4_guia7. Digite el siguiente cdigo:

#include <iostream>
using namespace std;
#include <conio.h>

main(){
int ni,nf;//valor inicial y final del conteo
int inc;//valor del incremento/decremento

cout<<"\tDemostracion de lazo for\n";


cout<<"\ningrese Valores (inicial y final):\n";
cin>>ni>>nf;
cout<<"digite valor de incremento/decremento:\t";
cin>>inc;

//conteo ascendente
if((ni<=nf)&&(inc>0)){ //if-1
cout<<"\n\n ahora vera su conteo ascendente:";
for( ;ni<=nf;ni=ni+inc){
cout<<"\t<"<<ni<<">";

Introduccin a la Programacin 8
Gua #7: Uso de Estructuras Repetitivas en C/C++

}//fin for
}else{

//conteo descendente
if((ni>=nf)&&(inc>0)){ //if-2
cout<<"\n\n ahora vera su conteo descendente:";
for( ;ni>=nf;ni=ni-inc){
cout<<"\t<"<<ni<<">";
}//fin for
}
else{
cout<<"\n\tError, conteo imposible";
}//fin if-2
}//fin if-1

getch();
}//fin main

Nota: en las estructuras for se omite la parte de inicializacin del contador, ya que se utiliza para este
ejercicio la variable ni como variable de control de repeticin y esta variable ya tiene un valor el cual se
digito como una entrada de datos al inicio del programa.

11. Pruebe el programa, con estos datos por ejemplo y responda en todos los casos se mostr el conteo
solicitado? Si/No, Explique:
Valor inicial: 11, Valor final: 3, decremento: 2
Valor inicial: 2, Valor final: 7, incremento: 3
Valor inicial: 9, Valor final: 5, decremento: 1
Valor inicial: 23, Valor final: 41, incremento: 5

12. En el ejercicio 5 se determina el porcentaje de hombres y mujeres que se encuentran en un grupo de


personas, suponiendo que los datos son ingresados uno a uno. Se hace uso de las estructuras while, do-
while y switch en la solucin.

Ejercicio5_guia7. Digitar el siguiente cdigo

/*Programa que determina el total de hombres y mujeres, obtenidos de


un total de empleados ingresados*/
#include <iostream>
using namespace std;
#include <conio.h>

int main(){

char entrar='s';//permite ingresar al while

//contadores varios
int totemp=0; //total empleados
int muj=0,hom=0; //total de mujeres y hombres

char genero; //caracteres validos m o h

cout<<"\t\tPROGRAMA DE ENCUESTA genero de empleados";


cout<<"\n\nPresione la tecla:\n\t\tS/s: para continuar el ingreso de datos";
cout<<"\n";

Introduccin a la Programacin 9
Gua #7: Uso de Estructuras Repetitivas en C/C++

cout<<"\n\nIngrese genero del empleado: ";

while(entrar=='s' || entrar=='S'){
cout<<"\n\t(M para mujeres\tH para hombres) :";
genero=getche();

switch(genero){
case 'm':case 'M':
muj=muj+1; // esta sentencia es igual a muj+=1
totemp++;
cout<<"\ttotal Hombres="<<hom<<" Mujeres="<<muj<<"\n";
break;
case 'h':case 'H':
hom+=1;
totemp++;
cout<<"\ttotal Hombres="<<hom<<" Mujeres="<<muj<<"\n";
break;
default:
printf("\tOpcion invalida..");
}//fin switch

//valida tecla presionada y saber si continuar o mostrar resultados


cout<<"\n\nDigite la tecla s o S para continuar introduciendo datos: ";
cin>>entrar;

}//fin while

cout<<"\n\n------------------RESULTADOS--------------------------\n";
cout<<"_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \n";
cout<<"\nEl total de empleados "<<totemp<<" , se distribuyen asi:";
cout<<"\nEl total de empleados del sexo femenino es:"<<muj;
cout<<"\nEl total de empleados del sexo masculino es:"<<hom;
cout<<"\n\n";
system("PAUSE");

return 0;
}//fin main

13. Compile y ejecute el programa

Notas:
a) Observe el uso de la funcin system (PAUSE). Esta genera una pausa en el programa, la cual finaliza
cuando usuario toca cualquier tecla y as puede continuar con la ejecucin del mismo.

b) Realice varias pruebas de ejecucin del programa, activando/desactivando la tecla


Maysculas/CapsLock.

Introduccin a la Programacin 10
Gua #7: Uso de Estructuras Repetitivas en C/C++

V. DISCUSION DE RESULTADOS

En la prctica y haciendo uso del compilador Dev-C++ debe realizar los siguientes ejercicios:

1. Elabore un programa que permita al usuario mostrarle el factorial de un numero N entero positivo, si el
usuario digita un dato incorrecto mostrarlo por medio de un mensaje.
2. Permita a un docente ingresar un total de notas, para que luego las ingrese una a una. Una nota es vlida
en el rango (0.0-10.0). Al finalizar el ingreso de todas las notas, el programa le muestra al usuario estos
resultados:
a. Porcentaje de reprobados
b. Nota promedio de los alumnos reprobados
c. Total de notas que son mayores de 7.0

VI. INVESTIGACION COMPLEMENTARIA

Realizar en parejas el cdigo fuente de cada uno de los siguientes problemas:

1. Realizar un programa que pide al usuario un nmero entero positivo, luego el programa determina e
indica si es o no PRIMO. Si no es primo, mustrele por que no es primo? Recuerde que un nmero
entero es primo cuando es divisible nicamente por el mismo y por la unidad.

Ejemplos de nmeros primos: 1, 5, 13, 37, etc. porque solo son divisible por uno y ellos mismos.
Ejemplo de nmero no primo: 42, porque adems de ser divisible por 42 y por 1, tambin es divisible por
2, divisible por 3, divisible por 6, divisible por 7, divisible por 14, y divisible por 21.

2. Realice un programa que solicite al usuario 2 nmeros enteros (que no sean negativos), luego muestre
Cual de estas 3 operaciones desea realizar el usuario? a. Multiplicacin, b. Divisin o c. Potencia.

TENGA MUY EN CUENTA estas Restricciones dentro de su cdigo fuente a crear:


No debe utilizar a la librera (math.h).
De los operadores matemticos, solamente debe usar los operadores (+) y (-), no se permite el uso
de (*) y (/); excepto al querer calcular una potencia, aqu si son permitidos los 5 operadores:+, -, *,
/, %.

Ejemplos de parejas de nmeros ingresados, operacin a realizar y el resultado de la misma:

Primer numero Segundo numero operacin Resultado esperado


4 6 multiplicacin 24
19 4 divisin 4
12 0 potencia 1
5 10 divisin 0
2 5 potencia 32

VII. BIBLIOGRAFIA

Metodologa de la Programacin: Diagramas de Flujo, Algoritmos y Programacin estructurada. Joyanes


Aguilar, Luis. No. De Clasificacin 005.1 J88 1998. Editorial: MCGRAW HILL
Cmo Programar en C/C++. Deitel, Harvey M... No. De Clasificacin 005.362 D325 1995 Editorial: PRENTICE
HALL.

Introduccin a la Programacin 11

You might also like