Инструменты пользователя

Инструменты сайта


bb:redbook:112

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
bb:redbook:112 [2016/04/15 17:16]
prospero78 [1. Понятие о типах]
— (текущий)
Строка 1: Строка 1:
-===== 1.12 Введение в типы ===== 
  
-==== 1. Понятие о типах ==== 
-//Тип// — это //классификация// чего-либо. Например, движетели: 
- 
-  * реактивные 
-  * механические 
-  * электрические 
- 
-Механические движетели разделяются: 
- 
-  * по типу источника энергии 
-  * по мощности 
-  * по весу 
- 
-По типу источника энергии движетели разделяются: 
- 
-  * бензиновые 
-  * дизельные 
-  * керосиновые и т. д. 
- 
-Теперь если где-то будет написано: "Легендарный автомобиль "Жигули" седьмой модели, производимый в Советском Союзе обладал механическим бензиновым движетелем..." теперь можно точно сказать, что двигатель этот был //не керосиновый// и уж точно //не реактивный//, хотя при этом ещё можно и не знать, что такое "бензин", или "электрический движетель". Точно так же, и кладовщик, работавший на том же автомобильном заводе, //не разбирался//, чем //отличается// шпонка № 14 от прокладки паранитовой № 2. Но он //точно знал//, что одному рабочему надо выдать шпонку № 14, а другому прокладку паранитовую № 2. А если учесть, что в автомобиле "Жигули" более 8 тыс. деталей, вообще странно //как можно// собирать подобные машины, и как они могут ездить? (а ездят "Жигули" очень и очень не плохо, хотя многим машинам уже за 30-35 лет). 
- 
-Вот такое разделение по видам и группам называется //типизацией//, а любой попавший объект в эту систему типизации — имеет свой тип. Понятно, что для сборки машины не нужно, всё что есть вводить в систему типов. Ну например, к чему там //уран//? Или //Марс//? Хотя, для организации производства вполне может пригодиться тип ''источник_освещения'' (ведь конвейер работал круглосуточно). Именно поэтому, могут жить //по настоящему большие// и сложные системы. Точно также, в **КП** введено понятие //типа//; с некоторыми встроенными типами переменных было ознакомление в первых главах, но язык был бы //слабым//, если бы не позволял программисту //расширять// систему типов своими типами. 
-==== 2. Определение типа ==== 
-По большому счёту, никаких базовых типов программист уже добавить не может. Он может на основе базовых типов создавать только пользовательские (расширенные) типы. И здесь вся ответственность за создание нового типа ложится только на программиста. На основе последнего примера посмотрим как можно использовать типы в программе: 
- 
-Hello8.odc 
- 
-   
- 
-В верхней части модуля теперь появилась новая секция TYPE. В ней объявляется пользовательский тип "tPoint". Буква "t" впереди есть сокращение от TYPE и намекает, что это тип. Даже с учётом того, что имя типа начинается на большую букву, спутать с именем процедуры будет не просто, так как имя типа начинается "t", что сразу обращает на себя внимание. Также надо запомнить, что при объявлении типа ставится знак "равно", а не "двоеточие". 
- 
-Чуть ниже в секции VAR объявляется переменная "r" типа "tPoint". И теперь при задании переменных с записевым типом не нужно каждый раз описывать поля этой записи. В обиходе программистов такая операция называется "создать экземпляр". Работа с экземпляром типа tPoint ничем не отличается от работы с записевым типом. 
- 
-На текущий момент в модулях КП можно оперировать несколькими типами секций: IMPORT, CONST, TYPE и VAR. Любая из этих секций может отсутствовать в модуле, в процедурах можно использовать любую секцию, кроме IMPORT. [↑] 
- 
-  
-==== 3. Заключение ==== 
-Это лишь вершина айсберга от того, что касается типов. Типы можно наследовать, расширять, модифицировать и мн. др. Как это делать будет рассмотрено отдельно. [↑] 
- 
-[ ← Назад ] [ Вверх ↑ ] [ Далее → ] 
bb/redbook/112.1460729783.txt.gz · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)