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

8. Кодирование на паскале

Определение глобальных типов(для параметров нестандартных типов)

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

Как было сказано в § 1.1, типы данных выбираются в соответствии с диапазонами значений данных. К моменту разработки процедуры эти типы для входных и выходных данных основной задачи уже известны и служат основой для определения типов данных в подзадачах.

Пусть в нашем случае:

m,n,i – тип-диапазон;нестандартный тип;

a– матрица с элементами типаreal;нестандартный тип;

y2– типаboolean.

Определим необходимые глобальные типы и константы:

const

nmax=100; mmax=100;

type

diap=1..nmax; { для m,n,i }

matr=array[1..mmax,1..nmax] of real; { для a }

Описание процедуры

procedure provstr(m,n,i: diap; a:matr; var y2:boolean);

var j:diap;

begin

< операторы >

end;

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

Цикл тестируется любым из двух имеющихся тестов.

Ветка «то» развилки внутри цикла тестируется вторым тестом (хотя бы в одной строке есть элемент меньше 1), ветка «иначе» (пустая) – первым тестом.

Программа в целом

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

program ..... ;

< описание глобальных типов и констант >

var{описания переменных головного модуля}

m,n,i,j,k:diap;

a:matr;

y1,y2:boolean;

< описание процедуры >

begin

< ввод и вывод данных >

y1:=false; i:=1;

while not y1 and (i<=m) do

begin

{А01. Проверка строки}

provstr(m,n,i,a,y2);

if y2 then

begin

y1:=true; k:=i

end;

end;

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

end.

Пример 2. Это самостоятельный пример, иллюстрирующий ситуацию, когданесколько подзадач решаются вызовамиоднойпроцедуры. Здесь же проиллюстрируем специфику разработки процедур ввода – вывода.

Уровень 0

1. Задача mas3("3 массива").

В каком из трех массивов a[10],b[20],c[15] наибольшая сумма элементов? Случай равенства сумм можно не анализировать.

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

цел na– число обрабатываемых элементов массиваa; простая переменная; 0<na<=10; формат XX;

цел nb– число обрабатываемых элементов массиваb; простая переменная; 0<nb<=20; формат XX;

цел nc– число обрабатываемых элементов массиваc; простая переменная; 0<nc<=15; формат XX;

вещ a[na] – 1-й исходный массив; |a[i] |<=10; точность 0,1; формат ±XX.X;

b[nb] – 2-й исходный массив; |b[i] |<=10; ––– " ––– " ––– " ––– " ––– " –

c[nc] – 3-й исходный массив; |c[i] |<=10; ––– " ––– " ––– " ––– " ––– " –

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

вещ sa– сумма элементов массива a; простая переменная; |sa| <= 10x10=100; точность 0,1; формат ±XXX.X;

вещ sb– сумма элементов массива a; простая переменная; |sb| <= 10x20=200; точность 0,1; формат ±XXX.X;

вещ sc– сумма элементов массиваc; простая переменная; |sc| <= 10x15=150; точность 0,1; формат ±XXX.X;

'a'

симв name– имя искомого массива;name= 'b'

'c'

Пусть выходные тестовые данные хранятся в файлах mas3_<№ теста>.res.

Пусть файловая переменная, связанная с выходным файлом, называется res.

Пусть выходной файл будет вторым параметром программы.

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