Введение в программирование

       

Объявление объектов данных


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

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

При объявлении объекта данных в зависимости от типа этого объекта и языка программирования возможно выделение памяти под этот объект при объявлении или при последующем создании этого объекта.

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

Например: int i, j; float m, n;

Оператор объявления в языке C++ может указываться в любом допустимом месте программы.

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

Объявляемыми объектами данных могут быть названия типов и имена объектов.

Объявление определяет имя внутри области видимости. Имя, объявляемое внутри блока, класса, функции или пространства имен, является локальным. Блок в языке C++ заключается в фигурные скобки. Если вне блока существуют глобальные имена, обозначаемые теми же идентификаторами, то они становятся скрыты внутри блока и к ним следует обращаться, используя оператор разрешения области видимости ::.

Например:

int i1; // Объявление глобальной // переменной void metod1() { int i1; // Объявление локальной // переменной i1=22; // Доступ к локальной // переменной метода ::i1=44; // Доступ к глобальной // переменной { int i1; // Объявление локальной // переменной i1=33; // Доступ к локальной // переменной блока } i1=44; // Доступ к глобальной // переменной }


В языке C++ объявления применяются для создания нового имени, используемого в приложении (имя может указывать не только объект данных). Объявления позволяют:

  • специфицировать класс памяти, тип и область действия объекта;
  • инициализировать объект начальным значением;
  • назначать имена константе (при объявлении перечислимого типа);
  • объявлять новый тип (class, struct и union);
  • определять синоним существующего типа (typedef);
  • специфицировать шаблон классов или функций (template);
  • специфицировать пространство имен (namespace);
  • специфицировать класс памяти, тип и область действия подпрограммы.


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

В языке C++ при каждом объявлении локального объекта под него выделяется память.

Например:

// Объявление и инициализация // локального объекта в цикле

do { char char1 = _getch(); if( char1 == NULL ) continue; return (char1); } while( 1 );

Удаление объекта, который был объявлен в цикле, происходит после каждой итерации, при выходе из блока или при передаче управления в точку, расположенную выше объявления этого объекта.

Процедура удаления объекта в языке C++ может включать не только удаление объекта из памяти (освобождение памяти), но и выполнение деструкторов (для объектов типа класса).

В языке Java объявления переменной могут указываться в любом допустимом месте программы.

Например:

boolean b1=true; // Оператор присваивания // задается символом = char c1='N'; int int1=123;

Имена могут иметь следующие элементы языка Java:

  • пакет, определяемый оператором package;
  • тип, вводимый определением класса или интерфейса;
  • поле, являющееся переменной типа класса или типа интерфейса;
  • группа методов типа класса или типа интерфейса;
  • переменная, являющаяся формальным параметром метода;
  • переменная, являющаяся локальной переменной блока;
  • метка оператора.


Если имя или выражение означает переменную или значение простого типа, тогда тип этой переменной или значения называется типом имени или выражения.

В языке Object Pascal оператор объявления может указываться только в области объявлений, определяемой ключевым словом var.

Например:

var ch1: Char; {Оператор объявления в языке Object Pascal} begin ch1 := Chr(65); { Оператор присваивания задается символами :=} end;


Содержание раздела