Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Модуль 1. tKomand=array [1..n+1] of integer; // результаты игр команды и набранные ей очки






unit op;

Interface

Const

n=10; //число команд

Type

tKomand= array [1..n+1] of integer; // результаты игр команды и набранные ей очки

tChemp= array [1..n] of tKomand; // таблица результатов чемпионата

tName= array [1..n] of string [30]; // список названий команд (строка текста не более 30 символов)

Implementation

End.

 

Модуль 2.

unit vv_viv;

Interface

uses op;

procedure ResultChemp(var Ch: tChemp);

procedure NameTeam(var Nm: tName);

procedure Vivod(Ch: tChemp; Teams: tName);

Implementation

procedure ResultChemp(var Ch: tChemp);

{ввод результатов игр

Ch – результаты чемпионата

Результаты симметричны относительно главной диагонали:

если Ch[i][j]=2 (победа), то Ch[j][i]=0 (поражение);

если Ch[i][j]=1 (ничья), то Ch[j][i]=1 (ничья);

если Ch[i][j]=0 (поражение), то Ch[j][i]=2 (победа);

}

Var

i, j: integer;

Begin

for i: =1 to n do // для каждой команды

for j: =i+1 to n do begin // вводим только элементы над главной диагональю

WriteLn(’Результат игры команды’, i, ’ с командой ’, j);

ReadLn(Ch[i][j]);

// заполняем элементы под главной диагональю

Ch[j][i]: =2-Ch[i][j];

End

end;

 

procedure NameTeam(var Nm: tName);

{ввод названий команд

Nm – список названий команд

}

Var

i: integer;

Begin

for i: =1 to n do // для каждой команды

ReadLn(Nm[i]) // вводим её название

end;

 

procedure Vivod (Ch: tChemp; Teams: tName);

Var

i, j: integer;

Begin

WriteLn (’** Итоговая таблица**’);

WriteLn (’ --- ------------------------------ ---’);

WriteLn (’ Команда Очков’);

WriteLn (’--- ------------------------------ ---’);

for i: = 1 to n do

WriteLn(i: 2, Teams[i]: 30, Ch[i][j]: 2);

WriteLn (’ --- ------------------------------ ---’);

end;

 

End.

 

Модуль 3.

unit obrabotka;

Interface

uses op;

procedure ResultKomand(var Ch: tChemp);

procedure SortKomand(var Ch: tChemp; var Teams: tName);

Implementation

procedure ResultKomand(var Ch: tChemp);

Var

i, j: integer;

Begin

for i: =1 to n do begin // для каждой команды

Ch[i, n+1]: =0; // обнуляем количество очков (очки хранятся в (n+1)-м столбце)

for j: =1 to n do // для каждой игры

Ch [i, n+1]: =Ch [i, n+1]+Ch [i, j] // добавляем результат в очки

end;

end;

 

procedure SortKomand(var Ch: tChemp; var Teams: tName);

Var

i, j, n_max: integer;

tempGame: integer; // соответствует типу элементов массива tChemp

tempName: string [30]; // соответствует типу элементов массива tName

Begin

for i: =1 to n-1 do begin // для каждой команды, кроме последней

// находим среди оставшихся команду с наибольших количеством очков

nMax: =i+1;

for j: =i+1 to n do

if Ch[j, n+1]> Ch[nMax, n+1] then // очков у j-й команды больше, чем у команды nMax

nMax: =j; // запомнили команду с большим результатом

//меняем названия соответствующих команд

tempName: = Teams [i];

Teams [i]: = Teams [nMax];

Teams [nMax]: = tempName;

//меняем результаты игр соответствующих команд

for j: =1 to n+1 do begin

tempGame: = Ch [i][j];

Ch [i][j]: = Ch [nMax][j];

Ch [nMax][j]: = tempGame

End

End

end;

 

End.

 

Основная программа.

uses op, vv_viv, obrabotka;

Var

Name: tName;

Chemp: tChemp; // результаты

Begin

// ввод исходных данных

ResultChemp(Chemp);

NameTeam(Name);

// обработка данных

ResultKomand(Chemp); // Подсчет количества очков

SortKomand(Chemp, Name); // Сортировка таблицы по столбцу с количеством очков

// Вывод результатов чемпионата

Vivod(Chemp, Name);

end.

Задания для самостоятельного решения.

Для задач своего варианта лабораторной работы № 7 написать программы с использованием модулей.

Контрольные вопросы:

1. Модуль начинается заголовком, состоящим из зарезервированного слова ________ и имени модуля.

2. Часть программы, рассматриваемая как самостоятельная синтаксическая единица это _____________________________

3. Зависимость результата работы модуля от исходных данных, но не от работы других модулей называется

варианты ответов:

1) функциональной завершенностью

2) логической независимостью

3) прочностью модуля

4) структурированностью данных

4. В модульном программировании борьба со сложностью программы осуществляется через

варианты ответов:

1) обеспечение небольшого размера модуля

2) использование небольшого числа команд

3) разбиение на максимальное число модулей

4) обеспечение независимости компонент системы, использование иерархических структур

5. Модуль должен иметь:

варианты ответов:

1) один вход и несколько выходов

2) несколько входов и множество выходов

3) множество входов и множество выходов

4) один вход и один выход

6. Мера внутренних связей модуля характеризует его

варианты ответов:

1) прочность

2) сцепление

3) сложность

4) рутинность

7. Мера зависимости по данным от других модулей характеризует его

варианты ответов:

1) прочность

2) сцепление

3) сложность

4) рутинность

8. Если результат обращения к модулю зависит только от значений его параметров, то это характеризует его

варианты ответов:

1) прочность

2) сцепление

3) сложность

4) рутинность

9. Модуль состоит из

варианты ответов:

1) декларативной части, исполнительной части

2) интерфейсной части, секции реализации, секции инициализации

3) интерфейсной части, секции реализации

4) декларативной части, исполнительной части, секции инициализации

10. Должно ли имя модуля совпадать с именем файла, в который помещается исходный текст модуля? Если да, то почему?

11. Является ли модуль выполняемой программой?

12. Какие объекты программы содержит интерфейсная часть модуля?

13. Какие объекты программы содержит секция связи модуля?

14. Является ли обязательной инициализирующая часть модуля?

15. Какие объекты программы может содержать инициализирующая часть модуля?


 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.