
- •Федеральное агентство по образованию
- •Структурированные типы данных. Классификация
- •Массивы Определение массива
- •Обращение к элементу массива. Хранение элементов массива. Доступ к элементам массива
- •Действия над массивами
- •Поиск элемента (одномерного ) массива Поиск среди неупорядоченных элементов массива
- •Поиск среди упорядоченных элементов массива
- •Сортировка элементов (одномерного) массива
- •Линейная сортировка (сортировка отбором)
- •Сортировка методом пузырька
- •5 4 3 1 2
- •5 4 3 2 1 Метод быстрой сортировки с разделением
- •Множества
- •Объявление множеств
- •Представление в памяти переменной типа множество
- •Операторы для работы с множествами Проверка принадлежности элемента множеству
- •Операции над множествами
- •Сравнение множеств
- •Применение множеств
- •Процедуры и структурное программирование
- •Преимущества структурного программирования
- •Планирование структурированной программы
- •Метод программирования сверху вниз
- •Определение процедуры
- •Передача управления при вызовах процедур и функций
- •Функции: подпрограммы,возвращающие единственный результат
- •Понятие блока
- •Область действия и время жизни переменных
- •Особенности локальных переменных
- •Особенности глобальных переменных
- •Особенности использования процедур и функций в турбо паскале
- •Опережающее определение процедур и функций
- •Рекурсия и итерация
- •Процедуры и функции как параметры
- •Директивы подпрограмм
- •Отладка и тестирование программ, содержащих подпрограммы
- •Нисходящее тестирование и подпрограммы-заглушки
- •Восходящее тестирование и программы-тестеры
- •Рекомендации по отладке программ, содержащих подпрограммы
- •Использование отладчикадля трассировки процедур
- •Запуск внешних программ
- •Стандартные модули
- •Модуль Crt
- •Модуль Graph
- •Функции
- •Текстовые файлы
- •Нетипизированные файлы
- •Типизированные файлы
- •Прямой доступ
- •Дополнительные функции работы с файлами
- •Обработка ошибок ввода-вывода
- •Указатели и динамические переменные Статические и динамические переменные
- •Адресация памяти в Турбо Паскале
- •Карта памяти Турбо Паскаля
- •Указатели
- •Операция для получения адреса
- •Функции для работы с адресами
- •Процедуры для работы с указателями
- •Присваивание значений указателям
- •Организация ссылок
- •Динамические структурированные переменные Динамические записи
- •Динамические массивы
- •Массивы размером более 64 кбайт
- •Строки с завершающим нулем (asciiz)
- •Процедуры и функции модуля strings
- •Указатели на процедуры и функции
- •Динамические структуры данных
- •Линейные списки
- •60 Лекции по курсу «Языки программирования» Часть II
Представление в памяти переменной типа множество
Представляется переменная типа множества в памяти очень компактно - в виде битовых строк. В этих строках хранятся не значения базового типа, а информация о них: каждому отдельному значению базового типа соответствует отдельный разряд (бит). Единица в этом разряде соответствует ситуации наличия значения базового типа в данный момент в значении переменной типа множество. Ноль означает, что данное значение базового типа в данный момент в множестве отсутствует. Пустое множество хранится в виде нулевой (состоящей из нулей) битовой строки.
При работе с множествами есть недостаток: значение переменных множественного типа нельзя вводить и выводить в процедурах (ввода-вывода). Тем не менее значение элемента множества можно наблюдать в окне отладчика.
Операторы для работы с множествами Проверка принадлежности элемента множеству
Для того чтобы выяснить, является ли определенное значение членом множества, в Pascal имеется специальный оператор in. Выражение, в котором присутствует оператор in возвращает результат типа Boolean.
СИНТАКСИС оператора принадлежности множеству
элемент in [перечень_элементов];
Пример: Ch in [' + ','-','*','/','<', '>',' = ']
Интерпретация: Оператор принадлежности множеству (in) описывает условие, принимающее значение True, если элемент имеется в составе перечня_элементов. В противном случае условие принимает значение False. Тип данных, к которому относится элемент, должен быть совместим с типом элементов перечня. Оператор in имеет тот же приоритет, что и операторы сравнения.
Операции над множествами
Над множествами возможны три операции. Все операции двухместные.
Операндами в этих операциях могут быть как переменные типа множеств, так и конструкторы множеств. Операнды должны принадлежать к одному и тому же множественному типу.
Var
A, B: set of char;
C: set of char;
a, b, c - множественные переменные. Set of char - множественный тип.
В данном случае A и B принадлежат к одному и тому же множественному типу, а С - к другому, хотя переменные имеют формально один и тот же тип.
A B
Таблица
операций над множествами.
-
Операция
Математика
П
аскаль
Пересечение
A B
A
* B
Объединение
A B
A
+ B
Разность
A \ B
A - B
Определение 1. Пересечение множеств - новое множество, состоящее из элементов, принадлежащих одновременно множествам A и B.
Определение 2. Объединение множеств - новое множество, в которое входят элементы или из элементов множества А или из элементов множества В или из элементов, принадлежащих тому и другому одновременно.
Определение 3. Разность множеств - новое множество, в которое входят элементы уменьшаемого множества (A), не входящие в число элементов вычитаемого множества (B).
Примечание. Если при выполнении операции объединения (А + В) включаемые элементы уже присутствуют в множестве и. если при выполнении операции разности (А - В) вычитаемые элементы отсутствуют в множестве, то сообщения об ошибке не будет. Операции просто не будут выполняться.
Последние две операции используются для выполнения следующих действий:
1). (А+В) используются для включения в множество отдельных элементов.
2). (А-В) используется для исключения отдельных элементов из множества.
Для ввода значения множества и вывода содержимого множества нельзя использовать операторы read и write. Рассмотрим программу, которая заполняет множество поэлементно.