19_Prác_Lab_Programación_II - Tecnológico de Estudios

Anuncio
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
Descargar