10º CAPITULO Por mycrox.
FUNCIONES Y PROCEDIMIENTOSOK, por fin un nuevo capitulo, debidos a problemas de tiempo por la universidad ademas de mis negocios

. Trataré de explicar este nuevo concepto que introduciré en el curso, que será muy útil a la hora de programar "programas" de verdad.
Sabemos ya hacer programas basicos en C, imprimir cosillas en pantalla, realizar operaciones bascias como la suma, resta, etc, etc. Programas sencillos, cierto?

ahora, empezaremos con cosillas un poco mas avanzadas, como son las funciones y procedimientos para pasar de inmediato a manejo de strings.
¿Cual es la diferencia entre una función y un procedimiento?La funcion te
retorna un valor que puedes utilizar segun los casos, en cambio, el procedimiento solo ejecuta una parte del codigo devolviendo nada.
NOTA: fijense que la funcion
main retorna
CERO.¿Qué es entonces una función y un procedimiento?Procedimiento: Basicamente es "una parte del codigo" que puedes utilizar cuando desees.
Función: También es una parte de código pero que te retorna valores de acuerdo al tipo de función, ya sea int, float, etc.
Procedimientos sin argumentos: veamos un ejemplo:

Ahora veamos el mismo codigo pero con un procedimiento:
Explicacion del codigo:-El programa empieza en la funcion MAIN, esto siempre es asi.
-Imprimo un menu.
-Si es la opcion un 1, voy al procedimiento
"sumar"-ejecuto el codigo de la suma y cuando termina regresa a donde se llamó originalmente.
-Vuelve a visualizarse el menu hasta que la opcion sea 2.
¡OJO!:si se fijan bien, el procedimiento
sumar() no tiene ningun
return y ademas es
void, esto es lo que lo diferencia de una función, el programa solo ejecutó el código y vuelve a donde lo llamaron.
void significa "nada".Funciones sin argumentos: ahora veamos el mismo ejemplo pero como una funcion que retorna un valor:

Este ejemplo es bastante sencillo para entender las funciones.
Explicacion del código:
-El programa empieza en la funcion MAIN.
-Imprimo un menu.
-Si es la opcion un 1, voy a la funcion "sumar" y el resultado de esa suma se lo asigno a la variable total.
-regresa a donde se llamó originalmente e imprime la variable total que es el resultado.
-Vuelve a visualizarse el menu hasta que la opcion sea 2.
¡OJO!:esta vez la función es de tipo
INT y no
VOID, esto es porque a la funcion yo le doy un valor, en este caso, un numero que es el resultado de la suma. Una funcion tambien puede ser de tipo float, double y lo que quieras de acuerdo a tus necesidades.
tambien puedo retornar operaciones, es decir, puedo poner
return a+b, en vez de
return resultado.¿¿¿Ahora se entiende porque se pone un "return 0" en el main y ademas es de tipo int???, esto le dice a la consola de windows que el programa se finalizó correctamente, en cambio si se fijan en la funcion
exit(), le entrego el
valor 1, diciendole a la consola que hubo algun error en la ejecucion, cosa que en este caso no sucede, solo que me equivoque
Dos maneras de utilizar funciones y procedimientos:Las funciones o procedimientos los puedes utilizar de la manera que las puse en las fotos, es decir, poner PRIMERO la o las funciones y LUEGO el main.
Otra manera de hacerlo es
"DECLARANDO LA FUNCION" antes del main, y luego depues del main recien
"DARLE FORMA"ejemplo:

en la foto se ve que "declaro" la funcion sumar antes del main con un PUNTO Y COMA, y luego abajo del main, recien la CODEO. Esto sirve para indicarle al compilador que existe una funcion mas abajo del main, debido a que el
compilador se va directamente al main sin importarle nada mas

.
Argumentos.
¿Que son los argumentos?Basicamente, son los valores que le das a una funcion o procedimiento para que esta trabaje con ellas.
El mismo ejemplo de la suma pero con argumentos:

Si se fijan, al momento de llamar a la funcion
sumar, le entrego entre parentesis el valor de a a la variable
valor1 y el valor de b a la variable
valor 2, la funcion realiza la operacion de la suma y retorna el resultado, este resultado se lo asigno a la variable total.
SIMPLE NO?
/*No olviden declarar la funcion antes del main*/OTRO EJEMPLO PERO NO EN FOTO PORQUE NO ALCANZA:
#include <stdio.h>
#include <stdlib.h>
/*Declaracion de procedimientos*/
void sumar(int valor1, int valor2);
void restar(int valor1, int valor2);
void multiplicar(int valor1, int valor2);
void ingresar_valores();
/*Declaracion de variables globales*/
int resultado;
int a, b;
int main()
{
int total;
int opcion;
ingresar_valores();
while(1)
{
system("cls");
printf("Que deseas hacer?\n");
printf("\n[1]-Sumar\n");
printf("[2]-Restar\n");
printf("[3]-Multiplicar\n");
printf("[4]-Cambiar los valores\n");
printf("[5]-Salir\n");
printf("\nSeleccione: ");
scanf("%i", &opcion);
switch(opcion)
{
case 1: sumar(a,b);
break;
case 2: restar(a,b);
break;
case 3: multiplicar(a,b);
break;
case 4: ingresar_valores();
break;
case 5: exit(0);
}
system("pause>nul");
}
return 0;
}
void sumar(int valor1, int valor2)
{
resultado=valor1+valor2;
printf("El resultado de la suma de %i + %i es de %i\n", a, b, resultado);
}
void restar(int valor1, int valor2)
{
resultado=valor1-valor2;
printf("El resultado de la resta de %i - %i es de %i\n", a, b, resultado);
}
void multiplicar(int valor1, int valor2)
{
resultado=valor1*valor2;
printf("El resultado de la multiplicacion de %i * %i es de %i\n", a, b,
resultado);
}
void ingresar_valores()
{
printf("Ingresa el valor de a: ");
scanf("%i", &a);
printf("Ingresa el valor de b: ");
scanf("%i", &b);
}
espero que con esto haya quedado mas claro el tema de las funciones y procedimientos.
Son las 1 A.M. y me muero de sueño, si se me olvidaron cosas que es mu
probable, no duden en consultar acá:
CURSO C++ DESDE CEROsaludos.
Proximo capitulo:
STRINGS.