Implementar funciones y procedimientos en nuestros programas es una muy buena práctica entre los programadores, debido a que ayuda a mantener organizado el código y nos permite reutilizar funcionalidades en varias partes de nuestro programa. La idea es que se realicen siempre que se pueda.

Procedimientos

Un procedimiento es un fragmento de código cuya tarea es realizar una acción específica y de forma independientemente dentro de nuestro programa. En general los procedimientos se utilizan para resolver algún subproblema dado.

La sintaxis es:

void nombreprocedimiento (parametros){
 ... 
 ...
 instrucciones
 ...
 ...
}

En donde:

Para llamar a un procedimiento debemos escribir el nombre del procedimiento junto a los parámetros dentro de paréntesis.

nombre_procedimiento(parametros);

Ejemplo: Calcular la base de un triángulo.

#include <stdio.h>
#include <stdlib.h>

void calculaareatriangulo(float _base, float _altura){
        float resultado;
        resultado=((_base*_altura)/2);
        printf ("El area del triangulo es %.2f", resultado);
}

int main(void)
{
        float _base, _altura;
        
        printf ("Este programa calculara la base de un triangulo\n");
        printf ("Ingrese la base para el triangulo: ");
        scanf ("%f", &_base);
        printf ("Ingrese la altura para el triangulo ");
        scanf ("%f", &_altura);
        
        calculaareatriangulo(_base, _altura);
        return 0;

}

Descarga el ejemplo

En el ejemplo anterior se puede visualizar que nuestro programa principal (main), hace el llamado al procedimiento calculaareatriangulo que recibe dos parámetros, _base y _altura, requeridos para realizar la tarea de cálculo.

También podemos encontrar con mucha frecuencia que los procedimientos sean declarados de la siguiente forma:

#include <stdio.h>
#include <stdlib.h>

void calculaareatriangulo(float _base, float _altura);

int main(void)
{
        float _base, _altura;
        
        printf ("Este programa calculara la base de un triangulo\n");
        printf ("Ingrese la base para el triangulo: ");
        scanf ("%f", &_base);
        printf ("Ingrese la altura para el triangulo ");
        scanf ("%f", &_altura);
        
        calculaareatriangulo(_base, _altura);
        return 0;

}

void calculaareatriangulo(float _base, float _altura){
        float resultado;
        resultado=((_base*_altura)/2);
        printf ("El area del triangulo es %.2f", resultado);
}

Descarga el ejemplo

Es muy recomendable definir todos los procedimientos y funciones antes de la función principal main, el motivo de esto es que en C todas las funciones y procedimientos deben definirse antes de la primera línea de código en que se usa. En caso de que incumplamos ésta norma a la hora de compilar tendremos errores. De forma trivial podremos decir que siempre que escribamos nuestros procedimientos por debajo del main, debemos declararlos de forma que digamos a nuestro programa que alguna parte de nuestro código existe un procedimiento con esa declaración. Con esto tendremos visibilidad completa de todo nuestro programa.

Funciones

Podemos definir que una función es prácticamente lo mismo que un procedimiento excepto por un gran detalle, una función siempre devolverá un valor al programa principal, por contraparte un procedimiento no lo hace.

Para llamar a una función debemos primero debemos declarar una variable que será del tipo del retorno de la función, posterior escribimos el nombre de la función y entre paréntesis los parámetros requeridos.

int variable;

variable=nombre_funcion(parametros);

Ejemplo:

#include <stdio.h>
#include <stdlib.h>

void calculaareatriangulo(float _base, float _altura);

int main(void)
{
        float _base, _altura, area;
        
        printf ("Este programa calculara la base de un triangulo\n");
        printf ("Ingrese la base para el triangulo: ");
        scanf ("%f", &_base);
        printf ("Ingrese la altura para el triangulo ");
        scanf ("%f", &_altura);
        
        area=calculaareatriangulo(_base, _altura);
        printf ("El area del triangulo es %.2f", area);
        return 0;

}

void calculaareatriangulo(float _base, float _altura){
        float resultado;
        resultado=((_base*_altura)/2);
        return resultado;
}

Descarga el ejemplo

Al igual que los procedimientos, existe la forma de definir todas las funciones desde antes del programa inicial.

#include <stdio.h>
#include <stdlib.h>

float calculaareatriangulo(float _base, float _altura){
        float resultado;
        resultado=((_base*_altura)/2);
        return resultado;
}

int main(void)
{
        float _base, _altura, resultado;
        
        printf ("Este programa calculara la base de un triangulo\n");
        printf ("Ingrese la base para el triangulo: ");
        scanf ("%f", &_base);
        printf ("Ingrese la altura para el triangulo ");
        scanf ("%f", &_altura);
        
        resultado=calculaareatriangulo(_base, _altura);
        
        printf ("El area del triangulo es %.2f", resultado);
        return 0;

}

Descarga el ejemplo

Parámetros

Algo muy importante para los procedimientos y funciones son los parámetros. Los parámetros son valores que se traspasan a un procedimiento o función para que puedan ser usados como valores propios de ese fragmento de programa. Algo muy importante de considerar es que para utilizar los parámetros en un procedimiento o función debemos declarar el tipo de dato y su identificador, de la misma forma que declaramos una variable. Además la cantidad de variables que se envían deben ser igual en cantidad, orden y tipo a las variables que reciben. Saber que la variable que se recibe tiene un ámbito local dentro del procedimiento, es decir solo la puede usar ese procedimiento, en la función cabe la posibilidad de retornar dicho valor.

Si volvemos a mirar los ejemplos de procedimientos y funciones que calculan el área de un triangulo, se están pasando los parámetros _base y _altura, si nos percatamos delante de cada uno de estos parámetros definimos el tipo de dato a utilizar.

Procedimiento

void calculaareatriangulo(float _base, float _altura)

Función

float calculaareatriangulo(float _base, float _altura)

Es muy importante respetar el orden del traspaso, de lo contrario esperaremos resultados inesperados o fuera de lugar. IMPORTANTE: los identificadores (variables, nombres, etc.) son palabras usadas por nosotros para orientarnos (lenguaje humano), el computador maneja celdas de memoria, por lo que para él, da igual como se llamen en el programa, en las funciones y en los procedimientos.

Existen dos formas de pasar los parámetros a un procedimiento o función, por valor o por referencia.

Ejemplo Para un procedimiento:

void areatriangulo (float _base, float _altura)

Para una función:

float areatriangulo (float _base, float _altura)

#include <stdio.h>
#include <stdlib.h>

int sumarXvalor(int a,int b);

void sumarXreferencia(int a,int b,int *resultado);

int main(){
        int a=5;
        int b=2;
        int resultado=0;
        printf("Los valores son: %i y %i \n",a,b);
        printf("Paso de Parametros por Valor\n");
        resultado = sumarXvalor(a,b);
        printf("Resultado: %i: \n",resultado);
        printf("\nPaso de Parametros por Referencia\n");
        printf("Pasamos el valor de posicion en memoria de la variable resultado: %p\n",&resultado);
        sumarXreferencia(a,b,&resultado);
        printf("Resultado: %i: ",resultado);
        return 0;
}
int sumarXvalor(int a, int b){
        return a+b;
}
void sumarXreferencia(int a,int b,int *resultado){
        *resultado = a + b;
}

Descarga el ejemplo

oci/lenguajec/procedimientofunciones (última edición 2014-07-12 05:12:42 efectuada por FabioDuran)