
- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Перечисления. Диапазоны.
Перечислимый тип определяется упорядоченным набором идентификаторов:
type Season = (Winter,Spring,Summer,Autumn); DayOfWeek = (Mon,Tue,Wed,Thi,Thr,Sat,Sun);
Значения перечислимого типа занимают 4 байта.
Тип-диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона.
Тип-диапазон задается границами своих значений внутри базового типа:
<мин.знач.>..<макс.знач.>
<мин. знач.> — минимальное значение типа-диапазона;
<макс. знач.> — максимальное его значение.
Тип-диапазон необязательно описывать в разделе ТУРЕ, а можно указывать непосредственно при объявлении переменной
При определении типа-диапазона нужно руководствоваться следующими правилами:
два символа .. рассматриваются как один символ, поэтому между ними недопустимы пробелы;
левая граница диапазона не должна превышать его правую границу.
Тип, на основе которого строится интервальный тип, называется базовым для этого интервального типа. Значения интервального типа занимают 4 байта.
Массивы.
- однородный набор данных фиксированной длины
Type T=array[список индивидуальных типов] of T0;
Список индивидуальных типов - список из одного или нескольких индексных типов, разделенных запятыми
Базовый тип – любой, все компоненты массива базового типа
Тип индекса – дискретный тип, любые порядковые типы
Элементы массива различаются по номеру
Элементы массива взаимозаменяемы
Однородная обработка элементов массива
Количество элементов известно – можно использоваться цикл с параметром
Компоненты массива – «переменные с индексами»
Обычный прием работы с массивами – выборочное изменение его отдельных компонент
Индексы можно вычислять
Над массивами не определены операции отношения, сравнить два массива можно поэлементно
Переменная-массив, компоненты которой опять же массивы, называется матрицей
type
mat = array [0..5] of array [-2.. 2] of array [Char] of Byte;
Такую запись можно заменить более компактной:
type
mat = array [0. . 5, -2. .2, Char] of Byte;
Глубина вложенности структурированных типов вообще, а следовательно, и массивов — произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива ограничена возможностями операционной системы и языка программирования. В памяти ПК элементы массива следуют друг за другом так, что при переходе от младших адресов к старшим наиболее быстро меняется самый правый индекс массива.
Моделирование массивом последовательностей: стек.
LIFO – “Last In First Out” – «Последний пришел – первый ушел»
Стек – структура данных, представляющая собой последовательность элементов. Добавление и удаление элементов происходит только с одного конца последовательности, т.е. при изменении структуры предыдущая последовательность остается неизменной.
Стек на массиве позволяет уравнять время выполнения действий по добавлению и удалению элемента. Нужно всего лишь хранить в отдельной переменной длину последовательности и увеличивать ее или уменьшать соответственно при добавлении и удалении. Единственный недостаток такого представления – недостаток самого массива в Паскале – ограниченный размер, приводящий к переполнению стека.
Операции:
Сделать_пустым (var s: стек элементов типа Т)
Добавить (t: T; var s: стек элементов типа Т)
Удалить(t: T; var s: стек элементов типа Т)
Пуст (s: стек элементов типа Т): boolean
Полон(s: стек элементов типа Т): boolean
Вершина (s: стек элементов типа Т): T
Содержание: array [1..n] of T;
Длина: integer;
Чтобы сделать стек пустым, достаточно положить
Длина := 0
Добавить элемент t:
Если не полон
Длина := Длина + 1;
Удалить элемент t:
Если не пуст
Длина := Длина - 1;
Стек пуст, если Длина = 0.
Стек полон, если Длина = n
Вершина стека = Содержание [Длина].