Информатика. Курс лекций. Громов Ю.Ю - 117 стр.

UptoLike

а) Объявления в языках C и C++
struct
{ char Name[8];
int Age;
float SkillRating;
} Employee;
б) Объявление в языке Pascal
var
Employee: record
Name: packed array[1..2,1..9] of char;
Age: integer;
SkillRating: real;
end;
в) Вид структуры, объявляемой в каждом из приведенных выше примеров
Рис. 5.6. Объявление неоднородного массива в языках С, C++ и Pascal
При ссылке на компоненты неоднородного массива обычно указывают имя массива и имя элемента, разделенные точкой.
Например, в языках С, C++, Java и Pascal для доступа к элементу Age массива Employee, показанного на рис. 5.6, можно исполь-
зовать имя Employee.Age.
В главе 7 мы увидим, как концептуальные структуры, подобные массивам, реализуются в компьютерах. В частности,
будет показано, что относящиеся к массиву данные могут быть распределены по большой области основной памяти или
внешнего запоминающего устройства. Вот почему мы рассматриваем структуры данных как концептуальные формы их
представления. В действительности же "реальная" форма представления данных в запоминающих устройствах машины мо-
жет совершенно отличаться от теоретической формы.
Типы данных, определяемые пользователем. Часто удобнее описывать алгоритм, если используемые в нем типы
данных отличаются от базовых типов данного языка программирования. Поэтому большинство современных языков про-
граммирования предоставляет пользователю возможность определять дополнительные типы данных, используя в качестве
строительных блоков базовые типы и структуры. Такие "самодельные" типы данных принято называть типами, определяе-
мыми пользователем (user-defined types).
В качестве примера рассмотрим разработку программы, в которой будет использоваться множество переменных,
имеющих одинаковую смешанную структуру, состоящую из имени, возраста и показателя квалификации некоторого работ-
ника. Один из подходов может состоять в повторном объявлении состава этой структуры при каждом обращении к ней. На-
пример, для создания переменной Employee, имеющей указанную смешанную структуру, работающий на языке С програм-
мист мог бы написать следующий оператор (см. рис. 5.6 в главе 5):
Struct
{char Name[8]; // Имя
int Age; // Возраст
float SkillRating; // Показатель квалификации
} Employee; // Структура "Работник"
При таком подходе проблема состоит в том, что если описание структуры повторяется слишком часто, то программа
увеличивается в размерах и чтение ее становится затруднительным. Лучше было бы описать структуру лишь однажды и
присвоить ей описательное имя, а затем использовать его каждый раз при ссылке на данную структуру. Язык С позволяет
программисту сделать это с помощью оператора typedef (сокращение от type definition, определение типа):
typedef struct
{char Name[8]; // Имя
int Age; // Возраст
float SkillRating; // Показатель квалификации
} EmployeeType; // Тип данных "Работник"
Этот оператор определяет новый тип данных, EmployeeType, который можно использовать при объявлении перемен-
ных наряду с базовыми типами языка. Например, переменная Employee теперь может быть объявлена с помощью следую-
щего оператора:
EmployeeType Employee;
Преимущество использования таких пользовательских типов очевидно при объявлении множества переменных этого
типа. С помощью приведенного ниже оператора программист на языке С может объявить, что переменные Sleeve, Waist
и Neck относятся к базовому типу "действительный":
float Sleeve, Waist, Neck;
Name Age
Skill
Rating
Employee