gma argsusedlpszPipename= . pipe pipe1001 raquo ;; hPipe; hSemaphoreCount;// Дескриптор семафора Рахунок
//відправка повідомлення на серверMsgToServer (int Message)
{chBuf [BUFSIZE]; fSuccess; cbWritten; S=IntToStr (Message); (chBuf, (const char *) S. c_str (), /0 );=WriteFile (hPipe, ,,
amp; cbWritten,);
}
//основна функціяmain (int argc, char * argv [])
{(); chBuf [BUFSIZE]; cbRead, cbWritten, dwMode;
//аргумент командного рядка, що відповідає за черговість рахунки стрелковShooterSleep=atoi (argv [2]);
//отримання дескриптора каналу
while (1)
{= CreateFile (lpszPipename, _READ | _WRITE, _SHARE_READ ,, _ EXISTING,
, NULL); (hPipe!=INVALID_HANDLE_VALUE) break; (GetLastError ()!=ERROR_PIPE_BUSY) return 1; (! WaitNamedPipe (lpszPipename, 20000)) return 1;
} (ShooterSleep); (1)
{
//отримання дескриптора семафора Рахунок
hSemaphoreCount=OpenSemaphore (SEMAPHORE_ALL_ACCESS, 0, SemaphoreCount );
// засинання потоку для виконання черговості рахунку (ShooterSleep);
//якщо семафор в сигнальному стані, то йде прямий рахунок
//інакше вихід з циклу, далі - зворотний рахунок
if (WaitForSingleObject (hSemaphoreCount, 0) == WAIT_OBJECT_0) MsgToServer (1); break;
}
//зворотний рахунок (2);
// засинання для виконання черговості зворотного рахунку ((5000-ShooterSleep) * 2);
//закриття дескрипторів (hPipe); (hSemaphoreCount); 0;
}
//---------------------------------------------------------------------------
алгоритм логічний математичний властивість
Висновок
У теоретичній частині були розглянуті види і властивості алгоритмів.
Алгоритм являє собою будь-яку коректно певну обчислювальну процедуру, на вхід якої подаються деякі дані, і результатом виконання якої є вихідна величина або набір значень.
Виділяють три основні типи алгоритмічних моделей: модель, заснована на рекурсивних функціях; модель, заснована на представленні про алгоритм як про деяке детерминированном пристрої (машина Тьюринга); модель, заснована на перетворенні слів в довільних алфавітах, в яких елементарними операціями є підстановки шматка слова (подслова) іншим словом.
Також залежно від мети, початкових умов завдання, шляхів її вирішення, визначення дій виконавця алгоритми поділяються наступним чином: механічні, гнучкі, імовірнісні, евристичні, лінійні, розгалужуються, циклічні.
Будь коректно поставлений алгоритм повинен володіти такими властивостями, як дискретність, детермінованість, результативність, масовість, допустимість початкових даних.
У практичній частині було розглянуто рішення задачі Майхілла про стрілки. Дане завдання було вирішене з використанням автоматної моделі поведінки стрільців. Основна проблема синхронізації полягала в забезпеченні одночасного залпу всіх стрільців ланцюга.
Список використаних джерел
1. Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритми: побудова й аналіз.- М .: Видавничий дім Вільямс raquo ;, 2011. - 1 296 с.
2. Кузнєцов О.П., Адельсон-Бєльський Г.М. Дискретна математика для інженера.- М .: Вища школа, 1988. - 480 с.
. Альфа і Омега [Електронний ресурс]. Режим доступу: # justify gt;. Игошин В.І. Математична логіка та теорія алгоритмів.- М .: Видавничий центр Академія raquo ;, 2009. - 448 с.
. Кнут Д. Мистецтво програмування, том 1. Основні алгоритми - М .: Видавничий дім Вільямс raquo ;, 2007. - 720с.