En los lenguajes de programación, una declaración ( declaración en inglés ) incluye una indicación de un identificador , tipo , así como otros aspectos de los elementos del lenguaje, como variables y funciones . La declaración se usa para notificar al compilador que existe un elemento; esto es bastante importante para muchos lenguajes (como C , por ejemplo ) que requieren que se declaren las variables antes de poder usarlas.
En la familia de lenguajes BCPL , de la cual C++ y Java son miembros , también puede especificar el tamaño de una variable al declarar un tipo escalar, arreglo o matriz. En esta familia, las declaraciones (notificación de la existencia y propiedades de un elemento) y las definiciones (proporcionando directamente la implementación en sí ) pueden especificarse independientemente unas de otras. Las declaraciones generalmente se especifican en archivos de encabezado , que luego se incluyen en otros archivos que hacen referencia a ellos para usar esas declaraciones, pero no tienen acceso a la definición. Si la definición de tipo no coincide con la declaración especificada anteriormente de este elemento, el compilador emite un mensaje de error en este caso.
Para las variables, las definiciones asignan valores a áreas de memoria reservadas en el momento de la declaración. Para las funciones, las definiciones proporcionan una descripción del propio cuerpo de la función. Si bien una variable o función puede declararse muchas veces, generalmente se define solo una vez. Sin embargo, lenguajes dinámicos como Javascript o Python permiten redefinir funciones.
Una declaración se usa a menudo para acceder a una función o variable definida en otro archivo fuente o biblioteca .
Los siguientes son algunos ejemplos del uso de declaraciones C sin definición :
ejemplo de char externo1 ; externo int ejemplo2 ; ejemplo vacío3 ( vacío );Y ahora algunos ejemplos de definiciones en lenguaje C:
char ejemplo1 ; int ejemplo2 = 5 ; vacío ejemplo3 ( vacío ) { int x = 7 ; }En diferentes lenguajes de programación, los requisitos con respecto a la declaración de ciertos objetos del programa pueden variar mucho. En general, se pueden declarar los siguientes parámetros:
En programación, a veces, una definición se distingue de una declaración, en relación con elementos tales como:
Además, la declaración y la definición se pueden combinar o especificar por separado en diferentes lugares del código fuente (hasta archivos diferentes ).
Una declaración en el código fuente generalmente debe preceder al primer uso de un identificador dado en un programa. La declaración es información para el traductor que por sí misma no genera código ejecutable (pero a menudo resulta en una asignación de memoria ).
La sintaxis de la mayoría de los lenguajes de programación prevé una declaración en una ubicación específica en el código fuente. Esta es una sección especial del programa (módulo, subrutina, paquete) o el comienzo de un bloque específico (es decir, todas las declaraciones deben estar en el texto del programa antes de la primera instrucción de este bloque).
El anuncio podría ser:
Las declaraciones implícitas se usan en lenguajes de programación que permiten el uso de un identificador sin declararlo explícitamente. En este caso, el traductor debe tener un mecanismo para agregar atributos al identificador basado en ciertos métodos:
Las declaraciones implícitas pueden dar lugar a errores, por ejemplo, una letra mal escrita en un identificador provocará una nueva variable, lo que provocará un error en la acción del programa.
Declaración explícitaLas declaraciones explícitas pueden ser completas o parciales . Las declaraciones parciales se pueden utilizar en los siguientes casos:
Una declaración de variable puede contener, además de la propia declaración, también la inicialización de la variable , es decir, una indicación del valor inicial de la variable.
C , C++Los anuncios se indican:
Las declaraciones se especifican en un programa o su subprograma en la especificación del bloque, ubicado entre el encabezado (programas, procedimientos, funciones, módulo (Turbo Pascal)) y la palabra que indica el comienzo del grupo de instrucciones de este bloque ( begin).
programa Ejemplo ; var var_global ; ... procedimiento Licz () ; var var_local ; empezar fin ; {procedimiento} comienza fin _ {programa} PL/1La declaración tiene la forma de una instrucción DECLARE(o abreviada DCL) y se puede especificar en cualquier lugar dentro del bloque (en PL/1, dicho bloque es un procedimiento desde el encabezado PROCEDUREhasta una palabra ENDo un bloque de instrucciones BEGIN ... END) y se refiere a objetos disponible en este bloque. El lenguaje tiene una sintaxis de atributos muy extendida y un mecanismo extendido para la sustitución de atributos y declaraciones implícitas.
Ejemplo : PROC ; ... /* Usa la variable X declarada a continuación */ X = 1 ; ... /* una declaración de bloque se puede especificar usando un identificador pero la variable declarada debe estar disponible al principio del bloque */ DCL X DECIMAL FIJO ( 5 , 0 ) ; ... FIN Ejemplo ;En C, C++, las declaraciones de funciones (también llamadas prototipos ) generalmente se colocan en archivos de encabezado que definen módulos específicos.
/* prototipo de función truncada */ int trunc ( doble x ); PascualLas declaraciones de función se aplican cuando se va a llamar a la función , no cuando se define.
procedimiento {Pascal} Proc_1 ; adelante ; procedimiento Proc_2 ; begin … {''Llamar a un procedimiento que aún no ha sido definido'' ''requiere declaración''} Proc_1 ; ... fin ; … { Definición de procedimiento subsiguiente } procedimiento Proc_1 ; empezar ... terminar ; Turbo PascalLa declaración que precede a la función misma se usa de la misma manera que en Pascal. En Turbo Pascal, las declaraciones también se especifican en módulos (la propia extensión de Pascal de Turbo Pascal) en el archivo interface.
{ Turbo Pascal } unidad Ejemplo ; interface { declaración de una función disponible en otros módulos y programas } function trunc ( x : real ) : integer ; implementación { definición de la función declarada anteriormente ya que los parámetros y el valor devuelto se definieron en la declaración, las funciones en la sección de interfaz no necesitan repetirlas } function trunc ; empezar ...