
- •Основные понятия языка программирования паскаль
- •Структурное программирование
- •Основные символы языка
- •Элементы языка
- •Интегрированная среда turbo pascal
- •Структура программы в turbo pascal
- •Определение типов
- •Операторы в программе
- •Операторные скобки
- •Операторы ввода
- •Оператор присваивания
- •Оператор условного перехода
- •Оперетор безусловного перехода
- •Организация циклов
- •Использование операторов условного и безусловного перехода
- •Цикл с параметром
- •Цикл с предусловием - цикл while
- •Цикл с постусловием - цикл repeat
- •Оператор выбора варианта
- •Концепция типов данных
- •Стандартные простые типы Целый тип
- •Операции над данными целого типа:
- •Действительный тип
- •Операции над данными действительного типа:
- •Логический тип
- •Символьный тип
- •Символьные строковые константы
- •Нестандартные простые типы (определяемые пользователем)
- •Перечисляемый тип
- •Ограниченный тип (диапазон, интервал)
- •Процедуры и функции
- •Описание процедур
- •Стандартные процедуры
- •Описание функций
- •Стандартные функции
- •Итерация и рекурсия
- •Побочный эффект рекурсии
- •Предварительное описание (ссылки вперед)
- •Регулярные типы Одномерный массив
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •Многомерные массивы
- •Упакованные массивы
- •Множественные типы
- •Свойства множеств
- •Операции над множествами
- •Комбинированные типы Описание записей и действия с ними
- •Оператор присоединения.
- •Записи с вариантами
- •Типизированная константа
- •Простая типизированная константа
- •Структурированная (сложная) типизированная константа Типизированная константа массива
- •Типизированная константа записи
- •Типизированная константа множества.
- •Преобразование типов
- •Неявные преобразования типов
- •Использование стандартных функций для преобразования
- •Явные преобразования типов
- •Эквивалентность типов
- •Совместимость типов
- •Файловые типы
- •Определение файлового типа
- •Структура файла
- •Имя файла
- •Описание файлового типа
- •Файловая переменная
- •Операции над файлами
- •Типизированные файлы
- •Ссылочные типы (указатели) Статические и динамические переменные
- •Ссылочные типы (указатели)
- •Удаление узла из стека:
- •Человек
- •Человек
- •Вставка
- •Динамические переменные
- •Процедуры создания и удаления динамических переменных
- •Динамические списковые структуры
- •Однонаправленные списки
- •Двунаправленные списки
- •Очереди
- •Деревья
- •Модульная система turbo pascal
- •Uses mod 1, mod 2, mod 3; (подключение трех модулей) Общая структура модуля
- •Использование идентификаторов модуля
- •Использование модуля в программе
- •Компиляция модулей
- •Системный файл turbo.Tpl
- •Стандартные модули
- •Модуль crt
- •Модуль dos
- •Модуль printer
- •Модуль overlay
- •Модуль string
- •Процедуры модуля graph
- •Графические процедуры
- •Координаты. Окна. Страницы
- •Линии и точки
- •Многоугольники
- •Дуги,окружности, эллипсы
Деревья
Дерево - частный случай графа. Структура определяется рекурсивно,образованная данным элементом, называемым корнем дерева, и конечным списком с переменным числом элементов - деревьев того же типа, называемых поддеревьями. Двоичным или бинарным деревом называется дерево состоящее из корня, правого и левого поддеревьев.
В Паскале двоичное дерево можно определить так:
type BTree = ^BNode;
BNode = record
info:TValue;
left,right:BTree;
end;
При анализе структур данных, заданных в виде дерева, применяются различные способы просмотра и перебора узлов. Основная особенность каждого обхода заключается в том, что просматриваются все узлы дерева в некотором порядке, причем каждый узел обрабатывается ровно один раз.
Для бинарного дерева определены три способа обхода: прямой или префиксный (корень - левое поддерево - правое поддерево),обратный или инфиксный (левое поддерево - корень - правое поддерево) и концевой или постфиксный (левое поддерево - правое поддерево - корень).
При обходе дерева используются рекурсивные процедуры или стек. В прошитых деревьях используются дополнительные указатели на наличие поддеревьев (LTAG и RTAG). Введение дополнительных указателей не приводит к большому увеличению затрат памяти, но позволяет при обходе отказаться от стека.
Надо отметить,что любое дерево общего вида можно представить в виде двоичного, надо в исходном дереве у каждого узла соединить его сыновей от старшего к младшему и убрать все связи узла с сыновьями, оставив только связь со старшим сыном.
Над деревьями удобно определить операции: чтение информационной части из узла дерева, создание дерева, присоединение к узлу нового поддерева, удаление поддерева.
Особенно полезны деревья при сортировке. Алгоритм состоит в том, что при просмотре данных очередной элемент помещается в двоичное дерево. Ключ нового элемента сравнивается с ключом текущего узла.Если указатель текущего узла NIL, то указатель на новый узел добавляется в то место откуда был извлечен NIL. Если ключ нового узла меньше ключа текущего узла, то поиск места для нового узла продолжается в левом поддереве, если больше - в правом. После того как все данные занесены в двоичное дерево сортировки, выполняется обратный обход дерева с выводом.
Деревья применяются также при интерпритации и вычислении как арифметических, так и логических.
Модульная система turbo pascal
Мы будем изучать расширение авторского языка, реализованные в версии Turbo Pascal. Это средства модульного и объектно-ориентированного программирования.
Понятие модуля или, в более общем случае, модульного программирования, возникло на определенном этапе развития вычислительного дела и было обусловлено возрастающими объемами программ, их повышающейся сложностью и коллективным характером разработок.
Турбо Паскаль также позволяет использовать внешние процедуры и функции, написанные практически на любом языке программирования. Подключаются они в виде специальной структуры модуля - с помощью командного оператора для компилятора USES.
Hапримеp, если в своей программе вы используете процедуры и функции, связанные в некоторый модуль MOD, это записывается следующим образом:
Program Myprogr 1;
USES MOD; (подключение модуля MOD)
type
const
var
begin
end.
В своей программе вы можете использовать не один модуль, и тогда подключение модулей к основной программе записывается в следующей форме:
Program Myprogr 2;