17315

Створення DLL-бібліотеки

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота 1. Створення DLLбібліотеки Мета роботи: 1. Створення DLLбібліотеки 2. Створення рішення з кількох проектів модулів 3. Створення DLLбібліотеки як окремого рішення. 4. Вивчення структури збірки метаданих збірки В платформі Microsoft .NET реалізовано ком...

Украинкский

2013-06-30

63.99 KB

7 чел.

Лабораторна робота 1. Створення DLL-бібліотеки

Мета роботи:

1. Створення DLL-бібліотеки

2. Створення рішення з кількох проектів (модулів)

3. Створення DLL-бібліотеки як окремого рішення.

4. Вивчення структури збірки, метаданих збірки

В платформі Microsoft .NET реалізовано компонентно-орієнтований підхід до програмування.

Цей підхід до проектування і реалізації програмних систем і комплексів є розвитком об'єктно-орієнтованого і практично придатніший для розробки великих  і розподілених систем.

В компонентній моделі .Net компонентом є збірка, яка може бути у вигляді виконуваного файлу (з розширенням EXE), або файлу динамічної бібліотеки (з розширенням DLL). До складу збірки входить маніфест.

Збірка є самодостатньою одиницею для розгортання, тиражування та повторного використання.

Збірка має маніфест, який містить інформацію про збірку (метадані, які описують збірку).

Динамічна бібліотека DLL як тип компонента

Динамічна бібліотека — набір функцій, скомпонованих разом у вигляді бінарного файла, який може бути динамічно завантажений в адресний простір процесу, що використовує ці функції. Динамічне завантаження (dynamic loading) — завантаження під час виконання процесу.

Оскільки динамічні бібліотеки є двійковими файлами, можна організувати спільну роботу бібліотек, розроблених із використанням різних мов програмування і програмних засобів, що спрощує створення застосувань на основі програмних компонентів (отже, динамічне компонування лежить в основі компонентного підходу до розробки програмного забезпечення).

1. Створення DLL-бібліотеки

Запустимо Visual Studio 2008, із стартової сторінки перейдемо до створення проекту, виберемо тип проекту «Class Library».  У вікні створення DLL всі поля заповнені значеннями за замовчанням. Як правило, їх слід перевизначити, задаючи власну інформацію.

У полі Name задати ім'я DLLMyLib.

У полі Location вказується шлях до каталогу, де зберігатиметься Рішення, що містить проект.

У полі Solution вибраний елемент «Create New Solution», що створює нове Рішення. Альтернативою є елемент списку, вказуючий, що проект може бути доданий до існуючого Рішення.

У вікні Solution Name задано ім'я Рішення.

Зверніть увагу на інші установки, зроблені в цьому вікні, - включений прапорець (за замовчанням) «Create directory for solution», у верхньому віконці із списку можливих каркасів вибраний каркас Framework .Net 3.5. Задавши необхідні установки і клацнувши по кнопці «OK», отримаємо автоматично побудовану заготівку проекту DLL, відкриту в середовищі Visual Studio 2008 .

Імена класів повинні бути змістовними. Змінимо ім'я «Class1» на ім'я «MyFun».  Для цього у вікні коду проекту виділимо ім'я змінної об'єкту, потім в головному меню виберемо пункт Refactor і підпункт Rename. У вікні, що відкрилося, вкажемо нове ім'я. Тоді будуть показані всі місця, що вимагають перейменування об'єкту. В даному випадку буде лише одна очевидна заміна, але в загальному випадку замін багато, так що автоматична заміна всіх входжень корисна.

Наступний крок також продиктований правилом стилю – ім'я класу і ім'я файлу, що зберігає клас, повинні збігатися. Перейменування імені файлу робиться безпосередньо у вікні проектів Solution Explorer.

І наступний крок продиктований також важливим правилом стилю, - додавання коментаря. Для цього в рядку перед заголовком класу слід набрати три слеша (три косі риски). В результаті перед заголовком класу з'явиться заголовний коментар – тег «summary», в який і слід додати короткий, але змістовний опис призначення класу. Теги «summary», якими слід супроводжувати класи, відкриті (public) методи і поля класу відіграють три важливі ролі. Вони полегшують розробку і супровід проекту, роблячи його самодокументованим. Клієнти класу при створенні об'єктів класу отримують інтелектуальну підказку, що пояснює суть того, що можна робити з об'єктами. Спеціальний інструментарій дозволяє побудувати документацію за проектом, що включає інформацію з тегів «summary».

У нашому випадку коментар до класу MyFun може бути достатньо простим – «Обчислення математичних функцій ».

Напишемо реалізацію одного методу класу – обчислення функції Sin(x) через ряд Тейлора.

Спочатку напишемо коментарі до методу (у форматі XML). Далі напишемо реалізацію методу. Отримаємо код.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace MyLib

{

///Обчислення математичних фунцій

   public class MySin

   {

    /// <summary>

    /// Sin(x)

    /// </summary>

    /// <param name="x">кут в радіанах – перший аргумент функції  Sin</param>

    ///<param name="n">показник ступеня – другий аргумент функції  Sin</param>

    /// <returns>Повертає значення функції Sin для заданого кута</returns>

       public static double Sin(double x, int n)

       {

           double result = 0;

           for (int i = 0; i < n; i++)

           {

               result = result + (Math.Pow((-1), i) * Math.Pow(x, (2 * i + 1))) / F(2 * i + 1);

           }

           return result;

       }

       static double F(int n)

       {

           double tmp = 1;

           for (int i = 1; i <= n; i++)

           {

               tmp = tmp * i;

           }

           return tmp;

       

       }

   }

}

Побудуємо Рішення, що містить проект, для чого в Головному меню виберемо пункт Build|Build Solution. В результаті успішної компіляції буде побудований файл з уточненням dll. Він знаходиться в папці проекту

.\bin\Debug

Оскільки побудована збірка не містить виконуваного файлу, то безпосередньо запустити наш проект на виконання не удасться. Побудуємо консольний  проект, до якого приєднаємо нашу DLL, і протестуємо, наскільки коректно працюють створені нами методи.

2. Створення консольного проекту для тестування функції з бібліотеки.

Виберемо пункт меню File|New|Project, задамо тип проекту ConsoleApplication, дамо йому ім'я – ConsoleMyLib, вкажемо, що проект додається до існуючого рішення.  В результаті у вже існуюче Рішення додасться ще один проект.

Напишемо код, який викликає функцію Sin(x,n), яку ми реалізували, стандартну функцію Sin(x), обчислює похибку і виводить результат на консоль.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace TestDLL

{

   class Program

   {

       /// <summary>

       /// Виклик бібліотечного метода Sin(x,n) з MyLib.dll

       /// </summary>

       /// <param name="args"></param>

       static void Main(string[] args)

       {

           Console.WriteLine("Введите x- угол в радианах");

           double x = double.Parse(Console.ReadLine());

           Console.WriteLine("Введите показатель степени n");

           int n = int.Parse(Console.ReadLine());

           //вызов метода вычисления sin(x) из библиотеки

           double my_sinus = MyLib.MyFun.Sin(x, n);

           //вызов метода из класса Math

           double sinus = Math.Sin(x);

           double delta = sinus - my_sinus;

           Console.WriteLine("my_sinus= {0},sin={1},delta={2}", my_sinus, sinus, delta);

           Console.ReadKey();

       }

   }

}

Побудуємо рішення і отримаємо повідомлення про помилку. Наша бібліотека не підключена  до проекту.

3. Підключення проекту бібліотеки до консольного проекту.

Для цього додамо посилання на проект з DLL MyLib. У вікні Solution Explorer наведемо покажчик миші до імені консольного проекту і з контекстного меню виберемо пункт меню «Add Reference». Виберемо вкладку «Projects». Оскільки проект MySin включений в Рішення, то він автоматично з'явиться у вікні, Якщо посилання потрібно встановити на проект, не включений в Рішення, то у вікні додавання посилань потрібно вказати шлях до проекту.

Посилання  на DLL  з'явиться в папці «References» консольного проекту. Тепер проекти зв'язані і з консольного проекту доступні функції DLL.

Перебудуємо рішення, щоб не було помилок.

4. Встановлення стартового проекту.

У вікні Solution Explorer наведемо курсор миші на заголовок консольного проекту і виберемо:

Set as StartUp Project

Після цього його можна запустити на виконання.

5. Створення Windows-проекту в тому самому рішенні.

Виберемо пункт меню File|New|Project, задамо тип проекту Windows Forms Application, дамо йому ім'я – WindowsMySin, вкажемо, що проект додається до існуючого Рішення.

На формі створимо 2 текстові поля для введення вхідних параметрів, третє і четверте – для результатів.

Додамо 2 кнопки. При натисканні кнопки "Обчислення Sin" виконується виклик функцій, "Вихід" – завершення роботи.

Код форми:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace WindowsMySin

{

   public partial class Form1 : Form

   {

       public Form1()

       {

           InitializeComponent();

       }

       private void button1_Click(object sender, EventArgs e)

       {

          double x = double.Parse(txt_x.Text);

          int n = int.Parse(txt_n.Text);

          //вызов метода вычисления sin(x) из библиотеки

          double my_sinus = MyLib.MyFun.Sin(x, n);

          //вызов метода из класса Math

          double sinus = Math.Sin(x);

          txt_y1.Text = my_sinus.ToString();

          txt_y2.Text = sinus.ToString();

       }

       private void button2_Click(object sender, EventArgs e)

       {

           this.Close();

       }

   }

}

6. Робимо проект стартовим і запускаємо на виконання. Результат:

7. Документування коду

    /// <summary>

    /// Sin(x)

    /// </summary>

    /// <param name="x">кут в радіанах – перший аргумент функції  Sin</param>

    ///<param name="n">показник ступеня – другий аргумент функції  Sin</param>

    /// <returns>Повертає значення функції Sin для заданого кута</returns>

Завдання для самостійної роботи

2. Створити DLL-бібліотеку, яка містить методи, що реалізують завдання. В кожному методі вказати XML-коментарі.

3. Створити рішення, яке включає DLL-бібліотеку, консольний проект, який тестує роботу бібліотечних методів.

3. Створити Windows-проект в тому самому рішенні, який викликає бібліотечні методи.

4. Створити DLL-бібліотеку як окреме рішення. Зв'язати бібліотеку з Windows-проектом.

варіанту

Зміст завдання

1

1. Створити масив для зберігання значень зросту студентів групи (20 чоловік). Заповнити масив за допомогою класу Random цілими числами в діапазоні від 160 до 190 включно.  Відсортувати масив і вивести на консоль його елементи.

2. Є прямокутний масив розмірністю (5x5). Визначити суму всіх елементів третього рядка  і  суму всіх елементів першого стовпчика.

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

6x4-3x3+8x2-25=0

2

1. Згенерувати масив М випадкових чисел в діапазоні від 1 до 50. Обчислити  суму елементів масиву, середнє арифметичне (мат.очікування) елементів M, квадратний корінь від М, min і max елементів масиву. Результати вивести на консоль.

2.  В двовимірному масиві зберігається інформація про зарплату  18 співробітників за 12 місяців (за січень – першому стовпчику, лютий – другому, ...). Визначити загальний бюджет зарплати за рік, загальну  і середню зарплату за квітень.

3. Реалізувати консольній застосунок знаходження методом Ньютона коренів нелінійного рівняння

(x2-6*x)2 -2(x-3)2=81

3

1. Згенерувати масив випадкових чисел в діапазоні від 10 до 100. Обчислити добуток елементів масиву, середнє арифметичне (мат.очікування) елементів M, min і max елементів масиву. Результати вивести на консоль.

2.  В двовимірному масиві зберігається інформація про зарплату  18 співробітників за 12 місяців (за січень – першому стовпчику, лютий – другому, ...). Визначити загальну зарплату кожного співробітника за рік і середню зарплату за кожний місяць.

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

(x2+2x)2-(x+1)2=55

4

1. Згенерувати масив випадкових дійсних чисел в діапазоні від 0 до 1. Відсортувати масив, знайти min і max елементи. Результати вивести на консоль.

2.  В двовимірному масиві зберігається інформація про зарплату  30 працівників фірми за 12 місяців (за січень – першому стовпчику, лютий – другому, ...). Визначити середню зарплату  фірми за кожний місяць року, а також середню зарплату за кожний місяць кожного співробітника.

3. Реалізувати консольній застосунок знаходження коренів нелінійного рівняння методом бісекції

(x2+x+1)( x2+x+1) -12=0

5

1. Згенерувати дві серії випадкових чисел, що повторюються. Кількість чисел ввести з консолі. Результати вивести на консоль.

2. В двовимірному масиві зберігається інформація про оцінки  студентів з двох дисциплін (з дисципліни ОС – в першому стовпчику, з дисципліни Мова С# - в другому). Визначити середню успішність студентів  групи і середній бал (рейтинг) кожного студента  з цих дисциплін.

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

(x2-5*x+7) 2- (x-2)(x-3)=0

6

1. Згенерувати масив чисел Фібоначчі. Кількість чисел ввести з консолі. Результати вивести на консоль.

2. Фірма має  10 магазинів. Інформація про прибуток кожного магазину за кожний місяць зберігається в двовимірному масиві (першрго – в першому рядку, другого – в другому, і т.д.). Обчислити середній прибуток кожного магазину.

3. Реалізувати консольній застосунок знаходження методом Ньютона коренів нелінійного рівняння

x4-13x2+36=0

7

1. Створити масив для зберігання значень ваги  студентів групи (20 чоловік). Заповнити масив за допомогою класу Random цілими числами в діапазоні від 50 до 100 включно.  Відсортувати масив і вивести на консоль його елементи.

2. В двовимірному масиві зберігається інформація про оцінки  кожного із 20 студентів групи по кожній з 10 дисциплін. Перший рядок – інформація про оцінки першого студента, друга – другого і т.д. Обчислити середню успішність кожного студента.

3. Реалізувати консольній застосунок знаходження коренів нелінійного рівняння методом бісекції

2x8+x4-15=0

8

1. Створити масив з 10 елементів і заповнити його значеннями в коді. Всі його елементи:

- зменшити на 20;

- помножити на останній елемент

- збільшити на число В, яке ввести з консолі

2. В двовимірному масиві зберігається інформація про оцінки кожного із 20 студентів групи по кожній з 10 дисциплін. Перший рядок – інформація про оцінки першого студента, друга – другого і т.д. Обчислити середню успішність групи по кожній з дисциплін і в цілому успішність групи.

3. Реалізувати консольний застосунок знаходження методом бісекції коренів нелінійного рівняння

x4-13x2+36=0

9

1. Створити масив з 10 елементів і заповнити його значеннями в коді. Визначити суму всіх елементів масиву, суму квадратів всіх елементів масиву, середнє арифметичне всіх елементів масиву.

2. В двовимірному масиві 3x5 знайти суму елементів в кожному рядку і суму елементів кожного стовпчика.

3.  Реалізувати консольній застосунок знаходження коренів нелінійного рівняння методом Ньютона

x4-2x3+x-132=0

10

1. Створити масив з 10 елементів і заповнити його значеннями в коді. Всі його елементи: збільшити у 2 рази, розділити на перший елемент, зменшити на число А, яке ввести з консолі.

2. Три групи студентів, в кожній з яких 20 чоловік, в сесію здавали по 4 екзамени.  Відомості про оцінки кожної групи зберігаються в двовимірних масивах. Визначити кращу групу за середньою оцінкою

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

8x4+6x3-13x2-x+3=0

11

1. Створити масив з 8 елементів і заповнити його випадковими дійсними числами в діапазоні від 1 до 20.  Результати вивести на консоль

2. Створити прямокутний масив і заповнити його випадковими числами від 1 до 40. Знайти суму елементів другого стовпчика

 

3. Реалізувати консольній застосунок знаходження методом Ньютона коренів нелінійного рівняння

x3+6x+4x2+3=0

12

1. Створити масив з 8 елементів і заповнити його випадковими дійсними числами в діапазоні від 21 до 40. Результати вивести на консоль

2. Створити прямокутний масив і заповнити його випадковими числами від 1 до 40. Знайти суму елементів третього рядка масиву, які менше 20

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

2x4-x3-9x2+13x-5=0

13

1. Створити масив і заповнити його 20-ма першими цілими числами, які діляться на 13 або на 17 і знаходяться в інтервалі, ліва границя якого рівна 300.

2. Створити прямокутний масив і заповнити його випадковими числами від 1 до 40. Знайти суму елементів першого рядка масиву і кількість його не нульових елементів

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

(x-1)3+(2x+3)3=27x3+8

14

1. Створити масив і заповнити його 30-ма простими числами (простим є число, яке ділиться на 1 і самого себе)

2. Створити прямокутний масив цілих чисел і

заповнити його випадковими числами від 1 до 100. Визначити суму елементів масиву, які більше 30 і середнє арифметичне  всіх елементів

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

x4-4x3-19x2+106x-120=0

15

1. Створити масив і заповнити його 20-ма випадковими числами в діапазоні  20 до 100. Вивести на консоль елемент за його індексом в масиві.

2. Створити прямокутний масив цілих чисел і заповнити його випадковими числами від 1 до 60. Визначити суму елементів масиву, які більше 10 і середнє арифметичне елементів першого рядка

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

x4-2x3+x-132=0

16

1. Створити масив, розмір масиву ввести з консолі, заповнити його випадковими числами від 1 до 50. Відсортувати елементи. Вивести на консоль в прямому і зворотному порядку.

2. Створити прямокутний масив цілих чисел і ініціалізувати його при створенні. Для кожного рядка масиву обчислити суму від'ємних елементів.

3. Реалізувати консольній застосунок знаходження методом Ньютона коренів нелінійного рівняння

6x3-x2-20x+12=0

17

1. Створити масив, розмір масиву ввести з консолі, заповнити його випадковими дійсними числами від 1 до 50. Обчислити корінь квадратний кожного з його елементів і середнє арифметичне двох сусідніх елементів.

2. Створити прямокутний масив цілих чисел і ініціалізувати його при створенні. Для кожного рядка масиву обчислити суму додатних і від'ємних  елементів.

3. Реалізувати консольній застосунок знаходження методом Ньютона коренів нелінійного рівняння

x4+1=2(1+x)4

18

1. Створити масив, в якому зберігаються  дані про кількість опадів, які випали за кожний день місяця (наприклад, в листопаді). Обчислити загальну і середню кількість опадів за  місяць.

2. Створити прямокутний масив цілих чисел і ініціалізувати його при створенні. Для кожного стовпчика масиву обчислити суму додатніх, від'ємних елементів.

3. Реалізувати консольній застосунок знаходження методом Ньютона коренів нелінійного рівняння

x4+1=2(1+x)4

19

1. Створити масив, в якому зберігаються  дані про температуру  в одному місяці. Обчислити середню температуру в місяці.

2. Створити прямокутний масив цілих чисел і ініціалізувати його при створенні. Для кожного рядка  масиву обчислити  кількість елементів, які більше 10.

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння.

6x3-x2-20x+12=0

20

1. Створити масив, в якому зберігаються дані про кількість опадів, що випали за кожний день місяця (наприклад, в травні). Обчислити в якій половині місяця (першій чи другій) випало більше опадів. Обчислити в якій декаді місяця  кількість опадів була найбільшою

2. Створити прямокутний масив цілих чисел і ініціалізувати його при створенні. Знайти  максимальний і мінімальний елементи кожного рядка.

3. Реалізувати консольній застосунок знаходження методом бісекції коренів нелінійного рівняння

6x3-x2-20x+12=0


 

А также другие работы, которые могут Вас заинтересовать

28697. Политическая и законотворческая деятельность Временного правительства по основным социально-политическим и экономическим проблемам страны 13.75 KB
  правво принимает ряд правовых актов значительно расширяющих демократиче права и свободы граждан. В марте принимается постановление О кооперативных товариществах и их союзах возникающих без особого разрешения правитвенной власти. Вместе с тем правво отказывся от некотх чрезвычх мер запретив аресты без суда и ограничив число областей объявленных на военном положи постановле О лицах арестованных во внесудом порядке.
28698. Октябрьское вооруженное восстание 1917 г. и установление диктатуры пролетариата в России 13.87 KB
  Комитет состоял из представителей армии профсоюзов фабричнозаводских комитетов военных секций Советов и др. Важная роль в становлении Советского государства и государственного аппарата принадлежала Всероссийскому съезду Советов рабочих и солдатских депутатов. Ленин выдвинул идею диктатуры пролетариата в виде республики Советов. Новый госный строй России диктатуру пролетариата в виде республики Советов окончательно утвердила принятая 10 июля 1918 г.
28699. II-ой Всероссийский съезд Советов, его состав. Исторические декреты съезда о мире и земле 12.38 KB
  IIой Всероссийский съезд Советов его состав. Исторические декреты съезда о мире и земле. Важная роль в становлении Советского гос0ва и государственного аппарата принадлежала Всероссийскому съезду Советов рабочих и солдатских депутатов. Съезд больш.
28700. Слом старого государственного аппарата после Октябрьского вооруженного восстания1917г Упразднение органов буржуазного самоуправления. Роспуск Учредительного собрания 12.77 KB
  Руководство этим процессом осуществляли Всероссийские съезды Советов Петроградский ВРК ВЦИК НКВД и другие органы. когда Декретом ВЦИК и СНН упразднялись все сословия и сословные организации и учреждения. Председатель ВЦИК Я. Свердлов от имени ВЦИК и ЦК партии большевиков зачитал и предложил принять Декларацию прав трудящегося и эксплуатируемого народа.
28701. Военно-революционный комитет Петрограда и его роль в переходе власти к Советам. Создание милиции, судебных органов, ВЧК и Красной Армии, их компетенции и борьба против контрреволюции 14.26 KB
  Создание милиции судебных органов ВЧК и Красной Армии их компетенции и борьба против контрреволюции.10 вводится в действие приказ По рабочей милиции. НКВД и Наркомюст утвердили совместную инструкцию Об организации советской рабочекрестьянской милиции. Руководство органами милиции осуществляло Главное управление рабочекрестьянской милиции НКВД РСФСР.
28702. «Декларация прав трудящегося и эксплуатируемого народа», ее содержание и значение 12.2 KB
  Декларация прав трудящегося и эксплуатируемого народа ее содержание и значение. Декларация Прав Трудящегося И Эксплуатируемого Народа важнейший конституционный акт Советской республики законодательно закрепивший завоевания Октябрьской революции и провозгласивший основные принципы и задачи социалистического государства. Декларация была утверждена III Всероссийским съездом рабочих солдатских и крестьянских депутатов. Декларация состояла из четырех разделов.
28703. «Декларация прав народов России», ее содержание и значение 15 ноября 1917 г. 11.56 KB
  Декларация прав народов России ее содержание и значение 15 ноября 1917 г. Исполняя волю съездов Совет Народных Комиссаров решил положить в основу своей деяти по вопросу о национальностях России следующие начала: 1 Равенство и суверенноcть народов России. 2 Право народов России на свободное самоопределение вплоть до отделения и образования самостоятельного государства. 4 Свободное развитие национальных меньшинств и этнографических групп населяющих территорию России.
28704. Мероприятия Советского государства по созданию новой экономики. Национализация банков связи, транспорта, внешней торговли, крупной промышленности 13.92 KB
  ВСНХ принял постановление согласно котму все частные предпря с числом рабочих свыше 5 при наличии механического двигателя на предприятии или 10 без двигателя человек объявлялись национализированными. органа по рукву эккой страны учреждался Высший совет народного хозва ВСНХ. ВСНХ действовал в качестве органа при правве. ВСНХ д.
28705. Основные направления в развитии гражданского, уголовного, колхозного и трудового права с конца 50-х и до середины 80-х гг. XX в. 13.31 KB
  СССР 1977 г. СССР регулировала также личную собствсть граждан. Закрепляя право на труд Конституция СССР 1977 г. Одновременно в Конституции содержались положения об обязанности каждого гражданина СССР добросовестно трудиться в избранной им области строго соблюдать трудовую и производственную дисциплину.