Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
posobie.doc
Скачиваний:
27
Добавлен:
31.03.2015
Размер:
1.43 Mб
Скачать

7. Алгоритм

алг points(n,r,x,y,p,sa);

арг

цел n; вещ r; вещ x[n],y[n];

рез

вещ p,sa;

нач

цел i;

{A0.1. Ввод-вывод входных данных}

{вывод заголовка в выходной документ}

вывод по обр5;

{ввод входных данных}

вывод по обр1.1; ввод(n) по обр1.2; {ввод n }

вывод по обр2.1; ввод(r) по обр2.2; {ввод r }

вывод по обр3; ввод(x[i],y[i],i=1,n) по обр4; {ввод x,y }

{вывод входных данных в выходной документ}

вывод(n,r) по обр6;

вывод по обр7;

вывод(x[i],y[i],i=1,n) по обр8;

{A0.2. Обработка}

{A0.3 - вывод результатов}

вывод(p,sa) по обр9;

кон;

конpoints;

8. Программа на паскале. Диалоговый вариант

programpoints(input,output);{ввод с клавиатуры, вывод на экран}

uses crt; {подключение модуля для работы с экраном}

{раздел определения констант}

const

nmax=100; {верхняя граница массива}

{раздел описания типов - пустой}

{раздел описания переменных}

var

n,i:integer;

r,p,sa:real;

x,y:array[1..nmax] of real;

{раздел операторов}

begin

clrscr; {очистка экрана}

{A0.1 - ввод-вывод входных данных}

{вывод заголовка в выходной документ}

writeln(' ':9,'Точки'); {вывод c переходом на следующую строку}

{ввод входных данных}

writeln('Количество точек n:');readln(dat,n); {обр 1.1,1.2}

writeln('Критическое удаление r:');readln(dat,r); { обр 2.1,2.2}

{ввод массивов x и y}

writeln('Абсциссы и ординаты:'); {обр3}

fori:=1tondo

readln(dat,x[i],y[i]); {обр4: ввод 2 элементов и переход на след. строку}

{вывод входных данных в выходной документ}

{вывод n, r по обр6}

writeln(' Количество точек =',n:3);

writeln(' Критическое удаление = ',r:4:1);

{вывод массивов x и y}

writeln(' Абсциссы и ординаты: '); {обр7}

for i:=1 to n do

writeln(' ':5,x[i]:5:1,' ':8,y[i]:5:1); {обр8}

{A0.2. Обработка}

{A0.3 - вывод результатов}

writeln(' Искомый процент точек = ',p:4:1); {p по обр9}

writeln(' Среднее удаление = ',sa:4:1); {sa по обр9}

end.

9. Структурные тесты

Для тестирования последовательности операторов достаточно любого из функциональных тестов.

Тест для тестирования любого цикла должен обеспечивать хотя бы однократное выполнение цикла и выход из него. В алгоритме два цикла – ввод и вывод массивов. Любой из функциональных тестов удовлетворяет условиям тестирования.

Функциональные тесты покрывают структурные.

2.2. Отладка программы с заглушкой

Фактически в пунктах 7 и 8 представлены дваалгоритма, дающих заранее заложенные в них результаты. Закодируем алгоритм задачи А0 с первой заглушкой. Отладим программу. В итоге, пропустив тест 1, при правильной работе программы получим результат, соответствующий этому тесту.

Затем проделаем то же для второй заглушки и теста 2.

Смысл этой деятельности состоит в том, что ввод-вывод отлаживается отдельно от обработки. Введя тестовые данные и получив правильный результат вывода для каждого теста, можно быть уверенным, что ввод и вывод выполнены верно, далее к соответствующим частям программы не возвращаться и целенаправленно заниматься только решением задачи.

Замечание. Нисходящая отладка – это в высшей степени эффективная технология отладки. Однако надо учесть, что это –процесс, который следует осуществить, для того чтобы ощутить его эффективность, а не набор положений для устного ответа. Вы можете игнорировать эти рекомендации, но не рассчитывайте в этом случае и на приобретение навыков грамотной и эффективной отладки!

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]