Структура за темами

  • Лабораторна робота 1

    Загальні вимоги:

    Мова програмування: C / C++.

    Система: з сімейства UNIX.

    Написати програму, яка задовольняє наступним вимогам:

    1. Робить перегляд обраного користувачем каталогу й виводить на екран його зміст, відсортований по кількості посилань на файли (в тому числі й імена каталогів).
    2. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його файлів, розширення яких співпадають з введеним користувачем. Потім виводить файли родительського каталогу, і так далі, доки не буде виведено файли коріневого каталогу.
    3. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його звичайних файлів. Потім виводить файли родительського каталогу, і так далі, доки не буде виведено файли коріневого каталогу.
    4. Виводить імена всіх каталогів, які знаходяться в заданому користувачем каталозі, і не мають підкаталогів.
    5. Виводить імена всіх каталогів, які знаходяться в заданому користувачем каталозі, і мають підкаталоги.
    6. Робить перегляд обраного користувачем каталогу й виводить на екран його зміст, відсортований по часу створення файлів. При цьому імена каталогів повинні виводитись останніми.
    7. Робить перегляд обраного користувачем каталогу й виводить на екран його зміст, відсортований по розміру файлів. При цьому імена каталогів повинні виводитись першими.
    8. Робить перегляд обраного користувачем каталогу й виводить на екран його зміст в алфавітному порядку. При цьому каталоги виводити не треба.
    9. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його каталогів. Потім виводить каталоги родительського каталогу, і так далі, доки не буде виведено каталоги коріневого каталогу.
    10. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його каталогів, впорядкував їх по кількості файлів і каталогів, які в них знаходяться. Для кожного такого каталогу також виводиться кількість файлів і каталогів в ньому.
    11. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його каталогів, впорядкував їх по розміру всіх файлів, які в них знаходяться. Для кожного такого каталогу також виводиться його розмір.
    12. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його файлів, імена яких починаються з рядка (регістро-незалежне порівняння), введеним користувачем. Потім виводить файли родительського каталогу, і так далі, доки не буде виведено файли коріневого каталогу.
    13. Робить перегляд обраного користувачем каталогу й виводить на екран імена всіх його файлів, імена яких закінчуються рядком (регістро-незалежне порівняння), введеним користувачем. Потім виводить файли родительського каталогу, і так далі, доки не буде виведено файли коріневого каталогу.
  • Лабораторна робота №2

    Загальні вимоги:

    Мова програмування: C / C++.

    Система: з сімейства UNIX.

    Написати програму, яка задовольняє наступним вимогам:

    1. Програма повинна обчислити інтеграл на відрізку [A; B] від функції exp(x) методом трапецій, розбивши інтервал на К рівних відрізків. Для знаходження значення exp(x) програма повинна створити процес, який обчислює її значення за допомогою розкладу в ряд.
    2. Програма повинна обчислити значення f(x) як суму ряду від k=0 до k=N від виразу x^(2k+1)/(2k+1)! для значень x рівномірно розподілених на інтервалі [0; π], та вивести результат у файл в двійковому форматі. В цей же самий час процес-потомок повинен читати дані із файлу, перетворювати їх у текстову форму і виводити на екран до того моменту, як у файлі не з’явиться деяке ключове слово (наприклад STOP).
    3. Програма повинна обчислювати щільність розподілу Пуссано з параметром lambda у точці k (k – ціле число) за формулою: f(k) = lambda^k*exp(-lambda)/k!. Для знаходження факторіалу і експоненти програма повинна породити два паралельні процеси, що обчислюють значення функцій шляхом розкладання їх у ряд (для експоненти).
    4. Програма повинна обчислювати щільність опуклого розподілу в точці x за формулою f(x) = (1-cos(x))/(π*x^2). Для знаходження значень π і косинуса програма повинна породити два паралельні процеси, які обчислюють ці величини шляхом розкладання їх у ряд.
    5. Програма повинна обчислювати щільність лог-нормального розподілу в точці х за формулою: f(x) = (1/2)*exp(-1/2*ln(x)^2)/(x*sqrt(2*π)). Для знаходження π, exp і ln повинна породити три паралельні процеси, які обчислюють ці величини шляхом розкладання їх у ряд.
    6. Програма повинна обчислювати число розміщень n елементів по r коміркам: N = n!/n(1)!*n(2)!*…*n(r)!, яке задовольняє вимогу що у комірку з номером і попаде рівно n(i) елементів (i=1…r) та n(1)+n(2)+…+n(r) = n. Для обчислення кожного факторіалу програма повинна породити процес-потомок.
    7. Програма повинна обчислювати значення C(k,n) = n!/(k!*(n-k)!). Для обчислення кожного факторіалу програма повинна породити процес-потомок.
    8. Програма повинна обчислити значення f(x) як суму ряду від k=1 до k=N від виразу (-1)^(k+1)*x(2k-1)/(2k-1)! для значень x рівномірно розподілених на інтервалі [0; π], та вивести результат у файл в двійковому форматі. В цей же самий час процес-потомок повинен читати дані із файлу, перетворювати їх у текстову форму і виводити на екран до того моменту, як у файлі не з’явиться деяке ключове слово (наприклад STOP).
    9. Програма повинна обчислювати щільність нормального розподілу в точці х за формулою: f(x) = exp(-x^2/2)/sqrt(2*π). Для знаходження π і exp повинна породити два паралельні процеси, які обчислюють ці величини шляхом розкладання їх у ряд.
    10. Програма повинна обчислити інтеграл у діапазоні від 0 до 1 для виразу 4*dx/(1+x^2) за допомогою послідовності рівномірно розподілених на відрізку [0; 1] випадкових чисел, яка генерується процесом-потомком паралельно. Процес-потомок повинен завершити роботу після попередньо заданого числа генерацій N.
  • Лабораторна робота №3

    Загальні вимоги:

    Мова програмування: C / C++.

    Система: з сімейства UNIX.

    Написати програму, яка задовольняє наступним вимогам:

    1. Створює два процеси, кожен з яких виконує деякий цикл. Після завершення кожного циклу вони передають через чергу повідомлень родительському процесу чотири рядка деякого віршу, при цьому перший процес передає непарні чотиривірші, другий – парні. Цикли процес не збалансовані по часу. Родительський процес компонує з отриманих фрагментів завершений вірш, і виводить його після завершення роботи усіх процесів. Вірш, який потрібно вивести – «Заповіт» Шевченка.
    2. Створює два процеси, кожен з яких виконує деякий цикл. Після завершення кожного циклу вони передають через один і той же сегмент розподільної пам’яті родительському процесу чотири рядка деякого віршу, при цьому перший процес передає парні чотиривірші, другий – непарні. Цикли процес не збалансовані по часу. Родительський процес компонує з отриманих фрагментів завершений вірш, і виводить його після завершення роботи усіх процесів. Вірш, який потрібно вивести – «Тарасова Ніч» Шевченка.
    3. Створює чотири процеси, кожен з яких виконує деякий цикл. Після завершення кожного циклу вони передають через один і той же сегмент розподільної пам’яті родительському процесу 16 рядків деякого віршу, при цьому перший процес передає 1-у, 5-у, 9-у, тощо, другий – 2-у, 6-у, 10-у, тощо, третій – 3-у, 7-у, 11-у, тощо, четвертий – 4-у, 8-у, 12-у, тощо. Цикли процес не збалансовані по часу. Родительський процес компонує з отриманих фрагментів завершений вірш, і виводить його після завершення роботи усіх процесів. Вірш, який потрібно вивести – «Кавказ» Шевченка.
    4. Моделюється робота СУБД,  що зберігає єдину таблицю в оперативній пам’яті. Створюється К процесів (К задається користувачем), які виконують деякі цикли робіт, і за допомогою черги повідомлень передають родительському процесу номер рядка, який треба видалити з таблиці. Родительський процес виконує дану операцію і виводить вміст видаленого рядка.
    5. Моделюється робота СУБД,  що зберігає єдину таблицю в оперативній пам’яті. Створюється К процесів (К задається користувачем), які виконують деякі цикли робіт, і за допомогою черги повідомлень передають родительському процесу номер рядка і його вміст, на який треба змінити збережені в таблиці дані. Родительський процес виконує дану операцію і виводить старий вміст зміненого рядка.
    6. Моделюється робота СУБД,  що зберігає єдину таблицю в оперативній пам’яті. Створюється К процесів (К задається користувачем), які виконують деякі цикли робіт, і за допомогою черги повідомлень передають родительському процесу вміст рядка, який треба додати до таблиці. Родительський процес перевіряє, чи існує такий рядок в таблиці. Якщо не існує – то додає його і виводить кількість збережних в таблиці рядків. Якщо існує – виводить номер рядка в таблиці з цими даними.
    7. Створює чотири процеси, кожен з яких виконує деякий цикл. Після завершення кожного циклу вони передають через чергу повідомлень родительському процесу 16 рядків деякого віршу, при цьому перший процес передає 1-у, 5-у, 9-у, тощо, другий – 2-у, 6-у, 10-у, тощо, третій – 3-у, 7-у, 11-у, тощо, четвертий – 4-у, 8-у, 12-у, тощо. Цикли процес не збалансовані по часу. Родительський процес компонує з отриманих фрагментів завершений вірш, і виводить його після завершення роботи усіх процесів. Вірш, який потрібно вивести – «Єретик» Шевченка.
    8. Родительський процес зберігає у сегменті розподільної пам’яті імена програм, які можуть бути виконані. Створюється К процесів (К задається користувачем), які виконують деякі цикли робіт, і випадковим чином запускають ці програми й продовжують свою роботу. При цьому одна програма не може бути запущена одночасно більше одного разу. Також родительський процес за допомогою черги повідомлень інформується про те, які програми й від імені кого запущені, й виводить на екран цю інформацію.
    9. Родительський процес зберігає у сегменті розподільної пам’яті імена програм, які можуть бути виконані. Створюється К процесів (К задається користувачем), які виконують деякі цикли робіт, і випадковим чином запускають ці програми й продовжують свою роботу. При цьому один процес не може запустити більше однієї програми за раз. Також родительський процес за допомогою черги повідомлень інформується про те, які програми й від імені кого запущені, й виводить на екран цю інформацію.
    10. Моделюється робота монітору оброки повідомлень. Породжується К процесів (К задається користувачем), які мають різні пріоритети й виконують деякі цикли робіт. Вони, за допомогою черги повідомлень, передають родительському процесу імена програм, які повинні бути запущені. Родительський процес оброблює ці повідомлення у відповідності до їх пріоритетів, і слідкує за тим, щоб одночасно було запущено не більше трьох програм.