Интерпретатор языка Пролог

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

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

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

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

При первом обращении к базе берется первая запись из запроса.

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

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

2.3.2 Вычисление арифметических выражений

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

На вход функции поступает объект с деревом арифметического выражения и объект со списком переменных, созданных ранее программой.

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

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

2.4 Объекты, используемые компилятором и интерпретатором

2.4.1 Объекты переменных TPrologVariable, TPrologVariables,

TPrologVariableList, TPrologVariableStruct

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

procedure CreateVariable(DomainType:string; vName:string) - создание переменной типа DomainType с именем vName;

procedure DestroyVariable - уничтожение переменной (эта процедура не является деструктором, так как не уничтожает сам объект, а только освобождает память)

function CreateCopy:TPrologVariable - создание точной копии переменной;

procedure AssignVariable (v:TPrologVariable) - присваивание значения переменной.

Для представления списков введен класс TPrologVariableList, в котором хранится имя типа списка, имя типа элемента списка, тип представления списка (в виде перечисления элементов или «голова-хвост»), а также динамический массив, содержащий объекты TPrologVariable, являющиеся элементами списка.

В структурах (TPrologVariableStruct) аналогично хранится имя типа структуры, массив с типами элементов структуры и динамический массив с элементами структуры.

Следует отметить, что в классе TPrologVariable, могут храниться как переменные, так и константы. У константы поле Name - пустая строка.

Класс TPrologVariables позволяет организовать к пакету переменных:

procedure AddVariable(v:TPrologVariable) - добавление переменной в список переменных;

function AddNewVariable:TPrologVariable - создание и добавление новой переменной в список;

procedure DeleteVariable(n:integer) procedure DeleteVariable(vName:string) procedure DeleteLastVariable - удаление переменной по ее индексу или по имени, либо последнюю переменную в списке;

function VariableByName(vName:string):TPrologVariable - доступ к конкретной переменной по ее имени;

property Variables[ind:integer]:TPrologVariable - свойство, оргназиующее доступ к переменным как к массиву переменных.

2.5.2 Стандартные функции и предикаты

Все стандартные функции и предикаты имеют одинаковые параметры.

Объявление функции выглядит следующим образом:

TStdFunction=function (Args:TPrologVariables):TPrologVariable;

Args - пакет с входными параметрами.

Функция возвращает значение в виде переменной TPrologVariable.

Объявление функции, выполняющая работу предиката:

TStdPredicate=function (VarPacket:TPrologVariables; BackTracking:Boolean):Boolean;

VarPacket - пакет с параметрами к предикату

BackTracking - логическая переменная, которая установлена в True, если предикат был вызван на обратном пути алгоритма бэктрекинга.

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

2.6 Представление Пролог-программы в виде объектов

Для хранения откомпилированной Пролог-программы используются три класса TPrologTerm, TPredicateClause и TProgramPredicate.

TPrologTerm служит для хранения одного условия внутри предложения. В нем хранится тип условия (выражение, предикат, база данных), позиция условия в тексте Пролог-программы, а также указатель (Data) на объект представляющий данное условие (TSubTermPredicate, TSubTermExtData, TSubTermExpression).

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

Name :String - имя предиката;

StandardPredicate :Boolean - True - если предикат стандартный;

Params :TVariablesArray - параметры для вызова предиката;

NoInverse :Boolean - признак наличия или отсутствия инверсии перед вызовом предиката.

TSubTermExtData аналогичен классу TSubTermPredicate за исключением того, что в нем нет поля StandardPredicate.

TSubTermExtData предназначен для представления арифметических выражений. Он представляет собой рекурсивный объект с полями LeftHand и RightHand для представления выражений левой и правой частей выражения. Данный класс содержит следующие поля:

Operation :TExpressionOperation - тип операции;

FuncName :String - имя функции, если Operation=eoFunction;

Operand :TPrologVariable - переменная или константа, если Operation=eoVariable;

LeftHand :TSubTermExpression - левая часть выражения;

RightHand :TSubTermExpression - правая часть выражения

FuncParams :array of TSubTermExpression - параметры функции, если Operation=eoFunction.

TPredicateClause хранит в себе одно предложение. Параметры предложения хранятся в массиве Params, а условия - в Terms.

TProgramPredicate хранит полную информацию о предикате. Объект этого класса используется как на этапе компиляции, так и на этапе интерпретации. Он хранит имя предиката (Name), типы параметров, текст предиката, все лексемы предиката, а также массив с предложениями предиката.

Класс TPrologProgram хранит всю информацию о Пролог-программе:

Описания типов (Domains);

Описания баз данных (ExtData);

Предикаты (TProgramPredicate);

Массив со стеком (Stack);

Массив с контрольными точками (BreakPoints);

Имя запускаемого предиката (StartPredicate);

Флаг работы программы (OnTheRun).

2.7 Основные модули

Модуль CompileUnit. В данном модуле определяется класс пролог-программы - TPrologProgram, а также два класса, использующихся при запуске интерпретатора: TStackNode и TSubStackNode. Модуль CompileUnit является ядром интерпретатора.

Модуль ProgramClasses. В данном модуле описываются основные классы, использующиеся в объектах TPrologProgram, TStackNode и TSubStackNode как контейнерные:

TLexemRecord - представляет одну лексему, выделенную из текста программы;

TPrologVariable - представляет переменную во время выполнения пролог-программы.

TPrologVariableList - контейнерный класс, использующийся в TPrologVariable, для представления списков;

TPrologVariableStruct - контейнерный класс, использующийся в классе TPrologVariable, для представления структур;

TPrologVariables - класс, представляющий собой список переменных TPrologVariable с возможностью доступа к переменной по имени;

TSubTermPredicate - класс использующийся в TPrologTerm для представления обычного предикатного условия в предложении;

TSubTermExtData - класс использующийся в TPrologTerm для представления предикатного условия вызова базы данных в предложении;

TSubTermExpression - класс использующийся в TPrologTerm для представления арифметических выражений в предложении;

TPrologTerm - класс использует TSubTermPredicate, TSubTermExtData, TSubTermExpression как контейнерные для представления одного условия в предложении;

TPredicateClause - использует массив объекстов TPrologTerm и TPrologVariable для представления одного предложения в программе;

TProgramDomain - класс использующийся в TPrologProgram как контейнерный для описания типов;

TProgramExtData - класс использующийся в TPrologProgram как контейнерный для описания баз данных;

TProgramPredicate - класс использующийся в TPrologProgram как контейнерный для описания предикатов;

TPrologFile - класс использующийся в TPrologProgram как контейнерный для описания файлов открытых во время выполнения программы;

Модуль PrologRunTime описывает класс ошибок TRunTimeError, а также все функции и встроенные предикаты Пролога.

MainFormUnit - модуль описания главной формы TMainForm;

ProgFormUnit - модуль описания окна инспектора TProgForm;

DomConstrFormUnit - модуль описания конструктора типов TExtDataForm;

ExtDataFormUnit - модуль описания конструктора баз данных TExtDataForm;

PredicateConstrFormUnit - модуль описания конструктора предикатов TPredicateConstrForm;

EditorFormUnit - модуль описания окна редактора TEditorForm

ConsoleUnit - модуль описания окна консоли TConsole;

ErrorsFormUnit - модуль описания окна ошибок компиляции TErrorsForm;

StackFormUnit - модуль описания окна стека программы TStackForm;

RunTimeDebugFormUnit - модуль описания окна отладки программы TRunTimeDebugForm;

BreakPointsFormUnit - модуль описания окна контрольных точек TBreakPointsForm;

ProjectOptionsFormUnit - модуль описания окна опций проекта.

2.8 Демонстрационная программа по выбору конфигурации компьютера

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

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

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

Таблица 2.1.

Имя поля

Тип поля

Комментарий

Task

String[33]

Название задачи

Frequency

Integer[4]

Частота процессора

Processor

String[17]

Тип процессора

Memory

Integer[4]

Размер ОЗУ

VideoMemory

Integer[4]

Размер видеопамяти

HDD

Integer[4]

Размер винчестера

MonitorSize

Integer[4]

Диагональ монитора

Addition1Name

String[17]

Название 1-го дополнительного устройства

Addition1Value

String[9]

Характеристика 1-го дополнительного устройства

Addition2Name

String[17]

Название 2-го дополнительного устройства

Addition2Value

String[9]

Характеристика 2-го дополнительного устройства

Addition3Name

String[17]

Название 3-го дополнительного устройства

Addition3Value

String[9]

Характеристика 3-го дополнительного устройства

Addition4Name

String[17]

Название 4-го дополнительного устройства

Addition4Value

String[9]

Характеристика 4-го дополнительного устройства

База приоритетов устройств ("DeviceClass.db"). Используется для разделения устройств по их характеристикам, в том числе и процессоров.

Таблица 2.2.

Имя поля

Тип поля

Комментарий

TypeName

String[17]

Имя класса устройств

SubType

String[33]

Имя отдельного устройства

SubTypeIndex

Real

Характеристика устройства

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

Пара предикатов ReadParameters и _ReadParameters предназначены для ввода списка элементарных задач с клавиатуры в список строк StringList.

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

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

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

Текст демонстрационной программы приведен в приложении.

3 Технологическая часть

3.1 Требования по эксплуатации интерпретатора языка Пролог

Программа интерпретатора языка Пролог предназначена для эксплуатации на персональных вычислительных машинах на базе процессоров семейства Pentium и выше в минимальной конфигурации с 16 Мб оперативной памяти. Для установки программы необходимо:

в минимальной конфигурации - 1.5 Мб дискового пространства;

в полной конфигурации (с установкой Borland Database Engine) - 10 Мб дискового пространства.

В качестве операционной системы может использоваться Microsoft Windows 95, Windows 98, Windows NT.

3.2 Установка системы

Система поставляется на четырех дискетах размером 3.5" и объемом 1.44 Мб.

Установка программы производится с дискет, путем запуска из операционной системы Windows файла "Setup.exe", находящегося на первой дискете. Далее необходимо действовать согласно указаниям.

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

В процессе установки программа спросит, устанавливать ли Borland Database Engine на машину или нет. Если BDE уже установлена на компьютер ранее, то повторная установка не требуется.

По завершении процесса установки программа-инталлятор создаст в системном меню раздел с названием "Prolog", а внутри него ярлык на файл "Prolog.exe" с названием "Prolog with databases", ярлык на help-файл и на файл "readme.txt".

3.3 Руководство пользователя программы интерпретатора языка

Пролог

3.3.1 Запуск программы

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

Нажать кнопку "Пуск", выбрать в меню пункт "Программы", выбрать пункт "Prolog". После того, как раскроется подменю, нажать на строку "Prolog with databases".

Дважды щелкнуть по иконке Пролога на рабочем столе

Воспользоваться "проводником" или другим менеджером файлов.

3.3.2 Перечень функций, реализуемых системой

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

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

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

запуск программы на исполнение

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

3.3.3 Редактирование Пролог-программы

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

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

создание нового файла программы;

открытие существующего файла программы;

сохранение файла;

сохранение файла под новым именем;

выход из системы;

редактирование файла с использованием буфера обмена;

настройку параметров программы Пролог;

настройку редактора;

запуск программы на исполнение;

временную остановку работы программы;

доступ к файлу справки.

Все эти возможности доступны через пункты меню или через кнопки быстрого доступа.

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

Рис 3.1. Вид главного окна.

Программу необходимо в двух окнах: в окне редактора и в окне инспектора.

Инспектор содержит в себе основную информацию о программе: описания типов данных, таблиц баз данных и предикатов.

Рис 3.2. Вид окна инспектора.

Окно инспектора разбито на три части: "Типы", "Внешние данные" и "Предикаты". В случае надобности разделы "Типы" и "Внешние данные" можно временно свернуть, нажав на верхнюю кнопку соответствующей панели.

Для добавления элемента в список типов необходимо нажать на кнопку с изображением плюса. Тогда справа от кнопки появится меню для выбора типа: "Список", "Структура", "Составной тип". Для каждого типа открывается окно конструктора типов, в котором можно редактировать составные элементы типов. При нажатии на кнопку "Ок" тип будет занесен в список типов. Для внесения нового элемента в тип необходимо выбрать его из списка, ввести комментарий (если необходимо) и нажать на кнопку плюс на нижней панели

а) б)

Рис. 3.3. Вид окна конструктора типов: а) конструктор списков;

б) конструктор структур

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

Рис. 3.4. Вид окна конструктора баз данных

Ввод предиката производится аналогично вводу нового типа.

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

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

Текст программы вводится в окне редактора. Это окно состоит из панели инструментов и редактора. На панели инструментов находится кнопки для копирования, вырезания и вставки фрагмента текста, а также кнопка по установки контрольной точки в тексте. Из окна редактора можно мгновенно получить справку о любом стандартном предикате или функции, набрав имя предиката или функции в тексте и нажав кнопку F1.

Рис. 3.5. Вид окна редактора.

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

Shift - стрелки вверх, вниз, вправо, влево, Home, End - выделение области текста для операций;

Ctrl-Insert или Ctrl-C - копировать выделенную область в буфер обмена;

Shift-Insert или Ctrl-V - вставить фрагмент из буфера обмена;

Shift-Del или Ctrl-X - вырезать фрагмент в буфер обмена.

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

Рис. 3.6. Вид окна опций проекта.

3.3.4 Запуск программы на Прологе и ее отладка

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

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

В окно "Трассировка" выводится протокол работы программы, то каждый вызов предиката, базы данных или арифметического выражения, а также возвращаемые ими значения.

Рис. 3.7. Вид окна трассировки.

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

Общий вид корневого элемента дерева выглядит следующим образом: "Имя предиката n1 : n2", где n1 - номер предложения, n2 - номер условия в предложении.

Рис.3.8. Вид окна стека.

3.3.5 Работа с меню

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

Файл

Окна

Проект

Настройка

Помощь

Меню Файл содержит следующие пункты.

Создать - позволяет создать новую программу на Прологе.

Открыть - позволяет открыть имеющийся файл и выводит стандартное окно Windows для открытия файла:

Рис.3.9. Вид окна для открытия файла.

При открытии файла в инспектор загружается информация о типах, базах данных и предикатах, а в редактор - текст программы. Если формат файла был нарушен, то он не будет загружен.

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

Сохранить - позволяет сохранить файл на диск. Если файл создавался с помощью пункта меню Создать, то выводится диалоговое окно, позволяющее присвоить имя сохраняемому файлу.

Сохранить как - позволяет присвоить новое имя файлу. При выборе этого пункта меню будет выведено на экран диалоговое окно для ввода имени файла.

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

<Имя печатаемого файла>

DOMAINS

<Объявления типов>

ALIAS

<Имя алиаса в Borland Database Engine, которое использует данная программа>

DATABASES

<Описание структур баз данных>

PREDICATES

<Описание параметров предикатов>

GOAL

<Имя запускаемого предиката>

CLAUSES

<Текст программы>

Выход - позволяет завершить работу программы интерпретатора Пролог.

Меню Окна позволяет открыть следующие окна:

Инспектор;

Консоль;

Редактор;

Контрольные точки;

Стек;

Трассировка.

Меню Проект содержит следующие пункты:

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

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

Меню Настройка содержит пункт Параметры редактора. При выборе этого пункта появляется диалоговое окно, в котором можно выбрать тип и размер шрифта для окна редактора.

Меню Помощь содержит следующие пункты:

Предметный указатель - загружает help-файл и показывает главную страницу.

О программе - выводит окно с информацией о программе.

3.4 Описание процесса выполнения программы, написанной на

языке Пролог

Выполнение программы, написанной на языке Пролог, ведется с использованием алгоритма бэктрекинга.

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

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

3.5 Общие сведенья об интерпретаторе

Данная версия языка Пролог совместима по синтаксису с языком Turbo Prolog с некоторыми отличиями.

Поддерживаются следующие простые типы данных:

Integer - целочисленный тип;

Real - число с плавающей запятой;

String - строка;

Boolean - логический тип (имеет два значение True - истина и False - ложь).

Составные типы:

Список - используется для представления массивов данных. Количество элементов в списке не ограничено.

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

Составной тип - используется для совмещения нескольких типов под одним именем.

Комментарии внутри программы записываются внутри фигурных скобок.

3.6 Особенности работы Пролог-программы с базами данных

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

Paradox 7 (или предыдущие версии);

DBase IV и DBase for Windows;

Fox Pro;

MS Access.

Для использования других видов баз данных (например, InterBase или Oracle) необходима установка драйверов этих баз данных.

Работа с базами данных производится под управлением Borland Database Engine, которая должны быть установлена на компьютер либо при установке Пролога, либо с какой-либо другой программой.

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

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

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

3.7 Описание стандартных предикатов

Все стандартные предикаты выполняются только прямом пути алгоритма бэктрекинга. На обратном пути они ничего не делают.

Предикаты ввода с консоли.

ReadString(<свободная переменная>) - читает с консоли строку. В качестве параметра обязательно должна передаваться свободная переменная. В противном случае будет выдано сообщение об ошибке и программа закончит свою работу.

ReadInteger(<свободная переменная>) - читает с консоли целое число.

ReadReal(<свободная переменная>) - читает с консоли реальное число.

Предикаты вывода на консоль.

Write (<переменная или константа любого типа>, ...) - печать на консоль содержание переменной. Количество аргументов у предиката произвольно. Количество аргументов у предиката произвольно. Стиль вывода на печать устанавливается в опциях проекта. Например, в процессе отладки можно включить печать имен переменных вместе с их содержимым или кавычки у строковых переменных.

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

Nl - перевод курсора консоли на следующую строку.

Предикаты определения типов переменных.

IsInteger(<переменная>) - предикат является истинным, если поступающая на вход переменная - целочисленная.

IsReal(<переменная>) - проверяет, является ли переменная реальным числом.

IsNumeric(<переменная>) - проверяет, является ли переменная числовой, то есть либо реальной, либо целой. Использование функции IsNumeric предпочтительнее, чем IsInteger и IsReal, так как в ходе некоторых арифметических операций над целыми числами результат получается дробным (например, при делении).

IsString(<переменная>) - проверяет, является ли переменная строкой.

IsBoolean(<переменная>) - проверяет, является ли переменная логической.

IsList(<переменная>) - проверяет, является ли переменная списком.

IsStruct(<переменная>) - проверяет, является ли переменная структурой.

IsFree(<переменная>) - проверяет, является ли переменная свободной.

Предикаты для работы с базами данных.

Предикаты открытия, закрытия и создания баз данных отсутствуют, так как объявленные базы данных открываются (и создаются, если не были созданы ранее) при запуске программы.

DBAppendZ(<имя базы>:String, <поле1>, ... , <полеN>) - добавляет запись в конец базы данных. Количество полей и их типы должны в точности совпадать с полями базы данных. Имя базы данных записывается в кавычках.

DBAppendA(<имя базы>:String, <поле1>, ... , <полеN>) - добавляет запись в начало базы данных. Количество полей и их типы должны в точности совпадать с полями базы данных. Имя базы данных записывается в кавычках.

DBDelete(<имя базы>:String, <поле1>, ... , <полеN>) - удаляет из базы данных запись. Количество полей и их типы должны в точности совпадать с полями базы данных. Возможно, удалять сразу группу записей, если какие-либо из полей будут обозначены пустой константой nil. Тогда будут удалены все записи базы данных, в которых совпадают значения остальных полей (которые имеют значения отличные от nil).

DBClear(<имя базы>:String) - очищает базу данных.

Предикаты работы с файлами.

Данная версия Пролога работает только с текстовыми файлами.

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

FileOpenRead(<имя файла>:String, <номер обработчика>:Integer) - открыть файл для чтения. Предикат возвращает во втором параметре номер обработчика файла. Во втором параметре предиката должна стоять свободная переменная.

FileOpenWrite(<имя файла>:String, <номер обработчика>:Integer) - открыть файл для записи. Предикат возвращает во втором параметре номер обработчика файла. Во втором параметре предиката должна стоять свободная переменная.

FileRead(<номер обработчика>:Integer,<значение>) - чтение из файла. Второй параметр должен быть свободной переменной, иначе интерпретатор выдаст ошибку "Неверные параметры при вызове предиката".

FileWrite(<номер обработчика>:Integer,<значение>:String) - запись в файл.

FileClose(<номер обработчика>:Integer) - закрытие файла. Данный предикат применять не обязательно, так как при завершении программы интерпретатор сам закрывает все открытые файлы.

EOF(<номер обработчика>:Integer) - проверка конца файла. Предикат истинен, если конец файла достигнут.

Разное.

StringToList (String, <список>) - превращает строку в список, состоящий из символов этой строки, и возвращает его через параметр <список>.

Fail - предикат всегда возвращает ложь.

3.8 Описание функций

Арифметические функции.

Sin (<Integer, Real>):Real - операция синуса. Аргументом может быть как реальное, так и целое число. Функция возращает реальное число.

Cos (<Integer, Real>) :Real - операция косинуса.

Tan (<Integer, Real>) :Real - операция тангенса.

Exp (<Integer, Real>) :Real - экспонента.

Ln (<Integer, Real>) :Real - натуральный логарифм.

Int (<Integer, Real>) :Integer - выделение целой части числа. Функция используется также для явного преобразования реального числа в целое.

Frac (<Integer, Real>) :Real - выделение дробной части числа.

Abs(<Integer, Real>):<Integer, Real> - взятие модуля числа.

Функции работы со строками.

SubStr(String, N1:Integer, N2:Integer):String - выделение подстроки, начиная с элемента с индексом N1 длиной N2 символов.

FindStr(S1:String, S2:String):Integer - находит позицию подстроки S2 в строке S1 и возвращает индекс первого символа подстроки в строке S1. Если в строке S1 не было найдено подстроки S2, то функция возвращает 0.

Chr(Integer):String - возвращает символ, соответствующий числу по таблице ASCII.

Asc(String):Integer - возвращает ASCII-код первого символа строки.

NumbToStr(<Integer или Real>):String - превращает число в строку

StrToNumb(String):<Integer или Real> - превращает строку в целое или реальное число, в зависимости от содержания строки. Интерпретатор сначала пытается преобразовать строку в целое число. Если не получается, то пытается превратить строку в реальное число. Если преобразование не удалось, то выводится сообщение об ошибке.

Логические функции.

Not(Boolean):Boolean - инвертирует значение логического выражения. (ВНИМАНИЕ: чтобы инвертировать значение, возвращаемое предикатом или базой данных необходимо перед именем предиката или базы данных поставить символ "~")

4 Организационно-экономическая часть

4.1 Расчет затрат на разработку интерпретатора Пролог

Трудоемкость разработки программного обеспечения рассчитывается по формуле:

ч/м, где (4.1)

L - объем программы в операторах, шт.,

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

Ф - среднемесячный фонд рабочего времени,

Кн - коэффициент новизны,

Кун - коэффициент использования в разработке типовых программ.

L = 10000

nn = 50

Ф = 25

Кн = 0.8

Кун = 0.7

Таким образом, трудоемкость разработки ПО составляет:

Tn = (10000·0.8·0.7)/(25·50) = 4.5 ч/м

Расчет стоимости ч/м программиста:

заработная плата программиста составляет 460 руб.

дополнительная заработная плата составляет 20% от основной, то есть 92 руб.

Начисления на заработную плату ,в целом, составляют 38.5% от основной и дополнительной заработной платы, 212.52 руб.

Итого стоимость ч/м:

460+92+212.52=764.52 руб.

Накладные расходы составляют:

Знакл=0.25·460=115 руб.

Стоимость одного машинного часа с учетом первоначальной стоимости ЭВМ, стоимости потребляемой электроэнергии и износа машины определяетсяпо формуле:

Sмч=Sмаш1+Sэл+Sрем.

Срок службы ЭВМ - 8 лет. Первоначальная стоимость - 20000 руб. Потребляемая мощность 0.2 кВт/ч.

При эксплуатации машины 8 часов в день имеем:

Sмаш1=20000/(8·12·22·8)=1.18 руб/ч.

Принимая стоимость электроэнергии 0.1 руб/КВт, стоимость потребляемой энергии в час равна:

Sэл=0.1·0.2=0.02 руб.

Затраты на профилактическое обслуживание и ремон составляют 20% от стоимости машины:

Sрем=0.2·1.18=0.17руб.

Тогда стоимость одного машинного часа равна

Sмч=1.18+0.2+0.17=1.37 руб/ч.

Себестоимость программного продукта определяется:

, где

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

Тап - время затрачиваемое разработчиком на разработку, составление алгоритма и написание программы, мес.,

См - себестоимость одного часа машинного времени, руб.,

Кисп = 0.5 - коэффициент использования ЭВМ.

764.52·4.5+8·4.5·1.37·25·0.5= 4056.84 руб.

5 Промышленная экология и безопасность

5.1 Введение

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

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

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

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

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

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

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

5.2.1 Источники загрязнения

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

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

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

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

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

капельножидким (брызги),

тонкодисперсионном аэрозоле,

паро- и газообразном.

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

Таблица 5.1.

Технологический процесс

Объект отрицательного воздействия

Источник загрязнения

Способ защиты

Литье

Атмосфера

Пыле- газовыделение

Пылеулавливание, фильтрация

Гидросфера

Сточные воды

Фильтрование, отстаивание, реагентная обработка

Термическая обработка

Атмосфера

Пыле- газовыделение

Пылеулавливание, фильтрация

Гидросфера

Сточные воды

Фильтрование, отстаивание, реагентная обработка

Гальваническая обработка

Атмосфера

Выделение вредных веществ в различном агрегатном состоянии

Очистка

Гидросфера

Сточные воды

То же

Механическая обработка

Атмосфера

Пыле- газовыделение

Пылеулавливание, фильтрация

Гидросфера

Сточные воды

То же

Резка, сварка, пайка

Атмосфера

Пыле- газовыделение

Пылеулавливание, фильтрация

Гидросфера

Сточные воды

То же

Лакокрасочные работы

Атмосфера

Газовыделение, лакокрасочные туманы

Фильтрация

Гидросфера

Сточные воды

То же

Сборка

Гидросфера

Сточные воды

То же

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

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

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

5.2.2 Очистка воздуха от вредных примесей

Участок сверления и рубки печатных плат производит выброс стеклопластиковой пыли - вещества 3 класса опасности по ГОСТ 12.1.007-76 («Вредные вещества. Классификация и общие требования безопасности»).

Для защиты рабочего персонала от воздействия примеси в помещении участка применена вентиляционная система со скоростью движения воздуха в вытяжных столах 1.5 м/сек и общим расходом очищаемого воздуха на участке сверления и рубки печатных плат L=18000 м3/ч.

Для предотвращения выброса стеклопластиковой пыли в атмосферу применяем в качестве пылеуловителя циклон.

Исходные данные:

объем очищаемого вентиляционного воздуха Q=5 м3/с,

плотность газа при рабочих условиях r=1.3 кг/м3,

вязкость газа m=42.210-6 Пас,

дисперсионный состав пыли d50 и lgsч=0.77,

rч=1300 кг/м - плотность частиц пыли.

h=0.9 - требуемая эффективность очистки газа.

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

1. Выбираем тип циклона - ЦН-24 и определяем оптимальную скорость газа wоп в сечении циклона с диаметром D. Из таблицы 1: wоп=4.5 м/с.

2. Вычисляем диаметр циклона D(м) по формуле =0.3015 м.

Полученное значение округляем до ближайшего типового значения. Внутренний диаметр циклона выбираем D=0.3 м.

3. По выбранному диаметру циклона находим действительную скорость движения газа в циклоне:

=4.76 м/с,

где n=1 - количество циклонов.

4. Определяем коэффициент гидравлического сопротивления одиночного циклона:

=67,

где

k1=0.93 - поправочный коэффициент на диаметр циклона;

k2=0.9 - поправочный коэффициент на запыленность газа;

=80 - коэффициент гидравлического сопротивления одиночного циклона диаметром 500 мм, при Cвх=80 г/м.

5. Гидравлическое сопротивление циклона вычисляется по формуле:

=971 Па/м.

6. Эффективность очистки газа в циклоне вычисляется по формуле:

,

где

- табличная функция от параметра x, равного:

.

Для выбранного циклона значение =8.5 мкм, =0.308.

Значение определяем по формуле:

=87,

где значение определено по условиям работы типового циклона: DT=0.6 м, rчт=1930 кг/м3, mT=22.2*10-6 Па*с, wT=3.5 м/с.

Определив значение x, по данным таблицы 6 находим параметр =0.8413.

=0.0921.

Полученный коэффициент очистки больше требуемого, следовательно, тип циклона выбран верно.

5.3 Анализ влияния опасных и вредных факторов, при

эксплуатации программы интерпретатора Пролог

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

Физические:

повышенный уровень шума на рабочем месте;

опасный уровень напряжения в электрической цепи, замыкание которой может произойти через человека;

пожарная опасность;

повышенный уровень электромагнитных излучений;

повышенная яркость света;

прямая и отраженная блеклость;

нарушение микроклимата рабочих помещений.

Психофизиологические:

гиподинамия;

умственное перенапряжение;

перенапряжение зрительных анализаторов;

5.3.1 Повышенный уровень шума на рабочем месте

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

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

Ослабления шума можно достигнуть следующими способами:

уменьшение шума в источнике;

изменение направленности излучения;

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

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

Уровень шума на рабочем месте должен соответствовать требованиям ГОСТ 12.1.003-83. Согласно этому ГОСТу уровень звукового давления на постоянных рабочих местах в производственных помещениях при продолжительности шума более четырех часов должен соответствовать данным в таблице 5.2

Помещения

Среднегеометрические частоты октавных полос, Гц

Уровень звука, дБА

31.5

63

125

250

500

1000

2000

4000

8000

Уровни звукового давления, дБ

постоянние рабочие места в офисных помещениях

86

71

61

54

49

45

42

40

38

50

5.3.2 Опасный уровень напряжения электрической цепи, замыкание которой может произойти через человека

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

Причинами поражения человека электрическим токов являются:

случайное прикосновение или приближение на опасное расстояние к токоведущим частям, находящимся под напряжением;

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

появление напряжения на отключенных токоведущих частях, на которых работают люди, вследствие ошибочного включения устройства;

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

При работе аппаратуры запрещается:

проверять на ощупь наличие напряжения токоведущих частей аппаратуры;

применять для соединения блоков и приборов провода с поврежденной изоляцией;

проводить работу и монтаж в аппаратуре, находящейся под напряжением;

подключать блоки и прибора к работающей аппаратуре.

Чтобы избежать поражения электрическим током используются следующие технические средства, обеспечивающие безопасность работ в электроустановках:

защитное заземление;

защитное отключение;

зануление;

выравнивание потенциалов.

5.3.3 Пожарная опасность

Пожары в ВЦ представляют особую опасность, так как сопряжены с огромными материальными потерями.

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

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

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

Таким образом, на ВЦ могут присутствовать все три основные фактора, способствующих возникновению пожара.

Кабельные линии электропитания состоят из горючего изоляционного материала, а также содержат вероятные источники открытого огня. Они являются -наиболее опасным элементом в конструкции ЭВМ и вычислительного центра с точки зрения возникновения и развития пожара.

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

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

наличие системы автоматической пожарной сигнализации;

наличие эвакуационных путей и выходов;

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


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

  • Экспертные системы реального времени. Основные производители. История возникновения и развития языка ПРОЛОГ. Исчисление высказываний. Исчисление предикатов. Программирование на ПРОЛОГЕ. Принцип резолюций. Поиск доказательства в системе резолюций.

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

  • Функции и основные компоненты систем программирования. Средства создания программ. Трансляторы языков программирования. Принципы и фазы работы компилятора, трансформация языка программирования в машинный код. Механизм преобразования интерпретатора.

    презентация [3,3 M], добавлен 07.02.2012

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

    курс лекций [5,5 M], добавлен 04.12.2013

  • История возникновения и развития языка Prolog. Рассмотрение императивных и декларативных языков программирования. Элементы экспертной системы: база знаний, механизм вывода и система пользовательского интерфейса. Описание предикатов и предложений.

    дипломная работа [44,0 K], добавлен 11.05.2014

  • Особенности способов описания языков программирования. Язык программирования как способ записи программ на ЭВМ в понятной для компьютера форме. Характеристика языка Паскаль, анализ стандартных его функций. Анализ примеров записи арифметических выражений.

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

  • Выдающиеся люди в истории информатики. Ада Лавлейс. Деяния Грэйс Хоппер. Сэнди Лернер. Ющенко Екатерина Логвиновна. История научной школы теоретического программирования в Украине. Эти женщины - яркие лица в истории развития вычислительной техники.

    реферат [40,1 K], добавлен 19.12.2003

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

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

  • Что такое язык программирования. Для чего нужны языки программирования. Какие существуют языки программирования. Фортран. Алгол. Кобол. Лисп. Бейсик. Форт. Паскаль. Ада. Си. Пролог. Что такое компилятор и интерпретатор.

    реферат [20,2 K], добавлен 27.05.2007

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

    дипломная работа [831,1 K], добавлен 20.05.2013

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

    отчет по практике [53,0 K], добавлен 12.05.2015

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