Объявление (информатика)

Объявление (информатика)

В языках программирования объявление (англ. declaration) включает в себя указание идентификатора, типа, а также других аспектов элементов языка, например, переменных и функций. Объявление используется, чтобы уведомить компилятор о существовании элемента; это весьма важно для многих языков (например, таких как Си), требующих объявления переменных перед их использованием.

Содержание

Обзор

В семействе языков BCPL, представителями которого являются C++ и Java, также можно указывать размер переменной при объявлении скалярного типа, массива или матрицы. В этом семействе объявления (уведомление о существовании и свойствах элемента) и определения (definitions) (обеспечивающие непосредственно саму реализацию) могут указываться независимо друг от друга. Объявления, в общем случае, указываются в заголовочных файлах, которые затем подключаются в других файлах, ссылающихся на них, для использования этих объявлений, но у них нет доступа к определению. Если определение типа не совпадает с ранее указанным объявлением этого элемента, то в этом случае компилятор выдает сообщение об ошибке.

Для переменных определения присваивают значения областям памяти, зарезервированным при объявлении. Для функций определения обеспечивают описание самого тела функции. При том, что переменная или функция могут объявляться много раз, как правило они определяются лишь один раз. Хотя, динамические языки, как например Javascript или Python, допускают переопределение функций.

Объявление, зачастую, используется для того, чтобы получить доступ к функции или переменной, определённым в другом исходном файле или библиотеке.

Ниже приведено несколько примеров использования объявлений в языке Си, не являющихся определениями:

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

А теперь несколько примеров определений на языке Си:

char example1;
int example2 = 5;
void example3(void)
{
 int x = 7;
}

Элементы, определяемые в объявлении

В различных языках программирования требования, касающиеся объявления определённых программных объектов могут сильно различаться. В общем случае объявлению могут подвергаться следующие параметры:

В программировании, иногда, от объявления отличают определение, применительно к таким элементам как:

  • типы,
  • константы,
  • литералы,
  • подпрограммы,
  • классы,

причём, объявление и определение могут объединяться или указываться отдельно в различных местах исходного кода (вплоть до разных файлов).

Место объявления

Объявление в исходном коде как правило должны предшествовать первому употреблению данного идентификатора в программе. Объявление представляет собой информацию для транслятора, которая сама по себе не генерирует исполняемого кода (но зачастую приводит к выделению памяти).

Синтаксис большинства языков программирования предусматривает указание объявления в определённом месте исходного кода. Это или специальная секция программы (модуля, подпрограммы, пакета), или начало определённого блока (то есть все объявления должны быть в тексте программы перед первой инструкцией данного блока).

Виды объявлений

Объявление может быть:

  • неявным,
  • явным:
    • полным или
    • частичным.
Неявное объявление

Неявные объявления используются в языках программирования, которые допускают употребление идентификатора без его явного объявления. В этом случае транслятор должен иметь механизм добавления к идентификатору атрибутов на основании определённых методов:

  • по умолчанию,
  • неявно,
  • исходя из контекста.

Неявные объявления могут приводить к ошибкам, например, буквенная ошибка в идентификаторе станет причиной новой переменной, тем самым возникнет ошибка в действии программы.

Явное объявление

Явные декларации могут быть полными или частичными. Частичные объявления могут применяться в случаях:

  • несимметричная структура атрибутов (например, в объявлении указание атрибута EXTERNAL может обозначать внешний объект (переменную, процедуру и т. п.), определённый в другом модуле, а отсутствие его указания будет означать внутренний объект (описываемый данным объявлением в данном модуле), причём, отсутствие явного указания атрибута возможно будет противоположно для EXTERNAL (например, INTERNAL);
  • механизм подстановки атрибутов применяют здесь схожие принципы дополняния атрибутов с методами для неявных объявлений (например, могут существовать атрибуты EXTERNAL и INTERNAL, причём, отсутствие явного указания противоположного атрибута для какого-либо из них, будет обозначать указание одного из их, например, INTERNAL).

Примеры объявлений в языках

Объявления переменных

Объявление переменной может содержать помимо самого объявления также инициализацию переменной, то есть указание первоначального значения переменной.

Си, C++

Объявления указываются:

  • вне функции, класса, метода для глобальных переменных;
  • в начале блока инструкций { } для локальных переменных;
  • как выражение в последующих частях блока инструкций {} для локальных переменных (не для языка Си).
  int global_var;
  main()
   {
     int y;
     ...
     {
        int z=1;
        getch();
        int x=5; /*не работает для языка Си*/
        ...
     }
     ...
   }

Паскаль

Объявления указываются в программе или её подпрограмме в спецификации блока, располагающемся между заголовком (программы, процедуры, функции, модуля (Турбо Паскаль)) и словом, обозначающим начало группы инструкции данного блока (begin).

  program Пример;
    var globar_var;
    ...
    procedure Licz();
      var local_var;
    begin
 
    end; {procedure}
  begin
 
  end. {program}

ПЛ/1

Объявление имеет вид инструкции DECLARE (или сокращенно DCL) и может быть указано в любом месте внутри блока (в ПЛ/1 таким блоком является или процедура от заголовка PROCEDURE до слова END или блок инструкций BEGINEND) и касается объектов, доступных в данном блоке. Язык имеет весьма расширенный синтаксис атрибутов и расширенный механизм подстановки атрибутов и неявных объявлений.

  Пример: PROC;
    ...
    /* Используем переменную X, объявленную далее */
    X=1;
    ...
    /* объявление в блоке может указываться при употреблении идентификатора но
       объявленная переменная должна быть доступна в начале блока */
    DCL X FIXED DECIMAL(5,0);
    ...
  END Пример;

Объявления меток

  {Pascal}
  program DclLabel;
    label Метка;begin
    …
    Метка:;goto Метка;end.

Объявление модулей

Turbo Pascal

  program DclUnit;
    uses Crt, Graph, MyUnit;
    ...
  begin
    ...
     Write('Процедура использует модуль Crt');
    ...
  end.

Модула-2

  MODULE DclUnit;
    FROM InOut IMPORT
      Read, Write, ...;
    ...
    Write('Процедура использует модуль InOut');
    ...
  END DclUnit.

Объявления функций

Си, C++

В языках C, C++ объявление функций (также называется прототипом) обычно помещается в файлы заголовков, определяющих конкретные модули.

  /* прототип функции trunc */
  int trunc(double x);

Паскаль

Объявление функций применяется, когда функция должна быть вызвана, а не когда определяется.

  { Pascal }
  procedure Proc_1; forward;
  procedure Proc_2;
  begin{''Вызов процедуры, которая ещё не была определена,''
      ''требует объявления''}
     Proc_1;end;{ Последующее определение процедуры }
  procedure Proc_1;
  beginend;

Turbo Pascal

Объявление, предваряющее саму функцию, применяют так же, как и в Паскале. В Турбо Паскале объявления указывают также в модулях (собственное расширение Турбо Паскаля по отношению к Паскалю) в разделе interface.

  { Turbo Pascal }
  unit Пример;
  interface
    { объявление функции, доступной в других модулях и программах }
    function trunc(x : real): integer;
  implementation
    { определение объявленной выше функции
      так как параметры и возвращаемое значение были определены в объявлении,
      то функции в разделе interface не требуется их повторения }
     function trunc;
     begin

См. также

Ссылки



Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Объявление (информатика)" в других словарях:

  • Предварительное объявление — является таким типом объявления, при котором компилятор имеет возможность разрешить ссылки из различных частей программы. Предварительное объявление позволяет программисту ссылаться на объекты, о которых компилятор ещё не знает, но которые будут… …   Википедия

  • Оптимизация (информатика) — Эта статья об оптимизации программ и данных вообще; об оптимизациях, применяемых компиляторами см.: Оптимизация компилятора. У этого термина существуют и другие значения, см. Оптимизация. Оптимизация  модификация системы для улучшения её… …   Википедия

  • Реализация — (от лат. realis вещественный). Значения: Продажи Исполнение замысла, получение результата.[1] Объявление (информатика) (в программировании). Примечания ↑ Райзберг Б.А., Лозовский Л.Ш., Стародубцева Е.Б. «Современный экономический словарь».… …   Википедия

  • Аспектно-ориентированная разработка программного обеспечения — В этой статье не хватает ссылок на источники информации. Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена. Вы можете …   Википедия

  • Информация — (Information) Информация это сведения о чем либо Понятие и виды информации, передача и обработка, поиск и хранение информации Содержание >>>>>>>>>>>> …   Энциклопедия инвестора

  • Соловьев, Владимир Игоревич — Владимир Игоревич Соловьев Дата рождения: 5 декабря 1976(1976 12 05) (34 года) Место рождения: Москва Страна …   Википедия

  • Соловьёв, Владимир Игоревич — Владимир Игоревич Соловьёв Дата рождения: 5 декабря 1976( …   Википедия

  • Объектно-ориентированное программирование — Эта статья во многом или полностью опирается на неавторитетные источники. Информация из таких источников не соответствует требованию проверяемости представленной информации, и такие ссылки не показывают значимость темы статьи. Статью можно… …   Википедия

  • ООАП — Объектно ориентированное программирование (ООП) парадигма программирования, в которой основными концепциями являются понятия объектов и классов (либо, в менее известном варианте языков с прототипированием прототипов). Класс это тип, описывающий… …   Википедия

  • Объектно-ориентированный подход — Объектно ориентированное программирование (ООП) парадигма программирования, в которой основными концепциями являются понятия объектов и классов (либо, в менее известном варианте языков с прототипированием прототипов). Класс это тип, описывающий… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»