Diferencia entre revisiones de «Funciones en Línea en C++»

m (Texto reemplazado: «<div align="justify">» por «»)
 
(No se muestran 6 ediciones intermedias de otro usuario)
Línea 1: Línea 1:
 
{{Definición
 
{{Definición
 
|nombre= Funciones en Línea
 
|nombre= Funciones en Línea
|imagen=cplusplus.jpg
+
|imagen=Funciones1.png
 
|tamaño=
 
|tamaño=
 
|concepto= [[C++]] tiene funciones en línea que ayudan a reducir la sobrecarga por
 
|concepto= [[C++]] tiene funciones en línea que ayudan a reducir la sobrecarga por
 
llamadas de función especial para pequeñas funciones y en este artículo le presentaremos algunos ejemplos de estas funciones.
 
llamadas de función especial para pequeñas funciones y en este artículo le presentaremos algunos ejemplos de estas funciones.
}}<div align="justify">
+
}}
 +
'''Funciones en linea en C++''' 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.
  
 
==¿Como funciona?==
 
==¿Como funciona?==
  
Desde el punto de vista de la ingeniería del software es una buena idea poner en práctica un programa como un conjunto de funciones, pero las llamadas de función involucran sobrecarga en tiempo de ejecución. [[C++]] tiene funciones en línea que ayudan a reducir la sobrecarga por llamadas de función especial para pequeñas funciones. El [[calificador inline]] colocado en definición de función antes del tipo de regreso de una función “aconseja” al compilador que genere una copia del código de la función “in situ”, a fin d evitar una llamada de función. La contrapartida es que en el programa se insertan muchas copias de código de la función, en vez de, cada vez que se llama a la función, tener una copia de la función a la cual pasarle el control. El [[compilador]] puede ignorar el calificador inline y típicamente así lo hará para todas, a excepción de las funciones más pequeñas.
+
Desde el punto de vista de la ingeniería del software es una buena idea poner en práctica un programa como un conjunto de funciones, pero las llamadas de función involucran sobrecarga en tiempo de ejecución. [[C++]] tiene funciones en línea que ayudan a reducir la sobrecarga por llamadas de función especial para pequeñas funciones.  
 +
 
 +
El [[calificador inline]] colocado en definición de función antes del tipo de regreso de una función “aconseja” al compilador que genere una copia del código de la función “in situ”, a fin d evitar una llamada de función. La contrapartida es que en el programa se insertan muchas copias de código de la función, en vez de, cada vez que se llama a la función, tener una copia de la función a la cual pasarle el control. El [[compilador]] puede ignorar el calificador inline y típicamente así lo hará para todas, a excepción de las funciones más pequeñas.
  
 
Las funciones en línea ofrecen ventajas en comparación con las macros de preprocesador que expanden código en línea. Una ventaja es que las funciones inline son iguales a cualquier otra función de C++.  
 
Las funciones en línea ofrecen ventajas en comparación con las macros de preprocesador que expanden código en línea. Una ventaja es que las funciones inline son iguales a cualquier otra función de C++.  
Línea 22: Línea 25:
 
void main()
 
void main()
 
{
 
{
  cout << “Entra el lado del cubo:”;
+
   
  float lado;
+
cout << “Entra el lado del cubo:”;
  cin >> lado;
+
float lado;
    cout << “El volumen del cubo con lado ” <<lado<< “is” <<cubo(lado)<<”\n”;
+
cin >> lado;
}
+
cout << “El volumen del cubo con lado ” <<lado<< “is” <<cubo(lado)<<”\n”;}
  
 
 
 
==[[Macros de preprocesador]] y funciones en línea==
 
==[[Macros de preprocesador]] y funciones en línea==
  
Línea 40: Línea 42:
 
void main()
 
void main()
 
{
 
{
cout <<”Cuadrado Valido(2 + 3) =”<<Cuadrado_valido(2+3)
+
cout <<”Cuadrado Valido(2 + 3) =”<<Cuadrado_valido(2+3)
cout <<”\nCuadrado invalido(2+3) =”<<Cuadrado_invalido(2+3)
+
cout <<”\nCuadrado invalido(2+3) =”<<Cuadrado_invalido(2+3)
cout <<”\n          square(2+3) =”<<square(2+3)<<”\n”;
+
cout <<”\n          square(2+3) =”<<square(2+3)<<”\n”;
 
}
 
}
  
Línea 57: Línea 59:
 
void main ()
 
void main ()
 
{
 
{
cout << “Valor local =” <<value <<”\nValor global =”<<: :value<<”\n”;
+
cout << “Valor local =” <<value <<”\nValor global =”<<: :value<<”\n”;
 
}
 
}
  

última versión al 23:08 20 ago 2019

Funciones en Línea
Información sobre la plantilla
Funciones1.png
Concepto:C++ tiene funciones en línea que ayudan a reducir la sobrecarga por llamadas de función especial para pequeñas funciones y en este artículo le presentaremos algunos ejemplos de estas funciones.

Funciones en linea en C++ 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.

¿Como funciona?

Desde el punto de vista de la ingeniería del software es una buena idea poner en práctica un programa como un conjunto de funciones, pero las llamadas de función involucran sobrecarga en tiempo de ejecución. C++ tiene funciones en línea que ayudan a reducir la sobrecarga por llamadas de función especial para pequeñas funciones.

El calificador inline colocado en definición de función antes del tipo de regreso de una función “aconseja” al compilador que genere una copia del código de la función “in situ”, a fin d evitar una llamada de función. La contrapartida es que en el programa se insertan muchas copias de código de la función, en vez de, cada vez que se llama a la función, tener una copia de la función a la cual pasarle el control. El compilador puede ignorar el calificador inline y típicamente así lo hará para todas, a excepción de las funciones más pequeñas.

Las funciones en línea ofrecen ventajas en comparación con las macros de preprocesador que expanden código en línea. Una ventaja es que las funciones inline son iguales a cualquier otra función de C++.

Las macros de preprocesador no aceptan verificación de tipo. Otra ventaja es que las funciones inline eliminan las efectos colaterales inesperados, asociados con un uso inapropiado de las macros de preprocesador. Las funciones inline pueden ser depuradas mediante un programa depurador.

¿Como calcular el volumen de un cubo?

  1. include<iostream.h>

Inline flota cubo (const flota s){return s*s*s;} void main() {

cout << “Entra el lado del cubo:”; float lado; cin >> lado; cout << “El volumen del cubo con lado ” <<lado<< “is” <<cubo(lado)<<”\n”;}

Macros de preprocesador y funciones en línea

  1. include <iostream.h>
  1. define Cuadrado_valido(x) (x) * (x)
  2. define Cuadrado_invalido(x) x * x

Inline int square(int x)(return x * x)

void main() { cout <<”Cuadrado Valido(2 + 3) =”<<Cuadrado_valido(2+3) cout <<”\nCuadrado invalido(2+3) =”<<Cuadrado_invalido(2+3) cout <<”\n square(2+3) =”<<square(2+3)<<”\n”; }

Operador de resolución de alcance unario

Es posible declarar variables locales y globales con un mismo nombre. C++ dispone del operador de resolución de alcance unario (::) para tener acceso a una variable global cuando está en alcance una variable loca con el mismo nombre. El operador de resolución de alcance unario no puede ser utilizado para tener acceso a una variable del mismo nombre en un bloque externo.

Utilizar el operador de resolución de alcance unario

  1. include <iostream.h>

float value = 1.2345;

void main () { cout << “Valor local =” <<value <<”\nValor global =”<<: :value<<”\n”; }

Fuentes

Bibliografía

  • Addison Wesley - C++ Network Programming Volume I - Mastering Complexity with ACE and Patterns
  • Como programar en C y C++ Tomo I