42733

Простейшие классы

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

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

Методы и свойства должны обеспечивать непротиворечивый полный минимальный и удобный интерфейс класса. В программе должна выполняться проверка всех разработанных элементов класса.1 Классы в C Работу с классами рассмотрим на следующем примере. Создайте новое консольное приложение для C и введите следующий текст: using System; nmespce test { Начало класса clss Worker { public int ge=0; public string nme; } Конец класса clss Test { [STThred]...

Русский

2013-10-30

160 KB

58 чел.

Лабораторная работа 4. Простейшие классы

Цель работы: 

1. Создать класс. Каждый разрабатываемый класс должен, как правило, содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы, свойства.  Методы и свойства должны обеспечивать непротиворечивый, полный,  минимальный и удобный интерфейс класса. При возникновении ошибок должны выбрасываться исключения. В программе должна выполняться проверка всех разработанных элементов класса.

2. Создать дочерний класс.

1 Теоретическое введение

1.1 Классы в C#

  Работу с классами рассмотрим на следующем примере. Создайте новое консольное приложение для C# и введите следующий текст:

using System;

namespace test

{

   //Начало класса

   class Worker

   {

       public int age=0;

       public string name;

   }

   //Конец класса

   class Test

   {

       [STAThread]

       static void Main(string[] args)

       {

           Worker wrk1 = new Worker();

           wrk1.age=34;

           wrk1.name="Иванов";

           Console.WriteLine(wrk1.name+", "+wrk1.age);

       }

   }

}

Программа  выведет на экран "Иванов, 34".

В строках

...

   class Worker

   {

       public int age=0;

       public string name;

   }...

определен класс Worker. Внутри этого класса существует две переменные - целая age для возраста и name строкового типа для имени. В отличие от C/C++,  можно задавать некоторое начальное значение прямо сразу после объявления переменной:

...

       public int age=0;

...

Начальное значение задавать  не обязательно - это видно по переменной name.

Перед переменными пишется ключевое слово public. Значение у него такое же, как и в C++ - а именно это означает, что эта переменная (или функция) будет видна вне класса. Если  не написать перед переменной никакого модификатора доступа, или написать private, то переменная не будет видна снаружи класса и ее смогут использовать только фунции этого же класса (т. е. она будет для "внутреннего использования").

Далее в строке

...

           Worker wrk1 = new Worker();

...

Создается  экземпляр класса в куче (heap) и возвращается  ссылка на него.

Затем в строках

...

           wrk1.age=34;

           wrk1.name="Иванов";

           Console.WriteLine(wrk1.name+", "+wrk1.age);

...

используется созданный  класс. А именно присваиваются некоторые значения для возраста и имени, и выводят их потом на экран.

1.2 Конструкторы классов

Конструктор - это функция (метод) класса. Раз эта функция, то описывают  ее почти точно так же, как и любую другую функцию класса - пишут параметры в круглых скобках и т. п. Конструктор вызывается в момент создания объекта. При этом у класса может быть несколько конструкторов - но при этом они должны различаться или типом параметров, или их количеством.

Добавим в класс Worker конструктор:

   ...

   class Worker

   {

       public int age=3;

       public string name;

       //Конструктор 1

       public Worker(int age, string name)

       {

           this.age=age;

           this.name=name;

       }

   }

   ...

Конструктор имеет ряд особенностей. Во-первых, конструктор называется как класс. Так как класс называется Worker, то и конструктор должен называться точно также. И во-вторых, конструктор, в отличие от других методов класса, не возвращает никакого значения (даже типа void).

Конструктор в данном примере записывает передаваемые в него параметры во внутренние переменные класса. Называются они одинаково - age и age, name и name. Компилятор сначала ищет локальную переменную с таким именем, и, если не находит, то переменную класса. Поэтому age (и name) - это передаваемый в конструктор параметр. Если же  надо сослаться на переменную класса (при существовании переменной с таким же именем, как и передаваемый в функцию параметр), то  используется ключевое слово this. Оно всегда указывает на текущий экземпляр класса. Таким образом, в строках

...

           this.age=age;

           this.name=name;

...

передаются параметры конструктора в переменные класса.

Изменим тестовый класс test следующим образом:

...

       static void Main(string[] args)

       {

           //Вызываем конструктор

           Worker wrk1 = new Worker(40, "Вася");

           Console.WriteLine(wrk1.name+", "+wrk1.age);

       }

...

Теперь после объявления переменной вызывается конструктор с двумя параметрами, который запишет в переменные age и name экземпляра класса Worker значания 40 и "Вася". Строкой ниже эти значения выводятся на экран.

1.3 Наследование

При наследовании объявляем один  класс потомком другого класса. И класс-потомок (или, как его еще называют, дочерний класс) автоматически приобретает всё, что было в родительском классе. Затем в дочерний класс  можно что-нибудь добавить (чего не было в классе родительском). Кроме того, в дочернем классе  можно что-нибудь из родительского класса переопределить - так что оно уже будет работать по-другому.

Рассмотрим это все на примере. Пусть будет класс Worker и производный от него класс Boss. Класс Boss будет отличаться от класса Worker во-первых, наличием переменной numOfWorkers (для количества подчиненных) и, во вторых, метод для задания возраста (setAge) будет работать в Boss не так:

using System;

namespace test

{

   //Класс Worker

   class Worker

   {

       protected int age=0;

       public void setAge(int age)

       {

           if(age>0 &&  age<100)

               this.age=age;

           else

               this.age=0;

       }

       public int getAge()

       {

return age;

       }

   }

   //Класс Boss

   class Boss : Worker{

       public int numOfWorkers; //Количество подчиненных

       public new void setAge(int age)

       {

           if(age>0 && age<45)

               this.age=age;

           else

               this.age=0;

       }

   }

   class Test

   {

       static void Main(string[] args)

       {

           Worker wrk1 = new Worker();

           Boss boss = new Boss();

           wrk1.setAge(50);

           boss.setAge(50);

           boss.numOfWorkers=4;

           Console.WriteLine("Возраст работника "+wrk1.getAge());

           Console.WriteLine("Возраст босса "+boss.getAge()+

".\nКоличество подчиненных "+boss.numOfWorkers);

       }

   }

}

Обратите внимание, как  вводится новый класс Boss:

   ...

   class Boss : Worker{

   ...

Такая запись и означает, что новый класс Boss будет потомком другого класса (Worker в данном случае). Так как класс Boss - потомок другого класса, то он автоматически умеет все тоже самое, что и родительский класс. В частности, в нем есть переменная age для хранения возраста. Далее, в класс Boss вводится переменная numOfWorkers для хранения количество подчиненных у данного босса. В родительском классе такой переменной не было. Кроме того, изменена реализация метода setAge из родительского класса Worker (по каким-то там внутренним инструкциям фирмы возраст босса не может превышать 45 лет, тогда как возраст работника не может превышать 100), поэтому в классе Boss имеется метод с таким же именем. Обратите внимание на слово new при объявлении метода:

   ...

   public new void setAge(int age)

   ...

Таким образом, в производном классе можно что-нибудь добавлять и что-нибудь изменять по отношению к классу родительскому. Но убирать что-нибудь, полученное в наследство от родительского класса, нельзя.

При запуске  программа даст вполне ожидаемый результат - в возраст работника запишется 50, в возраст босса - 0.

1.4  Запись в экземпляр базового класса экземпляра производного

В переменной типа базового класса можно хранить и переменные производных классов. Например, текст метода Main из класса Test можно переписать следующим образом:

       ...

       static void Main(string[] args)

       {

           Worker wrk1 = new Boss();

           ...

Здесь объявили переменную wrk1 типа Worker. Вот другой пример на эту же тему:

       Worker wrk1;

       Boss boss = new Boss();

       wrk1=boss;

       ...

Здесь  опять записываем в переменную wrk1 (типа Worker) переменную boss (типа Boss).

Но, несмотря на то, что  записываем в переменную wrk1 или с помощью оператора new или посредством присваивания экземпляр производного класса, все равно методы производного класса  использовать нельзя (на самом деле из производного класса  нельзя использовать не только методы, но и переменные)!

Например, следующие строки выведут на экран 50, а не ноль:

   wrk1.setAge(50); //Вызывается метод класса Worker, а не класса Boss

   Console.WriteLine("Возраст работника " + wrk1.getAge());

Данная возможность используется в следующих случаях - например, в  фирме есть работники разных типов - программисты, директора, бухгалтера и т. п. Так как у всех категорий работников есть что-общее, то  создается базовый класс Worker и производные от него специализированные классы. Далее  в программе можно объявить массив типа Worker. Так вот, в этом массиве можно будет хранить всех работников (т. е. экземпляры всех классов, производных от класса Worker). И это удобно - одним циклом  можно будет  начислить всем зарплату и т. п.

1.5 Вложенные классы

Иногда некоторый класс играет чисто вспомогательную роль для другого класса и используется только внутри него. В этом случае логично описать его внутри существующего класса. Вот пример такого описания:

using System;

namespace test

{

   class ClassA

   {

       //Вложенный класс

       private class ClassB

       {

           public int z;

       }

       //Переменная типа вложенного класса

       private ClassB w;

       //Конструктор

       public ClassA()

       {

           w=new ClassB();

           w.z=35;

       }

       //Некоторый метод

       public int SomeMethod()

       {

           return w.z;

       }

   }

   class Test

   {

       static void Main(string[] args)

       {

           ClassA v=new ClassA();

           int k=v.SomeMethod();

           Console.WriteLine(k);

       }

   }

}

Здесь класс ClassB объявлен внутри класса ClassA. Объявлен он со словом private, так что его экземпляры можно создавать только внутри класса ClassA (что и делается в конструкторе класса ClassA). Методы класса ClassA имеют доступ к экземпляру класса ClassB (как, например, метод SomeMethod).

Вложенный класс имеет смысл использовать тогда, когда его экземпляр используется только в определенном классе. Кроме того, при использовании вложенных классов улучшается читаемость кода - если  не интересует устройство основного класса, то разбирать работу вложенного класса нет необходимости.

2 Примеры программ

2.1. «Классы и операции»

Рассмотрим следующий пример: Создать класс SafeArray для работы с массивами целых чисел. Класс имеет следующие возможности

  •  конструктор, позволяющий создать неинициализированный массив или инициализировать массив  серией целочисленных значений произвольного размера.
  •  Выполнять поэлементное сложение элементов двух массивов
  •  Выполнять операцию инкремента каждого элемента массива на заданное число
  •  Выводить массив на экран.
  •  Обрабатывать исключительные ситуации.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

// Конструктор, формирует пустой массив, состоящий из

// определенного числа элементов (size) и запоминающий

// количество элементов массива в скрытом поле length

   class SafeArray

   {

       public SafeArray(int size)

       {

           a = new int[size];

           length = size;

       }

// Конструктор, заполняющий формируемый массив

// конкретными числами и запоминающий

// количество элементов массива в скрытом поле length

       public SafeArray(params int[] arr)

       {

           length = arr.Length;

           a = new int[length];

           for (int i = 0; i < length; ++i) a[i] = arr[i];

       }

// Метод, выполняющий поэлементное сложение двух

// массивов. Количество складываемых элементов

// определяется длиной меньшего массива (т.е. массива,

// содержащего меньше элементов)

       public static SafeArray operator +(SafeArray x, SafeArray y)

       {

           int len = x.length < y.length ? x.length : y.length;

           SafeArray temp = new SafeArray(len);

*           for (int i = 0; i < len; ++i) temp[i] = x[i] + y[i];

           return temp;

       }

// Метод,  выполняющий сложение массива с числом

       public static SafeArray operator +(SafeArray x, int y)

       {

           SafeArray temp = new SafeArray(x.length);

           for (int i = 0; i < x.length; ++i) temp[i] = x[i] + y;

           return temp;

       }

// Метод,  выполняющий сложение числа с массивом

       public static SafeArray operator +(int x, SafeArray y)

       {

           SafeArray temp = new SafeArray(y.length);

           for (int i = 0; i < y.length; ++i) temp[i] = x + y[i];

           return temp;

       }

// Метод, выполняющий увеличение на единицу каждого

// элемента массива

       public static SafeArray operator ++(SafeArray x)

       {

           SafeArray temp = new SafeArray(x.length);

           for (int i = 0; i < x.length; ++i) temp[i] = ++x[i];

           return temp;

       }

// Индексатор для получения i-го элемента массива (get)

// или для присвоения i-му  элементу массива значения

// value.

// Если значение индекса недопустимо, обрабатывается

// ошибочная ситуация

       public int this[int i]

       {

           get

           {

               if (i >= 0 && i < length) return a[i];

               else throw new IndexOutOfRangeException();

           }

           set

           {

               if (i >= 0 && i < length) a[i] = value;

               else throw new IndexOutOfRangeException();

           }

       }

// Метод для вывода массива на экран

       public void Print(string name)

       {

           Console.WriteLine(name + ":");

           for (int i = 0; i < length; ++i) Console.Write("\t" + a[i]);

           Console.WriteLine();

       }

// скрытые поля

       int[] a;  // массив

       int length; // количество элементов в массиве

   }

// Консольное приложение

   class Class1

   {

// Метод, которому передается управление после

// запуска программы

       static void Main()

       {

           try

           {

// создание массива, состоящего из  5 элементов

               SafeArray a1 = new SafeArray(5, 2, -1, 1, -2);

// вывод массива 1на экран

               a1.Print("Массив 1");

// создание массива, состоящего из  3 элементов

               SafeArray a2 = new SafeArray(1, 0, 3);

// вывод массива 2 на экран

               a2.Print("Массив 2");

// Сложение двух массивов

               SafeArray a3 = a1 + a2;

// вывод на экран массива, полученного в результате

// сложения массивов 1 и 2

               a3.Print("Массив 3");

// к каждому элементу массива 1 прибавляется число 100

               a1 = a1 + 100;

// вывод на экран  преобразованного массива 1

               a1.Print("100 + Массив 1");

//каждый элемент массива увеличивается на 1,

// удваивается и к результату прибавляется 1

// (правда, не в том порядке как описано выше)

               a2 += ++a2 + 1;

// вывод на экран  преобразованного массива 2

               a2.Print("++a2, a2 + a2 + 1");

           }

            catch (Exception e)

           {

                Console.WriteLine(e.Message);

           }

       }

   }

}

Результат работы приложения приведен на рисунке 1.

Рисунок 1 – результат работы приложения 1

2.2. Наследование

Рассмотрим пример примитивный программы для работы с двумя классами.

Суперкласс – «А» имеет поле – «а» и метод – «AddA()», увеличивающий значение поля «а» на 1.

Дочерний класс «В» имеет новый метод –«SubA()» уменьшающий значение поля «а» на 1.

Листинг программы имеет вид:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace oop2

{

   class A

   {

       public int a;

       public void AddA()

       {

           a++;

       }

   }

   class B : A

   {

       public void SubA()

       {

           a--;

       }

   }

   class Program

   {

       static void Main(string[] args)

       {

           // Создать объекты

           A a = new A();

           B b = new B();

           // А=0

           a.a = 0;

           // А=1

           a.AddA();

           Console.WriteLine("A = {0}", a.a);

           a.AddA();

           // A = 2

           Console.WriteLine("A = {0} ", a.a);

           // B = 10

           b.a = 10;

           // B = 9

           b.SubA();

         

           Console.WriteLine("B = {0}", b.a);  

       }

   }

}

Экранная форма представлена на рисунке 2.

Рисунок 2 – результат работы приложения 2

2. Задания

Вариант 1

Описать класс, реализующий десятичный счетчик, который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне.

Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство, позволяющее получить его текущее состояние.

При выходе за границы диапазона выбрасываются исключения. Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс Счетчик1, который может увеличивать или уменьшать свое значение на любое введенное число в заданном диапазоне.

Вариант 2

Описать класс, реализующий шестнадцатеричный счетчик, который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне.

Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, — и свойство, позволяющее получить его текущее состояние.

При выходе за границы диапазона выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, который может увеличивать или уменьшать свое значение на любое введенное число в заданном диапазоне

Вариант 3

Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, перемещения на плоскости, изменения размеров и вращения на заданный угол.

Описать свойства для получения состояния объекта.

При невозможности построения треугольника выбрасывается исключение.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс Прямоугольник, который может увеличивать или уменьшать свое значение на любое введенное число в заданном диапазоне

Вариант 4

Построить описание класса, содержащего информацию о почтовом адресе организации.

Предусмотреть возможность раздельного изменения составных частей адреса и проверки допустимости вводимых значений.

В случае недопустимых значений полей выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, который содержит информацию о данной организации – наименование, количество сотрудников и т.п.  Предусмотреть возможность раздельного изменения наименования организации и числа сотрудников и проверки допустимости вводимых значений

Вариант 5

Составить описание класса для представления комплексных чисел.

Обеспечить выполнение операций сложения и вычитания комплексных чисел.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, выполняющий операцию  умножения комплексных чисел.

Вариант 6

Составить описание класса для вектора, заданного координатами его концов в трехмерном пространстве.

Обеспечить операции сложения и вычитания векторов с получением нового вектора (суммы или разности).

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, обеспечивающий операции вычисления скалярного произведения двух векторов, длины вектора и косинуса угла между векторами.

Вариант 7

Составить описание класса прямоугольников со сторонами, параллельными осям координат.

Предусмотреть возможность перемещения прямоугольников на плоскости и  изменение размеров прямоугольника.

Написать программу, демонстрирующую все разработанные элементы класса.

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

Вариант 8

Составить описание класса для представления даты.

Предусмотреть возможности установки даты и изменения ее отдельных полей (год, месяц, день) с проверкой допустимости вводимых значений. В случае недопустимых значений выбрасываются исключения.

Создать методы изменения даты на заданное количество дней, месяцев и лет.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, определяющий по дате день недели.

Вариант 9

Составить описание класса для представления времени.

Предусмотреть  возможности установки времени и изменения его отдельных полей (час, минута, секунда) с проверкой допустимости вводимых значений.

В случае недопустимых  значений полей выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, реализующий методы изменения времени  на заданное количество часов, минут и секунд.

Вариант 10

Составить описание класса многочлена вида ах2 + bх + с. Предусмотреть методы, реализующие:

  •  вычисление значения многочлена для заданного аргумента;
  •  вывод на экран описания многочлена.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, реализующий операции сложения, вычитания и умножения многочленов с получением  нового объекта-многочлена.

Вариант 11

Описать класс, представляющий треугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения медиан.

Описать свойства для получения состояния объекта.

При невозможности  построения треугольника выбрасывается исключение.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, представляющий прямоугольник. Предусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения диагоналей.

Вариант 12

Описать класс, представляющий круг. Предусмотреть методы для создания  объектов, вычисления площади круга, длины окружности и проверки попадания  заданной точки внутрь круга.

Описать свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, представляющий кольцо. Предусмотреть методы для создания  объектов, вычисления площади кольца и проверки попадания  заданной точки внутрь кольца.

Вариант 13

Описать класс для работы со строкой, позволяющей хранить только двоичное число и выполнять с ним арифметические операции сложения,  вычитания, умножения и деления.

Предусмотреть инициализацию проверкой допустимости значений. В случае недопустимых значений выбрасываются исключения.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс для работы со строкой, позволяющей хранить только двоичное число и выполнять с ним логические операции – «AND», «OR», «NOT»  и «XOR».

Вариант 14

Описать класс дробей — рациональных чисел, являющихся отношением двух целых чисел.

Предусмотреть методы сложения и вычитания дробей.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс дробей — рациональных чисел, являющихся отношением двух целых чисел. Предусмотреть методы умножения и деления дробей.

Вариант 15

Описать класс «файл», содержащий сведения об имени, дате создания и длине файла.

Предусмотреть инициализацию с проверкой допустимости значений полей.

В случае недопустимых значений полей выбрасываются исключения. Описать метод добавления информации в конец файла и свойства для получения состояния файла,

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс «файл», содержащий атрибуты файла (скрытый, только для чтения). Предусмотреть операцию проверки допустимости операций записи, чтения и отображения.

Вариант 16

Описать класс «комната», содержащий сведения о метраже, высоте потолков и количестве окон.

Предусмотреть инициализацию с проверкой допустимости значений полей. В случае недопустимых значений полей выбрасываются исключения.

Описать методы вычисления площади и объема комнаты и свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс «комната». Предусмотреть метод для расчета необходимого количества обоев при ремонте.

Ва|риант 17

Описать класс, представляющий нелинейное уравнение вида ах - cos(x)=0.

Описать метод, вычисляющий решение этого уравнения на заданном интервале методом деления пополам  и выбрасывающий исключение в случае отсутствия корня. Описать свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, реализующий метод вычисления решения этого уравнения на заданном интервале методом Ньютона.

Вариант 18

Описать класс, представляющий неполное квадратное уравнение вида ах2 + bх = 0. Описать метод, вычисляющий решение этого уравнения и выбрасывающий исключение в случае отсутствия корней. Описать свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс, представляющий полное квадратное уравнение вида ах2 + bх + с = 0. Описать метод, вычисляющий решение этого уравнения

Вариант 19

Описать класс «процессор», содержащий сведения о марке, тактовой частоте, объеме кэша и стоимости.

Предусмотреть инициализацию с проверкой допустимости значений полей. В случае недопустимых значений полей выбрасываются исключения. Описать свойства для получения состояния объекта.

Описать класс «материнская плата», включающий класс «процессор» и объем установленной оперативной памяти. Предусмотреть инициализацию с проверкой допустимости значений поля объема памяти. В случае недопустимых значений поля выбрасывается исключение.

Описать свойства для получения состояния объекта.

Написать программу, демонстрирующую все разработанные элементы классов.

Вариант 20

Описать класс «цветная точка». Для точки задаются координаты и цвет. Цвет описывается с помощью трех составляющих (красный, зеленый, синий).

Предусмотреть различные методы инициализации объекта с проверкой допустимости значений. Допустимым диапазоном для каждой составляющей является [0… 255]. В случае недопустимых значений полей выбрасываются исключения.

Описать свойства для получения состояния объекта и метод изменения цвета.

Написать программу, демонстрирующую все разработанные элементы класса.

Создать дочерний класс «линия». Предусмотреть различные методы инициализации объекта с проверкой допустимости значений.


 

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

62124. Расчет электрических цепей постоянного тока 578.7 KB
  В работе приводится: номер и название работы; задание к работе; схема электрической цепи; исходные данные к расчету в соответствии с вариантом; результаты расчетов с краткими комментариями. Расчет многоконтурной линейной электрической цепи...
62126. Дослідження особливостей предмета та методології макроекономічної науки 35.61 KB
  Завдання заняття: Закріпити теоретичні знання студентів шляхом опитування пройденого лекційного матеріалу за темою: Макроекономіка як наука. Макроекономіка в системі економічних наук: а рівневий підхід до вивчення економіки: мікроекономіка та макроекономіка; б предмет дослідження макроекономіки...
62128. Англійська мова. Методичні вказівки 73.1 KB
  В даній розробці викладені основні теоретичні положення лексичної основи перекладу. Знання лексичної основи перекладу будуть корисними при перекладі спеціальної літератури. Робота з текстами розширить знання студентів з предмету,розвине навички добування корисної інформації.