DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Створення WIN32-програм з розділеними паралельно в часі математичними обчисленнями

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Комп’ютеризовані системи
Кафедра:
Не вказано

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні методи дослідження систем керування
Група:
КН
Коротко про документ

Про що ця робота

У звіті досліджується створення Win32-програм з розділеними паралельно в часі математичними обчисленнями за допомогою компонентів C++Builder. Описано практичне виконання лабораторної роботи з табулювання функції у багатопотоковому режимі.

У роботі розглядаються

  • Багатозадачність в операційній системі Windows
  • Потокова багатозадачність у C++Builder
  • Використання компоненти TThread
  • Розпаралелювання математичних обчислень
  • Програмування на C++
  • Табулювання математичних функцій

Зміст і розділи

  1. Мета роботи
  2. Короткі теоретичні відомості
  3. Список ідентифікаторів та функцій
  4. Завдання до лабораторної роботи
  5. Текст програми
  6. Результати роботи програми
  7. Висновок
Для кого:Студенти технічних спеціальностей, викладачі та розробники програмного забезпечення.
Викладачі:Павельчак А.Г.

Ключові поняття

Win32-програмибагатозадачністьпотікпроцесTThreadC++Builderсинхронізаціятабулювання функціїматематичні обчислення

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра „КОМП’ЮТЕРИЗОВАНІ СИСТЕМИ, АВТОМАТИКА І УПРАВЛІННЯ” ЗВІТ до лабораторної роботи № 1 З КУРСУ “Комп’ютерні методи дослідження систем керування” на тему: „ Створення WIN32-програм з розділеними паралельно в часі математичними обчисленнями” Варіант № 3 Мета роботи: отримати навики роботи в системі візуального об’єктно-орієнтованого програмування C++Builder та освоїти розроблення програм орієнтованих на виконання складних математичних розрахунків з розділенням їх виконання паралельно в часі. Короткі теоретичні відомості: В операційній системі Windows реалізовані два види багатозадачності – процесна та потокова. Процес (Process) – це статичний об’єкт (програма), який не виконується, а попросту «володіє» виділеним йому адресним простором, іншими словами, процес є структурою в пам’яті. Випадок, при якому програма може вирватися із рамок свого процесу та пошкодити чужі ресурси, є практично неможливим. В адресному просторі процесу знаходяться не тільки код та дані, але й потоки (Thread) – об’єкти, що виконується. Саме потокам операційна система виділяє кванти часу, а не процесам. При запуску процесу автоматично запускається потік (який називається головним). При зупинці головного потоку автоматично зупиняється і процес. А так як процес без потоку попросту займає ресурси, то система автоматично знищує його. Поряд із первинним потоком можуть у процесі існувати й додаткові потоки, яким система виділятиме окремі кванти часу. Такий багатопотоковий підхід дає можливість в межах однієї програми здійснювати різні задачі: робота з портами, файлами, математичні обчислення тощо. Наприклад, програма Microsoft Word може одночасно корегувати граматику та друкувати, при цьому здійснюючи ввід даних з клавіатури. Зупинимося на одній деталі. На однопроцесорному комп’ютерові в кожний конкретний момент часу виконується одна задача. Якщо при запуску двох-трьох невеликих програм часова затримка суб’єктно не помітна, то при запуску декількох програм, що потребують колосальних ресурсів, затримка при виконанні програм стає достатньо помітною. На багатопроцесорних системах за кожним процесором може бути закріплений свій потік, і тому на таких системах виконання програм здійснюється дійсно в багатозадачному режимі. На основі програмного пакету C++Builder потокова багатозадачність може бути реалізована: з використанням компоненти типу TThread; засобами інтерфейсу WIN32 API. Список ідентифікаторів, констант, змінни, функцій, методів, використаних у програмі та їх пояснення: #include "math.h"- включення математичної бібліотеки; HANDLE Thread1, Thread2 - оголошення дескрипторів потоків DWORD ThreadFunc1(LPVOID lParam) - оголошення потокових функцій exp() – обчислення експоненти; sin() –синус; Button1Click() – функція-обробник події кнопки 1; Button2Click() – функція-обробник події кнопки 2; Close() – функція завершення роботи програми; x,y – змінні; TForm1 *Form1 – глобальний показчик на форму; Таблиця 1. Завдання до лабораторної роботи № п/п Створення потоку засобами Вивід результатів Протабулювати функцію (50 інтервалів)  3 компоненти типу TThread на форму програми     Текст програми: //--------------------------------------------------------------------------- #include "Unit1.h" #include <vcl.h> #pragma hdrstop #include "Unit2.h" #include "Math.h" #pragma package(smart_init) //-------------------------------------------------------------------------- // Important: Methods and properties of objects in VCL can only be // used in a method called using Synchronize, for example: // // Synchronize(UpdateCaption); // // where UpdateCaption could look like: // // void __fastcall potic1::UpdateCaption() // { // Form1->Caption = "Updated in a thread"; // } //--------------------------------------------------------------------------- __fastcall potic1::potic1(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------- void __fastcall potic1::Execute() { h=0.16; a=0; x=a; b=8; while (x<=b) {y=(sqrt(pow(exp(x),x)))*sin(x/3); Synchronize(Calculation);x=x+h;}; Synchronize(EndCalculation); } //--------------------------------------------------------------------------- void __fastcall potic1::Calculation(void) { Form1->Memo1->Lines->Add(AnsiString("Значення функції Y : ") +AnsiString("Значення аргументу X : ")); Form1->Memo1->Lines->Add(" "); Form1->Memo1->Lines->Add(AnsiString(y)+ AnsiString(" ")+AnsiString(x)); Form1->Memo1->Lines->Add(" "); } void __fastcall potic1::EndCalculation(void) { y=(sqrt(pow(exp(x),x)))*sin(x/3); Form1->Memo1->Lines->Add(AnsiString(y)+ AnsiString(" ")+AnsiString(x)); Form1->Memo1->Lines->Add(" "); Form1->Memo1->Lines->Add("обчислення всередині потоку завершено"); } Результати роботи програми: Значення функції Y : Значення аргументу X : 0 0 Значення функції Y : Значення аргументу X : 0,0539947817445278 0,16 Значення функції Y : Значення аргументу X : 0,112057450550184 0,32 Значення функції Y : Значення аргументу X : 0,17877061466988 0,48 Значення функції Y : Значення аргументу X : 0,259838208449847 0,64 Значення функції Y : Значення аргументу X : 0,36289711572914 0,8 Значення функції Y : Значення аргументу X : 0,498695502082834 0,96 Значення функції Y : Значення аргументу X : 0,682889566552797 1,12 Значення функції Y : Значення аргументу X : 0,938869092488231 1,28 Значення функції Y : Значення аргументу X : 1,30229946712913 1,44 Значення функції Y : Значення аргументу X : 1,82855519781918 1,6 Значення функції Y : Значення аргументу X : 2,60508601132854 1,76 Значення функції Y : Значення аргументу X : 3,77231606357961 1,92 Значення функції Y : Значення аргументу X : 5,55952480612612 2,08 Значення функції Y : Значення аргументу X : 8,34743652267676 2,24 Значення функції Y : Значення аргументу X : 12,7791773703428 2,4 Значення функції Y : Значення аргументу X : 19,9602363962098 2,56 Значення функції Y : Значення аргументу X : 31,8249028194688 2,72 Значення функції Y : Значення аргументу X : 51,8193008241365 2,88 Значення функції Y : Значення аргументу X : 86,1967660899597 3,04 Значення функції Y : Значення аргументу X : 146,518049745383 3,2 Значення функції Y : Значення аргументу X : 254,563695205512 3,36 Значення функції Y : Значення аргументу X : 452,161681960466 3,52 Значення функції Y : Значення аргументу X : 821,21125409213 3,68 Значення функції Y : Значення аргументу X : 1525,2430516559 3,84 Значення функції Y : Значення аргументу X : 2897,30604997755 4 Значення функції Y : Значення аргументу X : 5629,36243508301 4,16 Значення функції Y : Значення аргументу X : 11188,275282892 4,32 Значення функції Y : Значення аргументу X : 22747,1862860626 4,48 Значення функції Y : Значення аргументу X : 47311,5084026797 4,64 Значення функції Y : Значення аргументу X : 100667,019445523 4,8 Значення функції Y : Значення аргументу X : 219123,318147805 4,96 Значення функції Y : Значення аргументу X : 487936,759298262 5,12 Значення функції Y : Значення аргументу X : 1111469,04560194 5,28 Значення функції Y : Значення аргументу X : 2589809,65158356 5,44 Значення функції Y : Значення аргументу X : 6172265,21726335 5,6 Значення функції Y : Значення аргументу X : 15044866,1217703 5,76 Значення функції Y : Значення аргументу X : 37501614,9586728 5,92 Значення функції Y : Значення аргументу X : 95580478,0384191 6,08 Значення функції Y : Значення аргументу X : 249042118,320959 6,24 Значення функції Y : Значення аргументу X : 663242671,113947 6,4 Значення функції Y : Значення аргументу X : 1804936257,14914 6,56 Значення функції Y : Значення аргументу X : 5017795977,17378 6,72 Значення функції Y : Значення аргументу X : 14245285451,6983 6,88 Значення функції Y : Значення аргументу X : 41280828369,24 7,04 Значення функції Y : Значення аргументу X : 122043499325,25 7,2 Значення функції Y : Значення аргументу X : 367862385995,245 7,36 Значення функції Y : Значення аргументу X : 1129547205401,19 7,52 Значення функції Y : Значення аргументу X : 3529546040659,16 7,68 Значення функції Y : Значення аргументу X : 11208369707382,5 7,84 Значення функції Y : Значення аргументу X : 36107600209674,4 8 обчислення всередині потоку завершено Висновок: Беззаперечно, можливість реалізації багатозадачності з використанням компоненти типу TThread дає можливість значно підвищити стабільність роботи програми а також контролювати процес розрахунку даних з можливістю його зупинки та поновлення у будь-який момент часу
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!