[Tutorial C] III.1 - Funciones simples

Ver el tema anterior Ver el tema siguiente Ir abajo

[Tutorial C] III.1 - Funciones simples

Mensaje  HarZe el Mar Jun 23, 2009 4:29 pm

Funciones simples

Primero vamos a enternder qúe, cómo y para qué es una función.
Una función sirve para hacer transformaciones personalizadas a las variables, aplicarles ecuaciones y algoritmos. Sirven para solucionar algún problema, tiene distintos niveles de complejidad, y al final retornan un resultado.
Primero se deben declarar, se deben definir en algún sitio (tu propio código, en alguna libreria o cabecera) y luego usarlas.

Su estructura:
Código:
// Se declara así
TIPO NOMBRE(ARGUMENTOS);
//Se define así
TIPO NOMBRE(ARGUMENTOS)
{
    ALGORITMO
    return VALOR A RETORNAR
}
//Se usan así
NOMBRE(VARIABLES PARA ARGUMENTOS);

Las funciones, al final, retornan una variable, por lo que en tu código puedes tratarlas como una variable. Ya lo veremos bien. Vamos a definir un ejemplo, una función que hace la media de 5 números enteros, en un código completo que podrás compilar si quieres:
Código:
#include <stdio.h>

int n1,n2,n3,n4,n5;
float M;
float media(int a, int b, int c, int d, int e);

int main()
{
    printf("Introduce 5 numeros para hacer su media\n");
    scanf("%i",&n1);
    printf("\n");
    scanf("%i",&n2);
    printf("\n");
    scanf("%i",&n3);
    printf("\n");
    scanf("%i",&n4);
    printf("\n");
    scanf("%i",&n5);
    M = media(n1,n2,n3,n4,n5);
    printf("\n La media es %.2f",M);
    return 0;
}
float media (int a, int b, int c, int d, int e)
{
    float m = (float) (a+b+c+d+e)/5;
    return m;
}

Hay mucho que comentar de este código, pero si lo entendéis al completo, habréis entendido las funciones a la perfección. Lo explicaré al máximo:
Código:
int n1,n2,n3,n4,n5;
float M;
float media(int a, int b, int c, int d, int e);
Primero se delcaran las variables que vamos a usar en el programa. Los 5 números enteros que participarñan en el programa, un número decimal que guarde la variable que resulte de hacer la media, y por último declaramos que existe la función media().
La función main() no necesita ser declarada, ni se debe llamar a su uso, es la que se ejecuta por defecto, la primera.
Dentro contiene instrucciones printf que dan instrucciones para que introduzcas los datos, la función scanf recoge datos que introduzcas con el teclado, "mete un número y pulsa Enter", así funciona. Al igual que printf, scanf es una variable de texto que tiene argumentos, pero funciona al revés, indicando el tipo %i indicamos que vamos a recoger un int, cualquier otro número o letra dará error. Se almacena en n1 la primera vez, luego en las siguientes. Ya explicaré por qué se pone un símbolo & antes de n1, está relacionado con los punteros, pero todo a su tiempo, a centrarnos en esto.
Código:
M = media(n1,n2,n3,n4,n5);
Es la línea más interesante, decimos que el decimal M es igual al número que resulta de la función que hace la media entre esos 5 números.
Código:
float media (int a, int b, int c, int d, int e)
{
    float m = (a+b+c+d+e)/5;
    return m;
}
Al entrar en la función, entramos en otro mundo, según la hemos usado antes, n1 será ahora a, pero solo dentro de la función, n2 será b y así...
La variable que se delcara dentro de una función, como aquí es m, solo sirve dentro de la función, fuera no existe, a esa le damos el valor de la media, haciendo esa operación. Luego retornamos la m cuando ya lleva la media calculada, con esto se acaba la función. M es ahora la variable retornada m. Luego la mostramos, y ya está.

Una cosa más, si quieres usar las funciones como una forma de guardar un código que usarás constantemente, y que no devuelva ninguna variable, tiene que ser de tipo void donde ponías int, float, etc. Así:
Código:
void iniciarPrograma()
{
    codigo....
    return;
}
Puede tener argumentos si lo necesitas, pero a menos que uses variables globales o con punteros, los cambios no se conservarán una vez acabada la función. El return, se usa como un break para la función, cuando se tope con el return, se acaba ahí la función.

HarZe
WebMaster & Desarrollador

Cantidad de envíos : 58
Fecha de inscripción : 21/06/2009
Edad : 24

Ver perfil de usuario http://opengl-esp.superforo.net

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.