TECNOLÓGICO DE ESTUDIOS SUPERIORES DE ECATEPEC DIVISIÓN DE INGENIERÍA ELECTRÓNICA Y TELEMÁTICA PRÁCTICAS DE LABORATORIO PROGRAMACION II REALIZÓ: MIGUEL ANGEL ALVARADO CRUZ SEPTIEMBRE 2009. PRESENT ACIÓ N E l p re se n t e ma n u a l d e p rá ct ica s f u e re a liza d o , p a ra la a sig n a t u ra d e Programación II, el cual, intenta proporcionar a los docentes y estudiantes un material de apoyo que facilite el proceso en señanzaaprendizaje, a través del trabajo en el laboratorio, reforzando de esta manera, la teoría mostrada en el salón de clases. Las prácticas de este manual, son presentadas para que el estudiante logre un aprendizaje signif icativo, debido a que están diseñadas de f orma que el docente actúe como guía y el dicente participe activamente, haciendo experimentos y al mis mo tiempo aprendiendo por descubrimiento. Dicho lo anterior, se justifica el brind ar a los alumnos un manual que los encamine a la aplicació n de los conceptos teóricos, permit iendo prof undizar más en los casos prácticos. 2 ÍNDICE PRÁCTICA 1. Arreglos bidimensionales. 4 PRÁCTICA 2. Apuntadores. 10 PRÁCTICA 3. Funciones. 14 PRÁCTICA 4. Apuntadores con funciones. 19 PRÁCTICA 5. Estructuras. 24 PRÁCTICA 6. Estructuras con funciones y apuntadores. 30 3 PRACTICA 1 ARREGLOS BIDIMENSIONALES I.OBJETIVO Al termino de la practica el alumno conocerá una estructura anidada, la estructura de control if_else y el uso de comparaciones compuestas. II.MATERIAL Y EQUIPO a) Equipo de computo CPU Monitor Teclado Marca___________Mod_________N.S._________ Marca___________Mod________ _N.S__________ Marca___________Mod_________N.S__________ III. INTRODUCCION TEORICA En los programas que se han realizado hasta ahora, cada instrucción que aparecía en el programa se ejecutaba s olo una vez, pero muchos programas requieren que algún grupo de instrucciones se ejecuten repetidamente, hasta que se satisfaga una condición lógica. A estas estructuras se les denomina como bucles. A veces no se sabe con exactitud, por adelantado, el número de veces que se deben de repetir las instrucciones, si no que se repite la ejecución hasta que alguna condición lógica se hace cierta. Otras veces un grupo de instrucciones consecutivas se repite un cierto número especificado de veces, y esto es otra fo rma de bucle. Muchos programas requieren que se realice una comprobación lógica ( o test ) en algún punto concreto dentro de ellos. Se realizara a continuación alguna acción que dependerá del resultado de la comprobación lógica. Esto se conoce como ejecuci ón condicional. Y finalmente existe una clase especial de ejecución condicional en la que un grupo de sentencias es seleccionado entre varios grupos disponibles. A esto se le llama a veces selección. Todas estas operaciones se pueden realizar utilizando di versas sentencias de control incluidas en C y que veremos en las siguientes prácticas. 4 Antes de hablar de estas sentencias de conceptos necesarios. control, revisemos algunos Primero vamos a formar expre si ones l ógicas que bien pueden ser ciertas o falsas, para lo cual utilizaremos los cuatro operadores relacionales y los dos operadores de igualdad. (Anótal os en las siguientes líneas con nombre y símbolo) a)________________________ b)_____________________ ___ c)________________________ d)________________________ e)________________________ f)_________________________ 5 Además de seis operadores, C tiene dos conectivas lógicas (también conoci dos como operadores lógicos), &&(Y) y ||(O), y el operador monario de negación(!). Las conectivas lógicas se usan para com binar expresiones lógicas, formándose así expresiones complejas. El operador de negación se utiliza para invertir el v alor de una expresi ón lógica (por ejemplo de verdadero a falso). Otro operador que también se utiliza es el operador condicional (?:)que también hace uso de una expresión cierta o falsa, este operador es equivalente a la estructura simple if -Then else que veremos más adelante. Es conveniente recordar que en C existen tres tipos de sentenci as: a) De expresión.- consiste en una expresi ón seguida de punto y coma. b) Sentencias compuestas. - consiste en una secuencia de dos o más sentencias consecutivas encerradas entre llaves { y }, las sentencias dentro de las llaves pueden ser sentencias de expresi ón, otras sentencias compuestas o sentencias de control. c) Sentencias de control. - que como ya diji mos incluyen una prueba o comprobación para seg uir alguno de los caminos, la mayoría de las sentencias de control contienen sentencias de expresi ón o sentencias compuestas (o ambas). IV. DESARROLLO EL ALUMN O SEGUIRA LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO LOS PASOS QUE SIGA : 1.- Trabaje con la computadora. Vea las ayudas para if_else. 2.- Teclee el siguiente programa #include <stdio.h> #include <math.h> #include <conio. h> float funci onf (float *fx); /*Despues de declarar las librerias, se declaranlas funciones junto con el argum ento de cada funci ón , que en este casovan hacer los apuntadores hacia donde se dirige el contenido de las variables*/ 6 float funci ong (float *gx); float funci onz (float *zx); void main (void) { float k,fun1,fun2,fun3; /*declaramos vari ables globales*/ printf("\ tLos datos obtenidos son l os sig uientes: \t\ n"); printf("\ t f(x) g(x) z(x)\t\ n"); for(k=0; k<3. 5;k= k + 0.2) { fun1 = función (&k); /*En esta parte del programa se están llamando a las funciones en el cual el arg umento de cada una de ella es el contenido de la dirección de la variable donde estamos introduciendo la información, el retorno de los datos de cada función se almacenara en la variable correspondiente*/ fun2 = función (&k); fun3 = función (&k); printf("fun1(%.3f)= %.3f \ t",k,fun1); /*En esta parte se imprimen los resultados finales con tres decimales*/ printf("fun2(%.3f)= %.3f \ t",k,fun2); printf("fun3(%.3f)= %.3f \ t",k,fun3); printf("\n"); } getch (); 7 } /*A partir de este momento se empiezan a crear cada una de las funciones antes declaradas*/ float funcionf (float *fx) { float a; a=3*(exp(*fx))- 2 * *fx; return a; /* aquí regresaremos el resultado de la ecuación*/ } float funciong (fl oat *gx) { float b; b= -*gx * sin (*gx) + 1. 5; return b; /*aquí regresaremos el resultado de la ecuación*/ } float funcionz (float *zx) { float c; c=(*zx)*(*zx)*(*zx) -2 * (*zx) + 1; return c; /*aquí regresaremos el resultado de la ecuación*/ } /*fin del programa*/ 8 MATERIAL Y EQUIPO Equipo de com puto-Observaci ones. CPU: MONITOR: TECLA DO: V. CUESTIONARIO (TRABAJ O C OMPLEMEN TARIO) 1. Dado el programa anterior, además de editarlo, debe guardarlo, compilarlo y ejecutarlo. Describa: a) los errores que obtuvo (en caso de haberlos). b) el desplegado obtenido. 2. Marque en el programa donde comienza y donde termina n las estructuras de control utilizadas. 3. ¿Cuál es la funcionalidad de la estructura if_else? VI. CONCLUSION ES Y OBSERVACIONES 9 PRACTICA 2 APUNTADORES I.OBJETIVO Al término de la práctica control if else y switch. comandos de pantalla (textbackground) y el color el alumno conocerá las estructuras de Además aprenderá el manejo de los para cambiar el color del fondo del texto (textcolor). II.MATERIAL Y EQUIPO a) Equipo de computo CPU Monitor Teclado Marca___________Mod_________N.S._________ Marca___________Mod________ _N.S__________ Marca___________Mod_________N.S__________ III. INTRODUCCION TEORICA En la presente práctica hablaremos específicamente de las sentencias de control switch. Esta sentencia se utiliza para seleccionar un grupo de sentencias entre varios grupos disponibles . La selección se basa en el valor de una expresión que se incluye en la sentencia switch. La forma general de la sentencia switch es: switch(expresión)sentencia En donde expresión debe ir entre paréntesis, como se indica y devuelve el número entero, expresión también puede ser de tipo carácter (de tipo char), ya que los caracteres individuales tienen valores enteros. La sentencia incluida es generalmente una sentencia compuesta que especifica opciones posibles a seguir. Cada opción se expresa como un grupo de una o más sentencias individuales dentro de la sentencia global incluida. Para cada opción, la primera sentencia dentro del grupo debe se r precedida por una o más etiquetas case. Las etiquetas case identifican los diferentes grupos de sentencias(las distintas opciones)y distinguen unas de otras. Las etiquetas case deben ser, por tanto, únicas dentro de un a sentencia switch dada. 10 Cada grupo de sentencias se escribe de forma general: Case expresión: Sentencia1 Sentencia2 . . Sentencia n O en el caso de varias etiquetas case: case expresión 1: case expresión 2: . . Case expresión m; Sentencia 1 Sentencia2 . . Sentencia n En donde expresión 1, expresi ón 2,……expresión m representan expresiones constantes de val ores enteros. Norm almente, cada una de estas expresiones se escribirá como constante entera o como constante de carácter. Cada sentencia individual que sigue a las etiquetas case puede ser simple o com puesta. IV. DESARROLLO EL ALUMN O SEGUIRA LA SECUENCIA INDICADA, DESCRIBIE NDO EN CADA INCISO LOS PASOS QUE SIGA : 1.- Trabaje con la computadora. Vea las ayudas para if_else. 11 2.- Teclee el siguiente programa #include <conio. h> int factorial (int dato); main () { int a,v alor; clrscr (); printf("\ t\ tPROGRA MA QUE CALCULA EL FACTORIAL DE UN NUMERO\t\ t"); printf("\ n\n"); printf("I ntroduce el numero al que le deseas calcular el factorial \n\ n"); scanf("%d",&valor); a=factorial (val or); printf("\ n\nEl valor factorial de %d es: %d",valor,a); getch (); return 0; } int factorial (int dato) { int ef.; printf ("\nVariable acumulativa dato: %d \n",dato); if (dato == 0) { return 1; 12 } else { f=dato; for (i=dato -1 ; i>=2 ; i--) { f=f*i; printf ("Variable acumulativa dato: %d \n",f); } return f; } } MATERIAL Y EQUIPO Equipo de com puto-Observaci ones. CPU: MONITOR: TECLA DO: V. CUESTIONARIO (TRABAJ O C OMPLEMEN TARIO) 1. Dado el programa anterior, además de editarlo, debe guardarlo, compilarlo y ejecutarlo. Describa: a) los errores que obtuvo (en caso de haberlos). b) el desplegado obtenido. 2. Marque en el programa donde comienza y donde termina el switch. 3. ¿Cuál es la funcionalidad de la estructura switch? VI. CONCLUSION ES Y OBSERVACIONES 13 PRACTICA 3 FUNCIONES I.OBJETIVO Al término de la práctica el alumno podrá manejar la estructura de control while, entenderá los bucles (loops) usados en programación. Además comprenderá los conceptos acumulador y contador. II.MATERIAL Y EQUIPO a) Equipo de computo CPU Monitor Teclado Marca___________Mod_________N.S._________ Marca___________Mod________ _N.S__________ Marca___________Mod_________N.S__________ III. INTRODUCCION TEORICA En la presente práctica hablaremos de la sentencia de control while. Esta sentencia se utiliza para generar bucles(lazos o loops). Recordemos aquí que en prácticas anteriores mencionamos que hay programas donde se hace necesario que se ejecute un grupo de instrucciones repetidamente hasta que se cumpla una condición lógica, o como en el caso de la presente sentencia de control mien tras que se cumpla la condición lógica. A veces no se conoce el número de ejecuciones que se va a realizar, sino que está en función del cumplimiento de la condición lógica. La forma general de la sentencia while es: While (expresión) sentencia En donde expresión debe ir entre paréntesis, como se indica y es frecuentemente una expresión lógica que puede ser cierta o falsa (recuerde que cierto corresponde a un valor no nulo, falso corresponde a cero). La sentencia incluida puede ser simple o compuesta que se ejecutara repetitivamente, mientras que el valor de la expresión sea cero (que sea cierta). Debe incluir algún elemento que altere el valor de expresión, proporcionado así la condición de salida del bucle. La variable de control de la estructura puede ser de tipo entero, carácter o punto flotante, esta 14 estructura de c ontrol es la que se considera más versátil pues tiene varias formas de aplicación, es decir, puede ser controlada por contador, por centinela por repetici ones a voluntad y adicionalmente se aplica en la lectura de archivos de datos. IV. DESARROLLO EL ALUMN O SEGUIRA LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO LOS PASOS QUE SIGA : 1.- Trabaje con la computadora. Busque l as ayudas relacionadas a while. 2.- Teclee el siguiente programa #include<stdi o.h> #include<conio.h> #include<stdlib.h> #include<math.h> void main(void) { float b,*b1,*h1,h,a,*a1,*bas,ba,*hal,ha,*are,ar,*l1,l,*cuadrado,cua,*base1,bas e,*base4,base3,*h3,h2,*res,r,radio,*radi o1,*radi o3,radi o2,op; printf("*****MENU DE OPCIONES*****"); printf("\n1.-CALCULAR EL AREA DE UN TRIANGULO RECT ANGULO"); printf("\n2.-CALCULAR EL AREA DE UN TRIANGULO ISOSELES"); printf("\n3.-CALCULAR EL AREA DE UN C UADRADO"); printf("\n4.-CALCULAR EL AREA DE UN TRAPECIO"); printf("\n5.-CALCULAR EL AREA DE UN CI RCULO"); printf("\n6.-SALIR"); printf("\nELIGE LA OPCION QU E N ECESI TES....."); 15 scanf("%f",&op); if(op==1) { printf("Dame el v alor de la base:...."); scanf("%f",&b); b1=&b; printf("Dame el v alor de la al tura:..."); scanf("%f",&h); h1=&h; a=(*b1)*(*h1)/2; a1=&a; printf("el resultado es: =%. 1f unidades cuadradas",*a1); } else if(op==2) { printf("Dame el v alor de la base:...."); scanf("%f",&ba); bas=&ba; printf("Dame el v alor de la al tura:..."); scanf("%f",&ha); hal=&ha; ar=(*bas)*(*hal)/2; are=&ar; printf("el resultado es: =%. 1f",*are ); } else if(op==3) 16 { printf("Dame el v alor de un lado:...."); scanf("%f",&l); l1=&l ; cua=pow(*l1,2); cuadrado=&cua; printf("el resultado es: =%. 1funidades cuadradas",*cuadrado); } else if(op==4) { printf("Dame el v alor de la base:...."); scanf("%f",&base); base1=&base; printf("Dame el v alor del lado paralelo a la base:... "); scanf("%f",&base3); base4=&base3; printf("Dame el v alor de la al tura:..."); scanf("%f",&h2); h3=&h2; r=((*base1+*base4)/2)*(*h3); res=&r; printf("el resultado e s:=%.1funidades cuadradas",*res); } else if(op==5) { printf("Dame el v alor del radio:...."); 17 scanf("%f",&radio); radi o1=&radi o; radi o2=M_PI*pow(*radio1,2); radi o3=&radi o2; printf("el resultado es: =%. 1funidades cuadradas",*radio3); } else exit(0); getch(); } MATERIAL Y EQUIPO Equipo de com puto-Observaci ones. CPU: MONITOR: TECLA DO: V. CUESTIONARIO (TRABAJ O C OMPLEMEN TARIO) 1. Dado el programa anterior, además de editarlo, debe guardarlo, compilarlo y ejecutarlo. Describa: a) los errores que obtuvo (en caso de haberlos). b) el desplegado obtenido. 2. Marque en el programa donde comienza y donde terminan las estructuras de control. 3. ¿Cuál es la funcionalidad de la estructura while? VI. CONCLUSION ES Y OBSERVACIONES 18 PRACTICA 4 APUNTADORES CON FUNCIONES I.OBJETIVO Al termino de la practica el alumno podrá manejar la estructura de control do-while y entenderá la diferencia de usos entre esta y la proposición while. Además repasara los conceptos acumulador y contador. II.MATERIAL Y EQUIPO a) Equipo de computo CPU Monitor Teclado Marca___________Mod_________N.S._________ Marca___________Mod________ _N.S__________ Marca___________Mod_________N.S__________ III. INTRODUCCION TEORICA En la presente práctica hablaremos de la sentencia de control do-while. Esta estructura de control tiene las características de que al menos una vez repite las sentencias a controlar, independientemente del resultado de expresión (condición) e n la primera vez que se evalué. Las veces siguientes dependerá del estado de la condición. A diferencia de while donde la verificación se realiza al principio de la estructura, en do -while es al final de la estructura. La forma general de la sentencia do-while es: Do sentencia;While (condición); En donde condición debe ir entre paréntesis, y ahora a diferencia del while debemos usar punto y coma después de while como se indica y es frecuentemente una expresión lógica que puede ser cierta o falsa. La sentencia incluida como ya hemos visto puede ser una sen tencia simple o compuesta que se ejecutara pues tiene varias formas de aplicación, es decir, puede ser controlada por contador, por centinela, por repeticiones a voluntad y adicionalmente se aplica en la lectura de archivos de datos. Para poder ver las semejanzas y diferencias entre las dos estructuras usaremos el mismo programa de la practica 9, con algunas variantes. Usaremos una vez más el contador y el acumulador. 19 IV. DESARROLLO EL ALUMN O SEGUIRA LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO LOS PASOS QUE SIGA : 1.- Trabaje con la computadora. Busque l as ayudas relacionadas a while. 2.- Teclee el siguiente programa #include<stdi o.h> #include<conio.h> #include<stdlib.h> #include<math.h> void main(void) { float b,*b1,*h1,h,a,*a1,*bas,ba,*hal,ha,*are,ar,*l1,l,*cuadrado,cua,*base1,bas e,*base4,base3,*h3,h2,*res,r,radio,*radi o1,*radi o3,radi o2,op; do{ printf("*****MENU DE OPCIONES*****"); printf("\n1.-CALCULAR EL AREA DE UN TRIANGULO RECTANGULO"); printf("\n2.-CALCULAR EL AREA DE UN TRIANGULO ISOSELES"); printf("\n3.-CALCULAR EL AREA DE UN C UADRADO"); printf("\n4.-CALCULAR EL AREA DE UN TRAPECIO"); printf("\n5.-CALCULAR EL AREA DE UN CI RCULO"); printf("\n6.-SALIR"); printf("\nELIGE LA OPCION QU E N ECESI TES....."); scanf("%f",&op); } While{ 20 if(op==1) { printf("Dame el v alor de la base:...."); scanf("%f",&b); b1=&b; printf("Dame el v alor de la al tura:..."); scanf("%f",&h); h1=&h; a=(*b1)*(*h1)/2; a1= &a; printf("el resultado es: =%. 1f unidades cuadradas",*a1); } else if(op==2) { printf("Dame el v alor de la base:...."); scanf("%f",&ba); bas=&ba; printf("Dame el v alor de la al tura:..."); scanf("%f",&ha); hal=&ha; ar=(*bas)*(*hal)/2; are=&ar; printf("el resultado es: =%. 1f",*are); }} else if(op==3) { 21 printf("Dame el v alor de un lado:...."); scanf("%f",&l); l1=&l ; cua=pow(*l1,2); cuadrado=&cua; printf("el resultado es: =%. 1funidades cuadradas",*cuadrado); } else if(op==4) { printf("Dame el v alor de la base:...."); scanf("%f",&base); base1=&base; printf("Dame el v alor del lado paralelo a la base:... "); scanf("%f",&base3); base4=&base3; printf("Dame el v alor de la al tura:..."); scanf("%f",&h2); h3=&h2; r=((*base1+*base4)/2)*(* h3); res=&r; printf("el resultado es:=%.1funidades cuadradas",*res); } else if(op==5) { printf("Dame el v alor del radio:...."); scanf("%f",&radio); 22 radi o1=&radi o; radi o2=M_PI*pow(*radio1,2); radi o3=&radi o2; printf("el resultado es: =%. 1funidades cuadradas",*radio3); } else exit(0); getch(); } MATERIAL Y EQUIPO Equipo de com puto-Observaci ones. CPU: MONITOR: TECLA DO: V. CUESTIONARIO (TRABAJ O C OMPLEMEN TARIO) 1. Dado el programa anterior, además de editarlo, debe guardarlo, compilarlo y ejecutarlo. Describa: a) los errores que obtuvo (en caso de haberlos). b) el desplegado obtenido. 2. Marque en el programa estructuras de control. donde 3. ¿Cuál es la funcionalidad de diferencia entre esta y while. la VI. CONCLUSION ES Y OBSERVACIONES 23 comienza y donde terminan estructura do -while? Marque las la PRACTICA 5 ESTRUCTURAS I.OBJETIVO Al termino de la practica el alumno podrá manejar la estructura de control for, y entenderá la diferencia de usos entre esta y la s proposiciones while y do while. Comenzara a manejar más conceptos sobre bucles. II.MATERIAL Y EQUIPO a) Equipo de computo CPU Monitor Teclado Marca___________Mod_________N.S._________ Marca___________Mod________ _N.S__________ Marca___________Mod_________N.S__________ III. INTRODUCCION TEORICA En la presente práctica hablaremos de la sentencia de control for. Es la estructura de control más utilizada para crear bucles en C. Incluye una sentencia inicial que especifica el valor inicial de un índice, otra expresión que determina cuando se continua o no el bucle y una tercera expresión que permite q ue el índice se modifique al final de cada pasada . El formato general para implementar el bucle for es: for(inicialización; condición; incrementó) sentencia; Inicialización es una sentencia de asignación que nos sirve como variable de control del bucle. Co ndición es una expresión que nos indica la condición que debe cumplirse para que continúe el bucle e incremento define como va cambiando el valor de la variable de control cada vez que se repite el bucle. Sentencia es el conjunto de proposiciones que se v an a realizar en cada uno de los bucles. Una de las principales características del for es que la condición se evalúa al principio del ciclo. Por esto, el código dentro del bucle no será ejecutado si la condición es falsa al comienzo. Por ejemplo: for(i=0,4; i*j<4; i++, j--) { 24 } En este caso, estamos ini cializando a I y a j dentro del bucle. Al mismo tiempo, en la sección de incremento, aumentam os a i y disminuimos el valor a j. Esto es completame nte valido. Bucle Infinito. - Es aquel que no tiene fin. En este tipo de ci clos, no necesi tamos especificar ninguna de las tres proposiciones que constituyen a la sentencia for, ejemplo: For(;;) pri ntf(“Bucle i nfinito”); O basta dejar la de la condición vac ia como se muestra a continuación: For(x=0;;x++) printf(“Bucle infinito”); La forma de rom per un bucle infinito es mediante la sentencia break. Cuando se encuentra esta proposici ón dentro de un ci clo, trunca el bucle y se procede a ejecutar el código que s e encuentra inmediatamente después de él. Main() { For(;;) { Printf(“numero:”); Scanf(“%d”,&x); If(x==9) break; } Printf(“tecleaste %d numerous antes de romper el ciclo”,x); } El bucle anterior se repite hasta que se teclea el numero 9 y después se imprime en pantalla la cantidad de veces que se pulso un numero antes de romper el ciclo. Bucle sin cuerpo. - Según la sintaxis de C, existen las sentencias vacías, por tanto, se puede tener un bucle for o cualquier otro, que no tenga 25 cuerpo. Este tipo de ci clos s e ejecución del programa. usan regularmente para retardar la IV. DESARROLLO EL ALUMN O SEGUIRA LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO LOS PASOS QUE SIGA : 1.- Trabaje con la computadora. Busque l as ayudas relacionadas a for. 2.- Teclee el siguiente programa #include <stdio.h> #include <math.h> #include <conio. h> float funci onf (float *fx); /*Después de declarar las librerías, se declaran las funciones jun to con el argumento de cada función, que en este caso van hacer los apuntadore s hacia donde se dirige el contenido de las variables*/ float funci ong (float *gx); float funci onz (float *zx); void main (void) { float k,fun1,fun2,fun3; /*declaram os v ariables globales*/ printf("\ tLos datos obtenidos son los siguientes:\ t\n"); printf("\ t f(x) g(x) 26 z(x)\t\ n"); for(k=0; k<3. 5;k= k + 0.2) { fun1 = funcionf(&k); /*En esta parte del programa se están llamando a las funciones en el cual el arg umento de cada una de ellas es el contenido de la dirección de la variable do nde estamos introduciendo la información, el retorno de los datos de cada función se almacenara en la variable correspondiente*/ fun2 = funciong(&k); fun3 = funcionz(&k); printf("fun1(%.3f)= %.3f \ t",k,fun1); /*En esta parte se imprimen los resultados finales con tres decimales*/ printf("fun2(%.3f)= %.3f \ t",k,fun2); printf("fun3(%.3f)= %.3f \ t",k,fun3); printf("\n"); } getch (); } /*A partir de este momento se empiezan a crear cada una de las funciones antes declaradas*/ float funcionf (float *fx) { float a; a=3*(exp(*fx))- 2 * *fx; 27 return a; /* aquí regresaremos el resultado de la ecuación*/ } float funciong (fl oat *gx) { float b; b= -*gx * sin (*gx) + 1. 5; return b; /*aquí regresaremos e l resultado de la ecuación*/ } float funcionz (float *zx) { float c; c=(*zx)*(*zx)*(*zx) -2 * (*zx) + 1; return c; /*aquí regresaremos el resultado de la ecuación*/ } /*fin del programa*/ MATERIAL Y EQUIPO Equipo de com puto-Observaci ones. CPU: MONITOR: TECLA DO: V. CUESTIONARIO (TRABAJ O C OMPLEMEN TARIO) 28 1. Dado el programa anterior, además de editarlo, debe guardarlo, compilarlo y ejecutarlo. Describa: a) los errores que obtuvo (en caso de haberlos). b) el desplegado obtenido. 2. Marque en el programa estructuras de control. donde comienza y donde terminan las 3. ¿Cuál es la funcionalidad de la estructura for? Haga una comparación entre esta y las estructuras anteri ores y diga cuál de ellas se parece más.} 4.¿Que pasa si se pone como dato en num=0? 5. ¿Qué pasaría inicialización? si se quita de la VI. CONCLUSION ES Y OBSERVACIONES 29 línea de for la sentencia de PRACTICA 6 ESTRUCTURAS CON FUNCIONES Y APUNTADORES I.OBJETIVO Al término de la práctica el alumno podrá manejar las estructuras de control break y continue, conocerá su uso para romper ciclos (bucles). II.MATERIAL Y EQUIPO a) Equipo de computo CPU Monitor Teclado Marca___________Mod_________N.S._________ Marca___________Mod________ _N.S__________ Marca___________Mod_________N.S__________ III. INTRODUCCION TEORICA En la presente práctica hablaremos de la sentencia de control break y continue. La sentencia break tiene dos usos: 1) Para determinar el final de un case en una sentencia switch, (que vimos en una práctica anterior)y 2) Terminar la ejecución de un bucle y saltar a la evaluación condicional del ciclo, se puede utilizar dentro de una sentencia while, do-while o for. Veamos en que consiste el segundo uso: Cuando utilizamos una sentencia break dentro de un bucle , este se termina inmediatamente y el control del programa pasa a la línea que esta inmediatamente después del ciclo. Los programadores la utilizan cuando no se satisface una condición obligatoria en la ejecución de un programa, ya que detiene su ejecución y forza el regreso al sistema operativo. La función exit() requiere de un argumento entero ya que se supone que es un proceso de alto nivel, este será capaz de tener acceso al valor contenido en el argumento. Normalmente se utiliza un argumento 30 0 para indicar de qué se trata de una terminación normal y otros argumentos para indicarl os. for. Es la estructura de control más uti lizada para crear bucles en C. Incluye una sentencia inicial que especifica el valor inicial de un índice, otra expresión que determina cuando se continua o no el bucle y una tercera expresión que permite que el í ndice se modifique al final de cada pasada. El formato general para implementar el bucle for es: for(ini cialización; condi ción; incrementó) sentencia; Inicialización es una sentencia de asignación que nos sirve como variable de control del bucle. Condici ón es una expresi ón que nos indi ca la condición que debe cumplirse para que continúe el bucle e incremento define como va cambiando el valor de la variable de control cada vez que se repite el bucle. Sentencia es el conjunto de proposi ciones que se van a realizar en cada uno de los bucles. Una de las principales características del for es que la condi ción se evalúa al principio del ciclo. Por esto, el código dentro del bucle no será ejecutado si la condi ción es falsa al comi enzo. Main() { For(;;) { Printf(“numero:”); Scanf(“%d”,&x); If(x==9) break; } Printf(“tecleaste %d numerous antes de romper el ciclo”,x); } El bucle anterior se repite hasta que se teclea el numero 9 y después se imprime en pantalla la cantidad de veces que se pulso un numero antes de romper el ciclo. 31 Bucle sin cuerpo. - Según la sintaxis de C, existen las sentencias vacías, por tanto, se puede tener un bucle for o cualquier otro, que no tenga cuerpo. Este tipo de ci clos se usan regularmente para retardar la ejecución del programa. IV. DESARROLLO EL ALUMN O SEGUIRA LA SECUENCIA INDICADA, DESCRIBIENDO EN CADA INCISO LOS PASOS QUE SIGA : 1.- Trabaje con la computadora. Busque l as ayudas relacionadas para continue y break. 2.- Teclee el siguiente programa #include <stdio.h> #include <math.h> #include <conio. h> float funci onf (float *fx); /*Despues de declarar las librerias, se declaranlas funciones junto con el argumento de cada función , que en este casovan hacer los apuntadores hacia donde se dirige el contenido de la s variables*/ float funci ong (float *gx); float funci onz (float *zx); void main (void) { 32 float k,fun1,fun2,fun3; /*declaram os v ariables globales*/ printf("\ tLos datos obtenidos son los siguientes:\ t\n"); printf("\ t f(x) g(x) z(x)\t\ n"); for(k=0; k<3. 5;k= k + 0.2) { fun1 = funcionf(&k); /*En esta parte del programa se están llamando a las funci ones en el cual el argumento de cada una de ellas es el contenido de la direcci ón de la variable donde estam os introduciendo l a i nformación, el retorno de los datos de cada función se almacenara en l a variable correspondiente*/ fun2 = funciong(&k); fun3 = funcionz(&k); printf("fun1(%.3f)= %.3f \ t",k,fun1); /*En esta parte se imprimen los resultados finales con tres decimales*/ printf("fun2(%.3f)= %.3f \ t",k,fun2); printf("fun3(%.3f)= %.3f \ t",k,fun3); printf("\n"); } getch (); } 33 /*A partir de este momento se empiezan a crear cada una de las funciones antes declaradas*/ float funcionf (float *fx) { float a; a=3*(exp(*fx))- 2 * *fx; return a; /* aquí regresaremos el resultado de la ecuación*/ } float funciong (fl oat *gx) { float b; b= -*gx * sin (*gx) + 1. 5; return b; /*aquí regresaremos el resultado de la ecuación*/ } float funcionz (float *zx) { float c; c=(*zx)*(*zx)*(*zx) -2 * (*zx) + 1; return c; /*aquí regresaremos el resultado de la ecuación*/ } /*fin del programa*/ 34 MATERIAL Y EQUIPO Equipo de com puto-Observaci ones. CPU: MONITOR: TECLA DO: V. CUESTIONARIO (TRABAJ O C OMPLEMEN TARIO) 1. Dado el programa anterior, además de editarlo, debe guardarlo, compilarlo y ejecutarlo. Describa: a) los errores que obtuvo (en caso de haberlos). b) el desplegado obtenido. 2. Marque en el programa estructuras de control. don de comienza y donde terminan las 3. ¿Cuál es la funcionalidad de la estructura continue y de break? 4. ¿Despues que el programa haya corrido póngale un letrero que diga cuando el usuario quiera sacar promedio de números negativos? VI. CONCLUSION ES Y OBSERVACIONES 35