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

4. Аномалии не рассматриваем

5. Функциональные тесты. Предусмотреть тесты для ситуаций, когда искомым массивом являетсяa;b;c.

6. Метод

Поочередный ввод и вывод массивов;

подсчет суммы элементов каждого массива;

сравнение сумм, получение и вывод результата.

7. Алгоритм

алг mas3(na,nb,nc,a,b,c,sa,sb,sc,name);

арг

цел na,nb,nc; вещ a[10]; b[20]; c[15];

рез

вещ sa,sb,sc; лит name;

нач

< сравнение sa,sb,sc и присвоение значения name >

<вывод результатов >

кон;

кон mas3;

Закодируем алгоритм после решения подзадач, так как это связано с особенностями кодирования интерфейсов в паскале.

Уровень 1

Все массивы обрабатываются одинаково. Обобщим аналогичные подзадачи и оформим соответствующие алгоритмы в виде процедур. Таким образом, целесообразно оформить 3 процедуры:

  • ввод массивов;

  • вывод массивов;

  • обработка.

Каждая из процедур будет вызвана трижды, для разных фактических параметров. Поэтому выберем имена формальных параметров отличными от имен фактических параметров.

Задача A0.1

1. Задача A0.1. Ввести из файла, представленного первым параметром программы, число элементов и значения элементов одномерного массива согласно форме ввода.

2. Входные данные

Отсутствуют (во внешнем представлении согласно входной форме).

3. Выходные данные

цел n– число элементов массива; во внутреннем представлении;

вещ mas[n] – исходный массив; во внутреннем представлении.

Оформление заголовка и вызова процедуры

Анализ специфики ввода и технических аспектов

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

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

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

Поэтому откроем файл вне процедуры. Тогда для процедуры файловая переменная открытого файла будет представлять служебное входное данноеи может передаваться либо как глобальная, либо как параметр. Это варианты 1 и 2 таблицы 6.1 (см. § 6.3, с. 84).

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

Назначение файла предшествует открытию, т.е. делается тоже вне процедуры.

Вид– общего вида

Имяinput

Заголовок– процinput(n,mas);

Вызов – осуществляется трижды, для каждого из массивов.

Соответствие формальных и фактических параметров и вызовы:

Подзадача

n

mas

A0.3.1

na

a

A0.3.2

nb

b

A0.3.3

nc

c

Для процедуры ввода вызов запишем в головной модуль после кодирования.

4. Аномалиине рассматриваем

5. Функциональные тестыте же, что для задачи в целом

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