- •Ю.П. Чернов, о.П. Шафеева программирование для начинающих
- •1. Среда программирования turbo pascal 7.0
- •1.1. Структура меню среды
- •1.2. Правила оформления программ
- •1.3. Команды редактора тп
- •Команды удаления и вставки
- •1.4. Компиляция и исправление синтаксических ошибок
- •2. Элементы языка pascal
- •2.1. Алфавит языка
- •2.2. Константы. Идентификаторы
- •2.3. Операторы
- •2.3.1. Оператор присваивания
- •2.3.2. Оператор безусловного перехода
- •Стандартные функции
- •2.3.3. Условный оператор if
- •2.3.4. Опеpатоp варианта case
- •2.3.5. Составной и пустой операторы
- •2.3.6. Операторы цикла
- •2.4. Процедуры прерываний
- •2.5. Типизированные константы
- •2.6. Структура программы
- •2.7. Подпрограммы
- •2.7.1. Определение процедур и функций
- •2.7.2. Вложенные подпрограммы
- •2.7.3. Вызов подпрограмм
- •2.7.4. Процедуры
- •2.7.5. Функции
- •2.7.6. Передача в подпрограмму параметров-массивов и параметров-строк
- •2.7.7. Рекурсия
- •2.8. Типы в Турбо Паскале
- •2.8.1. Целые типы
- •Классификация целых типов
- •Встроенные процедуры и функции для целых типов
- •2.8.2. Логический тип
- •2.8.3. Символьный тип
- •Служебные символы
- •2.8.4. Строковый тип
- •Встроенные функции и процедуры для обработки строк
- •Процедуры преобразования
- •2.8.5. Перечислимый тип
- •2.8.6. Ограниченный тип (диапазон)
- •2.8.7. Вещественные типы
- •Вещественные типы
- •Встроенные функции
- •2.8.8. Структурированные типы данных. Массивы
- •2.8.9. Множества
- •2.8.10. Записи
- •2.9. Изменение типа выражения
- •2.10. Процедурные типы
- •2.11. Файлы
- •Общие процедуры и функции для работы с файлами
- •2.11.1. Текстовые файлы
- •2.11.2. Типизированные файлы
- •2.11.3. Нетипизированные файлы
- •2.12. Указатели и динамическая память
- •2.13. Модули
- •2.14. Библиотека Турбо Паскаля
- •2.14.1. Модуль crt
- •2.14.2. Модуль graph
- •Var driver, Mode: integer переменные драйвера и режима.
- •Управление графическим режимом
- •Управление экраном, окном, страницей
- •Управление цветом и палитрой
- •Работа с точками
- •Работа с линиями
- •Построение фигур из линий
- •Построение криволинейных фигур
- •Работа с текстом
- •Обмен с памятью
- •2.15. Динамические структуры данных
- •2.15.1. Связанные динамические данные. Списки
- •Чтобы сослаться на двунаправленный кольцевой список как на единый программный объект, используется указатель, значением которого является ссылка на заглавное звено списка.
- •2.15.2 Очередь
- •2.15.3. Стек
- •3. Практическое программирование Этапы подготовки и решения задач на компьютере
- •Порядок выполнения лабораторных работ
- •Лабораторная работа 1 Основы программирования в среде Турбо Паскаля.
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Лабораторная работа 2 Программирование разветвленных алгоритмов. Операторы передачи управления
- •Лабораторная работа 3 Программирование циклических алгоритмов с заданным числом повторений
- •Лабораторная работа 4 Программирование циклических алгоритмов с предусловием
- •Лабораторная работа 5 Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Лабораторная работа 6 Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Лабораторная работа 7
- •Лабораторная работа 8 Программирование с использованием функций
- •Лабораторная работа 9 Программирование с использованием процедур
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Лабораторная работа 11 Файлы
- •Лабораторная работа 12 Записи
- •Лабораторная работа 13 Решение нелинейных уравнений
- •Задание (программа_13)
- •Лабораторная работа 14 Вычисление приближенного значения определенного интеграла
- •Лабораторная работа 15 Модульное программирование
- •Лабораторная работа 16 Графика
- •Библиографический список
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Зарезервированные слова Turbo Pascal 7.0
- •Приложение в
- •Кодировка символов в соответствии с кодами ascii
- •Приложение г
- •Альтернативная кодировка госТа для кодов 128...255
- •Клавиши с кодами из двух частей
- •Содержание
2.8.9. Множества
Множества наборы однотипных, логически связанных друг с другом обьектов. Характер связи обьектов определяется программистом и не контролируется Турбо Паскалем. Количество элементов в множестве может меняться от 0 до 256. Множество, которое не содержит элементов, называется пустым. От массивов множества отличаются тем, что количество элементов не постоянно. Его можно расширять и сокращать по ходу выполнения программы.
Описание типа производится в разделе TYPE в следующем виде:
<ИмяТипа> = SET of <базовый_тип>,
где <ИмяТипа> - правильный идентификатор ТП; <базовый_тип> тип элементов множества, в качестве которого может применяться любой порядковый тип кроме WORD, Integer, LogInt, ShortInt.
Пример:TYPE
dchar=SET of '1'..'9';
digit=SET of 1..9;
Переменные введенных типов-множеств описываются в разделе VAR. Пример:
VAR
S1, S2, S3: dchar;
S4, S5, S6, S7: digit;
Можно тип объявлять сразу при описании переменных, например:
VAR S1: set of '1'..'9';
Для задания множества может использоваться конструктор множества список элементов множества, отделенных друг от друга запятыми. Список заключается в квадратные скобки. Спецификациями элементов могут быть константы или выражения базового типа, а также тип-диапазон того же базового типа, например:
S1:=['1','2','3']; S4:=[0..3,7];
S2:=['2','1','3']; S5:=[4,6];
S3:=['1','2']; S6:=[3..8];
S7:=[]; (пустое).
Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы причем порядок следования в множестве безразличен (S1 и S2 эквивалентны).
Если все элементы одного множества входят в другое множество то говорят, что первое включено во второе (S3 включено в S1).
Пустое множество считается включенным в любое другое.
Над множествами определены следующие операции:
1. Пересечение множеств (*) содержит элементы, общие для обоих множеств. Например, S4*S6 содержит [3,7]; S4*S5 образует пустое множество.
2. Объединение множеств (+) содержит элементы первого множества, дополненные недостающими элементами второго. Например,
S4+S5 содержит [0,1,2,3,4,6,7], S5+S6 содержит [3,4,5,6,7,8].
3. Разность множеств (-) содержит элементы из первого множества, которые не принадлежат второму. Например, S6-S5 содержит [3,5,7,8]);
S4-S5 содержит [0,1,2,3,7]), [ ]-S4 даст [ ].
4. Операции отношений:
операция эквивалентности (=) возвращает значение TRUE, если оба множества эквивалентны, например, S1=S2;
проверки неэквивалентности (<>) дает TRUE, если множества неэквивалентны, например, [1,2] <> [1] и S3<>S2;
проверки вхождения (<=) принимает значение TRUE, если первое множество входит во второе, например, [1]<=[1,2];
проверки вхождения (>=) возвращает TRUE, если второе множество входит в первое;
проверки принадлежности (in) возвращает TRUE, если выражение имеет значение, принадлежащее множеству. Структура этой бинарной операции имеет вид
<выражение> in <множество>;
Примеры:
3 in S6 , и [ ] in [0..5] возвращают TRUE;
2*2 in S4 дает FALSE.
Множества имеют компактное машинное представление.
Недостатком данного типа является невозможность вывода множеств на экран, поскольку отсутствует механизм изъятия элемента из множества. Ввод множества возможен только поэлементно.
Пример: Сформировать множество из введенных с клавиатуры символов до появления точки.
VAR S: SET of char; {объявленa переменная-множество S}
C: char; {элемент множества}
Begin
S:=[]; {обнуление значений}
while C <> '.' do {цикл до ввода "."}
begin
readln(C); {чтение символа в с}
S:=S+[C]; {добавление его к S}
end;
End.