Билет 12
Отладка и тестирование программ. Функциональные
и структурные тесты. Виды ошибок в программах.
Тест - совокупность специально
подобранных исходных данных и соответствующих
выходных данных, используемых для проверки
правильности работы программы.
Тестирование - испытание программы
на множестве тестов.
Подготовка тестирования:
подготовка тестов;
подготовка программы к тестированию
(вставка дополнительных операторов вывода,
…)
Отладка - процесс поиска, локализации
и устранения ошибок в программе с целью
получения правильной программы.
Этапы отладки:
1. Устранение синтаксических
ошибок
2. Устранение ошибок
при редактировании связей и
загрузке
3. Ликвидация ошибок
при выполнении программы, обнаруживаемых
инструментальной средой программирования
или операционной системой
4. Тестирование программы
- Сколько тестов?
5. Верификация - доказательство
корректности программы посредством
логического анализа - необязательный
этап
При построении функциональных
тестов:
- Программа рассматривается как «черный
ящик», ее внутренняя структура не
учитываются.
- Используются методы решения задачи,
отличные от положенных в основу алгоритма.
Цель функционального тестирования
- найти расхождение между программой
и ее внешней спецификацией.
Структурное тестирование:
- Учитывает
логику (структуру) программы
- Предусматривает
контроль правильности вычислений с помощью
ручного просчета (или просчета с помощью
других программ)
- Предполагает
пошаговое выполнение программы (трассировку)
с контролем промежуточных результатов
Билет 16
Логические выражения. Логические константы,
переменные. Соотношения. Логические операции.
Формулы двойственности. Примеры составления
и использования логических выражений.
Билет 17
Принципы написания простейших программ.
Сведения, необходимые для
написания простейшей программы:
- Структура простейшей программы.
- Типы и структуры данных, имеющиеся в
алгоритмическом языке, их описание, допустимые
операции.
- Операторы преобразования данных:присваивания
(преобразования внутренних данных), операторы
ввода и вывода.
- Правила записи алгоритма - программирование
основных алгоритмических структур.
Структура простейшей программы
на любом алгоритмическом языке:
Заголовок
ограничитель
описания - неисполняемые
инструкции языка
операторы - исполняемые инструкции
языка
ограничитель
Билет 18
Паскаль.
Простейшая программа:
program Имя_программы;
Var описания переменных
begin
операторы
end.
Структура паскаль-программы:
program Имя_программы;
LABEL …{не используем}
CONST имя_константы=значение_константы;
N=20; a=-98.345;
eps=2.5e-6; {2.5*10-6}
TYPE имя_типа=описание_типа;
MAS1=ARRAY[1..N,1..7]
OF REAL;
DAY=(SUNDAY, MONDAY, TUESDAY,WEDNESDAY, THURDAY, FRIDAY, SATURDAY);
{тип перечисление}
COLOR=(BLACK,BROWN,GREEN,YELLOW,WHITE);
VAR a, a1:MAS1; DATE:DAY; PAINTER:COLOR;
раздел процедур
(PROCEDURE) и функций (FUNCTION)
begin
…
end.
Оператор присваивания :
Накапливание: вычисление переменной через саму себя
(предыдущее значение)
Пример: i:=i+1;S:=S+a; P:=P*b[i];
Накапливание, как правило, происходит
в цикле. До цикла накапливаемым переменным
необходимо присвоить начальные значения
(обычно суммам -0, произведениям – 1)
Оператор вывода (в консольном
приложении, на стандартное устройство
CON):
- write(список_вывода)
- writeln(список_вывода)
- список_вывода:
- обязательно
скалярные значения;
- переменные,
простые или с индексами;
- константы;
- выражения;
- элементы
списка разделяются запятыми.
Билет 19
Кодирование на паскале основных алгоритмических
структур.
Билет 20
Процедуры. Их назначение. Понятие о формальных
и фактических параметрах. Замена формальных
параметров на фактические «по ссылке»
и «по значению»
ФОРМАЛЬНЫЕ ПАРАМЕТРЫ ПОДПРОГРАММЫ:
- Формальные
параметры действуют только в подпрограмме
(являются локальными).
- При обращении
к подпрограмме формальные параметры
заменяются на данные вызывающей программы
(фактические параметры).
- В список
формальных параметров подпрограммы включаются
переменные, значения которых передаются
из основной программы в подпрограмму
или из подпрограммы в программу.
Формальные параметры - это «вход» и «выход»
подпрограммы.
ФАКТИЧЕСКИЕ ПАРАМЕТРЫ ПОДПРОГРАММЫ :
Фактические параметры подпрограммы
- это параметры программы, которые подставляются
вместо формальных параметров при обращении
к подпрограмме.
Фактические параметры
должны соответствовать формальным по
числу, порядку перечисления и типу.
Замена формальных параметров
на фактические (вызов):
1) по значению
СALL-BY-VALUE
пересылка значений фактических
параметров в ячейки формальных параметров
2) по адресу (ссылке, имени)
CALL-BY-REFERENCE
пересылка адресов фактических параметров
в ячейки формальных параметров
Назначение:
- Использование
параметра-подпрограммы необходимо, когда
некоторый алгоритм, описанный как подпрограмма,
применим к множеству алгоритмов, каждый
из которых также задается подпрограммой.
- Классические примеры таких ситуаций дают численные методы. В подпрограммах численных методов (вычисления определенного интеграла, нахождения экстремумов и нулей функций, вывода графиков, линий уровня, таблиц функций) обрабатываемые функции задаются как параметры.
- Средства для использования параметров-подпрограмм имеются во всех алгоритмических языках, предназначенных для решения вычислительных задач (СИ, Фортран, MatLab).
Средства паскаля для работы
с подпрограммами-параметрами:
- Процедура-формальный
параметр должна быть описана с помощью
ранее объявленного процедурного (функционального)
типа. При объявлении этого типа описывается
структура заголовка подпрограммы, т.е.
дается заголовок без имени подпрограммы.
Примеры процедурных типов:
TYPE PROC1=PROCEDURE(a,b,c:real; var d:integer);
FUNC1=FUNCTION : REAL;
G=FUNCTION (x,y,z:real);
- Подпрограмма-фактический
параметр должна соответствовать процедурному
типу формального параметра, т.е. иметь
такой же заголовок с точностью до обозначений.
Некоторые особенности использования
подпрограмм-фактических параметров:
- Имена стандартных
подпрограмм нельзя использовать в качестве
фактических параметров.
Function sn(x:real):real;
begin sn:=sin(x)
end;
- В языках Borland Pascal и Turbo Pascal подпрограммы, используемые как фактические параметры, должны компилироваться с использованием "дальней модели памяти" , поэтому в программу надо включить директивы компилятора {$F+} и {$F-} или поставить стандартную директиву far (для версий начиная с Turbo Pascal 6.0) cразу за заголовком подпрограммы.
Билет 21
Описание вызова процедур в паскале.
Вызов процедуры:
procedure ИмяПроцедуры [(CписокФормальныхПараметров)]
Описания (Const… Type… Var… процедуры и функции)
begin
Операторы
end;
Билет 22
Понятие о функциях в паскале. Их описание
и вызов.
ФУНКЦИИ
Имя функции - не только имя алгоритма,
но и имя результата.
Функция, как правило, имеет один основной
результат.
function ИмяФункции [(CписокФормалПарам)] :ТипФункции
Описания (Const… Type… Var… процедуры и функции)
begin
Операторы
ИмяФункции :=результат
end;
Обращение к функции производится в
выражениях посредством использования указателя фукции:
ИмяФункции[(Список фактических параметров)];
Указатель функции может стоять только
в правой части оператора присваивания.
Билет 23
Понятие о статистической памяти, стеке
процедур. Глобальные и локальные имена.
Область действия и время жизни переменных
«Чистые процедуры».
Глобальные и локальные имена:
- Глобальные имена - это имена, которые действуют на протяжении всей программы (или внешнего блока), они объявляются в соответствуюших разделах программы (или внешнего блока).
- Локальные имена - это имена, которые действуют в пределах блока подпрограммы, это внутренние имена подпрограммы.
- К локальным
именам относятся формальные параметры
и все имена, описанные в блоке подпрограммы.
Вне блока подпрограммы локальные имена
не определены.
- Локальное
имя может использоваться в одном блоке,
глобальные имена могут являться общими
для нескольких блоков и использоваться
для передачи данных между блоками.
Область памяти для локальных и глобальных
имен:
- В Паскале
данные, описанные в блоке программы, хранятся
в так называемом статическом сегменте
памяти; память под них распределяется при компиляции.
- Локальные
данные подпрограммы хранятся в специальной
области оперативной памяти – стеке; память под эти данные распределяется каждый раз при вызове подпрограммы и освобождается при завершении работы подпрограммы.
Область действия имени:
- Область действия имени - это часть программы, в которой имя может
быть доступно.
- Область
действия локального имени - блок подпрограммы,
в которой оно объявлено; глобального
– весь текст программы от места объявления
до последнего слова End (с точкой).
- Глобальное
имя доступно в подпрограмме только в
том случае, если в подпрограмме оно не
объявлено еще раз.
Время жизни (существования)
данных:
- Время жизни
– это время, в течение которого по данные
распределена память.
- По времени
жизни данные делятся на статические, автоматические, динамические.
- Статические данные существуют все время выполнения программы.
- Автоматические данные существуют во время выполнения подпрограммы
, в которой описаны.
- Динамические данные получают место в памяти с помощью операторов динамического распределения памяти.
- В Паскале
статические данные - это глобальные данные,
автоматические – локальные.
Билет 24
Процедуры-параметры в Турбо-Паскале.
Средства паскаля для работы
с подпрограммами-параметрами:
- Процедура-формальный
параметр должна быть описана с помощью
ранее объявленного процедурного (функционального)
типа. При объявлении этого типа описывается
структура заголовка подпрограммы, т.е.
дается заголовок без имени подпрограммы.
Примеры процедурных типов:
TYPE PROC1=PROCEDURE(a,b,c:real; var d:integer);
FUNC1=FUNCTION : REAL;
G=FUNCTION (x,y,z:real);
- Подпрограмма-фактический
параметр должна соответствовать процедурному
типу формального параметра, т.е. иметь
такой же заголовок с точностью до обозначений.
Некоторые особенности использования
подпрограмм-фактических параметров:
- Имена стандартных
подпрограмм нельзя использовать в качестве
фактических параметров.
Function sn(x:real):real;
begin sn:=sin(x)
end;
- В языках Borland Pascal и Turbo Pascal подпрограммы, используемые как фактические параметры, должны компилироваться с использованием "дальней модели памяти" , поэтому в программу надо включить директивы компилятора {$F+} и {$F-} или поставить стандартную директиву far (для версий начиная с Turbo Pascal 6.0) cразу за заголовком подпрограммы.
Назначение:
- Использование
параметра-подпрограммы необходимо, когда
некоторый алгоритм, описанный как подпрограмма,
применим к множеству алгоритмов, каждый
из которых также задается подпрограммой.
- Классические примеры таких ситуаций дают численные методы. В подпрограммах численных методов (вычисления определенного интеграла, нахождения экстремумов и нулей функций, вывода графиков, линий уровня, таблиц функций) обрабатываемые функции задаются как параметры.
- Средства для использования параметров-подпрограмм имеются во всех алгоритмических языках, предназначенных для решения вычислительных задач (СИ, Фортран, MatLab).
Билет 25
Примеры корректного использования глобальных
переменных.
Program Primer;
Var a,i:real;
Procedure p1;
Var i:real;
Begin . . . a:=...; i:=...;
End{p1};
Procedure p2;
Var i:real;
Begin . . . a:=...; i:=...;
End{p2};
Begin {раздел действий программы}
i:=...; a:=...;
р1; р2; р2
End.
a-глобальная переменная, под нее
отведена одна ячейка в статическом
сегменте памяти, которая доступна
программе и процедурам р1 и
р2. Под переменную с именем
i программы отводится ячейка памяти статического
сегмента; под переменные i процедур память
в стеке распределяется столько раз, сколько
раз осуществляется вход в блок процедур
(в нашем примере три раза: при вызове р1
и при каждом вызове р2); при выходе из блока
(т. е. при завершении работы процедуры)
ячейка с именем i каждый раз освобождается.
Так как в каждой процедуре имеется локальное
имя i, глобальное i программы в процедурах
недоступно.