Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Види і властивості алгоритмів. Рішення завдання Майхілла (про стрілки)

Реферат Види і властивості алгоритмів. Рішення завдання Майхілла (про стрілки)





), що включає засоби пуску, зупинки, реалізації елементарних кроків, видачі результатів і забезпечення детермінованості, тобто управління ходом обчислення;

в) процес реалізації алгоритму, тобто послідовність кроків, яка буде породжена при застосуванні алгоритму до конкретних даних. [2, С.149]

2. Рішення завдання Майхілла (про стрілки)


.1 Постановка завдання


Мається ланцюг стрільців і офіцер. Кожен, хто знаходиться в ланцюзі солдат може спілкуватися тільки зі своїми сусідами праворуч і ліворуч. Офіцер розміщується на фланзі ланцюга і може подавати команди тільки крайнього в ланцюзі стрілку. Загальна кількість стрільців в ланцюзі кожному з стрільців невідомо. Спілкуватися кожен із стрільців може тільки зі своїми сусідами праворуч і ліворуч. Потрібно забезпечити одночасний залп всіх стрільців ланцюга після подачі команди офіцером.


.2 Рішення завдання


Дане завдання вирішується за допомогою автоматної моделі поведінки стрільця.

На малюнку 1 представлена ??структурна модель поведінки стрільців в задачі Майхілла. Додатково до стрілок у завдання введені блок, що моделює поведінку офіцера (він віддає команду стрільцям), і блок, що виконує протоколювання внутрішніх станів об'єктів, що становлять модель ланцюга стрільців.

Перелік блоків

- Officer - модель офіцера;

- Rifleman 1, 2, ... N - моделі стрільців;

- WriteStates - блок протоколу.

Блоки Officer і WriteStates не обов'язково. Перший введений для зручності управління ланцюгом стрільців, другий - для візуалізації рішення.

Функціонування моделі

Об'єкти моделі функціонують паралельно. Час для всіх об'єктів єдине і моделюється абстрактним дискретним часом. Офіцер, отримавши команду, передає її найближчому стрілку, той наступного і т.д. Щоб виконати команду, стрілки обмінюються між собою інформацією. Після закінчення деякого періоду часу вони повинні одночасно виконати команду постріл. У моделі - перейти в однакове для всіх об'єктів стан. При цьому всі проміжні стану об'єктів на кожному такті протоколюються створеним для цього об'єктом, який функціонує паралельно решті об'єктів, що становлять задачу. [6]


Рисунок 1 - Модель поведінки стрільців в задачі Майхілла


Рішення завдання на мові високого рівня С ++

Застосовуючи автоматну модель поведінки стрільців, виконаємо рішення даної задачі на мові високого рівня С ++.

Прямий рахунок виконується таким чином, що перший стрілок, отримавши команду офіцера, за допомогою функції очікуванні зменшує лічильник семафора на 1. Далі, через певний проміжок часу, кожен стрілець в ланцюзі солдатів чинить так само доти , поки лічильник семафора не досягне свого мінімального значення і семафор не вийде з сигнального стану. Знаходження семафора в несигнальному змозі буде повідомляти про те, що прямий рахунок закінчено, ведеться зворотний рахунок. При закінченні зворотного рахунку буде проведений одночасний залп всіх стрільців.

Лістинг програм сервера ( Офіцер ) і клієнта ( Стрілок ) представлений нижче.


Програма-сервер ( Офіцер )

//---------------------------------------------------------------------------

# include lt; vcl. h gt;

# include lt; iostream. h gt;

# pragma hdrstop

# include Unit1. h

# define BUFSIZE 512

//---------------------------------------------------------------------------

# pragma package (smart_init)

# pragma resource *. dfm * Form1; hThread; hProcPipe [5]; lpszPipename= . pipe pipe1001 raquo ;; hPipe; hSemaphoreCount;// Дескриптор семафора Рахунок

int SemaphoreMax=5;// Максимальний розмір лічильника семафора, і його початкове

//значеніеCount=0; ConnectShooters (LPVOID);// Створення іменованого каналу для спілкування з

//кліентомShooterThread (LPVOID);// Потік для роботи з клієнтом

void Shoot ();// Зробити постріл

//---------------------------------------------------------------------------

__ fastcall TForm1 :: TForm1 (TComponent * Owner)

: TForm (Owner)

{(); (int i=0; i...


Назад | сторінка 3 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Алгоритми Деккера і Петерсона, їх застосування для вирішення проблеми крити ...
  • Реферат на тему: Бойовий шлях українських січових стрільців
  • Реферат на тему: Розвиток силових здібностей у стрільців-спортсменів
  • Реферат на тему: Друковані и рукопісні видання січових стрільців
  • Реферат на тему: Формування комплексу аква-вправ для спортсменів стрільців юнацького віку