Funciones en lenguaje C
Función:
una función es una rutina o conjunto de sentencias que realizan una determinada labor, en C todas las funciones te devuelven un valor ya sea de tipo entero o tipo flotante, entre los otros tipos de valores, estas funciones las diseña el programador para dar un ejemplo las funciones printf, bow, sin, cos, entre otras han sido pre diseñadas por programadores, y asi como estas funciones se pueden diseñar otras.
U4UNO-FUNCION
Esta función nos calcula el precio mas impuesto de un determinado producto, para esta función solo es necesario declarar dos valores, los cuales son el precio del producto y la tasa del impuesto, la función siempre se declara al inicio antes del main(), pero se desarrollan fuera del main, para después ser llamadas dentro del main.
#include <stdio.h>
float precio(float base,float impuesto);//declaracion de la funcion
int main()
{
float importe=2.5;
float tasa=0.07;
printf("el precio a pagar es: %.2f\n",precio(importe,tasa));//aqui se manda lo calculado en la funcion
return 0;
}
float precio(float base, float impuesto) //definicion de la funcion
{
float calculo;
calculo=base+(base*impuesto);//la funcion lo calcula
return calculo;//lo regresa al anterior printf
}
U4DOS-FUNCION
Esta función es tan simple, solo se manda a llamar el printf de un simple hola.
#include <stdio.h>
main()
{
hola();//SE MANDA A LLAMAR LA FUNCION
return 0;
}
hola()
{
printf("hola\n");//ESTA FUNCION SOLO IMPRIME HOLA
}
U4TRES-FUNCION
Esta función nos ayuda a calcular el cubo de un numero, dentro del programa se utiliza la estructura de for, donde se imprimira el cubo de los numero 1 a 5.
#include <stdio.h>
int cubo(int base);//se daclara la funcion, tipo, e identificador
int main()
{
int numero;
for(numero=1;numero<=5;numero++)//nos calcula el cubo de 1,2,3,4,5
{
printf("El cubo del numero %d es %d\n",numero,cubo(numero));//aqui esta la funcion
}
return 0;
}
int cubo(int base)//definicion de la funcion y su desarrollo.
{
int potencia;
potencia=base*base*base;
return potencia;
}
una función es una rutina o conjunto de sentencias que realizan una determinada labor, en C todas las funciones te devuelven un valor ya sea de tipo entero o tipo flotante, entre los otros tipos de valores, estas funciones las diseña el programador para dar un ejemplo las funciones printf, bow, sin, cos, entre otras han sido pre diseñadas por programadores, y asi como estas funciones se pueden diseñar otras.
U4UNO-FUNCION
Esta función nos calcula el precio mas impuesto de un determinado producto, para esta función solo es necesario declarar dos valores, los cuales son el precio del producto y la tasa del impuesto, la función siempre se declara al inicio antes del main(), pero se desarrollan fuera del main, para después ser llamadas dentro del main.
#include <stdio.h>
float precio(float base,float impuesto);//declaracion de la funcion
int main()
{
float importe=2.5;
float tasa=0.07;
printf("el precio a pagar es: %.2f\n",precio(importe,tasa));//aqui se manda lo calculado en la funcion
return 0;
}
float precio(float base, float impuesto) //definicion de la funcion
{
float calculo;
calculo=base+(base*impuesto);//la funcion lo calcula
return calculo;//lo regresa al anterior printf
}
U4DOS-FUNCION
Esta función es tan simple, solo se manda a llamar el printf de un simple hola.
#include <stdio.h>
main()
{
hola();//SE MANDA A LLAMAR LA FUNCION
return 0;
}
hola()
{
printf("hola\n");//ESTA FUNCION SOLO IMPRIME HOLA
}
U4TRES-FUNCION
Esta función nos ayuda a calcular el cubo de un numero, dentro del programa se utiliza la estructura de for, donde se imprimira el cubo de los numero 1 a 5.
#include <stdio.h>
int cubo(int base);//se daclara la funcion, tipo, e identificador
int main()
{
int numero;
for(numero=1;numero<=5;numero++)//nos calcula el cubo de 1,2,3,4,5
{
printf("El cubo del numero %d es %d\n",numero,cubo(numero));//aqui esta la funcion
}
return 0;
}
int cubo(int base)//definicion de la funcion y su desarrollo.
{
int potencia;
potencia=base*base*base;
return potencia;
}
U4CUATRO-FUNCIO
El siguiente programa es un poco confuso ya que utiliza dos funciones que nos ayudan a calcular el factorial de un numero.
#include <stdio.h>
#define VALOR 5//se definen constantes globales
#define FACT 120
int fact_i(int v)//funcion declarada
{
int r=1,i=0;
while (i<=v)
{
r=r*i;
i=i+1;
}
return r;
}
int fact_r(int v) //funcion declarada
{
if(v==0) return 1;
else return v*fact_r(v-1);
}
main()//programa que manda llamar a las funciones
{
int r,valor=VALOR;
if(r=fact_i(valor)!=fact_r(valor))
printf("condicion erronea\n");
else if(r==FACT)printf("condicion correcta\n");
else printf("algo falla\n");
}
U4CINCO-FUNCION
Una función de incremento sencilla, sin printf, sin estructuras de control.
#include <stdio.h>
int incr(int v){return v+1;}//funcion
main()
{
int a,b;
b=3;
a=incr(b);//llamado de funcion
//nos imprime return 4 ya que solo nos incrementa en uno al numero b
}
U4SEIS-FUNCION
Se mandan a llamr dos funciones, de una manera mas explicativa, recordando que dentro de cada programa se pueden utilizar las funciones que sean necesarias.
#include <stdio.h>
void primera(void);//declaracion de las funciones
void segunda(void);//funcion tipo void con identificador primera o segunda
main()
{
printf("la primera funcion llamada, main\n");
primera();//manda a llamar a la primera funcion
segunda();//manda a llamar a la segunda funcion
printf("final de la funcion\n");
return 0;
}
void primera(void)//se definen las funciones
{
printf("llamada a la funcion primera\n");//el printf lo manda a la funcion dentro de main llamada primera
return;
}
void segunda(void)//se define la segunda funcion
{
printf("llamada a la funcion segunda\n");//lo manda a la funcion segunda en main
return;
}
U4FuncionContador
En esta función se observara que no se utiliza el return ya que un dato static nos ayudara a hacer algo similar al return, la siguiente función es un contador ordinario.
#include <stdio.h>
void imprimevalor(); //es una funcion vacia donde no recibira ningun valor
int main()
{
imprimevalor(); //llamado de la funcion y se imprime lo que hay en l funcion
imprimevalor(); // se vuelve a llamar a la funcion y como tiene un valor estatico modificado imprimira este
imprimevalor();
imprimevalor();
return 0;
}
void imprimevalor()
{
static int contador = 0; //es un dato estatico este tiende a cambiar
printf("el valor de contador es: %d\n",contador);//imprime el valor del valor estatico
contador++; //aumenta el valor estatico
//no se utiliza return ya que el static nos ayuda a suplir est funcion aun que tiene sus limitciones.
}
U4FuncionSumar
Una sencilla función donde suma 2 numeros enteros cuales quiera, dentro de este programa se recomienda omitir la declaración de la función al inicio o antes de su desarrollo y observar que sucede.
#include <stdio.h>
int sumar(int numero1, int numero2);//declaracion de la funcion //recomendacion omitir esta linea con comentario y correr el programa y observar que sucede
int main(void)
{
int suma=sumar(5,3);//funcion aplicada, 5 = numero 1 y 3 = numero 2
printf("la suma es: %d\n",suma);//aqui se recibe lo que la funcion mande
return 0;
}
int sumar(int numero1, int numero2) //omita esta linea y vea que sucede
{
return numero1+numero2;//funcion aplicada y regresa la suma
}
U4FuncionParametro
las funciones pueden recibir datos como ya lo hemos observdo, y cuando se reciben datos por parámetros estos datos no se ven reflejados en el main pero si son utilizados, ejemplo, dentro del main esta la función pero solo el parámetro y si dentro de la funcion existe una imprecion esta se mandara donde esta el parametro, es por esto que el return no tiene referencia a continuación el programa explicativo.
#include <stdio.h>
void sumar_valor(int numero); //declracion de la funcion
int main(void)
{
int numero=57; //se asigna un valor
sumar_valor(numero); //se manda el numero a la funcion y como la funcion tiene una imprecion aqui se imprime, en pocas palabras solo se utiliza el parmetro y este realiza todo lo que la funcion tiene
printf("valor de numero dentro de main() es: %d\n",numero); //se imprime el numero el main y no de la funcion
return 0;
}
void sumar_valor(int numero)
{
numero++; //numero se incrementa en uno
printf("valor de numero dentro sumar_valor() es:%d\n",numero);//se toma en cuenta solo el numero dentro de la funcion
return;
}
U4FuncionPorReferencia
El pso por referencia se hace utilizando apuntadores. se envía la dirección de memoria de la variable, por lo tanto los cambios que haga la función si afectan al valor de la variable. ejemplo:
#include <stdio.h>
void sumar_referencia(int *numero); //declaracion de la funcion
int main(void)
{
int numero=57; //l numero dentro de main se le asigna valor de 57
sumar_referencia(&numero); //enviamos el numero a la funcion, la refencia es el numero que enviamos con &
printf("valor de numero dentro de main() es: %d",numero);//se observa que el numero dentro de main se modifica sin a ver recibido nada de la funcion
return 0;
}
void sumar_referencia(int *numero) //desarrollo de la funcion
{
*numero+=1;//se le suma 1 a numero
printf("valor de numero dentro de sumar_referencia() es: %d\n",*numero);//el numero se afecta por el anterior operador
return;
}
En esta función se observara que no se utiliza el return ya que un dato static nos ayudara a hacer algo similar al return, la siguiente función es un contador ordinario.
#include <stdio.h>
void imprimevalor(); //es una funcion vacia donde no recibira ningun valor
int main()
{
imprimevalor(); //llamado de la funcion y se imprime lo que hay en l funcion
imprimevalor(); // se vuelve a llamar a la funcion y como tiene un valor estatico modificado imprimira este
imprimevalor();
imprimevalor();
return 0;
}
void imprimevalor()
{
static int contador = 0; //es un dato estatico este tiende a cambiar
printf("el valor de contador es: %d\n",contador);//imprime el valor del valor estatico
contador++; //aumenta el valor estatico
//no se utiliza return ya que el static nos ayuda a suplir est funcion aun que tiene sus limitciones.
}
U4FuncionSumar
Una sencilla función donde suma 2 numeros enteros cuales quiera, dentro de este programa se recomienda omitir la declaración de la función al inicio o antes de su desarrollo y observar que sucede.
#include <stdio.h>
int sumar(int numero1, int numero2);//declaracion de la funcion //recomendacion omitir esta linea con comentario y correr el programa y observar que sucede
int main(void)
{
int suma=sumar(5,3);//funcion aplicada, 5 = numero 1 y 3 = numero 2
printf("la suma es: %d\n",suma);//aqui se recibe lo que la funcion mande
return 0;
}
int sumar(int numero1, int numero2) //omita esta linea y vea que sucede
{
return numero1+numero2;//funcion aplicada y regresa la suma
}
U4FuncionParametro
las funciones pueden recibir datos como ya lo hemos observdo, y cuando se reciben datos por parámetros estos datos no se ven reflejados en el main pero si son utilizados, ejemplo, dentro del main esta la función pero solo el parámetro y si dentro de la funcion existe una imprecion esta se mandara donde esta el parametro, es por esto que el return no tiene referencia a continuación el programa explicativo.
#include <stdio.h>
void sumar_valor(int numero); //declracion de la funcion
int main(void)
{
int numero=57; //se asigna un valor
sumar_valor(numero); //se manda el numero a la funcion y como la funcion tiene una imprecion aqui se imprime, en pocas palabras solo se utiliza el parmetro y este realiza todo lo que la funcion tiene
printf("valor de numero dentro de main() es: %d\n",numero); //se imprime el numero el main y no de la funcion
return 0;
}
void sumar_valor(int numero)
{
numero++; //numero se incrementa en uno
printf("valor de numero dentro sumar_valor() es:%d\n",numero);//se toma en cuenta solo el numero dentro de la funcion
return;
}
U4FuncionPorReferencia
El pso por referencia se hace utilizando apuntadores. se envía la dirección de memoria de la variable, por lo tanto los cambios que haga la función si afectan al valor de la variable. ejemplo:
#include <stdio.h>
void sumar_referencia(int *numero); //declaracion de la funcion
int main(void)
{
int numero=57; //l numero dentro de main se le asigna valor de 57
sumar_referencia(&numero); //enviamos el numero a la funcion, la refencia es el numero que enviamos con &
printf("valor de numero dentro de main() es: %d",numero);//se observa que el numero dentro de main se modifica sin a ver recibido nada de la funcion
return 0;
}
void sumar_referencia(int *numero) //desarrollo de la funcion
{
*numero+=1;//se le suma 1 a numero
printf("valor de numero dentro de sumar_referencia() es: %d\n",*numero);//el numero se afecta por el anterior operador
return;
}
U4TablaDeMultiplicar
En unos caso es mas factible hacer todo el proceso dentro de la funcion, y al final solo mandarla a llamar dentro del main. Ejemplo:
El siguiente programa te desarrolla una funcion que calcula su tabla de multiplicar del 1 al 10
#include <stdio.h>
tabla();//declaracion de la funcion
int main()
{
tabla();//llamado de la funcion
}
tabla()
{
float t; //asignacion de variable
float i;//asignacion de contador
printf("dame numero para la tabla\n");
scanf("%f",&t); //registro del numero
if(t>=1) //validacion de numero mayor a 1
{
for(i=1;i<11;i++) //ciclo para multiplicar hasta que i sea igual a 10
{
printf("%.2f * %.2f = %.2f \n",t,i,t*i); //este printf se manda a la funcion llamada en el main
}
}
else printf("numero no valido\n");//si no es valida la afirmacion de if pasa a else
}
U4FuncionSizeof
Dentro de la programación en algunas ocasiones es recomendable sber cuando uso de memoria ocupa cada dato dentro del código, pero esto depende del compilador, por eso para generalizar estos valores se requiere la función sizeof. Ejemplo:
#include <stdio.h>
//en este programa se observara cuanto vale cada tipo de dato en bytes con la funcion sizeof
int main()
{
int a;
char b;
char *c;
float d;
double e;
long double f;
printf("tamaño de a %i\n",a); //toma cualquier valor ya que a no tiene valor
printf("sizeof a %i\n",sizeof(a));//dice el tamaño que ocupa a de tipo int
printf("tamaño de b %c\n",b); //las mascaras varian dependiendo de los datos
printf("sizeof b %i\n",sizeof(b));
printf("tamaño de c %s\n",c);
printf("sizeof c %i\n",sizeof(c));
printf("tamaño de d %f\n",d);
printf("sizeof d %i\n",sizeof(d));
printf("tamaño de e %d\n",e);
printf("sizeof e %i\n",sizeof(e));
printf("tamaño de f %l\n",f);
printf("sizeof f %i\n",sizeof(f)); //hasta la fecha este es el dato mas grande que existe en computacion.
}
U4Mascaras
Dependiendo del dato, el formato (2 decimales, 3 decimales, etc) se utilizan las mascaras.
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a,b,c,d,e,f; //para este dato se utiliza %f, pero tambien existe %d, %i, %h, %o etc
a=12.2;
b=123.28; //asignacion de datos para comprobar las mascaras
c=12345.2813;
d=1234567.42812;
e=12345678.428123123;
f=1234567891011.1234567891;
printf("el valor de a %.1f\n",a); //%.1f solo imprimira un decimal y no importa el numero de enteros
printf("el valor de b %.2f\n",b);// con .2 dos decimales
printf("el valor de c %.4f\n",c); //con .4 cuatro decimales
printf("el valor de d %.5f\n",d);
printf("el valor de e %.9f\n",e);
printf("el valor de f %.10f\n",f);
}
U4ImprimeValor
Se debe tener muy en cuenta que en C todos los argumentos son pasados "por valor", no existe el concepto de paso de parámetros "por variable" o "por referencia".
En pocas palabras en main pueden existir algunas variables con determinado valor y en la función las mismas variables con diferente valor y estas nos se verán alteradas.
#include <stdio.h>
void imprimevalor();
int main()
{
int contador=0;
contador++;
printf("el valor del contador es %d\n",contador);//no cambia 1
imprimevalor();//este es el contador de la funcion 5
printf("ahora el valor del contador es %d\n",contador);//no cambia 1
return 0;
}
void imprimevalor()
{
int contador=5; //esta variable llamada contador no es igual a la variable contador del main
printf("el valor de contador es %d\n",contador);
}
U4VariableExterna
Con las variables externas se puede modificar el valor de esta dentro de main y dentro de las funciones, y una vez modificado su valor ya no regresa a su anterior valor, ejemplo:
#include <stdio.h>
void unafuncion();
void otrafuncion();
int variable; //variable de tipo externa esta se puede modificar dentro del main o de las funciones
int main()
{
variable=9;//se le asigna valor
printf("el valor de variable es %d\n",variable); //se imprime el valor de 9
unafuncion();//manda a llamar a la funcion con print de 9
otrafuncion();//manda a llamar la funcion con la variable aumentada en 1
printf("ahora el valor de la variable es: %d\n",variable);//despues del incremento en la funcion se vuelve a imprimir la variable
return 0;
}
void unafuncion()
{
printf("en la funcion una funcion, variable es: %d\n",variable);//imprimira el valor de 9
}
void otrafuncion()
{
variable++;//se modifica variable
printf("en la funcion otra funcion, variable es: %d\n",variable);//se imprime nuevo valor de la variable de 10
}
En unos caso es mas factible hacer todo el proceso dentro de la funcion, y al final solo mandarla a llamar dentro del main. Ejemplo:
El siguiente programa te desarrolla una funcion que calcula su tabla de multiplicar del 1 al 10
#include <stdio.h>
tabla();//declaracion de la funcion
int main()
{
tabla();//llamado de la funcion
}
tabla()
{
float t; //asignacion de variable
float i;//asignacion de contador
printf("dame numero para la tabla\n");
scanf("%f",&t); //registro del numero
if(t>=1) //validacion de numero mayor a 1
{
for(i=1;i<11;i++) //ciclo para multiplicar hasta que i sea igual a 10
{
printf("%.2f * %.2f = %.2f \n",t,i,t*i); //este printf se manda a la funcion llamada en el main
}
}
else printf("numero no valido\n");//si no es valida la afirmacion de if pasa a else
}
U4FuncionSizeof
Dentro de la programación en algunas ocasiones es recomendable sber cuando uso de memoria ocupa cada dato dentro del código, pero esto depende del compilador, por eso para generalizar estos valores se requiere la función sizeof. Ejemplo:
#include <stdio.h>
//en este programa se observara cuanto vale cada tipo de dato en bytes con la funcion sizeof
int main()
{
int a;
char b;
char *c;
float d;
double e;
long double f;
printf("tamaño de a %i\n",a); //toma cualquier valor ya que a no tiene valor
printf("sizeof a %i\n",sizeof(a));//dice el tamaño que ocupa a de tipo int
printf("tamaño de b %c\n",b); //las mascaras varian dependiendo de los datos
printf("sizeof b %i\n",sizeof(b));
printf("tamaño de c %s\n",c);
printf("sizeof c %i\n",sizeof(c));
printf("tamaño de d %f\n",d);
printf("sizeof d %i\n",sizeof(d));
printf("tamaño de e %d\n",e);
printf("sizeof e %i\n",sizeof(e));
printf("tamaño de f %l\n",f);
printf("sizeof f %i\n",sizeof(f)); //hasta la fecha este es el dato mas grande que existe en computacion.
}
U4Mascaras
Dependiendo del dato, el formato (2 decimales, 3 decimales, etc) se utilizan las mascaras.
#include <stdio.h>
#include <stdlib.h>
int main()
{
float a,b,c,d,e,f; //para este dato se utiliza %f, pero tambien existe %d, %i, %h, %o etc
a=12.2;
b=123.28; //asignacion de datos para comprobar las mascaras
c=12345.2813;
d=1234567.42812;
e=12345678.428123123;
f=1234567891011.1234567891;
printf("el valor de a %.1f\n",a); //%.1f solo imprimira un decimal y no importa el numero de enteros
printf("el valor de b %.2f\n",b);// con .2 dos decimales
printf("el valor de c %.4f\n",c); //con .4 cuatro decimales
printf("el valor de d %.5f\n",d);
printf("el valor de e %.9f\n",e);
printf("el valor de f %.10f\n",f);
}
U4ImprimeValor
Se debe tener muy en cuenta que en C todos los argumentos son pasados "por valor", no existe el concepto de paso de parámetros "por variable" o "por referencia".
En pocas palabras en main pueden existir algunas variables con determinado valor y en la función las mismas variables con diferente valor y estas nos se verán alteradas.
#include <stdio.h>
void imprimevalor();
int main()
{
int contador=0;
contador++;
printf("el valor del contador es %d\n",contador);//no cambia 1
imprimevalor();//este es el contador de la funcion 5
printf("ahora el valor del contador es %d\n",contador);//no cambia 1
return 0;
}
void imprimevalor()
{
int contador=5; //esta variable llamada contador no es igual a la variable contador del main
printf("el valor de contador es %d\n",contador);
}
U4VariableExterna
Con las variables externas se puede modificar el valor de esta dentro de main y dentro de las funciones, y una vez modificado su valor ya no regresa a su anterior valor, ejemplo:
#include <stdio.h>
void unafuncion();
void otrafuncion();
int variable; //variable de tipo externa esta se puede modificar dentro del main o de las funciones
int main()
{
variable=9;//se le asigna valor
printf("el valor de variable es %d\n",variable); //se imprime el valor de 9
unafuncion();//manda a llamar a la funcion con print de 9
otrafuncion();//manda a llamar la funcion con la variable aumentada en 1
printf("ahora el valor de la variable es: %d\n",variable);//despues del incremento en la funcion se vuelve a imprimir la variable
return 0;
}
void unafuncion()
{
printf("en la funcion una funcion, variable es: %d\n",variable);//imprimira el valor de 9
}
void otrafuncion()
{
variable++;//se modifica variable
printf("en la funcion otra funcion, variable es: %d\n",variable);//se imprime nuevo valor de la variable de 10
}
Comentarios
Publicar un comentario