43661

Обработка динамических списков

Курсовая

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

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

Русский

2013-11-04

306.65 KB

34 чел.

ПЕНЗЕНСКАЯ ГОСУДАРСТВЕННАЯ ТЕХНОЛОГИЧЕСКАЯ АКАДЕМИЯ

                        Факультет ИПТ                          Кафедра ВМиС

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОЙ РАБОТЕ ПО ДИСЦИПЛИНЕ  “АЯиП”

На тему: “Обработка динамических списков”

                                                                                 Выполнил студент гр. 10В2 Пономарёв К.А..

                                                                Руководитель: Кутепова  Л.А.     

Проект защищён с оценкой:_____________

2011-2012 уч. Год

З А Д А Н И Е

на курсовое проектирование по курсу

  «Алгоритмические языки и программирование»           

Студенту  Пономарёву К.А.      Группа 10В2           

Тема проекта Создание и обработка динамического списка            

                   

                   

Исходные данные (технические требования на проектирование)

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

Программа должна выполнять следующие функции:            

1) создавать динамический список и заполнять поля данных элементов динамического
списка данными из текстового файла;               

2) выводить данные динамического списка в файл в виде таблицы;           

3) производить добавление элемента в начало списка;             

4) производить удаление элемента с заданным номером;            

5) производить обмен местами элементов с заданными ключами.           

Предметная область элементов динамического списка – «планеты солнечной системы». Запись должна содержать не менее 4-х информационных полей.             

При разработке программы использовать заголовочные файлы пользователя ________          _______________________________________________  

                   

                   

                   

                   

                   

                   

                   

                   

                   

                   

                   

Объем работы по курсу

1. Расчетная часть

Отсутствует                  

                   

                   

                   

                   

                   

                   

                   

                   

                   

                   

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

Схема программы                 

                   

                   

                   

                   

                   

                   

                   

3. Экспериментальная часть

Разработка, отладка и тестирование программы             

                   

                   

                   

                   

                   

                   

                   

Срок выполнения проекта по разделам

1. Постановка задачи     к  20 сентября   2011 г.

2. Метод решения задачи и ее формализация  к  27 сентября   2011 г.

3. Выбор языка программирования   к  04 октября   2011 г.

4. Разработка состава и структуры данных  к  04 октября   2011 г.

5. Разработка алгоритма решения задачи   к  18 октября   2011 г.

6. Разработка программы     к  01 ноября   2011 г.

7. Отладка и тестирование программы   к  22 ноября   2011 г.

8. Оформление ПЗ      к  20 декабря   2011 г.

   Дата выдачи задания «  20  »  сентября  2011 г.

   Дата защиты проекта « »     2011 г.

Руководитель   Л.А.Кутепова

Задание получил «  20  »  сентября 2011  г.

Студент  Пономарев К.А. 


СОДЕРЖАНИЕ

Введение…………………………………………..…………………………………………….....6

  1.  Постановка задачи……………………………….……………………………………………………........7
  2.  Метод решения задачи и её формализация……………………………………………………..….....8
  3.  Выбор языка программирования…………………………………….………………….…………..…11
  4.  Разработка состава и структуры исходных данных результатов……..…………………………12
  5.  Разработка алгоритма решения задачи………………………………………...……………..……..13
  6.  Разработка программы…………………………………………………....…………………………...14
  7.  Отладка и тестирование программы……………………………………..……….…..……………….15

Заключение……………………………………….…………………………………………………………….20

Библиографический список………………………………………………………………………………….20

Приложение 1. Схемы программы………………………………………………………………………...21

Приложение 2. Листинг программы………………………………………..……………………………...25

КР.230101.14.2011  81

Изм.

Лист

№ докум.

Подп.

Дата

Разраб.

Пономарев К.А.

Создание и обработка динамического списка

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

Лит.

Лист

Листов

Пров.

Кутепова Л.А.

 3

Н. Контр.

 

    ПГТА, гр. 10В2

Утв.

Введение

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

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

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

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

 

Постановка задачи.

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

Программа должна выполнять следующие функции:

  1.  Создавать динамический список и заполнять поля данных элементов динамического списка данными из текстового файла;
  2.  Выводить данные динамического списка на экран и в файл в виде таблицы;
  3.  Добавлять элемент в список после указанного ключа
  4.  Производить удаление элемента по номеру;
  5.  Работу программы регулировать с помощью меню.

Метод решения задачи и ее формализация.

Для более удобного и простого решения поставленной задачи мы разбиваем её на отдельные подзадачи. Управление динамическим списком происходит в файле funcs.cpp. Функция  Input() принимает введенные данные пользователя и на их основе создаёт динамический список. Функция  Output()  выводит данные на экран и в файл. Функция  Add()  добавляет данные в динамический список. Функция  Del()  удаляет запись из списка после указанного номера. Функция StructSave()  сохраняет структуру и данные динамического списка в файл. Функция  StructLoad()  загружает структуру и данные динамического списка в программу.

В программе используются INFO - тип (структура). Содержит 4 полея. Первое поле типа int (счетчик). Остальные поля типа char (название планеты, площадь, количество спутников).  

Динамический список.

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

Наряду со статическими переменными, для которых выделяется место в оперативной памяти (ОП) в течение всего периода работы программы, в языке  Си++ могут быть использованы динамические переменные, которые создаются и уничтожаются по необходимости (т.е. для них выделяется ОП или от них освобождается ОП). В этом случаи одни и те же участки ОП в различные моменты времени могут быть заняты различными переменными в течение периода работы программы, что позволяет уменьшить требуемый объём памяти по сравнению с использованием статических переменных.

Метод нисходящего проектирования.

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

Эта технология является неотъемлемой частью создания хорошо структурированных программ. Она начинаем с записи псевдокода вершины. Вершина — это единственное предложение (оператор), выражающее общее назначение программы. Таким образом, вершина отображает всю программу в целом. К сожалению, вершина редко отображает достаточное количество деталей, на основании которых можно написать программу на C++. Поэтому надо начинать процесс детализации. Для этого вершину делят на ряд более мелких задач и записывают их в том порядке, в котором они должны выполняться. В результате получают первую детализацию: здесь использована только структура следования — записанные шаги должны выполняться последовательно один за другим. Каждая детализация, так же, как и сама вершина, является полным описанием алгоритма; меняется только уровень детализации. Многие программы могут быть логически разделены на три этапа: этап задания начальных значений, в котором задаются начальные значения переменных программы; этап обработки данных, в котором вводятся данные и устанавливаются значения соответствующих переменных программы; заключительный этап, в котором вычисляются и печатаются окончательные результаты. Программист завершает процесс нисходящей разработки с пошаговой детализацией, когда алгоритм на псевдокоде настолько детализирован, чтобы его псевдокод можно было бы преобразовать в программу на C++. Реализованная программа на C+ + окажется в этом случае простой и наглядной.

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

 

Выбор языка программирования.

C++ — компилируемый статически типизированный язык программирования общего назначения.

Поддерживает разные парадигмы программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков[1][2]. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.[2] Название «C++» происходит от названия языка C, в котором унарный оператор ++ обозначает инкремент переменной.

Являясь одним из самых популярных языков программирования,[3][4] C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Наиболее популярный проект GNUMicrosoftIntel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

При создании C++ Бьёрн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико — отчасти благодаря тому, что синтаксис C++ был основан на синтаксисе C.


Достоинства С++ :

  1.  Масштабируемость. На языке C++ разрабатывают программы для самых различных платформ и систем
  2.  Возможность работы на низком уровне с памятью, адресами, портами. Что, при неосторожном использовании, может легко превратиться в недостаток.
  3.  Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.

Разработка состава и структуры исходных данных и результатов.

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

  1.  Файл созданный ранее.
  2.  Данные для дополнения списка (название планеты, площадь, количество спутников).
  3.  Ключи (номера) элементов которые нужно добавить или удалить.

 

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


Разработка алгоритма.

Алгоритм работы программы заключается в следующем:

  1.  Вызывается основной метод программы MAIN который отрисовывает  меню для упрощения работы с программой.   
  2.  С помощью меню выбирается нужное действие – в зависимости от нажатой клавиши вызывается метод:

F1 – Input();

F2 – Output();

F3 – StructLoad();

F4 – StructSave();

F5 – Add();

F6 – Del();

ESCexit(0);

Функция Input()  добавляет новые данные в список. В качестве параметров  принимает  данные введенные с клавиатуры.  

Функция Output() выводит данные списка на экран и в файл, для этого используется  цикл while() условием выхода из цикла является нахождение элемента с указателем значение которого равно NULL.

Функция Add() добавляет новый элемент после элемента с заданным ключом. Для  этого в цикле for() осуществляется поиск элемента с ключом и после него добавляется новый элемент. Для добавления метод запрашивает данные о новом элементе.

Функция Del() удаляет элемент с заданным номером.

Функция StructSave() сохраняет текущую структуру и данные в файл.

Функция StrutLoad() загружает в программу структуру данные из файла.

Функция exit() осуществляет выход из программы..

 

Разработка программы.

В программе используются следующие стандартные процедуры,  функции и операторы:

  1.  Оператор new – выделяет место в динамической памяти.
  2.  Оператор delete – освобождает место в динамической памяти.
  3.  Функция getch()  - обрабатывает нажатие клавиши.
  4.  Функция exit() – производит выход из программы.
  5.  Функция strcmp() – для сравнения строк.
  6.  Функция fopen() – для открытия файла.
  7.  Функция fread () – считывает строку из файла.
  8.  Функция fwrite () – записывает строку в файл.
  9.  Метод fclose () закрывает файл.
  10.  Оператор scanf – ввод с клавиатуры
  11.  Оператор printf – вывод на экран

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

  1.  stdio.h – для выполнения операций ввода/вывода.
  2.  conio.h – для вызова функции getch().
  3.  string.h – для работы со строками.
  4.  locale.h – для вывода сообщений на экран на кириллице.

Программа состоит из трех файлов (DynamicList1.cpp, funcs.cpp, funcs.h)

Заголовочный файл funcs.h  подключаются к главному файлу DynamicList1.cpp в котором описана главная функция  main().

Описание  заголовочного файла funcs.h находится в файле  funcs.cpp.

Отладка и тестирование программы.

Для обнаружения и устранения ошибок в программе выполняется её отладка.

Для этого в интегрированной среде Microsoft Visual Studio существуют встроенные средства – отладчик.

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

Примеры тестовых наборов разрабатываемой программы.

Главное меню:

Ввод данных:

Вывод данных:

Добавить  запись:


 

Заключение.

Для разработки программы были проведены следующие виды работ:

Вначале мы определились с методом решения задачи и её формализации, что позволило нам понять общий подход для решения поставленной задачи. Затем мы выбрали

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

Библиографический список.

  1.  В.В Подбельский “ Язык Си++” Финансы и статистика 2001.
  2.  http://study.pgta.ru/course/view.php?id=171

Приложение 2. Схемы программы.

Схема метода Add


Схема функции Del:

Схема функции Input:

Схема функции Main:

Схема функции Output:

Схема функции Struct:

Приложение 2. Листинг программы.

Код файла funcs.cpp

#include "stdio.h"

#include "conio.h"

#include "windows.h"

// Две константы, одна используется для имени, в которую выведится файл с таблицей ( данные)

// Вторая для хранения структуры

#define OUTPUT_FILE "./OUTPUT.TXT"

#define STRUCT_FILE "./STRUCT.DAT"

// Структура, для записи

struct info

{

 int id;

 char key1[100];// Номер по порядку

 char key2[100];// Кол-во населения

 char key3[100]; // Имя президента

};

//Динамический список, хранит себе список и ссылку на следующий элемент

struct node

{

info har;

node *next;

};

// Переменные-указатели, через которые мы работаем со списком

node *first, *last, *list, *addM;

// Общий глобальный счетчик записей

int n;

// Функция для ввода данных

void Input()

{

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

 char key;

 

system("cls");

printf ("** ВВОД ДАННЫХ: ** \n");

// Проверка, есть ли уже введенные данные, тогда указатель first будет не пустой

 if (first!=NULL) {

 printf("\nОшибка! Данные уже введены.");

 getch();

 return;

}

// Выделяем память под первую запись, и увеличиваем счетчик записей на +1

n = 1;

// Выделяем память под первую запись

first = new node;

// Присваиваем ключу id номер

 (*first).har.id = n;

printf ("\nВведите название: ");

 scanf ("%s", (*first).har.key1);

printf ("\nВведие площадь: ");

scanf ("%s", (*first).har.key2);

printf ("\nВведите кол-ко спутников: ");

 scanf ("%s", (*first).har.key3);

// Указатель на следующий элемент присваиваем ноль

 first->next = NULL;

last = first;

 while (true) {

 printf ("\nПродолжить? (Нажмите Y) ");

 scanf("%s", &key);

 if (key!='y' && key!='Y')

  return;

  

 system("cls");

 printf ("** ВВОД ДАННЫХ: ** \n");

 n++;

 list = new node;

 (*list).har.id = n;

printf ("\nВведите название: ");

  scanf ("%s", (*list).har.key1);

 printf ("\nВведие площадь: ");

 scanf ("%s", (*list).har.key2);

 printf ("\nВведите кол-ко спутников: ");

 scanf ("%s", (*list).har.key3);

 

list->next = NULL;

 last->next = list;

 last = list;

}

}

//Функция вывода данных

void Output()

{

// Инициализция файла

// Переменная (дескриптор) в которй будет хранится ссылка на открытый файл

FILE *fil;

// Открываем файл, параметр w - файл для записи

 fil = fopen(OUTPUT_FILE, "w");

// Перемещаем курсор файла на начало

fseek(fil, 0, SEEK_SET);

system("cls");

printf("+-----------------------------------+\n");

printf("| # | Название | Площадь | Спутники |\n");

 printf("+-----------------------------------+\n");

fprintf(fil, "+-----------------------------------+\n");

fprintf(fil, "| # | Название | Площадь | Спутники |\n");

 fprintf(fil, "+-----------------------------------+\n");

 // Делаем ссылку лист на начало списка

 list = first;

 int i = 1;

 while (list) {

 printf("| %d |  %s  |  %s  |  %s  \n", (*list).har.id, (*list).har.key1, (*list).har.key2, (*list).har.key3);

 fprintf(fil, "| %d |  %s  |  %s  |  %s  \n", (*list).har.id, (*list).har.key1, (*list).har.key2, (*list).har.key3);

 

// Перемещаемся на следующую позицию списка

 list = list->next;

 }

 

printf("+----------------------------------------+\n");

fprintf(fil, "+----------------------------------------+\n");

// Закрываем файл

fclose(fil);

getch();

}

//Функция добавления записи

void Add()

{

// переменная, которая будет хранить имя ключа, после которого добавить значение

 char cur3[100];

system("cls");

printf ("** ДОБАВИТЬ ЗАПИСЬ: ** \n");

 printf("\nВведите номер ключа, после которого нужно добавить данные: ");

 scanf("%s", &cur3);

last = first;

list = first;

 while (list) {

// Сравнивает строки

 if (strcmp((*list).har.key1, cur3)==NULL)

  break;

 last = last->next;

 list = list->next;

}

n++;

list = new node;

(*list).har.id=n;

printf ("\nВведите название: ");

 scanf ("%s", (*list).har.key1);

printf ("\nВведие площадь: ");

scanf ("%s", (*list).har.key2);

printf ("\nВведите кол-ко спутников: ");

 scanf ("%s", (*list).har.key3);

list->next=last->next;

last->next=list;

 printf ("Хорошо!\n");

getch();

}

// Функция удаления

void Del()

{

list = first;

while(list->next) {

 last = list;

 list = list->next;

}

last->next = NULL;

delete list;

 

printf("\nПоследняя запись удалена.");

 getch();

}

void StructSave()

{

FILE *fil;

 

fil = fopen(STRUCT_FILE, "w+b");

fseek(fil, 0, SEEK_END);

 

list = first;

 while (list) {

 fwrite(list, sizeof(info), 1, fil);

 list = list->next;

}

 

fclose(fil);

}

void StructLoad()

{

FILE *fil;

info h;

int res;

 

fil = fopen (STRUCT_FILE, "r+b");

if (!fil) {

 printf("\nОшибка! Файл со структурой не существует! Загрузка невозможна.");

 getch();

 return;

}

fseek (fil, 0, SEEK_SET);

res = fread (&h, sizeof(info), 1, fil);

if (res == 1) {

 first = new node;

 (*first).har = h;

 first ->next = NULL;

 last = first;

}

do {

 res = fread (&h, sizeof(info), 1, fil);

 if (res == 1){

  list = new node;

  (*list).har = h;

  list->next = NULL;

  last->next = list;

  last=list;

 }

}

while (res == 1);

fclose(fil);

getch();

}

Код файла DynamicList1.cpp

#include "stdafx.h"

#include "stdio.h"

#include "conio.h"

#include "windows.h"

#include <locale>

#include "funcs.h"

void main()

{

char globalKey;

 

SetConsoleCP(866);

SetConsoleOutputCP(866);

setlocale(LC_ALL, "russian_russia.1251");

while (true) {

 // UI

 system("cls");

 printf("+----------------------------+\n");

 printf("+- - - - ГЛАВНОЕ МЕНЮ - - - -+\n");

 printf("+----------------------------+\n");

 printf("+ Планеты солнечной системы  +\n");

 printf("+----------------------------+\n");

 printf("|  1. Ввод ------------------|\n");

 printf("|  2. Вывод -----------------|\n");

 printf("|  3. Загрузка структуры ----|\n");

 printf("|  4. Сохранение структуры --|\n");

 printf("|  5. Добавить запись -------|\n");

 printf("|  6. Удалить запись --------|\n");

 printf("+----------------------------+\n");

 printf("| ESC. Выход ----------------|\n");

 printf("+----------------------------+\n");

 // Menu switch

 globalKey = getch();

 switch (globalKey)

 {

  case '1':

   Input();

   break;

  case '2':

   Output();

   break;

  case '3':

   StructLoad();

   break;

  case '4':

   StructSave();

   break;

  case '5':

   Add();

   break;

  case '6':

   Del();

   break;

  case 27:

   exit(0);

 }

}

}


 

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

38516. Створення культурно розважального сайту міста Хмельницького 3.73 MB
  Виходячи з даних проблем у роботі даного вебсайту має бути розроблений сайт про культурно розважальне життя міста Хмельницького з усіма його подіями розважальними закладами та коротким описом. В ході дипломногопроетування було створено вебсай за допомогою якого користувачі можуть переглядати різні заклади для відпочинку а також різноманітні розважальні заходи що відбудуться у цих закладах чи інші події у місті Хмельницькому 1 Характеристика предметної області. Розглянемо похожі вебсайти на наявність переваг та недоліків.
38517. Раскрытие юридического механизма действия уголовно-правовой нормы об убийстве, совершенном при превышении пределов необходимой обороны 467 KB
  Равно как и тесно связанный с ним являющийся как бы его частью институт превышения пределов необходимой обороны.37 УК РФ не является преступлением причинение вреда посягающему лицу при защите личности и прав обороняющегося или других лиц интересов общества или государства от общественно опасного посягательства если при этом не допущено превышения пределов необходимой обороны. Стало быть превышение пределов необходимой обороны – действие преступное.
38518. Общие сведения работы на предприятии, санитарно-технические требования и пошаговое приготовление блюд (Борщ и куриные котлеты на косточке) 845 KB
  Исторически борщ — это национальное блюдо Древнего Рима, где специально для него выращивали много капусты и свеклы. Из Рима этот прекрасный суп постепенно проник в кулинарии многих народов мира, в каждой из них приобретая свои особенные национальные черты.
38519. Разработка базы данных «Кредитование клиентов» 430 KB
  Одной из постоянных проблем персональных компьютеров является нехватка памяти. Как правило, персональный компьютер мы используем в ежедневной работе, учебе, отдыхе, играх. Поэтому очень важно, чтобы ваш ПК имел достаточное количество памяти для хранения различного рода информации
38520. Разработка дизайн-проекта актового зала ГБОУ СПО (ССУЗ) «Златоустовский Металлургический колледж» а с учетом эргономических требований 20.98 MB
  Сначала роль электрической лампочки выполняли обычные свечи рисунок 1 позже им на смену пришел керосин рисунок 2 потом появились газовые фонари рисунок 3. Рисунок 1 – Свеча Рисунок 2 – Керосиновая лампа Рисунок 3 – Газовый фонарь Кованые фонари издавна использовались не только как средство освещения улицы или помещения но и как красивое украшение. Рисунок 4 Кованый фонарь Рисунок 5 Кованые фонари Рисунок 6 ...
38522. Технологічний процес виробництва НАД (нікотинамідаденіндинуклеотиду) 1.51 MB
  Складено аналітичний огляд літератури щодо властивостей сучасних лікарських форм та галузей застосування коферментів. завдяки сучасним біотехнологіям отримало надзвичайні можливості щодо вирішення соціальних проблем пов’язаних з харчуванням зростаючого населення планети підтримкою здоров’я людини і навколишнього середовища поповненням джерел енергії та природних ресурсів [1]. Стан біотехнологічної галузі потребує великої уваги з боку держави тому що роль сучасної біотехнології є вирішальною для становлення економіки...
38523. РИСК И ПРИ ОПЕРАЦИЯХ С НЕДВИЖИМЫМ ИМУЩЕСТВОМ 128.5 KB
  1 РИСК И ПРИ ОПЕРАЦИЯХ С НЕДВИЖИМЫМ ИМУЩЕСТВОМ В операциях с недвижимостью риск может проявляться в более низкой чем планировалось ранее цене при продаже недвижимости; в более высоком чем предполагалось уровне операционных расходов при управлении недвижимости; в снижении фактической рентабельности инвестиционного проекта по сравнению с проектной и даже в утрате собственности как в связи с разрушением самого тела недвижимости так и по причине потери прав на недвижимость. Целесообразно рассмотреть общую классификацию рисков...
38524. Електропостачання виробничого цеху деревообробного комбінату ТОВАРИСТВА «ДНІПРОВУД» 1.77 MB
  Потужність двигунів коливається від 55 до 37 кВт. При напрузі розподільної мережі 10 кВ двигуни середньої потужності 3501000 кВт потрібно використовувати на напругу 6 кВ з використанням в необхідних випадках схеми блоку трансформатордвигун при невеликій кількості двигунів на 6 кВ.1 – Відомість електричних приймачів цеху Номер на плані Найменування електроприймачів Кількість Рн кВт соsφ tgφ Кв 1 Верстат багатопильний 1 37 065 117 017 28 Лінія форматної обробки 2 55 05 17 014 3 Лінія для вирізання сучків 1 66 06 13 016 4...