- •Понятие формального языка. Описание синтаксиса языка.
- •Понятия тестирования и отладки. Принципы тестирования.
- •Полнота тестирования. Критерии черного ящика.
- •Критерии белого ящика.
- •Мгт. Ошибкоопасные ситуации при работе с файлами.
- •Ошибкоопасные ситуации при обращении к данным.
- •Ошибкоопасные ситуации при вычислениях.
- •Ошибкоопасные ситуации при передаче управления и вызовах подпрограмм.
- •Безмашинное тестирование.
- •Оценка количества ошибок в программе.
- •Мера доверия к миллсовой модели оценки количества ошибок в программе. Оценка количества необходимых тестов.
- •Отладка. Отладочные операторы.
- •Методы поиска ошибки. Принципы отладки. Анализ обнаруженной ошибки.
- •Отладочные средства авс-Паскаля.
- •Нисходящее программирование. Нисходящее тестирование.
- •Стиль программирования
- •Понятие алгоритма. Свойства алгоритма.
- •Операторы Паскаля
- •Замкнутые подпрограммы.
- •Открытые подпрограммы.
- •Передача параметров.
- •Рекурсия.
- •Рекуррентные вычисления. Вычисления рекурсивные и итеративные. Реализация одного и того же алгоритма рекурсивно и итеративно.
- •Блочная структура.
- •Понятие типа данных. Классификация языков по типизации.
- •Классификация типов данных. Числовые типы.
- •Перечисления. Диапазоны.
- •Массивы.
- •Моделирование массивом последовательностей: стек.
- •Моделирование массивом последовательностей: очереди
- •Моделирование массивом последовательностей: деки
- •Записи. Присоединяющий оператор.
- •Файлы. Виды файлов. Методы доступа. Триада для работы с файлом.
- •Синхронизация. Буферизация. Блокирование.
- •Двоичные файлы в авс-Паскале.
- •Строки Тип string в авс Паскале.
- •Множества.
- •Процедурные типы.
- •1 ) Описание процедурной константы в Паскале:
- •2 ) Не в Паскале:
- •Типовая безопасность. Идентичность типов.
- •Абстракция данных. Модули в Турбо-Паскале и в авс-Паскале.
- •Подходы к созданию универсального языка программирования
- •Запись с вариантами
- •Классы памяти
- •Понятие конечного автомата и мп-автомата
- •Понятие Машины Тьюринга, нормальных алгоритмов Маркова
Множества.
Множество представляет собой набор элементов одного порядкового типа. Элементы множества считаются неупорядоченными; каждый элемент может входить во множество не более одного раза. Тип множества описывается следующим образом:
set of базовый тип
В качестве базового может быть любой порядковый тип с элементами, для которых функция Ord возвращает значения в диапазоне от 0 до 255. Например:
type ByteSet = set of byte; CharSet = set of char; Digits = set of '0'..'9'; SeasonSet = set of (Winter,Spring,Summer,Autumn);
Переменная типа множество занимает 16 байт и может содержать несколько значений базового типа. Чтобы сконструировать значение типа множество, используется конструкция вида
[список значений]
где в списке могут перечисляться через запятую либо выражения базового типа, либо их диапазоны в виде a..b, где a и b - выражения базового типа. Например:
var bs: ByteSet; bestdays: (Mon,Tue,Wed,Thi,Thr,Sat,Sun); ... bs:=[1,3,5,20..25]; bestdays:=[Wed,Thr..Sun];
Значения в списке могут отсутствовать, тогда множество является пустым:
bs:=[];
Операция in проверяет принадлежность элемента множеству:
if Wed in bestdays then ...
Для множеств определены операции
+ (объединение)
- (разность)
* (пересечение)
= (равенство)
<> (неравенство)
<= (вложено)
>= (содержит)
При присваивании множеству при необходимости происходит усечение его элементов до значений базового типа. Например:
var st: set of 3..9; ... st:=[1..5,8,10,12]; // в st попадут значения [3..5,8]
Чтобы вывести значения элементов множества, необходимо перебрать всевозможные значения в цикле и проверить их на принадлежность множеству с помощью операции in:
for i:=0 to 255 do if i in st then write(i,' ');
Процедурные типы.
Модель объекта (человека) – запись
Модели действий – операции (функции) над записями
Поле записи – процедурный тип
Type tproc=procedure (x:real;var y:char);
Var p1,p2:tproc;
Type tfunkr=function (x:real):real;
Var fr1,fr2:tfunkr;
Var r1,r2:real;
f
r1:=sin; r1:=sin(x);
операции распроцедуривания
fr2:=ln; r2:=ln(x);
Значения процедурного типа – метка процедуры
1 ) Описание процедурной константы в Паскале:
P
rocedure
p
имя константы (x:real,var
y:char);
тип константы
Begin
… значение константы
End;
P1:=p;
2 ) Не в Паскале:
C
onst
константа p
имя константы = tproc;
тип константы
Begin
… значение константы
End;
Распроцедуривание
P
Call (P) – префиксная запись
P () – постфиксная запись
Function f():real;
1) для статической типизации:
R:real; r:=f; вызвать функцию
P:проц переменная; p:=f; присваивается процедурная метка
2) для динамической типизации
Не обойтись без явной операции распроцедуривания
Типовая безопасность. Идентичность типов.
Обход типового контроля:
R:record
x,y:real;
case a:char of
‘+’ : (m,n:real; c:boolean);
‘-‘ : (q:char; r:string);
‘*’ : (s:boolean; t:char);
Память будет выделена по максимуму, то есть по второй строке,
R.m:=3,14;
Writeln(R.r); - строка, которая начинается со второго байта, и в ней «неизвестное» значение длины строки r
Идентичность:
- структурная (в Паскале)
- именная (идентичность определяется через имена, структура не учитывается)
Если тип данных абстрактный, то говорить об идентичности сложно
В маткаде есть единицы измерения, язык может преобразовывать единицы измерения
Система Ады:
- тип
- родовой тип
- производный тип
Type t1=new t;
T
ype
t-ves
is
new
float;
разные, неприводимые друг к другу типы
Type t-rass is new float
- уточненный тип
Type tполож is new float 0..float`max – все операции переносятся, ограничение по значениям
- подтип
Type t1 is subtype t;
