ciclos repetitivos

8
_________________________________________________________________________________________ 1 UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION CICLO: 01/ 2009 GUIA DE LABORATORIO #7 Nombre de la Practica: Uso de Estructuras Repetitivas en C/C++ Lugar de Ejecución: Centro de Computo Tiempo Estimado: 2 horas y 30 minutos MATERIA: Introducción a la Programación DOCENTES: Ing. Rene Tejada, Ing. Blanca Iris Cañas, Inga. Gloria Díaz, Tec. Arely Juárez, Tec. Marvin Martínez I. OBJETIVOS Que el estudiante: Defina ¿Cuál es la utilidad de una estructura repetitiva dentro de un programa? Desarrolle la habilidad de utilizar iteraciones dentro de programas básicos de C++. Identifique los elementos que conforman a la estructura repetitiva de C/C++: for, while, do-while II. INTRODUCCION TEORICA Muchas veces dentro de algún programa, es necesario repetir varias veces un procedimiento representado por un conjunto de instrucciones bien definidas. Para este tipo de situaciones los lenguajes de programación brindan un conjunto de instrucciones que se conocen con sentencias repetitivas, llamadas también ciclos, lazos o bucles. Tipos de estructuras repetitivas El lenguaje C/C++ proporciona tres tipos de sentencias repetitivas que son conocidas como ciclos: for, while y do-while. Las características y la sintaxis de la primera estructura (for) se estudiara a continuación. Instrucción for Un lazo for es una estructura de control que permite repetir un grupo de sentencias un número especificado de veces. Las sintaxis de un lazo for se muestran a continuación: for(expresion) //instrucción; for(expresion1; expresion2; expresion3){ //instrucción1 ; //instrucción2 ; . . . //instruccionN; } La expresión1, conocida como inicialización, es una asignación de una ó más variables, en la que se establece el valor inicial de la variable de control (contador) del ciclo, la expresión2, conocida como condición, es una relación de algún tipo que, mientras su valor sea VERDADERO, permite la ejecución de las instrucciones del ciclo, y expresión3, conocida como incremento, es otra asignación, en donde se realiza el incremento o decremento de la variable de control o contador del lazo. Todas estas expresiones, contenidas en el paréntesis del for deben estar separadas por PUNTO Y COMA y no por comas simples. Si va a utilizar más de una variable de control (dos contadores) debe separar las

Upload: checote27

Post on 24-Jun-2015

6.228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ciclos repetitivos

_________________________________________________________________________________________ 1

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS

ESCUELA DE COMPUTACION

CICLO: 01/ 2009

GUIA DE LABORATORIO #7 Nombre de la Practica: Uso de Estructuras Repetitivas en C/C++ Lugar de Ejecución: Centro de Computo

Tiempo Estimado: 2 horas y 30 minutos MATERIA: Introducción a la Programación DOCENTES: Ing. Rene Tejada, Ing. Blanca Iris Cañas, Inga. Gloria Díaz,

Tec. Arely Juárez, Tec. Marvin Martínez

I. OBJETIVOS

Que el estudiante:

• Defina ¿Cuál es la utilidad de una estructura repetitiva dentro de un programa?

• Desarrolle la habilidad de utilizar iteraciones dentro de programas básicos de C++.

• Identifique los elementos que conforman a la estructura repetitiva de C/C++: for, while, do-while

II. INTRODUCCION TEORICA

Muchas veces dentro de algún programa, es necesario repetir varias veces un procedimiento representado por un conjunto de instrucciones bien definidas. Para este tipo de situaciones los lenguajes de programación brindan un conjunto de instrucciones que se conocen con sentencias repetitivas, llamadas también ciclos, lazos o bucles.

Tipos de estructuras repetitivas El lenguaje C/C++ proporciona tres tipos de sentencias repetitivas que son conocidas como ciclos: for, while y do-while. Las características y la sintaxis de la primera estructura (for) se estudiara a continuación.

Instrucción for Un lazo for es una estructura de control que permite repetir un grupo de sentencias un número especificado de veces. Las sintaxis de un lazo for se muestran a continuación:

for ( expresion ) //instrucción;

for( expresion1; expresion2; expresion3 ){ //instrucción1 ; //instrucción2 ; . . . //instruccionN; }

La expresión1, conocida como inicialización, es una asignación de una ó más variables, en la que se establece el valor inicial de la variable de control (contador) del ciclo, la expresión2, conocida como condición, es una relación de algún tipo que, mientras su valor sea VERDADERO, permite la ejecución de las instrucciones del ciclo, y expresión3, conocida como incremento, es otra asignación, en donde se realiza el incremento o decremento de la variable de control o contador del lazo. Todas estas expresiones, contenidas en el paréntesis del for deben estar separadas por PUNTO Y COMA y no por comas simples. Si va a utilizar más de una variable de control (dos contadores) debe separar las

Page 2: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 2

instrucciones de inicialización, de condición y de incremento con comas. Sin embargo, la condición puede ser, en este caso, una sola expresión compuesta por las dos variables de control. No es imprescindible que existan todas las expresiones dentro del paréntesis del for. Pueden aparecer vacías algunas de ellas; o incluso, todas, por ejemplo: f o r ( ; e x p 2 ; e x p 3 ) ó también f o r ( e x p 1 ; ; ) ó también f o r ( ; ; )

Estas dos últimas expresiones son interesantes desde el punto de vista de su falta de término relacional, lo que implica que el programador deberá haber previsto alguna manera alternativa de salir del lazo (probablemente mediante BREAK ó RETURN como veremos más adelante) ya que sino, la ejecución del mismo es infinita (o tan larga como se mantenga encendida la computadora). A este tipo de lazo o ciclo erróneo se le denomina lazo o ciclo infinito.

Instrucción while La sentencia repetitiva while es una de las tres iteraciones posibles en C. Su sintaxis podría expresarse de las siguientes formas:

while( expresion ) //unica instruccion a repetir;

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

La sintaxis expresada en palabras significa lo siguiente: “mientras e x p r e s i ó 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”. Por lo general, dentro del bloque de instrucciones, se modifican variables de la expresión condicional del while, para controlar así la duración de la iteración.

Instrucción do – while Su sintaxis es la siguiente:

do //instruccion a repetir; while(condicion);

do { //instruccion1; //Instruccion2; . . . //instruccionN; } while( expresion );

Expresado en palabras, esto significa que: se ejecutará el bloque de instrucciones siempre la primera vez, independientemente del resultado de la condición, y luego, dependiendo del resultado de la expresión condicional colocada al final dentro del while, si esta es VERDADERO, se repetirá la ejecución del bloque de instrucciones, de lo contrario, si es FALSO, se terminará el ciclo o lazo. La diferencia fundamental entre este tipo de iteración y la anterior es que el do-while se ejecuta SIEMPRE AL MENOS una vez, sea cual sea el resultado de expresión.

Page 3: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 3

En conclusión, al comparar un lazo while con un lazo for podemos decir que: “en lenguaje C, una estructura for es simplemente una manera abreviada de expresar una estructura while”, veamos la comparación de sus respectivas sintaxis:

Sintaxis de un lazo For: la sintaxis anterior es equivalente con WHILE así:

for( expresión1;expresión2;expresion3 ){ proposición1 ; proposición2 ; .............. }

expresión1 while( expresión2 ){ proposición1 ; proposición2 ; .............. Expresión3 }

Instrucciones de control de ciclos El lenguaje C/C++ presenta dos instrucciones para controlar la ejecución de un ciclo/lazo, para así alterar la ejecución “normal” en cada ciclo. Estas dos instrucciones son: break y continue.

La instrucción break La instrucción break se utiliza para producir una salida inmediata de una estructura de control selectiva múltiple, como el switch, o para producir la salida anticipada de un ciclo o lazo de tipo while, do…while o for. La ejecución del programa continúa con la primera instrucción afuera de la estructura escapada.

La instrucción continue La instrucción continue permite escapar el resto de las instrucciones de un ciclo o lazo, pero a diferencia de la instrucción break, continúa con la siguiente iteración del ciclo. La condición de continuidad del ciclo se evalúa nuevamente después de ejecutar la instrucción continue, y si el resultado es VERDADERO el ciclo continúa, de lo contrario (si es FALSO) se termina. Puede utilizar la instrucción continue con los ciclos while, do…while o for.

III. MATERIALES Y EQUIPO

Para la realización de la guía de práctica se requerirá lo siguiente:

No. Requerimiento Cantidad 1 Guía de Laboratorio #7 de IP 1

2 Compilador de C++. 1

3 Disquete ó Memoria USB

IV. PROCEDIMIENTO

1. Cree una carpeta llamada /EjerciciosGuia7IP/ dentro de /Mis Documentos/ para que guarde sus

archivos CPP de los ejemplos y de la discusión de resultados.

2. Ahora desarrolle los siguientes programas, teniendo cuidado de aplicar estas reglas: a. Cuide el uso de mayúsculas y minúsculas en los nombres de variables, ya que lenguaje C es

sensible a mayúsculas y minúsculas. b. Líneas continuas en negrita, debe redactarlas en una sola línea, o sino generaran errores de

compilación.

Page 4: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 4

1. Nombre de programa: E1GUIA7IP Desarrolle un programa que despliegue en pantalla la tabla de multiplicar de un número específico. El número a ingresar solo es permitido entre 1 a 20, sino, muestra un mensaje de error y termina el programa. Pruebe el programa con numeros -2, 18 , 25 y 9, ¿muestra la tabla de multiplicar en todos los casos?. Usar la estructura for / / P r o g r a m a p a r a o b t e n e r l a t a b l a d e m u l t i p l i c a r d e u n n ú m e r o d a d o # i n c l u d e < i o s t r e a m > # i n c l u d e < i o m a n i p > / / p a r a t r a b a j a r c o n l a f u n c i o n s e t w u s i n g n a m e s p a c e s t d ; # i n c l u d e < s t d l i b . h > / / p a r a t r a b a j a r c o n l a f u n c i o n s y s t e m ( “ P A U S E ” ) m a i n ( ) { i n t i ; d o u b l e n u m , s u m , m u l t ; c o u t < < " \ n D e q u e n u m e r o d e s e a v e r l a t a b l a : " ; c i n > > n u m ; i f ( ( n u m > = 1 ) & & ( n u m < = 2 0 ) ) { c o u t < < " \ n T a b l a d e M u l t i p l i c a r d e l n u m e r o : " < < n u m < < e n d l ; f o r ( i = 1 ; i < = 1 0 ; i + + ) { m u l t = n u m * i ; c o u t < < " \ n " < < s e t w ( 8 ) < < n u m < < " * " < < i < < s e t w ( 3 ) < < " = " < < s e t w ( 5 ) < < m u l t < < e n d l ; } / / f i n f o r c o u t < < " \ n " ; } e l s e c o u t < < " \ n \ n E r r o r , v a l o r n o a c e p t a d o \ n " ; s y s t e m ( " P A U S E " ) ; r e t u r n 0 ; } setw() Establece el ancho de un campo de salida. system("PAUSE"); Lo que haces es poner una pausa en el programa, es decir que se espera a que el usuario presione alguna tecla para continuar con la ejecución del mismo.

2. Nombre de programa: E2GUIA7IP Determinar cuántos hombres y cuántas mujeres se encuentran en un grupo de n personas, suponiendo que los datos son extraídos alumno por alumno. Usar la estructura while. / / P r o g r a m a q u e d e t e r m i n a e l n ú m e r o t o t a l d e h o m b r e s y m u j e r e s / / o b t e n i d o d e u n t o t a l d e a l u m n o s i n g r e s a d o s a l u m n o p o r a l u m n o # i n c l u d e < i o s t r e a m > u s i n g n a m e s p a c e s t d ; # i n c l u d e < s t d l i b . h > i n t m a i n ( ) { i n t m u j = 0 , h o m = 0 , e n t r a r = 1 ; c h a r g e n e r o ; w h i l e ( e n t r a r = = 1 ) { c o u t < < " i n t r o d u z c a e l g e n e r o d e l a p e r s o n a \ n " < < " M p a r a m u j e r e s \ n " < < " H p a r a h o m b r e : " < < e n d l ; c i n > > g e n e r o ; i f ( g e n e r o = = ' M ' | | g e n e r o = = ' m ' ) m u j + = 1 ; / / e s t o e s i g u a l a m u j = m u j + 1

Page 5: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 5

e l s e i f ( g e n e r o = = ' H ' | | g e n e r o = = ' h ' ) h o m + = 1 ; e l s e c o u t < < " O p c i o n i n v a l i d a . " < < e n d l ; c o u t < < " D e s e a c o n t i n u a r ? ( i n t r o d u z c a 1 p a r a s e g u i r / 0 p a r a t e r m i n a r ) : \ n " < < e n d l ; c i n > > e n t r a r ; } c o u t < < " \ n R E S U L T A D O S \ n " < < " _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ n " < < " E l n u m e r o d e h o m b r e s e s : " < < h o m < < " \ n " < < " E l n u m e r o d e m u j e r e s e s : " < < m u j < < " \ n " < < e n d l ; s y s t e m ( " P A U S E " ) ; r e t u r n 0 ; }

3. Nombre de programa: E3GUIA7IP Crear un programa que calcule el área de un triangulo, esta solo se debe calcular con datos correctos es decir entrada de datos mayores que cero. Usar la estructura do - while. # i n c l u d e < i o s t r e a m > u s i n g n a m e s p a c e s t d ; # i n c l u d e < c o n i o . h > i n t m a i n ( ) { f l o a t b a s e , a l t u r a , a r e a ; c o u t < < " D e t e r m i n a r e l a r e a d e u n t r i a n g u l o d a d a l a b a s e y a l t u r a \ n \ n " ; d o { c o u t < < " D i g i t e l a b a s e : " ; c i n > > b a s e ; } w h i l e ( b a s e < = 0 ) ; d o { c o u t < < " D i g i t e a l t u r a : " ; c i n > > a l t u r a ; } w h i l e ( a l t u r a < = 0 ) ; a r e a = b a s e * a l t u r a / 2 ; c o u t < < " \ n E l a r e a d e l t r i a n g u l o e s : " < < a r e a ; g e t c h ( ) ; r e t u r n 0 ; }

4. Nombre de programa: E4GUIA7IP Crear un programa que tenga el siguiente menú:

a. Numero primo b. Numero par e impar c. Salir.

El menú debe estar activo hasta que el usuario escoja la opción Salir, debe utilizar una estructura do – while # i n c l u d e < i o s t r e a m > u s i n g n a m e s p a c e s t d ; # i n c l u d e < s t d l i b . h > m a i n ( ) {

Page 6: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 6

c h a r o p ; i n t n u m , p r i m o = 0 , i ; d o { s y s t e m ( " C L S " ) ; / / l i m p i a l a p a n t a l l a y v u e l v e a i m p r i m i r e l m e n u c o u t < < e n d l < < e n d l ; c o u t < < " * * * * * * * M E N U * * * * * * * * * * * * * * * " < < e n d l ; c o u t < < " a . N u m e r o p r i m o " < < e n d l ; c o u t < < " b . N u m e r o P a r e i m p a r " < < e n d l ; c o u t < < " c . S a l i r " < < e n d l ; c o u t < < " D i g i t e u n a o p c i o n d e l m e n u : " ; c i n > > o p ; s w i t c h ( o p ) { c a s e ' a ' : c a s e ' A ' : c o u t < < e n d l ; c o u t < < e n d l < < " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " ; c o u t < < e n d l < < " * C a l c u l a n d o s i u n n u m e r o e s p r i m o o n o * " ; c o u t < < e n d l < < " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " ; c o u t < < e n d l < < e n d l < < " D i g i t e u n n u m e r o e n t e r o : " ; c i n > > n u m ; i f ( n u m > 0 ) { f o r ( i = 1 ; i < = n u m ; i + + ) { i f ( n u m % i = = 0 ) p r i m o + + ; } i f ( p r i m o = = 2 ) / / e v a l u a n d o c o n t a d o r s i e s i g u a l a 2 c o u t < < e n d l < < " E l n u m e r o e s p r i m o " ; e l s e c o u t < < e n d l < < " E l n u m e r o n o e s p r i m o " ; } e l s e c o u t < < e n d l < < " E r r o r ! ! ! ! . E l n u m e r o e s n e g a t i v o o c e r o " ; b r e a k ; c a s e ' b ' : c a s e ' B ' : c o u t < < e n d l ; c o u t < < e n d l < < " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " ; c o u t < < e n d l < < " * C a l c u l a n d o s i u n n u m e r o e s p a r o i m p a r * " ; c o u t < < e n d l < < " * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * " ; c o u t < < e n d l < < e n d l < < " D i g i t e u n n u m e r o e n t e r o : " ; c i n > > n u m ; i f ( n u m % 2 = = 0 ) / / u t i l i z a n d o e l o p e r a d o r m o d ( % ) c o u t < < e n d l < < " E l n u m e r o " < < n u m < < " e s p a r " ; e l s e c o u t < < e n d l < < " E l n u m e r o " < < n u m < < " e s i m p a r " ; b r e a k ; c a s e ' c ' : c a s e ' C ' : c o u t < < e n d l < < " S a l i e n d o d e l p r o g r a m a , g r a c i a s p o r u t i l i z a r l o : ) " ; b r e a k ; d e f a u l t : c o u t < < e n d l < < " O p c i o n n o v a l i d a , i n t e n t e d e n u e v o : ( " ; b r e a k ; } / / f i n s w i t c h c o u t < < e n d l ; s y s t e m ( " P A U S E " ) ; } w h i l e ( o p ! = ' c ' & & o p ! = ' C ' ) ; } / / f i n m a i n

Page 7: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 7

V. DISCUSION DE RESULTADOS

1. Crear un programa que tenga el siguiente menú:

+. SUMA -. RESTA *. MULTIPLICACION /. DIVISION $. SALIR

El usuario debe escoger una opción digitando cualquier operador matemático (+, - , * y /), el menú debe estar activo hasta que el usuario escoja la opción SALIR o el símbolo $.

2. Desarrolle un programa que le permita obtener el factorial de un número entero positivo ingresado

por el usuario.

VI. INVESTIGACION COMPLEMENTARIA

1. Realizar un programa que pide al usuario un número entero (debe de ser mayor de 1), este numero se

va a utilizar para imprimir esa cantidad de números primos.

Recuerde: Un número primo es divisible únicamente por el mismo y por la unidad. Son ejemplos: 2, 3, 5, 7...

Por ejemplo: Digite un número entero: 9 Números primos son: 2, 3, 5, 7, 11, 13, 17, 19, 23

2. Realice un programa que solicite al usuario la base y la potencia a la que hay que elevarlo. El

programa no debe utilizar ninguna de las funciones matemáticas de la biblioteca de C/C++. Usted debe implementar la operación de potencia utilizando únicamente estructuras repetitivas for. La base puede ser un número con punto flotante y el exponente puede ser un número entero positivo o negativo, e incluso cero.

3. Haga un programa que genere un menú para calcular el área de diferentes cuerpos. El usuario puede

elegir calcular el volumen de: 1. Esfera, 2.Cubo, 3. Cilindro, 4. Cono o sino 5. Salir. El usuario ingresa opción (1 hasta 4), y el programa le pide los datos necesarios, hace el cálculo del volumen solicitado y le muestra la respuesta. El menú debe estar activo para que el usuario pueda escoger otro cuerpo geométrico.

VII. BIBLIOGRAFIA

•••• Metodología de la Programación: Diagramas de Flujo, Algoritmos y Programación estructurada. Joyanes Aguilar, Luis. No. De Clasificación 005.1 J88 1998. Editorial: MCGRAW HILL

•••• Cómo Programar en C/C++. Deitel, Harvey M... No. De Clasificación 005.362 D325 1995 Editorial: PRENTICE HALL

Page 8: ciclos repetitivos

Guía 7. Uso de Estructuras Repetitivas en C/C++

_____________________________________________________________________________________________ 8

Hoja de evaluación Guía #7 Fecha: ____________________ Nombre del alumno: ___________________________________________________ Carné: ___________________ Firma: ________________________ Nombre y firma del docente: ______________________________________________ GL: ________ GT: ________ I. Evaluación del contenido practico Objetivos a evaluar: Que el estudiante:

• Defina ¿Cuál es la utilidad de una estructura repetitiva dentro de un programa?

• Desarrolle la habilidad de utilizar iteraciones dentro de programas básicos de C++.

• Identifique los elementos que conforman a la estructura repetitiva de C/C++: for, while, do-while

Criterios SI NO 1. Identifica las estructuras repetitivas y su sintaxis vistas en clases

2. Es correcto el uso de la(s) estructura(s) repetitiva(s) aplicadas en el ejercicio de la discusión de resultados

3. Mostró los datos correctos el programa

4. Entrego el trabajo a tiempo

II. Evaluación general ¿Cómo realiza el trabajo asignado?

Excelente Muy Bien Bueno Regular

¿Necesita ayuda del instructor?

Ninguna Un poco Varias Veces Siempre

III. Evaluación de actitudes

Criterios Excelente Muy Bueno

Bueno Regular

1. Puntualidad

2. Participación

3. Cooperación