Dev-C++, Clase16 – Funciones (en general)

Hola a todos/as,

En ésta clase vamos a tratar sobre las funciones en c++, para ello debemos tener algunos conceptos claros:

¿ Qué es una funcion ?

Una funcion es un conjunto de instrcciones que se la puede llamar desde el programa principal o desde otras funciones.

¿ Para que sirven las funciones ?

Nos sirven para desarrollar algo en especial cuando el programa asi lo necesite.

¿ Como usarlas ?

Para usar funciones, debemos tener en cuenta dos cosas que necesita:

1) La declaracion de la funcion:

Esta nos sirve para que al compilar el programa, el compilador reconozca que esa funcion existe; ya que si la llamamos desde alguna parte del programa sin haberla declarado o habiendola declarado, se la declaró mal eso nos dará error. Entonces es importante antes siquiera de desarrollar la funcion, declararla.

Para declararla se sigue la siguiente sintaxis:

prototipo_de_funcion nombre_de_la_funcion ( parametros opcionales );

¿ Qué es eso de prototipo y parametros ?

- Prototipo de la funcion: sirve para indicar que va a retornar la funcion, si va a retornar un entero, un double, un char, o simplemente no retorna nada ( void ). Esto es obligatorio

- Parametros: son los datos que le enviamos a la funcion para que con ellos posiblemente desarrolle algo que necesitemos. Esto es opcional.

Entonces, una funcion para ingresar podria ser asi:

void ingresar();

Donde vemos no va a retornar nada, por ello tiene void entonces la funcion hace lo que tiene que hacer y termina, no devuelve nada.

Un ejemplo de devolucion seria en una suma de enteros, ya que se le podria enviar como dato los dos numeros y la funcion haria internamente la suma devolviendonos la suma de dichos numeros ( si son todos enteros, devolveria un int. Si son enteros y flotantes devolveria un float ), asi:

int suma_enteros ( int, int ); // suma unicamente enteros, devuelve un entero

float suma_numeros ( float, float ); // suma enteros o flotantes, devuelve un flotante

2) La definicion de la funcion:

Como vimos la declaracion nos servia para que el compilador sepa que existe dicha funcion, ahora la definicion nos sirve ya para desarrollar la funcion; es decir ya programar dentro de ella para que haga lo que necesitamos. Como consecuencia de que ya está creada podemos usarla, pero si no la hubiesemos declarado y la desarrollamos ( hacemos la definicion ), al compilar nos dará error y dirá que esa funcion no fue declarada, que no existe.

La definicion es muy similar a la declaracion, solo que esta vez lleva un ambiente ( donde vamos a programar es decir las llaves “{ … }” ), asi:

void ingresar()

{

……… // Lo que deba hacer esa funcion

}

Tambien otra diferencia es que la declaracion lleva “;” ( punto y coma ) al final, la definicion ya no lo lleva.

Ahora vamos a ver un ejemplo de como usariamos una funcion en nuestro programa, haremos esa “ingresar” que veniamos poniendo de ejemplo.

22.) Hacer un programa que pida dos datos cualesquiera llamando a una funcion sin retorno y luego confirme si se ingresaron correctamente.

Por favor antes de ver ésta entrada recomiendo ver la entrada:

Uso de la aplicacion

ATENCION: en las clases anteriores he explicado las lineas y que hace cada una, entonces les sugiero que vean las entradas anteriores para entender las lineas de las que no voy a hacer mucha enfasis.

Las lineas que ya hayamos visto, les colocaré ” *** “  al final para que sepan que ya lo hemos visto con anterioridad ( entiendase como “anterioridad” a la/las clases anteriores ademas de sus correspondientes entradas en la seccion “General” del mapa de sitio ).

Bien, como datos tenemos que el programa deberá usar una funcion sin retorno, es decir una void. Tambien que debemos pedir en esa funcion dos valores cualesquiera; en mi caso voy a pedir dos cosas: nombre y numero de la suerte; luego se mostrará el mensaje de que se ingresaron correctamente dichos datos, vamos a ello:

#include <iostream.h>
#include <conio.h>

// declaramos la funcion “ingresar”
void ingresar();

main()
{
cout<<“\n Ingrese los datos: \n”;
ingresar();
cout<<“\n Los datos se ingresaron correctamente! \n”;
getch();
}

 

//definimos la funcion “ingresar”

void ingresar()
{
char nombre[10];
int numero;
cout<<“\n Ingrese su nombre: \n”;
cin>>nombre;
cout<<“\n Ingrese su numero de la suerte: \n”;
cin>>numero;
}

- linea 1 – 2: la cabecera y libreria ***

- linea 3: comentario ***

- linea 4: declaracion de la funcion

La declaracion de una funcion debe estar siempre antes de la definicion, por eso es recomendable que se la coloque al inicio del programa debajo de las librerias para que el programa se vea mejor estructurado y puedan encontrar rapido las funciones que han declarado y si hace falta alguna añadirla rapidamente o editarla en caso de haberla declarado mal, es altamente recomendable que se proceda de dicha forma.

De la declaracion de la funcion ingresar, queda muy poco que decir ya lo vimos arriba en los conceptos.

- linea 5: funcion principal ***

- linea 6 – 11: inicio y fin del programa ***

- linea 7: recurso cout ***

- linea 8: llamamos a una funcion ya declarada

Ya que creamos una funcion llamada “ingresar” con el fin de pedir los datos por medio de ella y no por medio del cuerpo principal main(), debemos llamarla / convocarla para que pueda ejecutar lo que tiene programado en su interior ya que por si sola ( sin ser llamada ), el programa terminaria y ella no realizaria ninguna accion.

Para llamar a una funcion lo unico que se debe hacer es escribirla tal cual fue declarada sin alteraciones ya que las funciones son key sensitive, es decir que no es lo mismo:

- void HOLA(); que void HoLa();

Pues distingue mayusculas de minusculas, para el compilador son dos funciones diferentes ( para nosotros son la misma palabra pero escrita diferente ).

Bien, como decia para llamar a la funcion se la coloca tal como fue declarada seguida del punto y coma ( no se le pone el prototipo ), solo el nombre y los posibles parametros que lleve, por lo tanto nuestra declaracion seria:

ingresar();

Como vemos no se le colocó el prototipo ( void ) y no lleva parametros por lo que los parentesis no tienen nada dentro. Esa linea hará que el compilador vaya a donde se encuentra definida dicha funcion y realize lo que ella tenga programado y eso es lo que queremos, pues la funcion “ingresar” es la que le va a pedir los datos al usuario.

- linea 9: recurso cout ***

Esta linea está a continuacion de la llamada a la funcion “ingresar“, pero ésta linea no será ejecutada hasta que termine de ejecutarse lo que contiene la funcion “ingresar” porque los programas van en orden logico no necesariamente en orden lineal, por lo que estando en la linea 8 y llamamos a una funcion cuyo desarrollo está en la linea 15, el compilador saltá a dicha posicion ejecuta todo lo que tiene en ése ambiente ( entre las llaves “{…}” ) y de ahi regresa y continua con la linea 9.

Visto de una manera grafica, así es como funciona la llamada a funciones:

Ampliar imagen

- linea 10: pausamos el programa ***

- linea 12: comentario ***

- linea 13: Definicion de la funcion

Lo mismo, queda poco que decir ya vimos al inicio de la clase como se definian las funciones una vez declaradas, aqui va a ir codigo normal ( codigo que tranquilamente podria ir en la funcion principal main(), pero el enunciado indica que debemos desarrollar una funcion que lo haga ).

Como podemos ver, aqui dentro de la definicion:

- declaramos variables

- mostramos contenido

- pedimos contenido

Son procedimientos normales solo que aplicados de una manera nueva, que estamos viendo en esta clase; “las funciones”.

- linea 14 – 21: Inicio y fin de la funcion ingresar();

Hasta el momento habiamos visto en clases anteriores “inicio y fin del programa”, éste inicio y fin está delimitado por las llaves ( tambien llamado ambiente: “{…}” ), entonces las funciones tambien tienen su ambiente, por lo tanto el inicio y fin de una funcion será desde donde comienza la llave y se cierra.

- linea 15 – 16: Declaramos variables ***

- linea 16: Recurso cout ***

- linea 17: Recurso cin ***

- linea 19: Recurso cout ***

- linea 20: Recurso cin ***

Bien, una vez que se haya ejecutado la linea 20, el compilador irá hacia la linea 9 para continuar con el correcto funcionamiento del programa ahi lo que hará es mostrar un mensaje “Los datos se ingresaron correctamente!” y luego con el getch(); se pausará la aplicacion para ver los resultados.

Eso es todo por ahora, cualquier duda / comentario / sugerencia, haganla con confianza. Saludos! ;)

About these ads

10 comentarios

  1. Tengo un problema para hacer un programa que me arroje los numeros en los cuales se puede partir un numero por ejemplo el 6. exelente tu pagina la verdad es de mucha ayuda.

  2. muy buena tu forma de enseñar me sirvieron de mucho para aprender en poco tiempo.
    un duda seguiras subiendo mas o sobre otros temas relacionados con programacion?

    • Hola Alen, bienvenido!
      pues si; subo información de vez en cuando solo que ya el horario me aprieta demasiado y cada vez tengo menos tiempo, pero cada vez que tengo la oportunidad voy avanzando alguna entrada para ustedes. Saludos, felices fiestas! 8)

  3. tengo duda acerca de procedimientos y valores por referencia y TE AGRADECERIA SI ME DAS UNA ACLARACION DE AMBOS TEMAS

  4. Donde puedo encontrar esta clase pero en video??? esque en el canal no esta xD

    • Hola Jorge, bienvenido!
      ésta clase no esta explicada en video si no, en teoría; la de recursividad decidí hacerla en video pues es más compleja. Igual si ves la de recursividad podrás tapar huecos que te hayan quedado en las funciones en general, saludos y suerte amigo!

  5. hola, me gusta mucho esta tu blog, apenas lo encontre y la verdad ne ha servido demaciado, espero sigas publicando mas, yo tengo una duda,, donde teno que registrarme y para que???

  6. Escribir un programa mediante funciones, que visualice un calendario de
    la forma:
    L M M J V S D
    1 2 3 4 5
    6 7 8 9 10 11 12
    13 14 15 16 17 18 19
    20 21 22 23 24 25 26
    27 28 29 30

    El usuario indica únicamente el mes y el año. La fórmula que permite
    conocer el día de la semana correspondiente a una fecha es:
     Mese de enero o febrero:
    n= a + 31 *(m-1) + d (a-1) div 4 – 3 * ((a+99) div 100) div 4;
     Restantes meses:
    n= a + 31 * (m-1) + d – (4*m + 23) div 10 + a div 4 – (3*(a div 100 + 1)) div 4;
    Donde a=año; m=mes; d=día;
    Nota: n mod 7 indica el día de la semana (1=lunes, 2= martes, etc.)

  7. he tenido problemas con ese ejercicio

  8. Es un gran material pedagogico ,gracias por compartir su conocimiento sobre lenguaje Dev C++, es útil para aquellos que iniciamos

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 120 seguidores

%d personas les gusta esto: