|
@@ -217,8 +217,6 @@ flowchart TD
|
|
|
| { | Фигурная открывающая скобка (область видимости) |
|
|
| { | Фигурная открывающая скобка (область видимости) |
|
|
|
| } | Закрывающая фигурная скобка (область видимости) |
|
|
| } | Закрывающая фигурная скобка (область видимости) |
|
|
|
| ВНУТРИ | IN Определение вхождения |
|
|
| ВНУТРИ | IN Определение вхождения |
|
|
|
-| ДО | TO До указанного значения далее |
|
|
|
|
|
-| ПО | BY Шаг приращения (цикл) |
|
|
|
|
|
| ЕСТЬ | IS Проверка типа |
|
|
| ЕСТЬ | IS Проверка типа |
|
|
|
| ДА | TRUE Булево значение |
|
|
| ДА | TRUE Булево значение |
|
|
|
| НЕТ | FALSE Отрицание логического значения |
|
|
| НЕТ | FALSE Отрицание логического значения |
|
|
@@ -228,18 +226,17 @@ flowchart TD
|
|
|
| ИМПОРТ | IMPORT Импорт модуля |
|
|
| ИМПОРТ | IMPORT Импорт модуля |
|
|
|
| ЕСЛИ | IF Начало условия |
|
|
| ЕСЛИ | IF Начало условия |
|
|
|
| ТОГДА | THEN Действие после условия |
|
|
| ТОГДА | THEN Действие после условия |
|
|
|
|
|
+| ИНАЧЕ | Альтернативная ветка ЕСЛИ |
|
|
|
| МОД | MOD Модуль от целочисленного деления |
|
|
| МОД | MOD Модуль от целочисленного деления |
|
|
|
| МОДУЛЬ | MODULE Объявление начала модуля |
|
|
| МОДУЛЬ | MODULE Объявление начала модуля |
|
|
|
| КОНСТ | CONST Объявление константы |
|
|
| КОНСТ | CONST Объявление константы |
|
|
|
-| ПОКА | UNTIL Условие продолжения цикла на выходе |
|
|
|
|
|
| ДИВ | DIV Остаток от целочисленного деления |
|
|
| ДИВ | DIV Остаток от целочисленного деления |
|
|
|
| НИЧ | NIL Пустое состояние объекта |
|
|
| НИЧ | NIL Пустое состояние объекта |
|
|
|
| ЗНАЧ | VAR Объявление переменной |
|
|
| ЗНАЧ | VAR Объявление переменной |
|
|
|
| ПОКА | WHILE Условие проверки продолжения цикла на входе |
|
|
| ПОКА | WHILE Условие проверки продолжения цикла на входе |
|
|
|
-| ИЗ | OF Указание типа массива |
|
|
|
|
|
|
|
+| ПОКА | UNTIL Условие продолжения цикла на выходе |
|
|
|
| ИЛИ | OR Логическое ИЛИ |
|
|
| ИЛИ | OR Логическое ИЛИ |
|
|
|
| @ | Ссылка на объект |
|
|
| @ | Ссылка на объект |
|
|
|
-| ИНАЧЕ | Альтернативная ветка ЕСЛИ |
|
|
|
|
|
| ФН | FN Объявление функции |
|
|
| ФН | FN Объявление функции |
|
|
|
| СТРУКТ | STRUCT Объявление структуры |
|
|
| СТРУКТ | STRUCT Объявление структуры |
|
|
|
| ПОВТОР | REPEAT Повторить выполнение |
|
|
| ПОВТОР | REPEAT Повторить выполнение |
|
|
@@ -297,7 +294,7 @@ const имя = "Oberon";
|
|
|
|
|
|
|
|
## 6. Объявление типов
|
|
## 6. Объявление типов
|
|
|
|
|
|
|
|
-`Тип данных `задаёт множество специфичных значений, которые переменные этого типа могут принимать, а также множетво операторов и методов, которые к ним применимы. Объявление типа используется для связывания имени с типом. Типы определяют структуру переменных этого типа и, косвенно, операторы, которые применимы к компонентам самих типов.
|
|
|
|
|
|
|
+`Тип данных` задаёт множество специфичных значений, которые переменные этого типа могут принимать, а также множетво операторов и методов, которые к ним применимы. Объявление типа используется для связывания имени с типом. Типы определяют структуру переменных этого типа и, косвенно, операторы, которые применимы к компонентам самих типов.
|
|
|
|
|
|
|
|
Типы данных деляется на две группы:
|
|
Типы данных деляется на две группы:
|
|
|
|
|
|
|
@@ -309,11 +306,6 @@ const имя = "Oberon";
|
|
|
- линейный типы;
|
|
- линейный типы;
|
|
|
- векторные типы.
|
|
- векторные типы.
|
|
|
|
|
|
|
|
-В группе векторных типов есть два типа:
|
|
|
|
|
-
|
|
|
|
|
-- массив;
|
|
|
|
|
-- литеральная строка.
|
|
|
|
|
-
|
|
|
|
|
После присвоения литеральная строка представлена массивом байтов.
|
|
После присвоения литеральная строка представлена массивом байтов.
|
|
|
|
|
|
|
|
> ОбъявлениеТипа = ИмяОпр "=" Тип.
|
|
> ОбъявлениеТипа = ИмяОпр "=" Тип.
|
|
@@ -322,18 +314,18 @@ const имя = "Oberon";
|
|
|
Примеры:
|
|
Примеры:
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
|
-type Таблица = ARRAY 255 OF REAL;
|
|
|
|
|
-type Дерево = LINK Узел;
|
|
|
|
|
|
|
+type Таблица = ARRAY[255]REAL;
|
|
|
|
|
+type Дерево = @Узел;
|
|
|
type Узел {
|
|
type Узел {
|
|
|
- ключ: INTEGER,
|
|
|
|
|
- Левый, уПравый: Дерево,
|
|
|
|
|
|
|
+ ключ: INT,
|
|
|
|
|
+ Левый, Правый: Дерево,
|
|
|
}
|
|
}
|
|
|
-type ДеревоСередина = LINK TO тУзелСередина;
|
|
|
|
|
-type УзелСередина (тУзел){
|
|
|
|
|
- Имя: ARRAY 32 OF BYTE,
|
|
|
|
|
- Подузел: туДерево,
|
|
|
|
|
|
|
+type ДеревоСередина = @УзелСередина;
|
|
|
|
|
+type УзелСередина (Узел){
|
|
|
|
|
+ Имя: ARRAY[32]BYTE,
|
|
|
|
|
+ Подузел: Дерево,
|
|
|
}
|
|
}
|
|
|
-type Функция = FN (x: INTEGER): INTEGER;
|
|
|
|
|
|
|
+type Функция = FN (x: INT): INT;
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
### 6.1 Встроенные линейные типы
|
|
### 6.1 Встроенные линейные типы
|
|
@@ -353,6 +345,11 @@ type Функция = FN (x: INTEGER): INTEGER;
|
|
|
|
|
|
|
|
### 6.2 Встроенные векторные типы
|
|
### 6.2 Встроенные векторные типы
|
|
|
|
|
|
|
|
|
|
+В группе векторных типов есть два типа:
|
|
|
|
|
+
|
|
|
|
|
+- массив;
|
|
|
|
|
+- литеральная строка.
|
|
|
|
|
+
|
|
|
Массив - это структура, состоящая из фиксированного количества элементов, тип элементов одинаковый для всех элементов данного типа массива. Количество элементов массива называется его длиной. Элементы массива обозначаются индексами, которые являются целыми числами от 0 до (длины - 1).
|
|
Массив - это структура, состоящая из фиксированного количества элементов, тип элементов одинаковый для всех элементов данного типа массива. Количество элементов массива называется его длиной. Элементы массива обозначаются индексами, которые являются целыми числами от 0 до (длины - 1).
|
|
|
|
|
|
|
|
```bash
|
|
```bash
|
|
@@ -371,6 +368,14 @@ var listUser=ARRAY[NN]INT;
|
|
|
var moments=ARRAY[10, 20]REAL;
|
|
var moments=ARRAY[10, 20]REAL;
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+`Литеральная строка` при создании представляет собой набор байт в виде букв в двойных кавычках. После привоения фактически -- это массив байт.
|
|
|
|
|
+
|
|
|
|
|
+Пример:
|
|
|
|
|
+
|
|
|
|
|
+```bash
|
|
|
|
|
+var strHello="Привет";
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
### 6.3 Структура
|
|
### 6.3 Структура
|
|
|
|
|
|
|
|
Сущность структура, состоящая из фиксированного количества элементов возможно разных типов. Объявление типа записи задаёт для каждого элемента, которое называется полем, его тип и имя, которое обозначает (ссылается на) это поле. Область действия этих имён полей - само определение записи, но они также видны как части экземпляра записи в форме "через точку" (см. 8.1), которая ссылается на элементы самого экземпляра записи.
|
|
Сущность структура, состоящая из фиксированного количества элементов возможно разных типов. Объявление типа записи задаёт для каждого элемента, которое называется полем, его тип и имя, которое обозначает (ссылается на) это поле. Область действия этих имён полей - само определение записи, но они также видны как части экземпляра записи в форме "через точку" (см. 8.1), которая ссылается на элементы самого экземпляра записи.
|