jueves, 22 de octubre de 2015

Ejemplos de Manejo de Funciones


Ejemplos de Manejo de Funciones



A continuacion podran ver algunos ejemplos sobre el manejo de funciones y como funcionan las funciones en el lenguaje C.


/* Inclusión de archivos */
#include <stdio.h>

void holamundo(void) /* Función donde se ejecuta la lógica del programa */
{
  printf("Hola Mundo\n"); /* imprime la cadena */
 return; /* sale de la función */
}
 
int main(void) /* Función principal del programa */
{
 holamundo(); /* llamada a la función holamundo */
 return 0; /* sale del programa con código 0 (correcto) */
}


Este código es en todo equivalente al "Hola Mundo" original, sólo que nos muestra cómo escribir y cómo utilizar una función. Y además nos muestra un principio de buena programación: meter las sentencias que "hacen el trabajo" en otras funciones específicas para sacarlas de main(), dejando en ésta tan sólo un guión general de lo que hace el programa, no las órdenes específicas. De esta manera se facilita la comprensión del programa, y por tanto el futuro trabajo de modificarlo.


#include <stdio.h>

int main(void)
{
 int suma = sumar(5, 3); /* ERROR, sumar no ha sido declarada aún */
 printf("La suma es: %d ", suma);
 return 0;
}

int sumar(int numero1, int numero2)
{
 return numero1 + numero2;
}


En este caso el programa es erróneo y no compila, ya que en la línea donde se llama a la función sumar, el compilador aún no conoce ninguna función con ese nombre, y cuáles son sus argumentos y valor de retorno.

Una posible solución es declarar el prototipo de la función al principio, para informar al compilador que existe, y luego definir el cuerpo de la misma en cualquier lugar del programa:


#include <stdio.h>

/* Declaración */
int sumar(int numero1, int numero2);

int main(void)
{
 int suma = sumar(5, 3);
 printf("La suma es: %d ", suma);
 return 0;
}

/* Definición */
int sumar(int numero1, int numero2)
{
 return numero1 + numero2;
}


Y un ejemplo de Funcion Recursiva =).


#include <stdio.h>

void funcionA(char c); /* se declara el prototipo de la función para que el llamado */
void funcionB(char c); /* a la misma en la función no sea implícita */

int main(void)
{

 funcionA('z'); /* llamado a funcionA */

 return 0;
}

void funcionA(char c)
{
 if (c > 'a') /* caso base mientras c no sea menor que A */
  funcionB(c); /* llamado a la funcionB */

 printf("%c ", c); /* imprimimos el valor de c */
*la variable es un parametro no utilizado para este proceso
}

void funcionB(char c)
{
 funcionA(--c); /* llamado a la funcionA decrementando el valor de 'z' */
}

No hay comentarios:

Publicar un comentario