Название: Информатика

Жанр: Информатика

Рейтинг:

Просмотров: 3382


6.3. проверка программ на эвм

 

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

Напомним два основных определения, на которых базируется оценка правильности программ по результатам их тестирования:

1) программа объявляется содержащей ошибки, если можно указать тесты, при которых выполнение программы на ЭВМ приводит к отказу, сбою или получению неправильных результатов;

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

Напомним два дополнительных, но весьма существенных определения допустимости исходных данных:

1) исходные данные считаются допустимыми, если для этих данных существует решение поставленных задач;

2) исходные данные недопустимы, если для этих данных поставленная задача не имеет решений.

Наконец правильность результатов решения регламентируется следующими двумя определениями:

1) результаты решения правильные, если они соответствуют требованиям поставленной задачи;

2) результаты решения неправильные, если они противоречат требованиям поставленной задачи.

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

1) проверка частных случаев задачи;

2) проверка основных случаев задачи;

3) проверка граничных случаев.

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

Разбор этих понятий проведем на примере типичной экзаменационной задачи по информатике.

Задача. «Средняя зарплата».

Среди N сотрудников отдела выделить тех, кто получает зарплату выше средней по данным из следующей таблицы:

 

Иванов

начальник

2500

Петров

сотрудник

1800

Сидоров

секретарь

900

 

Типичность этой задачи заключается в том, что она является одной из задач обработки данных, представленных в нашем случае таблицей. Частным случаем в этой задаче является таблица, состоящая из одной строки (случай N = 1). Граничным случаем - ситуация, когда все сотрудники получают одинаковую зарплату и никто из них не получает зарплату выше средней.

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

Приведем примеры тестов, применявшихся при проверке на ЭВМ правильности программ решения этой задачи:

1) тест1 (проверка основного случая):

 

Иванов

начальник

2500

Сидоров

секретарь

900

 

2) тест2 (проверка частного случая):

 

Иванов

начальник

2500

 

3) тест3 (проверка граничных ситуаций):

 

Иванов

начальник

2000

Петров

сотрудник

2000

 

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

Правильными ответами с точностью до формулировок в этой задаче являются:

ответ1 (основной случай):

 

Иванов

начальник

2500

 

ответ2 (частный случай):

«никто не получает зарплату выше средней»

 

ответ3 (граничный случай):

«никто не получает зарплату выше средней»

 

Приведем правильное решение поставленной задачи в форме программы на языке Basic, в которой исходные данные записываются в списке операторов data. Разработку приводимой ниже программы проведем, начиная с составления сценария, в котором учитываются все ситуации и частные случаи постановки задачи.

Сценарий

список сотрудников:

 

<фамилия> <долж> <з/плата>       *

                                … … …

 

средняя з/плата = <среднее>

з/плата выше средней:

 

                                                <фамилия> <з/плата>                   *

                                                                … … …

 

не получает никто

 

Программа                                                          Алгоритм

' выше средней з/платы                     алг «выше средней з/платы

сls                                                                           нач

? «сотрудники:»                                     вывод «сотрудники:»

do                                                                              цикл

read Hn$, dl$, zp                          чтение fm$, dl$, zp

if fm$=«» then exit do                             если fm$=«» то выход

? fm$, dl$, zp                                                вывод fm$, dl$, zp

sum = sum + zp                            sum = sum + zp

n = n + 1                                        n = n + 1

loop                                                                        кцикл

sr = sum/n                                                             sr = sum/n

?  «средняя з/плата=»; sr                   вывод («средняя 3/nлama=»;sr)

? «з/плата выше средней:»               вывод(«з/плата выше средней:»)

restore zplts                                                          перезагрузка данных

ns = 0                                                                     ns = 0

for k = 1 to n                                                          от k = 1 до п

read fm$, dl$, zp                                        чтение fm$, dl$, zp

if zp > sr then                                            если zp > sr то

? fni$, zp                                                       вывод (fm$, zp)

ns = ns + 1                                                    ns = ns + 1

end if                                                             кесли

next k                                                                      кцикл

if ns = 0 then                                                         если ns = 0 то

? «нe получает никто»                         вывод («не получает никто»)

end if                                                                      кесли

end                                                                         кон

 

zplts: 'данные о зарплате:

data «Иванов», «начальник», 250000

data «Сидоров», «секретарь», 90000

data «», «», 0

 

Проверку правильности этой программы следует провести на указанных выше трех тестах. Достоинства приведенной программы:

1) хорошо организованный вывод результатов, совмещенный с выводом исходных данных        (свойства, заложенные в сценарий);

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

3) удобная организация исходных данных в тексте программы, позволяющая упростить процедуру тестирования и отладки программы на ЭВМ.

 

Экзаменационные задачи ГУУ

(Государственный университет управления)

 

Задача 1

Каждое из N фермерских хозяйств представило свой перечень из М машин разных наименований (марок) на их приобретение в единственном экземпляре (N и М заданы). Составить общий перечень необходимых марок машин с указанием их количества, расположив марки в порядке убывания потребности в них.

 

Задача 2

N сотрудников (известны фамилии) работают в 2 смены по индивидуальному графику (1-й день - «утро», 2-й день - «вечер»,  3-й день - «выходной»). Все они в свое нерабочее время должны пройти диспансеризацию в медпункте, который работает ежедневно в 2 смены. В день начала диспансеризации о каждом сотруднике известно в какую смену он работает или то, что он выходной. Составить ежедневные списки посещения сотрудниками медпункта с указанием времени посещения («утро» и «вечер»), учитывая, что в каждой смене медпункта могут быть приняты не более М человек должен посетить медпункт один раз. Числа N и М заданы.

 

Задача 3

На кинофестивале 35 стран представили свои фильмы. Общее число фильмов не превышает 100. Известны названия стран - участниц и фильмов, а также баллы, полученные каждым из фильмов. Определить фильм, завоевавший первый приз (максимальный балл) и страну, получившую наибольший средний балл за представленные фильмы. Считать, что фильмы в общем списке по странам не упорядочены, а фильм и страна, его представляющая, является единственными победителями.

 

Задача 4

Известны очки, полученные каждым из М спортсменов-многоборцев в каждом из N видов соревнований (N и М заданы). Для каждого из спортсменов определить, в каких видах соревнований он получил результат не хуже других спортсменов и какой конкретно. Фамилия спортсменов и названия видов соревнований известны.

 

Задача 5

Даны сведения о соревновании N фигуристов ( N - заданное число): фамилия, наименование спортивного общества, 10 оценок за выступление. Требуется по каждому спортивному обществу определить фигуриста, показавшего наивысший результат, считая его единственным. Баллы, полученные фигуристом, подсчитываются следующим образом: максимальная и минимальная оценки отбрасываются, а из остальных формируется средняя.

 


Оцените книгу: 1 2 3 4 5