ESIME ZACATENCO
2014301605
31/08/14
1
INDICE.
1 Portada.
2 Índice.
3 Objetivo.
4 Introducción.
8 Resumen ejecutivo.
9 Procedimiento.
Problema 1 – Problema 8.
31 Conclusiones.
32 Bibliografia.
2
OBJETIVO.
La meta principal de este trabajo es aprender a utilizar e identificar los diferentes tipos de
funciones de usuario mediante la resolución de problemas de índole matemático.
El alumno identificará que tipo de función se utiliza en cada ejercicio y comprenderá que no sólo
existe un método para resolver problemas, si no que utilizando los diferentes tipos de funciones,
se dará cuenta que existen diversas posibilidades.
3
Introducción.
Las funciones definidas por el programador se escriben “fuera” de la función main. Si se recuerda,
uno de los objetivos del uso de las funciones es la descomposición de problemas complejos y el
trabajo en grupo.
-Prototipo de la función:
-Llamada de la función:
-Argumentos de la función:
Ejemplo.
Int x,y;
4
float suma (int x, int y) { ARGUMENTOS DE LA FUNCION.
float z;
z=x+y;
return z; }
El ejemplo muestra una función que retornará un tipo de dato float z , la función se llama suma y
recibe dos parámetros tipo entero x,y.
Se puede observar que los parámetros no necesariamente deben ser igual al tipo de dato de
retorno.
Al recibir los parámetros, en los argumento de la función ya no será necesario declarar las
variables que recibe como parámetros ya que estas se han declarado implícitamente.
Ejemplo.
float suma ( );
Esta función retorna un valor de tipo flotante pero no recibe ningún parámetro.
Ejemplo.
LIBRERIAS <>
float x,y,z;
z= x+y;return z; }
5
El ejemplo muestra a la función suma que no recibe ningún parámetro pero que retorna un valor
tipo flotante.
Se nota que tanto la variable x como y tuvieron que ser declaradas dentro de los argumentos de la
función, al igual que se tuvo que solicitar el valor de dichas variables, mediante las funciones
printf(); y scanf(); .
3. Este tipo de función recibe parámetros pero no retorna ningún resultado, para especificar que
efectivamente no retorna ningún resultado e usa la palabra reservada “void” de la manera
siguiente:
Ejemplo.
Int z;
z= x+y;
printf(“%d”,z); }
Lo que hace la función es recibir los parámetros x y, los cuales ya sabemos se están declarando
implícitamente, realiza una suma con ellos y se guarda el resultado en z y como no regresa ningún
valor, si se desea imprimir el resultado se puede hacer mediante la función printf(); .
4. Posee la forma:
Ejemplo.
6
void suma ( ) { ALGUMENTOS DE LA FUNCIÓN.
Int z,x,y;
z= x+y;
printf(“%d”,z);
Se observa que dicha función no recibe ningún parámetro y tampoco retorna un valor, lo que
conlleva a en caso de esta que realiza una suma, tener que declarar las variables y si se quiere
imprimir, hacerlo con la función printf (); .
Dependiendo el tipo de problema a resolver se puede utilizar el tipo de función más conveniente
por el programador.
7
Resumen ejecutivo.
En el presente documento, se observara la realización de problemas en programación con el
lenguaje C, haciendo uso de funciones de usuario, estas funciones facilitan el trabajo del
programador al hacer la resolución de programas más accesible al momento de querer realizar un
cambio en un punto especifico del programa.
Cada ejercicio consta de su enunciado y posteriormente el código de una manera clara y ordenada
para comprensión de quien revise el reporte, al finalizar el código, se colocarán pantallas de
resultados, demostrando que efectivamente el programa ha compilado y realizado el problema
planteado con la certeza de que los resultados que arroja el programa son correctos debido a la
realización de pruebas de escritorio por parte del programador, finalizando cada ejercicio
mostrado con una explicación breve del funcionamiento del programa y como actúan las
funciones de usuario utilizadas.
8
PROCEDIMIENTO.
1. Elaborar un programa que permita leer la base y el exponente, que llama una función que
eleve el un numero a la potencia. Al regresar a la función principal que imprima el
resultado.
CODIGO:
#include <stdio.h>
#include <stdlib.h>
int main()
int B,P,F;
printf("de la base:\n");
scanf("%d",&B);
printf("de el exponente:\n");
scanf("%d",&P);
elevar(B,P);
return 0;
int R;
R=pow(B,P);
return R;
9
PANTALLA DE RESULTADO.
El código usa una función con parámetros y con resultados, en el main solicita el valor de los
parámetros y después llama a la función elevar, pasándole los parámetros que ya poseen un valor,
2. Elaborar un programa que imprima una potencia de 2, a la vez, que no exceda 8500.
Utilizando una función que calcule la potencia.
CODIGO.
#include <stdio.h>
#include <stdlib.h>
int main()
int P,R,R1;
scanf("%d",&P);
10
R1=pot(P);
if(R1<8500){
else
return 0;
int R;
R=pow(2,P);
return R;
PANTALLAS DE RESULTADO.
En esta se observa que el resultado no sobrepasa 8500 por lo cual lo imprime sin problemas.
11
En este caso se observa que el resultado rebasa 8500, por lo cual imprime un mensaje.
El código usa una función con parámetro y resultado, recibe como parámetro el valor de la
potencia, en la función eleva el numero 2 a la potencia recibida y regresa el resultado al main,
se le coloca una sentencia if-else para que en caso de que el resultado sobrepase 8500 lo haga
saber al usuario, como se muestra en las pantallas de resultados.
3.Elaborar un programa que imprima la sumatoria de las raíces cuadradas de los números
pares desde 2 hasta 10. Utilizar funciones para el cálculo de la sumatoria.
CODIGO.
#include <stdlib.h>
#include <math.h>
void raiz2();
int main()
raiz2();
return 0;
12
void raiz2(){
float R1,R2,R3,R4,R5,RT;
R1= sqrt(2);
R2= sqrt(4);
R3= sqrt(6);
R4= sqrt(8);
R5= sqrt(10);
RT= R1+R2+R3+R4+R5;
PANTALLA DE RESULTADO.
El programa es sencillo, la función raíz que es sin parámetros y sin resultado , realiza el cálculo de
las raíces, la sumatoria y ella misma imprime el resultado, en el main sólo se llama a la función.
13
4. Elabore un programa que lea 5 valores para Y y X. Utilizando la formula Z=YX imprima los
diez valores para X,Y y Z. Que al elevar la base a la potencia lo haga e una función que
reciba como parámetros los datos leídos de X y Y.
CODIGO.
#include <stdio.h>
#include <stdlib.h>
void elev(int ax, int bx, int cx, int dx, int ex,int ay, int by, int cy, int dy, int ey);
int main()
int ax,bx,cx,dx,ex,ay,by,cy,dy,ey;
scanf("%d",&ax);
scanf("%d",&bx);
scanf("%d",&cx);
scanf("%d",&dx);
scanf("%d",&ex);
scanf("%d",&ay);
scanf("%d",&by);
scanf("%d",&cy);
14
printf("dame el valor 4 de y (base):\n");
scanf("%d",&dy);
scanf("%d",&ey);
elev(ax,bx,cx,dx,ex,ay,by,cy,dy,ey);
return 0;
void elev(int ax, int bx, int cx, int dx, int ex,int ay, int by, int cy, int dy, int ey){
int za,zb,zc,zd,ze;
za=pow(ay,ax);
zb=pow(by,bx);
zc=pow(cy,cx);
zd=pow(dy,dx);
ze=pow(ey,ex);
15
PANTALLA DE SESULTADOS.
El código solicita los valores de X y Y para pasarlos como parámetros en la función “elev”,
Esta función no retorna valor, dentro de ella imprime los valores de X y Y de manera ordenada
usando \t para un mejor orden, enseguida realiza la operación de elevar la base a la potencia
correspondiente, asignando cada valor a su respectiva variable z, después imprime los valores de z
o sea el resultado y los acomoda de una manera fácil de entender, tal como se muestra en la
pantalla de resultados.
5. Elaborar un programa que permita calcular cada una de las funciones siguientes.
Tangente, cotangente, secante y cosecante. El cálculo de cada una es la siguiente:
16
CODIGO.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void tg();
int main()
int op,A,B,x;
do{
printf("1.Tangente\n");
printf("2.Cotangente\n");
printf("3.Secante\n");
printf("4.Cosecante\n");
scanf("%d",&A);
switch(op=A){
case 1:
tg(x);
break;
case 2:
scanf("%d",&x);
ct(x);
17
break;
case 3:
scanf("%d",&x);
sc(x);
break;
case 4:
scanf("%d",&x);
cs(x);
break;
scanf("%d",&B);
if (B!=1)
printf("programa terminado\n");
while(B==1);
return 0;
18
void tg(){
float R;
int x;
scanf("%d",&x);
R= sin(x)/cos(x);
float R;
R=cos(x)/sin(x);
float R;
R=1/cos(x);
float R;
R=1/sin(x);
19
PANTALLA DE RESULTADO.
La primera función tg, no recibe parámetros, pide los datos dentro de su argumento, todas las
funciones son tipo void (no retornan resultado), las demás funciones si reciben parámetros que
son solicitados en su respectivo case. Se ha utilizado un switch para poder elegir la opción que
quiera el usuario al igual que un ciclo do while para poder repetir el programa si así se desea, al
igual que un condicional por si al momento de solicitar si se desea repetir el programa el usuario
presiona una tecla diferente de 1, el programa finalize.
20
6. Realizar un programa que ofrezca hacer conversiones entre metros, yardas, pulgadas y
pies. Para cada unidad en un modulo se debe leer la cantidad de metros y ls debe imprimir
en la función principal.
CODIGO.
#include <stdio.h>
#include <stdlib.h>
float may();
float maft();
float mapulg();
float macm();
int main()
float Y1,FT1,PULG1,CM1;
int opc,A,B;
do{
scanf("%d",&A);
switch(opc=A){
case 1:
Y1=may();
21
printf("la cantidad en yardas es:%f\n",Y1);
break;
case 2:
FT1=maft();
break;
case 3:
PULG1=mapulg();
break;
case 4:
CM1=macm();
break;
scanf("%d",B);
while(B=1);
return 0;
float may(){
float m,Y,y;
scanf("%f",&m);
22
Y=m/0.91;
return Y;
float maft(){
float m,ft;
scanf("%f",&m);
ft=m/0.3048;
return ft;
float mapulg(){
float m,pulg;
scanf("%f",&m);
pulg=m/0.0254;
return pulg;
float macm(){
float m,cm;
scanf("%f",&m);
cm=m/0.01;
return cm;
23
PANTALLA DE RESULTADOS.
Todas las funciones retornan un valor tipo flotante y o reciben ningún parámetro, en cada case, la
función se asigna a una variable que es donde se asignará el valor devuelto por la función y el que
se manda a imprimir en el main, en cada argumento de cada función solicita la cantidad de metros
para hacer la respectiva conversión y asgnar el resultado a la variable que será devuelta, se usa un
switch para crear un menú y elegir que conversión desea realizar.
CODIGO.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
float cat();
24
int main()
float R,ct,H;
R=cat();
printf("para encontrar la hipotenusa se le debe sacar raiz cuadrada a este valor\n por lo tanto\n");
R=sqrt(R);
return 0;
float cat(){
float c1,c2,ct;
scanf("%f",&c1);
scanf("%f",&c2);
ct=pow(c1,2)+pow(c2,2);
return ct;
25
PANTALLA DE RESULTADOS.
La funcion solicita los valores de los catetos guardándolos en 2 variables, las cuales las eleva y las
suma guardando ese resultado en una variable la cual es retornada al main ahí la función fue
asignada a una variable R, para primero imprimir el valor de la primera operación y manda un
mensaje del paso que falta para obtener la hipotenusa y realiza la operación sqrt y manda a
imprimir el resultado de esa última operación.
CODIGO.
#include <stdio.h>
#include <stdlib.h>
float paralelo();
26
int main()
int opc,A,B;
float R1,R2,R3,R4,S;
do{
printf("1.Serie\n");
printf("2.Paralelo\n");
printf("3.Mixto\n");
scanf("%d",&A);
switch(opc=A){
case 1:
scanf("%f",&R1);
scanf("%f",&R2);
scanf("%f",&R3);
scanf("%f",&R4);
serie(R1,R2,R3,R4);
printf("la RT es %f\n",serie(R1,R2,R3,R4));
break;
27
case 2:
S=paralelo();
printf("la RT es %f\n",S);
break;
case 3:
mixto();
break;
scanf("%d",&B);
if (B!=1)
while(B==1);
return 0;
float RT;
RT=R1+R2+R3+R4;
return RT;
float paralelo(){
float R1,R2,R3,R4,RT;
scanf("%f",&R1);
28
printf("da el valor de R2\n");
scanf("%f",&R2);
scanf("%f",&R3);
scanf("%f",&R4);
RT=1/(1/R1+1/R2+1/R3+1/R4);
return RT;
float R1,R2,R3,R4,RTS,RTP,RT;
scanf("%f",&R1);
scanf("%f",&R2);
scanf("%f",&R3);
scanf("%f",&R4);
RTS=R1+R2;
RTP=1/(1/R3+1/R4);
RT=RTS+RTP;
printf("la RT es %f\n",RT);
29
PANTALLA DE RESULTADOS.
El programa utiliza 3 funciones, todas distintas, la primera calcula el valor en serie, esta recibe
parámetros y devuelve un resultado, en su case pide los valores y los pasa a la función que realiza
la suma y lo retorna en un valor que es imprimido en el mismo case, la segunda que es en paralelo
retorna valor pero no recibe parámetros, pide los datos en su argumento y devuelve el valor que
es imprimido en su respectivo case y por último la función mixto no recibe parámetros ni regresa
resultado esta pide los valores de las resistencias en serie y paralelo en su argumento, ahí mismo
hace primero la suma de las que son en serie asignando ese resultado a una variable y enseguida
realiza la suma de las que son en paralelo y las asigna a otra variable, por último suma esas dos
variables para obtener el resultado final e imprimirlo ahí mismo.
Se uso un switch para hacer el programa más estético al igual que un ciclo do while para realizar el
programa las veces que se desee.
30
CONCLUSIONES.
En general se obtuvieron resultados satisfactorios al aprender a utilizar los 4 tipos de funciones de
usuario para la resolución de problemas, lo que conlleva a poder aplicar el conocimiento adquirido
en problemas futuros de programación lo que genera una gran ventaja debido a que se logra crear
un desarrollo en la manera de pensar del programador que dicta que no sólo existe una forma de
resolución y así evitar tropiezos con un solo método, ya que teniendo varias ideas se puede utilizar
la más conveniente.
31
BIBLIOGRAFIA.
-Libreta de apuntes de programación estructurada.
-www.lenguajec.com
-www.wikipedia/mat.h.com
32