EVAP 4

FUNCIONES EN LENGUAJE DE PROGRAMACION :
 
Funciones
Las funciones son las estructuras ms importantes dentro del lenguaje de programacion C (y en general de cualquier lenguaje procedural). Permiten una programacion estructurada y simplifican la lectura del codigo; pero lo mas importante es que, una funcion sencilla que realiza una tarea bien especifica, puede ser reutilizada con extrema facilidad en cualquier otro programa.
Modelo de programación estructurada









Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. Cuando una función es invocada se le pasa el control a la misma, una vez que esta finalizó con su tarea el control es devuelto al punto desde el cual la función fue llamada.


 involucra dos pasos:
  1. Declaracion de la funcion (prototipo). Esto consiste en declarar la funcion indicando el nombre, el tipo de retorno que posee, y el n�mero y tipo de argumentos que recibe. Esta declaracion puede realizarse o bien en el mismo archivo fuente, o en un header file (tipicamente con extension ".h") e incluirse mediante la directiva #include.
  2. Definicion de la funcion., o implementacion del codigo mismo. Que puede realizarse tambien en un archivo separado que se incluir en la linea de compilacion.

La forma general de una funcion es:
Tipodato Nomfun(parametros)
{
cuerpo de instrucciones;
return [dato,var,expresion];
}
Donde tipodato especifica el tipo de dato que regresara la función.
La instrucción RETURN es quien regresa un y solo un dato a la parte del programa que la este llamando o invocando, sin embargo es de considerar que return puede regresar un dato, una variable o una expresión algebraica(no ecuación o formula) como lo muestran los siguientes ejemplos;
a) return 3.1416;
b) return area;
c) return x + 15/2;
La lista de parametros formales es una lista de variables separadas por comas (,) que almacenaran los valores que reciba la funcion, estas variables actuan como locales dentro del cuerpo de la funcion.
Aunque no se ocupen parametros los paréntesis son requeridos.
INSTRUCCION RETURN
Dentro del cuerpo de la función deber haber una instrucción return cuando menos para regresar el valor, esta instrucción permite regresar datos.
Recordar ademas que cuando se llame una función debera haber una variable que reciba el valor que regresara la función, es decir generalmente se llama una función mediante una sentencia de asignacion, por ejemplo resultado=funcion(5, 3.1416);
prog14.cpp
<code>
#include <stdio.h>
#include <conio.h>
#include <string.h>
todos los proc y funciones deben declararse antes del main float fun1(float b, float a); void main() { clrscr(); capturando datos
area de declaracion de variables y captura de datos int base,altura; float area; area de captura
printf(“dame base: ”);scanf(”%d”,&base);
printf(“dame altura: ”);scanf(”%d”,&altura);
llamando o invocando la funcion fun1 area= fun1(base, altura); desplegando
printf(” area =%0.2f”,area);
getchar();getchar();
}
float fun1(float b, float a)
{
return b * a / 2;
}
</code
Corrida:
image205.jpg
Usar de preferencia solo ints y doubles como parametros.
Es permitido poner mas de un return en el cuerpo de instrucciones sobre todo en condiciones, pero solo un return se ejecutara, ejemplo;
if (suma >= 10)
{ return 10; }
else
{ return 20; }
EXISTEN 3 CLASES USUALES DE FUNCIONES.
Las primeras son de tipo computacional que son diseñadas para realizar operaciones con los argumentos y regresan un valor basado en el resultado de esa operación.
Las segundas funciones son aquellas que manipulan información y regresan un valor que indican la terminacion o la falla de esa manipulacion.
Las terceras son aquellas que no regresan ningun valor, es decir son estrictamenta procedurales.
Esto quiere decir que en general toda operación o calculo en un programa debera convertirse a una o muchas funcíones y el resto deberan ser procedimientos.

Funciones void
Bajo ciertas circunstancias se deseará escribir funciones que no regresen valor alguno (esto sería algo parecido a escribir procedures en Pascal) y para ello podemos declarar a la función como void. La palabra reservada void es utilizada para declarar funciones sin valor de retorno y también para indicar que una función específica no requiere de parámetros. Por ejemplo, la función pausa() que se verá en seguida, no devolverá valor alguno y la misma no requiere de parámetros.
// esta función requiere de la librería iostream void pausa(void) { cout << "Por favor presione <Enter> HOLA..."; cin.get(); cin.ignore(255, '\n'); // rechazar caracteres introducidos antes de <Enter> }
Notas: se debe de aclarar que el uso de la palabra void dentro de los parentesis es opcional al momento de declarar una función. Así, la función pausa() podría haberse declarado como void pausa(), y la misma puede invocarse como: pausa();.
Funciones anidadas
A diferencia de Pascal, el lenguaje C, C++ no permite anidar funciones, sin embargo, dentro de una funcíon puede existir la llamada a una o más funciones declaradas previamente.
Funciones de tipo puntero (*)
En muchas ocasiones se desea que ciertas funciones regresen una referencia o puntero hacia un tipo (sea este estructurado o no) específico de dato en lugar de un valor específico. En tales casos, la función se deberá declarar como para que regrese un puntero. Por ejemplo, supongamos que deseamos crear una función para convertir un número entero en notación decimal a una cadena de caracteres en forma de números binarios, luego, la función mencionada podría escribirse para que reciba el número entero como parámetro y regrese un puntero a una cadena de caracteres conteniendo la conversión. Para ser más puntuales, vamos a escribir un programa en donde se verá la función binstr(), y cuyo objetivo será precisamente convertir números decimales en cadenas binarias.
Nota: observe que en la sintaxis para declarar funciones tipo puntero se debe de poner el símbolo * despues del tipo y antes del nombre de la función que se está declarando. Esto se puede ver en el programa, ya que la función binstr se declara como: char *binstr(unsigned int);
#include <iostream> #include <string.h> using namespace std; // declaración de prototipo char *binstr(unsigned int); // punto de prueba int main() { int n = 128; cout << "decimal = " << n << ", binario = " << binstr(n) << endl; cin.get(); } // definición de función binstr() // nota: esta funcion requiere de la librería estándar string char *binstr(unsigned int n) { static char buffer[65]; int i = 0; strcpy(buffer, "0"); if (n > 0) { while (n > 0) { buffer[i] = ( n & 1 ) + '0'; i++; n >>= 1; } buffer[i] = '\0'; strrev(buffer); } // fin (n > 0) return buffer; }

0 comentarios:

Publicar un comentario