Tutorial de C++ - Parametros, ambito, sobrecarga

6 - Parametros, ambito, sobrecarga

[editar]
Tutorial creado por Peter Class; traducción por Pello Xabier Altadill Izura. Extraido de: http://es.tldp.org/Manuales-LuCAS/doc-tutorial-c++/html/
28 de Febrero de 2006
El camnio de c++ es largo, pero se sigue avanzando. Veamos las funciones inline, un recurso interesante para mejorar el rendimiento.

|| / * Inline.cpp * Programa para probar funciones Inline * Las funciones Inline no se compilan como funciones aparte, * lo que se hace al compilar es a&ntilde;adir el contenido de la funcion haya * donde se se invoca. Con lo que es mucho mas rapido de ejecutar * y ademas nos da la limpieza de separar el codigo. * * Pello Xabier Altadill Izura * * Compilado: g++ Inline.cpp -o Inline */ using namespace std; #include <iostream> las funciones en CPP las debemos declarar antes de invocar aqui tenemos el prototipo. Si no se pone tendremos ERROR de compilador Declaramos la funcion como inline inline double Calcula (double a, double b); Log : saca un mensaje por pantalla void Log(char *mensaje); Variables globales long variable = 666; char *PROGRAMA = "Globales> "; int main () { Sacamos por salida standar un mensaje Log("Vamos a probar los operadores"); unsigned int test = 0; double a = 23, b = 21, c = 34; Tomamos el valor a Log("Dame valores. \na="); cin >> a; Tomamos el valor b cout << "b="; cin >> b; cout << "Y ahora son estos: b=" << b << " a=" << a << " global:" << variable << "Y el resultado de la funcion c=" << c << endl; Probamos la funcion Log("Venga va vamos"); return 0; } / * Calcula * parametros: double a, double b * devuelve double * En la implementacion no hace falta volver a poner INLINE */ double Calcula (double a, double b) { a *= 35462; b *=32546 + a; return (a / b) * variable; } / * Log * parametros: char *mensaje * devuelve void */ void Log (char *mensaje) { cout << PROGRAMA << mensaje << endl; } ||

Paso de parametros Vamos a ver formas de pasar parametros.

|| /
* Parametros.cpp * Programa para probar los parametros de las funciones y * la forma de aplicar valores por defecto * * Pello Xabier Altadill Izura * * Compilado: g++ Parametros.cpp -o Parametros */ using namespace std; #include <iostream>
las funciones en CPP las debemos declarar antes de invocar aqui tenemos el prototipo. Si no se pone tendremos ERROR de compilador double Calcula (double a, double b); Log : saca un mensaje por pantalla void Log(char *mensaje = "Sin valor prefijado"); suma: suma dos valores int Suma(int a = 0, int b = 0, int c = 0); Variables globales long variable = 666; char *PROGRAMA = "Globales> "; int main () { Sacamos por salida standar un mensaje Log("Vamos a probar los operadores"); Llamada sin parametros Log(); unsigned int test = 0; int a = 23, b = 21, c = 34, d = 0; Llamanda sin parametros d = Suma(); cout << "Y el resultado de la funcion Suma sin parametros :" << d << endl; Llamada con parametros d = Suma(a,b,c); cout << "Y el resultado de la funcion Suma :" << d << endl; Probamos la funcion Log("Venga va vamos"); return 0; } / * Calcula * parametros: double a, double b * devuelve: double */ double Calcula (double a, double b) { return (a / b) * variable; } / * Log * parametros: char *mensaje * devuelve: void * NOTA: no hace falta volver a poner el valor prefijado */ void Log (char *mensaje) { cout << PROGRAMA << mensaje << endl; } / * Suma * parametros: int a, int b, int c * devuelve: int */ int Suma (int a = 0, int b = 0, int c = 0) { Log("Vamos a ver. Estamos en suma. "); Devolvemos un valor return (a + b + c); } ||

Sobrecarga de funciones La sobrecarga es otro concepto básico en la POO. Aqui se muestra un boton.

|| /
* Sobrecarga.cpp * Programa para probar la sobrecarga de funciones * La sobrecarga es una misma funcion con distintos parametros * Con la sobrecarga logramos el POLIMORFISMO de clases y funciones * * Pello Xabier Altadill Izura * * Compilado: g++ Sobrecarga.cpp -o Sobrecarga */ using namespace std; #include <iostream> las funciones en CPP las debemos declarar antes de invocar aqui tenemos el prototipo. Si no se pone tendremos ERROR de compilador double Calcula (double a, double b); int Calcula (int a, int b); float Calcula (float a, float b); Log : saca un mensaje por pantalla Esto provocaria error de compilador por ambiguedad de sobrecarga void Log(); Log : saca un mensaje por pantalla NOTA: el valor por defecto solo se pone en la DECLARACION void Log(char *mensaje = "Sin valor prefijado"); suma: suma dos valores int Suma(int a = 0, int b = 0, int c = 0); Variables globales long variable = 666; char *PROGRAMA = "Globales> "; int main () { Sacamos por salida standar un mensaje Log("Vamos a probar los operadores"); Llamada sin parametros Log(); unsigned int test = 0; int a = 23, b = 21, c = 34, d = 0; Llamanda sin parametros d = Suma(); cout << "Y el resultado de la funcion Suma sin parametros :" << d << endl; Llamada con parametros d = Suma(a,b,c); cout << "Y el resultado de la funcion Suma :" << d << endl; Probamos la funcion Log("Venga va vamos"); return 0; } / * Calcula * parametros: double a, double b * devuelve: double */ double Calcula (double a, double b) { return (a / b) * variable; } / * Calcula * parametros: float a, float b * devuelve: float */ float Calcula (float a, float b) { return (a / b) * variable; } / * Calcula * parametros: long a, long b * devuelve: long */ long Calcula (long a, long b) { return (a / b) * variable; } / * Log * parametros: char *mensaje * devuelve: void */ void Log (char *mensaje) { cout << PROGRAMA << mensaje << endl; } / * Suma * parametros: int a, int b, int c * devuelve: int */ int Suma (int a = 0, int b = 0, int c = 0) { Log("Vamos a ver. Estamos en suma. "); Devolvemos un valor return (a + b + c); } ||

El ambito Hasta donde se identifica una variable? Para saltarnos todas las vallas podemos usar variables globales. No conviene abusar de este tipo de variables.

|| /
* Globales.cpp * Programa para probar variables y su scope * * Pello Xabier Altadill Izura * * Compilado: g++ Globales.cpp -o Globales */ using namespace std; #include <iostream> las funciones en CPP las debemos declarar antes de invocar aqui tenemos el prototipo. Si no se pone tendremos ERROR de compilador double Calcula (double a, double b); Log : saca un mensaje por pantalla void Log(char *mensaje); Variables globales long variable = 666; char *PROGRAMA = "Globales> "; int main () { Sacamos por salida standar un mensaje Log("Vamos a probar los operadores"); unsigned int test = 0; double a = 23, b = 21, c = 34; Tomamos el valor a Log("Dame valores. \na="); cin >> a; Tomamos el valor b cout << "b="; cin >> b; cout << "Y ahora son estos: b=" << b << " a=" << a << " global:" << variable <<< "Y el resultado de la funcion c=" << c << endl; Probamos la funcion Log("Venga va vamos"); return 0; } / * Calcula * parametros: double a, double b * devuelve double */ double Calcula (double a, double b) { return (a / b) * variable; } / * Log * parametros: char *mensaje * devuelve void */ void Log (char *mensaje) { cout << PROGRAMA << mensaje << endl; } ||
[editar]

23 opiniones

yery cruz

12345
DamiaN

Mal exlicado :S,
no dice nada

agan algo de servicio por favor no mas estupidos
alegoria

cuando uno va a esplicar de progamacion primero se esplican los concepto, delas intrucciones,para que el estudiante sepa lo que se dice o de lo que se esta hablando, si es que esta pagina intructiva, sinoo no pongan estos ejemplo pues son tan astracto para los principiates que lo que hacen es asustarlos y seban , para esto de maestro, hay que ser humilde yno creer que como ya yo se no me importa lo que venga, no tomen esto, como algo mejoren, mejoren,mejoren, los quiero mucho migel.
Sobre nombre de array.

Hola, peter. Respecto a tu primera pregunta sobre cómo nombrar lo que en el código aparece como "array" en inglés, te puedo decir que no es correcta ninguna de las dos opciones que ofreces. Si se usa "arrays" se está españolizando la palabra inglesa "array". No muy conveniente, porque en español ya existe la palabra adecuada para ese concepto: "vector". De todos modos, españolizar una palabra inglesa en argot técnico no es tan grave como usar la palabra española traducida según una acepción inglesa incorrecta. Nunca se debería usar "arreglo".
1 2 3 4 5 | siguiente >

Tutoriales relacionados con 'Tutorial de C++'

Este es el diario de Peter Class sobre sus dias aprendizaje de una disciplina de... Más »
Este tutorial presenta los conceptos básicos de líneas de transmisión (Transmission lines), así como una... Más »
Si tuviera que buscar un adjetivo para calificar a Sendmail, pensaría en "excesivo". Excesivo puesto... Más »
La red telefónica básica se creó para permitir las comunicaciones de voz a distancia. Esto... Más »
Bienvenidos al manual de HTML de Indaya.A través de todos estos capítulos vamos a descubrir... Más »

Autor y licencia de 'Tutorial de C++'


Tutorial de Peter Class; traducción por Pello Xabier Altadill Izura. Extraido de: http://es.tldp.org/Manuales-LuCAS/doc-tutorial-c++/html/ CopyLeft
Este documento se cede al dominio publico.
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.