
- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Рекурсия.
Рекурсия — способ общего определения множества объектов или функций через себя, с использованием ранее заданных частных определений.
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (косвенная рекурсия). Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программы.
Реализация рекурсивных вызовов функций в практически применяемых языках и средах программирования, как правило, опирается на механизм стека вызовов — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно. Оборотной стороной этого довольно простого по структуре механизма является то, что на каждый рекурсивный вызов требуется некоторое количество оперативной памяти компьютера, и при чрезмерно большой глубине рекурсии может наступить переполнение стека вызовов. Вследствие этого, обычно рекомендуется избегать рекурсивных программ, которые приводят (или в некоторых условиях могут приводить) к слишком большой глубине рекурсии.
Записи активации в стеке
Procedure p;
Var x,y,z…
End;
+ +
Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
Рекурсия и итерации – равносильные механизмы.
Рекурсия используется:
1) при обработке рекурсивных систем данных (дерево – корень, к которому присоединены другие деревья)
2) если обработка частично выполняется на спуске, частично на подъеме
Итеративная схема организации вычислительных процессов реализуется через итеративно вычислимый цикл (while)
Метод рекурсивного спуска – для анализа каждой синтаксической конструкции пишется своя процедура, они вызываются в том порядке, который предписан
Реализация одного и того же алгоритма рекурсивно и итеративно
Вычисления n факториала
Procedure P; I:=0;
Begin F:=1;
If I<n then begin While I<n do begin
I:=I+1; I:=I+1;
F:=I*F; F:=I*F;
P; end;
End;
End;
I:=0;
F:=1;
P.
Рекурсия (фрейм – сохранение через системный стек)
Блочная структура.
Локальные переменные – описаны в данных блоках
Глобальные – в объемлющих блоках
Любой блок внутри другого
Глобальные описания – в любом из объемлющих блоков
Локальное имя важнее глобального
Запись активации – совокупность локальных описаний процедуры
При каждом вызове процедуры создается своя запись активации, которая располагается в стеке (первой закончится та, которая последней началась)
Цели создания блочной структуры:
1) получение высокой надежности
2) локализация изменений при переработке программ
3) экономие памяти ЭВМ
4) упрощение коллективной работы под проектом
Правила видимости: (область действия переменной - та часть программы, в которой доступна данная переменная)
1) вложенные блоки, в которых отсутствует такой же идентификатор
2) тот блок, где описан идентификатор
Побочный эффект – когда процедура изменяет значение глобальной переменной
Связывание – фиксация какого-либо свойства (статич) на этапе трансляции, (динамич) во время выполнения