Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГР_№1_по теории алгоритмов_ИСТ_2017.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
164.19 Кб
Скачать

РГР №1

Простейшие конструкции языка программирования Pascal.

Алгоритмы разветвленной и циклической структуры

Цели:

  • Отработка навыков тестирования программ;

  • Составление алгоритмов разветвленной и циклической структуры;

  • Разработка программ приближенного вычисления математических задач.

Основные этапы процесса разработки программ

Программирование - это процесс создания (разработки) программы, который может быть представлен последовательностью следующих шагов:

1. Постановка задачи (Определение требований к программе)

2. Разработка алгоритма

3. Кодирование алгоритма

4. Отладка

5. Тестирование

  • Определение требований к программе

Постановка задачи представляет собой выявление исходных (входных) данных и результата (выходных данных). Определение требований к программе - один из важнейших этапов, на котором подробно описывается исходная информация и формулируются требования к результату. Кроме того, описывается поведение программы в особых случаях.

  • Разработка алгоритма

На этапе разработки алгоритма необходимо определить последовательность действий, которые надо выполнить для получения результата. Если задача может быть решена несколькими способами и, следовательно, возможны различные варианты алгоритма решения, то программист, определяет эффективность каждого алгоритма.

Результатом этапа разработки алгоритма является подробное словесное описание алгоритма или его блок-схема.

  • Кодирование

После того как определены требования к программе и составлен алгоритм решения, алгоритм записывается на выбранном языке программирования. В результате получается исходная программа.

  • Отладка и тестирование

Отладка1 программы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере.

Тестирование (англ. test — испытание) — это испытание, проверка правильности работы программы в целом, либо её составных частей.

Процесс разработки программы можно выразить следующей формулой:

На начальном этапе работы анализируются и формулируются требования к программе, разрабатывается точное описание того, что должна делать программа и каких результатов необходимо достичь с ее помощью.

Затем программа разрабатывается с использованием той или иной технологии программирования (например, структурного программирования).

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

Программу условно можно считать правильной, если её запуск для выбранной системы тестовых исходных данных во всех случаях дает правильные результаты.

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

Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, тестирование может показать лишь наличие ошибок, но не их отсутствие. Нередки случаи, когда новые входные данные вызывают "отказ" или получение неверных результатов работы программы, которая считалась полностью отлаженной.

Вычислять эталонные результаты нужно обязательно до, а не после получения машинных результатов.

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

Какими должны быть тестовые данные?

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

  • первый тест должен быть максимально прост, чтобы проверить, работает ли программа вообще;

  • очередной тестовый прогон должен контролировать нечто такое, что еще не было проверено на предыдущих прогонах;

  • должна быть испытана каждая ветвь алгоритма;

  • арифметические операции в тестах должны предельно упрощаться для уменьшения объема вычислений;

  • количества элементов последовательностей, точность для итерационных вычислений, количество проходов цикла в тестовых примерах должны задаваться из соображений сокращения объема вычислений;

  • минимизация вычислений не должна снижать надежности контроля;

  • усложнение тестовых данных должно происходить постепенно.

Пример 1

Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0.

Таблица 1  

Номер теста

Проверяемый случай

Коэффициенты

Результаты

a

b

c

1

d >0

1

1

-2

x1 = 1, x2 =  - 2

2

d=0

1

2

1

Корни равны:  x1 = - 1, x2 =  - 1

3

d < 0

2

1

2

Действительных корней нет

4

a=0,   b=0,   c=0

0

0

0

Все коэффициенты равны нулю.   х — любое число.

5

a=0,   b=0,   c<>0

0

0

2

Неправильное уравнение

6

a=0,   b<>0

0

2

1

Линейное уравнение.   Один корень:   x = - 0,5

7

a <> 0,   b <> 0,   с = 0

2

1

0

x1 = 0,   x2  =  - 0,5