- •Основы алгоритмизации и программирования
- •Введение
- •1.1. Структура программы
- •1.2. Типы данных
- •1.2.1. Целый тип данных
- •1.2.2. Логические типы данных – Boolean
- •1.2.3. Данные символьного типа
- •1.3. Операторы языка программирования Турбо Паскаль
- •1.3.1. Операции в Турбо Паскаль
- •1.3.2. Правила вычисления выражений
- •1.3.3. Встроенные функции в Турбо Паскаль
- •1.3.4. Описание констант и переменных
- •1.3.5. Операторы в Турбо Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №1 Организация программ линейных структур
- •Варианты заданий
- •2. Организация форматного вывода данных на языке Паскаль
- •Вопросы для самопроверки
- •Лабораторная работа №2 Организация ввода-вывода данных на языке Паскаль
- •Методические указания
- •Варианты задания
- •3. Организация программ разветвляющихся структур
- •3.1. Полная форма условного оператора
- •3.2. Краткая форма условного оператора
- •Вопросы для самопроверки
- •Лабораторная работа №3 Организация программ разветвляющихся структур
- •Варианты заданий
- •4. Организация циклических процессов
- •Лабораторная работа №4 Составление циклических программ
- •Варианты заданий
- •Методические указания
- •Варианты заданий
- •5. Программирование структур с вложенными циклами
- •Вопросы для самопроверки
- •Лабораторная работа №5 программирование структур с вложенными циклами. Вычисление суммы ряда
- •Методические указания
- •Варианты заданий
- •6. Перечислимые и ограниченные типы данных
- •6.1 Перечислимый тип данных
- •6.2. Ограниченный тип данных
- •6.3. Оператор выбора (варианта)
- •Вопросы для самопроверки
- •Лабораторная работа №6 Перечислимые и ограниченные типы данных
- •Варианты заданий.
- •7. Регулярные типы данных
- •7.1. Одномерные массивы
- •7.1.1. Краткая форма объявления одномерного массива
- •7.1.2. Полная форма объявления одномерного массива
- •7.1.3. Доступ к элементам массива
- •Вопросы для самопроверки
- •Лабораторная работа №7_1 регулярные типы данных. Массивы
- •Варианты заданий
- •7.2. Двумерные массивы
- •Полная форма описания матрицы:
- •Формирование элементов случайным образом:
- •Формирование элементов матрицы при вводе с клавиатуры:
- •Фрагменты программ по обработке 2-х мерных массивов
- •Вопросы для самопроверки
- •Лабораторная работа №7_2 регулярные типы данных. МАтрицы
- •Варианты заданий
- •7.3. Сортировка элементов массива
- •7.3.1. Сортировка методом «пузырька»
- •7.3.2. Сортировка вставками
- •7.3.3. Сортировка посредством выбора
- •7.3.4. Быстрая сортировка
- •8. Составление программ с использованием подпрограмм
- •8.1. Область видимости идентификатора переменной
- •8.2. Подпрограммы - процедуры (procedure)
- •8.2.1. Формальные и фактические параметры
- •Вопросы для самопроверки
- •Лабораторная работа №8_1 составление программ с использованием подпрограмм - процедур
- •Методические указания
- •Варианты заданий
- •8.3. Подпрограммы-функции (function)
- •Вопросы для самопроверки
- •Лабораторная работа №8_2 составление программ с использованием подпрограмм - функций
- •Варианты заданий
- •8.4. Рекурсия
- •8.4.1. Вычисление факториала
- •8.4.2. Формы рекурсивных процедур
- •8.4.3. Числа Фибоначчи
- •Вопросы для самопроверки
- •9. Модули
- •Структура модуля
- •Interface
- •Implementation
- •Вопросы для самопроверки
- •10.2. Стандартные процедуры и функции для строк
- •10.3. Хранение строк
- •Вопросы для самопроверки
- •Лабораторная работа №10 обработка символьной информации
- •Варианты заданий
- •11. Комбинированные типы. Записи (Record)
- •11.1 Записи с фиксированными частями
- •11.2. Оператор with…do
- •11.3. Вариантные записи
- •Вопросы для самопроверки
- •Лабораторная работа №11 Комбинированные типы. Записи
- •Варианты заданий
- •12. Файлы
- •12.1. Классификация файлов
- •12.1.1. Чтение файла
- •12.1.2. Запись файла
- •Вопросы для самопроверки
- •13.1. Объявление множества
- •13.2. Операции над множествами
- •13.3. Сравнение множеств
- •Include (s, I);
- •13.4. Старшинство множественных операций
- •Вопросы для самопроверки
- •Лабораторная работа №13 множества
- •Варианты заданий
- •Горячие клавиши
- •Библиографический список
- •Оглавление Введение 3
- •1. Программирование на языке Паскаль 5
- •1.1. Структура программы 5
- •2. Организация форматного вывода данных на языке Паскаль 17
- •Лабораторная работа №7_1.
- •Лабораторная работа №7_2.
- •Лабораторная работа №8_2.
13.1. Объявление множества
Всему множеству в целом даётся имя, которое объявляется в разделе var или type. Для описания множественного типа используется словосочетание SET OF (множество из …).
TYPE <имя типа> = SET OF <базовый тип>;
VAR <имя множества> : <имя типа>;
Здесь, <имя типа> - правильный идентификатор;
SET OF – зарезервированные слова (множество, из);
<базовый тип> - базовый тип элементов множества, в качестве которого может использоваться любой порядковый тип, кроме WORD, INTEGER, LONGINT.
Пример 13.1.
TYPE m = set of char;
CONST d1 : m = [‘0’..’9’];
d2 : m = [‘a’..’z’, ’A’..’Z’];
Пример 13.2.
TYPE m = 11..19;
m1 = set of ‘a’..’f’;
VAR a : set of m;
a1 : m1;
a2 : set of 1..31;
Пример 13.3.
TYPE
DigitChar = set of ‘0’..’9’;
Digit = set of 0..9;
VAR
S1, S2, S3 : DigitChar;
S4, S5, S6 : Digit;
Begin
…..
S1 := [‘1’, ‘2’, ‘3’];
S2 := [‘3’, ‘2’, ‘1’];
S3 := [‘2’, ‘3’];
S4 := [0..3, 6];
S5 := [4, 5];
S6 := [3..9];
…..
End.
Множество, не содержащее элементов, называется пустым или нуль множеством, и обозначается [].
Например, const M = [];
Здесь, множества S1 и S2 эквивалентны, а множество S3 включено в S2, но не эквивалентно ему.
13.2. Операции над множествами
Объединение А и В есть новое множество, состоящее из элементов, принадлежащих множеству А или В, или тому и другому одновременно.
Например,
S4 + S5 содержит [0, 1, 2, 3, 4, 5,6];
S5 + S6 содержит [3, 4, 5, 6, 7, 8, 9];
Объединять можно только множества одного базового типа.
Пересечение А * В есть новое множество, состоящее из элементов, принадлежащих и А, и В.
Например,
S4 * S6 содержит [3,6];
S4 * S5 – пустое множество.
Разность А – В есть новое множество, состоящее только из тех элементов А, которых нет в В (из А убираются все элементы, которые обнаружены в В).
Например,
S6 – S5 содержит [3, 6, 7, 8, 9];
S4 – S5 содержит [0, 1, 2, 3, 6];
13.3. Сравнение множеств
В Паскале множества сравнивают между собой применяя операции отношения.
Два множества А и В равны, если каждый элемент множества А является элементом множества В и наоборот, то есть А = В.
Множество А есть подмножество множества В, если каждый элемент А присутствует в В: А <= В или В >= А.
Принадлежность множеству (оператор in). Пусть А – множество элементов базового типа, а X – переменная этого типа. Выражение X in A истинно, если X является элементом множества А.
Например,
3 in S6 возвращает TRUE;
2 * 2 in S1 возвращает FALSE;
Дополнительно к этим операциям можно использовать две процедуры: INCLUDE - включает новый элемент во множество.
Обращение к процедуре:
Include (s, I);
Здесь, S – множество, состоящее из элементов базового типа;
I – элемент базового типа, который необходимо включить во множество.
И вторая процедура EXCLUDE – исключает элемент из множества.
Обращение к процедуре имеет вид:
EXCLUDE (S, I);
Например,
VAR
chars1, chars2, chars3 : set of char;
…..
chars1 := [‘a’, ‘x’, ‘o’];
chars2 := chars1 – [‘a’]; {то есть chars2 = [‘o’, ‘x’];}
chars3 := chars1 + chars2 + [‘e’]; {то есть chars3 = [‘a’, ‘x’, ‘e’, ‘o’]}
not(‘g’inchars2) – ‘g’ не является элементомchars2.
Выражение
chars1 <> chars2 – множества не совпадают по составу входных элементов;
chars1 >= chars2 – каждый элемент chars2 присутствует и в chars1;
chars1 <= chars3 – каждый элемент chars1 присутствует и в chars3;
‘a’ in chars1 – элемент ‘a’ присутствует во множестве chars1;