
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Строковый тип данных
- •Описание констант
- •Операция присваивания
- •Приоритет операций
- •Оператор присваивания
- •Совместимость и преобразование типов
- •Элементарный ввод-вывод
- •Лекция 5 Выражения
- •Математические операции
- •Логические операции
- •Операции отношения
- •Приоритет операций
- •Основные математические функции
- •Уменьшает значение числа X на y. Если число y не указано, то уменьшение происходит на 1. Циклы
- •Арифметические циклы
- •Итерационные циклы с предусловием
- •Итерационные циклы с постусловием
- •Операторы завершения цикла
- •Операторы ветвления и цикла Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Операторы ветвления и цикла
- •Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Лекция 7. Подпрограммы: процедуры и функции
- •Пример 27
- •Обмен данными
- •4.2. Множества
- •4.2.1. Объявление типа множества
- •4.2.2. Операции над множествами
- •4.2.3. Пример использования множества
- •Пример 33
- •4.3. Строки
- •4.3.1. Объявление типа String
- •4.3.2. Операции над строковыми переменными
- •4.3.3. Встроенные процедуры и функции обработки строк
- •Пример 34
- •4.1. Матрица
- •4.1.1. Ввод-вывод элементов матрицы
- •4.1.2. Определение индексов элементов матрицы
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Определение и особенности файлов
- •Доступ к компонентам файла
- •Текстовый файл
- •Чтение из текстового файла
- •Запись в текстовый файл
- •Файлы в Тубо Паскаль
- •Файловые процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Графика Турбо Паскаля
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Статические и динамические памяти переменные
- •Объявление указателей
- •Выделение и освобождение динамической памяти
- •Операции с указателем
- •Пример 41
- •Связанные списки
- •Понятие бинарные деревья. Операции над бинарными деревьями
- •Применение бинарных деревьев
- •Сравнение рекурсии и итерации
- •Пример 51
- •Реализация объектно-ориентированного подхода в турбо-паскале
- •Алгоритмическая и объектная декомпозиция
- •Объектный тип в Турбо-Паскале
- •Способы наследования и переопределения
- •Виртуальные методы
- •Модуль c r t
- •Модуль g r a p h
Пример 51
program FactorIt; {вычисление факториала с использованием итерации} var F, N, I: integer; begin writeln('Введите целое число '); read(N); F := 1; for I := 1 to N do F := F * I; writeln('Факториал', N:4, '=', F); end. |
Бесспорно, что реализация вычисления факториала в примере 51 является более традиционной, однако в этом случае используется три переменных.
Сформулируем свойства рекурсивных алгоритмов:
1. Наличие тривиального случая. Правильный рекурсивный алгоритм не должен создавать бесконечную последовательность вызовов самого себя. Для этого он обязательно должен содержать нерекурсивный выход, т.е. при некоторых исходных данных вычисления в алгоритме должны производиться без вызовов его самого - тривиальный случай. Примером тривиального случая в рекурсивном алгоритме вычисления N! является условие N = 0. 2. Определение сложного случая в терминах более простого. При любых исходных данных нерекурсивный выход должен достигаться за конечное число рекурсивных вызовов. Для этого каждый новый вызов рекурсивного алгоритма должен решать более простую задачу, т.е. рекурсивный алгоритм должен содержать определение некоторого сложного случая в терминах более простого случая. В случае вычисления факториала - это вычисление по формуле N! = N * (N-1)!, где N уменьшается при каждом рекурсивном вызове.
Когда нужна рекурсия? Выбор зависит от конкретной задачи. В общем случае рекурсия требует дополнительных расходов памяти, т.к. она реализуется с использованием стеков, однако, если задача или используемые данные определены рекурсивно, применение рекурсии часто дает более простое решение и реализация алгоритма выглядит изящнее.
Реализация объектно-ориентированного подхода в турбо-паскале
При разработке больших программных систем возникают трудности, связанные с четырьмя основными причинами: "... сложностью проблемы, сложностью управления процессом разработки, сложностью обеспечения гибкости конечного программного продукта и сложностью описания поведения отдельных подсистем." [1]. Г. Буч предлагает пять признаков сложной системы:
1. Сложная система состоит, как правило, из взаимосвязанных подсистем, т.е. имеет иерархическую структуру. 2. Выбор низшего уровня иерархии достаточно произволен. 3. Связи внутри структуры обычно сильнее связей между структурами. 4. Иерархические системы состоят из нескольких подсистем разного типа, реализованных в различном порядке и в разнообразных комбинациях. 5. Работающая сложная система неизбежно оказывается результатом развития работающей простой системы, а сложные объекты становятся элементами низших уровней абстракции.
Объектно-ориентированный подход предполагает поиск общих абстракций для сложной системы. Под абстракцией принято понимать существенные характеристики объекта, которые определяют его особенности. В качестве таких характеристик можно выделить типовую и структурную иерархии. Основным видом типовой иерархии является структура классов (иерархия по номенклатуре), а структурной иерархии - структура объектов (иерархия по составу). Объект можно представить как реализацию некоторой абстракции в виде объединения данных и правил (методов) их преобразования. Объект обладает состоянием, поведением и индивидуальностью. Структура и поведение схожих объектов определяет общий для них класс. Понятие класса и объекта тесно связаны. Однако существует важное отличие: объект является конкретной реализацией, определенной во времени и в пространстве. Класс определяет некоторую абстракцию - множество объектов. Можно сказать, что любой объект является экземпляром класса.