Declaración (programación informática)


En programación informática , una declaración es una construcción del lenguaje que especifica las propiedades de un identificador : declara lo que "significa" una palabra (identificador). [1] Las declaraciones se usan más comúnmente para funciones , variables , constantes y clases , pero también se pueden usar para otras entidades, como enumeraciones y definiciones de tipo. [1] Más allá del nombre (el identificador en sí) y el tipo de entidad (función, variable, etc.), las declaraciones suelen especificar el tipo de datos (para variables y constantes) o la firma de tipo(para funciones); los tipos también pueden incluir dimensiones, como para matrices. Se utiliza una declaración para anunciar la existencia de la entidad al compilador ; esto es importante en los lenguajes fuertemente tipados que requieren funciones, variables y constantes, y sus tipos se especifican con una declaración antes de su uso, y se usa en la declaración directa . [2] El término "declaración" se contrasta con frecuencia con el término "definición", [1] pero el significado y el uso varían significativamente entre idiomas; vea abajo.

Las declaraciones son particularmente prominentes en lenguajes en la tradición ALGOL , incluyendo la familia BCPL , más prominentemente C y C++ , y también Pascal . Java usa el término "declaración", aunque Java no requiere declaraciones y definiciones separadas.

Una dicotomía básica es si una declaración contiene o no una definición: por ejemplo, si una declaración de una constante o variable especifica el valor de la constante (respectivamente, el valor inicial de una variable), o solo su tipo; y de manera similar, si una declaración de una función especifica el cuerpo ( implementación ) de la función, o solo su firma de tipo. [1] No todos los idiomas hacen esta distinción: en muchos idiomas, las declaraciones siempre incluyen una definición y pueden denominarse "declaraciones" o "definiciones", según el idioma. [a]Sin embargo, estos conceptos se distinguen en lenguajes que requieren declaración antes de su uso (para los cuales se usan declaraciones directas) y en lenguajes donde la interfaz y la implementación están separadas: la interfaz contiene declaraciones, la implementación contiene definiciones. [B]

En el uso informal, una "declaración" se refiere solo a una declaración pura (solo tipos, sin valor ni cuerpo), mientras que una "definición" se refiere a una declaración que incluye un valor o cuerpo. Sin embargo, en el uso formal (en las especificaciones del lenguaje), "declaración" incluye ambos sentidos, con distinciones más finas por lenguaje: en C y C++, una declaración de una función que no incluye un cuerpo se denomina función prototipo , mientras que una La declaración de una función que incluye un cuerpo se denomina "definición de función". En Java, las declaraciones ocurren en dos formas. Para los métodos públicos, se pueden presentar en las interfaces como firmas de métodos, que consisten en los nombres de los métodos, los tipos de entrada y el tipo de salida.Se puede usar una notación similar en la definición de métodos abstractos., que no contienen una definición. Se puede crear una instancia de la clase adjunta; en su lugar, se necesitaría crear una nueva clase derivada, que proporciona la definición del método, para crear una instancia de la clase. A partir de Java 8 , la expresión lambda se incluyó en el lenguaje, que podría verse como una declaración de función.

En la familia C de lenguajes de programación, las declaraciones a menudo se recopilan en archivos de encabezado , que se incluyen en otros archivos fuente que hacen referencia y usan estas declaraciones, pero no tienen acceso a la definición. La información en el archivo de encabezado proporciona la interfaz entre el código que usa la declaración y el que la define, una forma de ocultar información . Una declaración se usa a menudo para acceder a funciones o variables definidas en diferentes archivos fuente o en una biblioteca . Una discrepancia entre el tipo de definición y el tipo de declaración genera un error de compilación.