Está en la página 1de 32

INSTITUTO POLITECNICO NACIONAL.

ESIME ZACATENCO

TAREA 1 PROGRAMAS CON


FUNCIONES.
PROGRAMACIÓN ORIENTADA A OBJETOS
RODRÍGUEZ LÓPEZ CRISTOFER MATEO.

2014301605

PROFESOR: TENORIO HUERTAS JOSE JAVIER.

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.

Las funciones constan de 3 partes:

-Prototipo de la función:

Se realiza fuera de la función principal debajo de las librerías.

-Llamada de la función:

Se realiza dentro de la función principal.

-Argumentos de la función:

Se realizan fuera de la función principal al final del programa.

Se tiene la posibilidad de utilizar 4 tipos de funciones diferentes:

1- Con parámetros y con resultado.


2- Sin parámetros y con resultados.
3- Con parámetro y sin resultado.
4- Sin parámetro y sin resultado.

1. Este tipo de función de usuario posee la forma :

Tipo de valor de retorno nombre (tipo de dato de parámetros parámetro);

Ejemplo.

LIBRERIAS < >

float suma (int x, int y);  PROTOTIPO DE LA FUNCION.

Int main(){  función principal.

Int x,y;

suma (x,y);  LLAMADA DE LA FUNCION.

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.

2. La forma de este tipo es:

Tipo de dato de retorno nombre( );

Ejemplo.

float suma ( );

Esta función retorna un valor de tipo flotante pero no recibe ningún parámetro.

Ejemplo.

LIBRERIAS <>

float suma ( );  PROTOTIPO DE LA FUNCIÓN.

Int main() {  función principal.

suma ( );  LLAMADA DE LA FUNCIÓN.

float suma ( ) {  ALGUMENTOS DE LA FUNCIÓN.

float x,y,z;

PEDIR DATOS; GUARDAR DATOS;

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:

Tipo de dato de retorno nombre ( tipo de dato de parámetros parámetros );

Ejemplo.

void suma (int x, int y);  PROTOTIPO DE LA FUNCIÓN.

Int main() {  función principal.

suma (x,y );  LLAMADA DE LA FUNCIÓN.

void suma ( ) {  ALGUMENTOS DE LA FUNCIÓN.

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:

Tipo de dato de retorno nombre();

Ejemplo.

void suma ( );  PROTOTIPO DE LA FUNCIÓN.

Int main() {  función principal.

suma ( );  LLAMADA DE LA FUNCIÓN.

6
void suma ( ) {  ALGUMENTOS DE LA FUNCIÓN.

Int z,x,y;

PEDIR DATOS; GUARDAR DATOS;

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 elevar(int B, int P);

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);

printf("el resultado es:%d\n",elevar(B,P));

return 0;

int elevar(int B,int P){

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,

La función realiza la operación de elevar asignándole el resultado a otra variable la cual es


retornada a la función principal y ahí se manda a imprimir la función para visualizar el resultado.

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 pot(int P);

int main()

int P,R,R1;

printf("Ingrese la potencia a la cual quiere elevar el numero 2:\n");

scanf("%d",&P);

10
R1=pot(P);

if(R1<8500){

printf("El resultado es:%d\n",pot(P));

else

printf("El resultado sobrepasa 8500,por favor ingrese una potencia menor.\n");

return 0;

int pot(int P){

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;

printf("la suma de las raíces de 2,4,6,8,10 es:%f",RT);

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;

printf("dame el valor 1 de x (exponente):\n");

scanf("%d",&ax);

printf("dame el valor 2 de x (exponente):\n");

scanf("%d",&bx);

printf("dame el valor 3 de x (exponente):\n");

scanf("%d",&cx);

printf("dame el valor 4 de x (exponente):\n");

scanf("%d",&dx);

printf("dame el valor 5 de x (exponente):\n");

scanf("%d",&ex);

printf("dame el valor 1 de y (base):\n");

scanf("%d",&ay);

printf("dame el valor 2 de y (base):\n");

scanf("%d",&by);

printf("dame el valor 3 de y (base):\n");

scanf("%d",&cy);

14
printf("dame el valor 4 de y (base):\n");

scanf("%d",&dy);

printf("dame el valor 5 de y (base):\n");

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;

printf("los valores de x son:\t%d\t%d\t%d\t%d\t%d\n\n",ax,bx,cx,dx,ex);

printf("los valores de y son:\t%d\t%d\t%d\t%d\t%d\n\n",ay,by,cy,dy,ey);

za=pow(ay,ax);

zb=pow(by,bx);

zc=pow(cy,cx);

zd=pow(dy,dx);

ze=pow(ey,ex);

printf("los valores de z son:\t%d\t%d\t%d\t%d\t%d\n\n",za,zb,zc,zd,ze);

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:

Tangente(x)= seno(x)/coseno(x) cotangente(x)=coseno(x)/seno(x)

Secante(x)= 1/coseno (x) cosecante(x)= 1/seno(x)

16
CODIGO.

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

void tg();

void ct(int x);

void sc(int x);

void cs(int x);

int main()

int op,A,B,x;

do{

printf("\t\t\t calculo de funciones trigonometricas\n");

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:

printf("de el valor de x\n");

scanf("%d",&x);

ct(x);

17
break;

case 3:

printf("de el valor de x\n");

scanf("%d",&x);

sc(x);

break;

case 4:

printf("de el valor de x\n");

scanf("%d",&x);

cs(x);

break;

printf("para elegir otra opccion presiona 1\n");

scanf("%d",&B);

if (B!=1)

printf("programa terminado\n");

while(B==1);

return 0;

18
void tg(){

float R;

int x;

printf("de el valor de x:\n");

scanf("%d",&x);

R= sin(x)/cos(x);

printf("la tangente es %f\n",R);

void ct(int x){

float R;

R=cos(x)/sin(x);

printf("la cotangente es%f\n",R);

void sc(int x){

float R;

R=1/cos(x);

printf("la secante es%f\n",R);

void cs(int x){

float R;

R=1/sin(x);

printf("la cosecante es:%f\n",R);

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{

printf("\t\tConversor de metros a yardas,pies,pulgadas o cm.\n\n\n");

printf("Elija cual conversion desea hacer\n\n");

printf("1. Metros a Yardas\n");

printf("2. Metros a Pies\n");

printf("3. Metros a Pulgadas\n");

printf("4. Metros a Cetimetros\n");

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();

printf("la cantidad en Pies es:%f\n",FT1);

break;

case 3:

PULG1=mapulg();

printf("la cantidad en Pulgadas es:%f\n",PULG1);

break;

case 4:

CM1=macm();

printf("la cantidad en Centimetros es:%f\n",CM1);

break;

printf("Si desea realizar otra conversion presione 1\n");

scanf("%d",B);

while(B=1);

return 0;

float may(){

float m,Y,y;

printf("de la catidad de metros\n");

scanf("%f",&m);

22
Y=m/0.91;

return Y;

float maft(){

float m,ft;

printf("de la catidad de metros\n");

scanf("%f",&m);

ft=m/0.3048;

return ft;

float mapulg(){

float m,pulg;

printf("de la catidad de metros\n");

scanf("%f",&m);

pulg=m/0.0254;

return pulg;

float macm(){

float m,cm;

printf("de la catidad de metros\n");

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.

7. Según el teorema de pitagoras, el cuadrado de la hipotenusa es igual a la suma del


cuadrado de los catetos ( C2 = A2+B2). Elaborar un programa que permita leer los dos
catetos y la hipotenusa e imprima el resultado.

CODIGO.

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

float cat();

24
int main()

float R,ct,H;

R=cat();

printf("la suma de los catetos al cuadrado es:%f\n\n",R);

printf("para encontrar la hipotenusa se le debe sacar raiz cuadrada a este valor\n por lo tanto\n");

R=sqrt(R);

printf("la hipotenusa tiene un valor de:%f\n",R);

return 0;

float cat(){

float c1,c2,ct;

printf("da el valor del cateto 1:\n");

scanf("%f",&c1);

printf("da el valor del cateto 2:\n");

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.

8. Elabore un programa que calcule la resistencia equivalente de cuatro resistencias en serie,


en paralelo y mixtas.

CODIGO.

#include <stdio.h>

#include <stdlib.h>

float serie(float R1,float R2,float R3,float R4);

float paralelo();

void mixto ();

26
int main()

int opc,A,B;

float R1,R2,R3,R4,S;

do{

printf("\t\t seleccione una opccion\n");

printf("1.Serie\n");

printf("2.Paralelo\n");

printf("3.Mixto\n");

scanf("%d",&A);

switch(opc=A){

case 1:

printf("da el valor de R1\n");

scanf("%f",&R1);

printf("da el valor de R2\n");

scanf("%f",&R2);

printf("da el valor de R3\n");

scanf("%f",&R3);

printf("da el valor de R4\n");

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;

printf("si quiere repetir presione 1\n");

scanf("%d",&B);

if (B!=1)

printf("ok, programa finalizado\n");

while(B==1);

return 0;

float serie(float R1,float R2,float R3,float R4){

float RT;

RT=R1+R2+R3+R4;

return RT;

float paralelo(){

float R1,R2,R3,R4,RT;

printf("da el valor de R1\n");

scanf("%f",&R1);

28
printf("da el valor de R2\n");

scanf("%f",&R2);

printf("da el valor de R3\n");

scanf("%f",&R3);

printf("da el valor de R4\n");

scanf("%f",&R4);

RT=1/(1/R1+1/R2+1/R3+1/R4);

return RT;

void mixto (){

float R1,R2,R3,R4,RTS,RTP,RT;

printf("de la primera resistencia en serie\n");

scanf("%f",&R1);

printf("de la segunda resistencia en serie\n");

scanf("%f",&R2);

printf("de la primera resistencia en paralelo\n");

scanf("%f",&R3);

printf("de la segunda resistencia en paralelo\n");

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