El documento describe las funciones en el lenguaje de programación C++. Explica que las funciones void no devuelven ningún valor y se usan para indicar que una función no requiere parámetros. También cubre las funciones anidadas, las funciones que devuelven punteros, y las funciones sobrecargadas donde funciones con el mismo nombre pero parámetros diferentes permiten sobreescribir funciones.
1. Escuela Superior Politécnica de
Chimborazo
Nombre:
Andrés Solís
Facultad:
Informática y Electrónica
Escuela:
Telecomunicaciones y Redes
Tema:
Funciones Borland C++
2. C++
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne
Stroustrup. La intención de su creación fue el extender al exitoso lenguaje de
programación C con mecanismos que permitan la manipulación de objetos. En ese
sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un
lenguaje híbrido.
Posteriormente se añadieron facilidades de programación genérica, que se sumó a los
otros dos paradigmas que ya estaban admitidos (programación estructurada y la
programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de
programación multiparadigma.
Actualmente existe un estándar, denominado ISO C++, al que se han adherido la
mayoría de los fabricantes de compiladores más modernos. Existen también algunos
intérpretes, tales como ROOT.
Una particularidad del C++ es la posibilidad de redefinir los operadores, y de poder
crear nuevos tipos que se comporten como tipos fundamentales.
El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue
utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el
nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se
refiere a que C++ es una extensión de C.
Funciones void
Bajo ciertas circunstancias se deseará escribir funciones que no regresen valor alguno
(esto sería algo parecido a escribir procederes 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 paréntesis 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 ( ).
3. Funciones anidadas
A diferencia de Pascal, el lenguaje C, C++ no permite anidar funciones, sin embargo,
dentro de una función 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.
#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;
}
4. Funciones sobrecargadas
C++, a diferencia del C estándar, permite declarar funciones con el mismo nombre y a
esto se conoce como sobrecarga de funciones. Las funciones sobrecargadas pueden
coincidir en tipo, pero al menos uno de sus parámetros tiene que ser diferente. En todo
caso, si usted trata de declarar funciones sobrecargadas que coincidan en tipo y número
de parámetros el compilador no se lo permitirá. Para poner un ejemplo vamos a
considerar el caso de dos funciones cuyo nombre será divide, ambas regresarán el
cociente de dos números, salvo que una de ellas operará sobre números enteros y la otra
lo hará sobre números reales (de punto flotante).
Nota: cuando en los programas se hace una llamada a una función sobrecargada, el
compilador determina a cual de las funciones invocar en base al tipo y número de
parámetros pasados a la función.
#include <iostream.h>
#include <stdlib.h>
using namespace std;
// divide enteros
int divide(int a, int b)
{
cout << "división entera" << endl;
return ( (b != 0) ? a/b : 0);
}
// divide reales
double divide(double a, double b)
{
cout << "división real" << endl;
return ( (b != 0) ? a/b : 0);
}
// punto de prueba
int main()
{
cout << divide(10, 3) << endl;
cout << divide(10.0, 3.0) << endl;
cin.get();
}