Чтобы переменную можно было использовать в программе, ее надо предварительно описать, указав ее тип. Пока переменная не описана, обращаться к ней нельзя (хотя в некоторых языках, например в Бейсике и Фортране, считается, что все переменные, не объявленные явно, имеют числовой тип). После того как переменная описана, к ней можно обращаться, но она обычно исходно имеет неопределенное значение, поэтому ее надо предварительно инициализировать — присвоить ей начальное значение.
Синтаксис команд описания данных
Бейсик | Паскаль | Си++ |
DIM имя AS тип | var имя: тип; | тип имя; |
Вот примеры описания переменных.
Бейсик:
DIM X AS DOUBLE
Паскаль:
var x: real; var Str: record
PI: integer;
S: string;
end;
Си++:
float x; int a[20];
При описании переменных одного типа в Паскале и Си++ их можно указывать через запятую.
Паскаль:
var xx, z2: integer; Си++:
int xx, yy[10], z2;
Новые типы данных
При определении нескольких переменных со сложной структурой удобно описывать каждую переменную, многократно используя одну и ту же запись структуры. Если, например, в нее потребуется внести изменение (добавить новое поле, изменить тип существующего и т. д.), то придется делать это несколько раз, рискуя ошибиться и пропустить одно из описаний, особенно если они сделаны в разных местах программы.
|
|
Чтобы избежать этой проблемы и позволить программистам активно применять нужные структуры данных, в современных языках программирования разрешено определять собственные типы данных, которые допускается использовать в командах описания наравне с базовыми типами.
Синтаксис описания нового типа
Бейсик | Паскаль | Си++ |
Аналогичен описанию структуры, которое уже является описанием нового типа | type имя = описание; | typedef struct имя-структуры { поля-структуры; } имя; Имя структуры надо указывать только из-за требований синтаксиса. Реально оно нигде не применяется |
Название нового типа можно использовать во всех последующих командах описания переменных.
Паскаль:
type TMyArray = array[0..99] of integer;
type TMyRecord = record
Iteml: integer;
Item2: string;
end;
var MyArray: TMyArray;
var R: TMyRecord;
Си++:
typedef struct namel
{
int i;
float x;
} TNewStruct;
TNewStruct NewStruct