Отношения и операции над отношениями

Объекты и операторы присваивания в языке программирования С#. Условный оператор if и логические операции. Работа со средой разработки Visual studio 2013 Community, запуск программы и создание нового проекта. Создание окна формы и обработчиков событий.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.06.2015
Размер файла 457,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Кубанский государственный технологический университет»

(ФГБОУ ВПО Куб ГТУ)

Кафедра ИНФОРМАЦИОННЫХ СИСТЕМ И ПРОГРАММИРОВАНИЯ

Институт компьютерных систем и информационной безопасности

КУРСОВОЙ ПРОЕКТ

(пояснительная записка)

по дисциплине: Теория языков программирования и методы трансляции Вариант №15

на тему: Отношения и операции над отношениями

Выполнил студент:

Сухоруков Роман Викторович

Направления Информатика и вычислительная техника

группы: 230100

Руководитель работы: Ключко В.И.

Нормоконтролер

Краснодар, 2015 г.

Реферат

Цель курсового проекта - закрепить основы и углубить знания в области теории языков программирования и методов трансляции.

Курсовой проект содержит 19 с., 3 табл., 4 рис.

Ключевые слова: транслятор, лексический блок, синтаксический блок, генератор кода, синтез.

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

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

Содержание

Введение

1. Теоретическая часть

1.1 Объекты языка программирования c#: Тип DOUBLE

1.2 Операторы: присваивания языка программирования c#

1.3 Условный оператор if языка программирования c#

1.4 Логические операции

2. Практическая часть

2.1 Создание программы

2.2 Работа программы

Заключение

Список использованных источников

Введение

Теория формальных языков, грамматик и автоматов составляет фундамент синтаксических методов. Основы этой теории были заложены Н. Хомским в 40-50-е годы XX столетия в связи с его лингвистическими работами, посвященными изучению естественных языков. Но уже в следующем десятилетии синтаксические методы нашли широкое практическое применение в области разработки и реализации языков программирования.

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

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

1. Теоретическая часть

1.1 Объекты языка программирования c#: Тип DOUBLE

Представляет число двойной точности с плавающей запятой.

Числом двойной точности -- компьютерный формат представления числа с плавающей запятой, занимающий в памяти 64 бита, или 8 байт. Как правило, обозначает числа с плавающей запятой стандарта IEEE 754.

Числа с плавающей запятой (двойной/одинарной/четверной точности) поддерживаются сопроцессором (в 80386 выполнен как отдельный модуль, начиная с 80486 является встроенным в главный процессор. Сопроцессор, хотя он сейчас и является частью главного процессора, принято называть FPU -- Floating Point Unit, буквально Модуль Плавающей Запятой). В компьютерах, которые имеют 64-разрядные числа с плавающей запятой, большинство чисел хранятся в двойной точности, поскольку использование чисел одинарной точности обеспечивает почти такую же производительность. Но все вычисления в FPU осуществляются в 80-битном (расширенном, extended) представлении.

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

Числа двойной точности с плавающей запятой обеспечивают точность в 15-17 десятичных цифр и масштабы в диапазоне примерно от 10?308 до 10308.

1.2 Операторы: присваивания языка программирования c#

Оператор присваивания обозначается одиночным знаком равенства (=). В С# оператор присваивания действует таким же образом, как и в других языках программирования. Ниже приведена его общая форма:

имя_переменной = выражение

Здесь имя_переменной должно быть совместимо с типом выражения. У оператора присваивания имеется одна интересная особенность, о которой вам будет полезно знать: он позволяет создавать цепочку операций присваивания. Рассмотрим следующий фрагмент кода:

1 int x, у, z;

2 x = у = z = 10; // присвоить значение 10 переменным x, у и z

В приведенном выше фрагменте кода одно и то же значение 10 задается для переменных х, у и z с помощью единственного оператора присваивания. Это значение присваивается сначала переменной z, затем переменной у и, наконец, переменной х. Такой способ присваивания "по цепочке" удобен для задания общего значения целой группе переменных.

Составные операторы присваивания

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

x = x + 1; // Можно переписать следующим образом

x += 1;

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

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

имя переменной op = выражение

где op -- арифметический или логический оператор, применяемый вместе с оператором присваивания. Ниже перечислены составные операторы присваивания для арифметических и логических операций:

Таблица 1. Составные операторы присваивания

Оператор

Аналог (выражение из вышеуказанного примера)

+=

x = x + 1;

-=

x = x - 1;

*=

x = x*1;

/=

x = x/1;

%=

x = x%1;

|=

x = x | 1;

^=

x = x^1;

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

У составных операторов присваивания имеются два главных преимущества. Во-первых, они более компактны, чем их "несокращенные" эквиваленты. И во-вторых, они дают более эффективный исполняемый код, поскольку левый операнд этих операторов вычисляется только один раз.

1.3 Условный оператор if языка программирования c#

Условные операторы позволяют управлять потоком выполнения программы, чтобы не выполнялась каждая строка кода, как она следует в программе. Давайте рассмотрим все условные операторы языка C#:

Для организации условного ветвления язык C# унаследовал от С и С++ конструкцию if...else. Ее синтаксис должен быть интуитивно понятен для любого, кто программировал на процедурных языках:

if (условие)

оператор (операторы)

else

оператор (операторы)

Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок {...}. (Это также касается других конструкций C#, в которых операторы могут быть объединены в блок -- таких как циклы for и while.)

Стоит обратить внимание, что в отличие от языков С и С++, в C# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0.

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

Количество else if, добавляемых к единственному if, не ограничено. Один момент, который следует отметить касательно if: фигурные скобки применять не обязательно, если в условной ветви присутствует только один оператор, как показано в исходном примере.

оператор с# создание программа

1.4 Логические операции

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

Ниже перечислены операторы отношения:

Таблица 2.Операторы отношения C#

Оператор

Значение

==

Равно

!=

Не равно

>

Больше

<

Меньше

>=

Больше или равно

<=

Меньше или равно

К числу логических относятся операторы, приведенные ниже:

Таблица 3. Логические операторы C#

Оператор

Значение

&

И

|

ИЛИ

^

Исключающее ИЛИ

&&

Укороченное И

||

Укороченное ИЛИ

!

НЕ

Результатом выполнения оператора отношения или логического оператора является логическое значение типа bool.

В целом, объекты можно сравнивать на равенство или неравенство, используя операторы отношения == и !=. А операторы сравнения <, >, <= или >= могут применяться только к тем типам данных, которые поддерживают отношение порядка. Следовательно, операторы отношения можно применять ко всем числовым типам данных. Но значения типа bool могут сравниваться только на равенство или неравенство, поскольку истинные (true) и ложные (false) значения не упорядочиваются. Например, сравнение true > false в C# не имеет смысла.

Логические операторы в C# выполняют наиболее распространенные логические операции. Тем не менее, существует ряд операций, выполняемых по правилам формальной логики. Эти логические операции могут быть построены с помощью логических операторов, поддерживаемых в C#. Следовательно, в C# предусмотрен такой набор логических операторов, которого достаточно для построения практически любой логической операции, в том числе импликации. Импликация -- это двоичная операция, результатом которой является ложное значение только в том случае, если левый ее операнд имеет истинное значение, а правый -- ложное. (Операция импликации отражает следующий принцип: истина не может подразумевать ложь.)

Операция импликации может быть построена на основе комбинации логических операторов ! и |:

!p | q

Укороченные логические операторы

В C# предусмотрены также специальные, укороченные, варианты логических операторов И и ИЛИ, предназначенные для получения более эффективного кода. Поясним это на следующих примерах логических операций. Если первый операнд логической операции И имеет ложное значение (false), то ее результат будет иметь ложное значение независимо от значения второго операнда. Если же первый операнд логической операции ИЛИ имеет истинное значение (true), то ее результат будет иметь истинное значение независимо от значения второго операнда. Благодаря тому, что значение второго операнда в этих операциях вычислять не нужно, экономится время и повышается эффективность кода.

Укороченная логическая операция И выполняется с помощью оператора &&, а укороченная логическая операция ИЛИ -- с помощью оператора ||. Этим укороченным логическим операторам соответствуют обычные логические операторы & и |. Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости.

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

2. Практическая часть

2.1 Создание программы

Запуск Visual studio 2013 Community

Открывается главное окно и в меню Файл выбрать - Создать/Новый проект. Открывается окно создания нового проекта (рисунок 1), где среди типов проектов выбрать - Visual C# -Windows и в шаблонах Visual Studio выбрать Приложение Windows Forms.

Рисунок 1. Окно создания нового проекта

Далее вводим имя проекта krd, определяем его расположение C:\Users\Rtem\Desktop\Летняя сессия 2015\проект krd\ и нажимаем кнопку OK

Конструирование формы

Открывается форма (рисунок 2), где поместим необходимые элементы: три метки A Label для надписей, три текстовых поля TextBox для ввода и вывода необходимых значений, три кнопки Button для создания krd, его работы и завершения работы программы и таблица DataGridView. Для чего выполнить следующее:

Рисунок 2. Окно создание новой формы

a/ “перетащить” мышкой с панели элементов Toolbox текстовое поле TextBox1 и метку Label1 для ввода значения (a) входных символов конечного автомата krd и надписи Aлфавит А;

b/ аналогичную операцию проделать для текстового поля TextBox2 и метки Label2 для вывода выходных символов (v) krd и надписи Aлфавит V;

c/ текстовое поле TextBox3 и метку Label3 поместить для задания числа состояний krd и надписи Множество Q;

d/ “перетащить” мышкой с панели элементов кнопку Button1 и в открытом окне Свойства (Properties) в свойстве Text ввести надпись Синтез для создания krd;

e/ аналогичную операцию проделать для кнопку Button2 и в открытом окне Свойства

(Properties) в свойстве Text ввести надпись Пуск для начала работы krd;

f/ аналогичную операцию проделать для кнопку Button3 и в открытом окне Свойства

(Properties) в свойстве Text ввести надпись Стоп для завершения работы krd ;

g / “перетащить” мышкой с панели элементов таблицу DataGridView и в открытом окне Свойства (Properties) в свойстве Columns сформировать 4 столбца и ввести их обозначения q_a1, v_a1 и q_a2, v_a2.

Рисунок 3. Окно созданной формы

Создание обработчиков событий

Двойное нажатие кнопки Синтез формирует первый обработчик событий

private void Синтез _Click(object sender, EventArgs e)

{

}

где между фигурными скобками будет создана программа, синтезирующая krd, а двойное нажатие кнопки Пуск формирует второй обработчик событий

private void Пуск _Click(object sender, EventArgs e)

{

}

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

private void Стоп _Click(object sender, EventArgs e)

{

}

где между фигурными скобками ввести команду Close() для завершения работы программы.

Рисунок 3. Создание обработчиков событий.

a/ Синтез krd

Программа создается в первом обработчике событий кнопки Синтез:

private void button1_Click(object sender, EventArgs e)

{

Form.Rows.Clear(); //обновление таблицы

int q = int.Parse(textBox3.Text); //инициализация числа состояний krd

krd.Q = 0; //инициализация начального состояний krd

Random x = new Random(); //задание случайной переменной х

for (int i = 0; i < q; i++) //задание цикла случайного ввода

//значений каждой ячейки krd

{

Form.Rows.Add(x.Next(q), x.Next(2), x.Next(q), x.Next(2));

//создание заголовка каждого ряда krd, например, для 1 ряда - q0

Form.Rows[i].HeaderCell.Value = "q" + i.ToString();

}

}

На рисунке 4 показано задание 4-х состояний

krd Q={q0, q1, q2, q3},

вводимых в заголовки каждого ряда krd. В первом ряду krd, обозначенном - q0, первая ячейка x.Next(q)=0, что соответствует состоянию q0, вторая ячейка x.Next(2)=1, что соответствует выходному сигналу v=1, третья ячейка x.Next(q)=3, что соответствует состоянию q3, а четвертая ячейка x.Next(2)=1, что соответствует выходному сигналу v=1, при этом x.Next(2) означает, что случайный выбор осуществляется с равной вероятностью из 2-х значений - 0 и 1, а x.Next(q) означает, что случайный выбор осуществляется с равной вероятностью из 4-х состояний - q0, q1, q2, q3. Напоминаем, что начальное состояние krd - q0 (krd.Q = 0).

б/ Работа krd

Программа создается во втором обработчике событий кнопки Пуск:

private void Пуск_Click(object sender, EventArgs e)

{

Form.Rows[KA.Q].HeaderCell.Style.BackColor = Color.WhiteSmoke; //восстановление цвета

int a = int.Parse(textBox1.Text); //инициализация входного символа 0 или 1

if (a == 0)

{

krd.V = (int) Form [1, krd.Q].Value; //формирование выходного символа

krd.Q = (int) Form [0, KA.Q].Value; //переход в очередное состояний krd

}

else

{

krd.V = (int) Form [3, krd.Q].Value; //формирование выходного символа

krd.Q = (int) Form [2, KA.Q].Value; //переход в очередное состояний krd

}

textBox2.Text = krd.V.ToString();//выдача выходного символа

textBox3.Text = krd.Q.ToString();//показ очередного состояния krd

Form.Rows[krd.Q].HeaderCell.Style.BackColor =Color.LightPink; // цвет фона

}

в) Завершение работы krd

Нажатие кнопки Стоп включает третий обработчик событий

private void Стоп_Click(object sender, EventArgs e)

{

Close();

}

где выполняется команда Close(), что прекращает работу программы\

2.2 Работа программы

запустить программу с отладкой (без компиляции), нажатием кнопки F5;

ввести значение числа состояний krd в текстовое поле TextBox3;

нажать кнопку Синтез, что создает krd;

ввод входных сигналов а и нажатие кнопки Пуск обеспечивает работу krd;

нажать кнопку Стоп для прекращения работы krd.

Заключение

В процессе выполнения курсового проекта, была изучена современная среда Microsoft Visual Studio 2013 Community.

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

Была создана программа, способная выполнять случайный выбор равной вероятности из двух значений - 0 и 1, где сам случайный выбор осуществляется с равной вероятностью из 4 - х состояний - q0, q1, q2, q3.

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

Список использованных источников

1. Прокис Дж. Цифровая связь / Пер. с англ.; Под ред. Д.Д. Кловского. - М. Радио и связь. 2000.

2. Теория электрической связи: учебник для вузов / А.Г. Зюко [и др.] - М.: Радио и связь, 1998.

3. Питерсон У.,Уэлдон Э. Коды, исправляющие ошибки. - М.: Мир, 1976.

4. Кузьмин И.В., Ключко В.И., Литвин В.А. Кодирование и декодирование в информационных системах.- Киев: Вища школа, 1985.

5. Кодирование информации: метод. указания для студентов специальности 220400/ Сост. В.И. Ключко. - Краснодар: Изд. КубГТУ, 1998.

Размещено на Allbest.ru

...

Подобные документы

  • Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.

    презентация [1,4 M], добавлен 29.04.2014

  • Создание программы, реализующей игру "Линии". Среда разработки программы, описание ее общего вида. Основные алгоритмы программы. Реализация программы в среде разработки Microsoft Visual Studio 2008 на языке объектно-ориентированного программирования С++.

    курсовая работа [639,0 K], добавлен 16.03.2012

  • Рассмотрение основ работы в Microsoft Visual Studio 2010 с языком программирования С#. Реализация программы обработки данных авиапассажиров. Выбор метода ввода данных из текстового файла. Создание фильтра для обработки списка по определенным критериям.

    курсовая работа [1,4 M], добавлен 17.01.2016

  • Общие сведения о работе программы в среде программирования Microsoft Visual Studio 2008, на языке программирования C++. Ее функциональное назначение. Инсталляция и выполнение программы. Разработанные меню и интерфейсы. Алгоритм программного обеспечения.

    курсовая работа [585,5 K], добавлен 24.03.2009

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

    курсовая работа [78,9 K], добавлен 28.12.2012

  • Понятие матриц и операции, выполняемые с ними. Разработка программы для вычислений над матрицами в среде MS Visual Studio Express с применением языка программирования C++. Работа с библиотекой математического типа vector. Реализация перегрузки операций.

    курсовая работа [107,3 K], добавлен 22.12.2010

  • Создание программы с использованием принципов объектно-ориентированного программирования на языке высокого уровня С# средствами Microsoft Visual Studio 2010. Построение алгоритма реализации. Определение математического аппарата, применение его в задаче.

    курсовая работа [500,4 K], добавлен 13.01.2015

  • Объектно-ориентированная технология создания программ. Среда разработки Visual Studio.NET. Особенности среды Microsoft Visual Studio 2010. Приложения C# для расчетов по формулам, консольный ввод-вывод. Форматирование значений данных. Программы с циклами.

    методичка [2,1 M], добавлен 11.09.2014

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

    презентация [187,9 K], добавлен 02.04.2014

  • Создание приложений: ProgressBar, вычисление по формуле, двумерный массив, калькулятор, медиа-плеер, одномерный массив, список, текстовый редактор. Создание различных обработчиков событий. Разработка заставки, окна ввода пароля и главной формы.

    лабораторная работа [781,7 K], добавлен 22.01.2015

  • Среда визуального программирования Delphi. Арифметические и логические операции. Объекты программы Microsoft Access. Состояние записи в БД. Объектно-ориентированные и гибридные базы данных. Операторы управления данными. Программное обеспечение программы.

    курсовая работа [1,4 M], добавлен 10.05.2016

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

    контрольная работа [1,1 M], добавлен 20.02.2015

  • Среда программирования Embarcadero RAD Studio. Создание окна, которое отображает системную дату и время. Выполнение выбранного действия в определенный промежуток времени, заданный пользователем. Руководство программиста. Минимальные системные требования.

    курсовая работа [85,2 K], добавлен 16.06.2014

  • Структура программы в Турбо Паскале и определение переменной в ней. Понятие идентификатора и его основные ограничения. Операторы присваивания в языке программирования. Процедура ввода-вывода информации. Способы описания массива, обработка его элементов.

    контрольная работа [134,5 K], добавлен 28.09.2012

  • Система программирования - Visual Basic. Новые возможности. Быстрый запуск проекта. Средства управления. Что позволяет Visual Basic. Краткое описание работы. Corel Draw. Отличие векторной графики от растровой. Краткое описание работы в Corel Draw.

    курсовая работа [1,3 M], добавлен 04.10.2008

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

    контрольная работа [447,4 K], добавлен 08.10.2012

  • Разработка игры "Угадай персонажа", ее суть и содержание. Запоминание новых персонажей и вопросов, коррекция базы данных. Использование языка программирования С++ и среды разработки Microsoft Visual Studio 2010. Алгоритмы и методы, структура программы.

    курсовая работа [571,9 K], добавлен 14.07.2012

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

    лабораторная работа [1,1 M], добавлен 10.12.2014

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Программирование линейных алгоритмов. Процедуры ввода READ и READLN и вывода WRITE и WRITELN. Примеры решения задач на языке Паскаль. Оператор присваивания и выражения. Основные способы формирования структурных операторов. Операторы вызова процедур.

    курсовая работа [44,3 K], добавлен 18.03.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.