реактивне програмування.

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

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

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

Рік:
2025
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритми та моделі обчислень

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

Міністерство освіти і науки України Національний університет “Львівська політехніка” Кафедра ЕОМ / Звіт З лабораторної роботи №6 з дисципліни: «Алгоритми та моделі обчислень» на тему: «реактивне програмування.» Львів 2022 Мета роботи: ознайомитися з парадигмою реактивного програмування. Завдання Детально ознайомитися з наведеним прикладом програмиЗначення констант обрати згідно варіанту. / Код програми Код програми без бібліотеки «RxCpp» #define _CRT_SECURE_NO_WARNINGS #define WIN32_LEAN_AND_MEAN /**************************************************** * N.Kozak // Lviv'2018 // ACM // RxCpp example * * file: acmlab6__with_rxcpp_src.cpp * * used RxCpp: https://github.com/ReactiveX/RxCpp * *****************************************************/ //#pragma once //#include "stdafx.h" #ifndef TO_RXCPP_IMPLEMENTATION #define TO_RXCPP_IMPLEMENTATION #include "Lab_6.cpp" #define WORK_SPACE int a = 0, b = 0 #define EXPRESSION ( C2*a + C1*b + C0 ) #define RUN_FOR_UPDATE EXPRESSION #define C2 585 #define C1 586 #define C0 581 //#include "rxcpp/rx.hpp" namespace rx = rxcpp; namespace rxsub = rxcpp::subjects; namespace rxu = rxcpp::util; #include <cctype> #include <clocale> WORK_SPACE; // r = C2*a + C1*b + C0; void runForUpdateA(int value) { a = value; } void runForUpdateB(int value) { b = value; } void runForUpdateR() { std::cout << "(C2=" << C2 << " C1=" << C1 << " C0=" << C0 << " a=" << a << " b=" << b << ")" << std::endl; std::cout << "r = C2*a + C1*b + C0 = " << RUN_FOR_UPDATE << std::endl; } int main() { std::cout << "(use key a, b, r; use <Ctrl+C> for exit)" << std::endl << "Run('r'<= merge('a', 'b')):" << std::endl; auto keys = rx::observable<>::create<int>( [](rx::subscriber<int> dest) { for (;;) { int key = std::cin.get(), value; if (std::tolower(key) == 'a') { std::cout << "="; std::cin >> value; runForUpdateA(value); } else if (std::tolower(key) == 'b') { std::cout << "="; std::cin >> value; runForUpdateB(value); } dest.on_next(key); } }). publish(); auto a = keys. filter([](int key) {return std::tolower(key) == 'a'; }); auto b = keys. filter([](int key) {return std::tolower(key) == 'b'; }); auto r = keys. filter([](int key) {return std::tolower(key) == 'r'; }); r.merge(a, b). subscribe([](int key) { if (std::tolower(key) == 'r') { runForUpdateR(); } else { std::cout << "value updated" << std::endl; } }); keys.connect(); // run the loop in create return 0; } Результат виконання / Висновок: виконавши дану лабораторну роботу, я ознайомився з парадигмою реактивного програмування.
Антиботан аватар за замовчуванням

13.06.2025 08:47

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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