- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Моделирование массивом последовательностей: очереди
FIFO – “First In First Out” – «Первый пришел – первый ушел»
Очередь – структура данных, как и стек представляющая собой последовательность элементов. Добавление элементов происходит с одной стороны последовательности, удаление – с другой.
Значениями типа "очередь элементов типа T", как и для стеков, являются последовательности значений типа T. Разница состоит в том, что берутся элементы не с конца, а с начала (а добавляются по-прежнему в конец).
Операции с очередями:
Добавить (t: T, var x: очередь элементов типа T);
Полна(s: стек элементов типа Т): boolean
Взять (var t: T, var x: очередь элементов типа T);
Пуста (x: очередь элементов типа T): boolean;
Очередной (x: очередь элементов типа T): T.
При выполнении команды "Добавить" указанный элемент добавляется в конец очереди.
Команда "Взять" выполнима, лишь если очередь не пуста, и забирает из нее первый (положенный туда раньше всех) элемент, помещая его в t.
Значением функции "Очередной" (определенной для непустой очереди) является первый элемент очереди.
Будем хранить элементы очереди в соседних элементах массива. Тогда очередь будет прирастать справа и убывать слева. Поскольку при этом она может дойти до края, свернём массив в окружность.
Введем массив
Содержание: array [0..n-1] of T
и переменные
Первый: 0..n-1,
Длина : 0..n.
При этом элементами очереди будут
Содержание [Первый], Содержание [Первый + 1],...,Содержание [Первый + Длина - 1],
где сложение выполняется по модулю n.
Операции выполняются так:
Добавить элемент:
Если не полна
Содержание [(Первый + Длина) mod n] := t;
Длина := Длина + 1;
Взять элемент;
Если не пуста
t := Содержание [Первый];
Первый := (Первый + 1) mod n;
Длина := Длина - 1;
Пуста := (Длина = 0);
Полна := (Длина = n);
Очередной := Содержание [Первый];
Моделирование массивом последовательностей: деки
Дек – структура данных, представляющая собой последовательность элементов. Дек – двусторонняя очередь, т.е. и добавление и удаление осуществляется с обеих сторон.
“Double Ended Queue”
Записи. Присоединяющий оператор.
Оператор with (позволяет сократить обращение к полям записи, а также к полям, методам и свойствам объекта):
with имя записи или объекта do оператор
или
with список имен do оператор
Всюду внутри оператора можно опускать имя записи при обращении к полю указанной записи или имя объекта при обращении к полю, методу или свойству указанного объекта.
Если внешняя переменная имеет то же имя, что и поле (метод, свойство), то предпочтение отдается полю (методу, свойству). При наличии вложенных операторов with вначале предпринимается попытка рассматривать переменную как поле записи или объекта самого внутреннего оператора with, затем непосредственно объемлющего его оператора with и т.д. Если оператор with содержит список объектов, то они рассматривается справа налево.
Запись представляет собой набор элементов разных типов, каждый из которых имеет свое имя и называется полем записи. Тип записи конструируется следующим образом:
record Date
список полей1: тип1;
...
список полейN: типN;
end
var d1,d2: Date;
Чтобы получить доступ к полям записи, следует воспользоваться точечной нотацией, указав имя переменной-записи и поле, разделенные точкой
Как и для массивов, можно скопировать содержимое полей одной переменной-записи в другую:
d2:=d1;