Declaração (programação de computador) - Declaration (computer programming)

Na programação de computadores , uma declaração é uma construção de linguagem que especifica as propriedades de um identificador : ela declara o que uma palavra (identificador) "significa". As declarações são mais comumente usadas para funções , variáveis , constantes e classes , mas também podem ser usadas para outras entidades, como enumerações e definições de tipo. Além do nome (o próprio identificador) e do tipo de entidade (função, variável, etc.), as declarações normalmente especificam o tipo de dados (para variáveis ​​e constantes) ou a assinatura do tipo (para funções); os tipos também podem incluir dimensões, como para matrizes. Uma declaração é usada para anunciar a existência da entidade ao compilador ; isso é importante naquelas linguagens fortemente tipadas que requerem funções, variáveis ​​e constantes, e seus tipos a serem especificados com uma declaração antes do uso, e é usado na declaração direta . O termo "declaração" é freqüentemente contrastado com o termo "definição", mas o significado e o uso variam significativamente entre os idiomas; ver abaixo.

As declarações são particularmente proeminentes em linguagens na tradição ALGOL , incluindo a família BCPL , principalmente C e C ++ , e também Pascal . Java usa o termo "declaração", embora Java não exija declarações e definições separadas.

Declaração vs. definição

Uma dicotomia básica é se uma declaração contém ou não uma definição: por exemplo, se uma declaração de uma constante ou variável especifica o valor da constante (respectivamente, valor inicial de uma variável), ou apenas seu tipo; e da mesma forma se uma declaração de uma função especifica o corpo ( implementação ) da função ou apenas sua assinatura de tipo. Nem todos os idiomas fazem essa distinção: em muitos idiomas, as declarações sempre incluem uma definição e podem ser chamadas de "declarações" ou "definições", dependendo do idioma. No entanto, esses conceitos são diferenciados em linguagens que requerem declaração antes do uso (para as quais são usadas declarações de encaminhamento) e em linguagens onde interface e implementação são separadas: a interface contém declarações, a implementação contém definições.

No uso informal, uma "declaração" se refere apenas a uma declaração pura (apenas tipos, nenhum valor ou corpo), enquanto uma "definição" se refere a uma declaração que inclui um valor ou corpo. No entanto, no uso formal (em especificações de linguagem), "declaração" inclui ambos os sentidos, com distinções mais sutis por linguagem: em C e C ++, uma declaração de uma função que não inclui um corpo é chamada de protótipo de função , enquanto um a declaração de uma função que inclui um corpo é chamada de "definição de função". Em Java, as declarações ocorrem em duas formas. Para métodos públicos, eles podem ser apresentados em interfaces como assinaturas de método, que consistem em nomes de métodos, tipos de entrada e tipo de saída. Uma notação semelhante pode ser usada na definição de métodos abstratos , que não contêm uma definição. A classe envolvente pode ser instanciada; em vez disso, uma nova classe derivada, que fornece a definição do método, precisaria ser criada para criar uma instância da classe. A partir do Java 8 , a expressão lambda foi incluída na linguagem, que pode ser vista como uma declaração de função.

Declarações e definições

Na família C de linguagens de programação, as declarações geralmente são coletadas em arquivos de cabeçalho , que são incluídos em outros arquivos de origem que fazem referência e usam essas declarações, mas não têm acesso à definição. As informações no arquivo de cabeçalho fornecem a interface entre o código que usa a declaração e aquele que a define, uma forma de ocultar informações . Uma declaração é freqüentemente usada para acessar funções ou variáveis ​​definidas em diferentes arquivos de origem ou em uma biblioteca . Uma incompatibilidade entre o tipo de definição e o tipo de declaração gera um erro do compilador.

Para variáveis, as definições atribuem valores a uma área da memória que foi reservada durante a fase de declaração. Para funções, as definições fornecem o corpo da função. Embora uma variável ou função possa ser declarada muitas vezes, normalmente é definida uma vez (em C ++ , isso é conhecido como One Definition Rule ou ODR).

Linguagens dinâmicas como JavaScript ou Python geralmente permitem que funções sejam redefinidas, ou seja, religadas ; uma função é uma variável como qualquer outra, com um nome e um valor (a definição).

Aqui estão alguns exemplos de declarações que não são definições, em C:

extern char example1;
extern int example2;
void example3(void);

Aqui estão alguns exemplos de declarações que são definições, novamente em C:

char example1; /* Outside of a function definition it will be initialized to zero.  */
int example2 = 5;
void example3(void) { /* definition between braces */ }

Variáveis ​​indefinidas

Em algumas linguagens de programação, uma declaração implícita é fornecida na primeira vez que tal variável é encontrada em tempo de compilação . Em outros idiomas, esse uso é considerado um erro, o que pode resultar em uma mensagem de diagnóstico. Algumas linguagens ter começado com o comportamento implícito declaração, mas como eles amadureceram eles forneceram uma opção para desativá-lo (por exemplo, Perl 's ' use strict ' ou Visual Basic ' s " Option Explicit ").

Veja também

Notas

Referências

links externos