var A : array [1..5] of integer;

      B : array [1..5] of integer;

begin

      A:= B; { здесь компилятор видит ошибку несовместимости типов}

end.

Мы объявили массивы A и B; на первый взгляд, это массивы одного типа, поскольку каждый из них содержит по пять целых чисел. Для однотипных переменных, включая массивы, Паскаль допускает операцию копирования. Например, оператором

      A:=B

все элементы массива B копируются в элементы массива A. Увы, компилятор увидит здесь ошибку несовместимости типов. В чем дело? А в том, что он считает разнотипными массивы, объявленные в разных операторах. Даже если массивы совершенно одинаковы! Скажете, компилятор недостаточно умен? Может быть, но нам придётся как-то выкручиваться, и для этого есть два пути.

Во-первых, переменные A и B можно объявить в одном операторе.

var A, B : array [1..5] of integer;

Это устраняет проблему несовместимости типов.

Но есть и лучший способ – сначала объявить для массива пользовательский тип данных. Это делается в секции TYPE так:

TYPE Имя_Типа = ARRAY [<MIN>..<MAX>] OF <Тип элемента>

В сравнении с объявлением переменной разница мизерная: вместо двоеточия видим знак равенства, а вместо имени переменной – имя типа. Но каковы последствия! Объявите лишь однажды нужный вам тип, и тогда применяйте его, где угодно. Вот объявления типов для указанных выше переменных.

TYPE { примеры объявления типов-массивов }

      { тип для 30 строковых переменных с фамилиями учеников класса }

      TNames = ARRAY [1..30] OF string;

      { тип для 30 байтовых переменных с оценками учеников }

      TRatings = ARRAY [1..30] OF byte;

      { тип для 16 целых переменных с очками, набранными в чемпионате }

      TChampionShip = ARRAY [1..16] OF integer;

Здесь буква «T» в имени типа напоминает о назначении этого идентификатора (помните наше добровольное соглашение об именах?). Теперь учрежденные типы данных можно употребить для объявления переменных и параметров в любом месте программы, вот пример.

TYPE { тип для 30 байтовых переменных с оценками учеников }

      TRatings = ARRAY [1..30] OF byte;

VAR { 30 байтовых переменных с оценками учеников }

      Ratings : TRatings;

procedure ABC (var arg: TRatings); { параметр процедуры }

var A, B, C : TRatings;       { локальные переменные }

begin

Вы читаете Песни о Паскале
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату