Лекция 3. Языки программирования. Типы и форматы данных. Системы и форматы команд. Способы адресации.
Разработка моделей бизнес-процессов предприятия оптовой торговли лекарственными препаратами
Организационная диаграмма
Оргструктура предприятия оптовой торговли ЗАО "МЕД" имеет следующий вид:
Рис. 16.1.
Таблица 16.9. Термины
Внешняя статистика продаж
статистика по продажам, получаемая из сети аптек;
Внутренняя статистика продаж
статистика по продажам, получаемая из отчетов продаж клиентам компании;
Номенклатурная единица
наименование медикамента, завода изготовителя;
ABC
классификация товара по выручке от продаж клиентам;
XYZ
классификация товара по рейтингу популярности;
Учетная цена
это цена товара у поставщика с учетом скидок;
Действующие контракты
контракты, по которым имеются обязательства сторон на определенный период времени;
График поставок
очередность обращения к поставщикам, необходимая для поддержания деловых отношений;
Страховой запас
минимальный запас товара, необходимый для покрытия потребностей до момента поставки новой партии товара;
Разработка информационных систем включает в себя несколько этапов. Однако всегда начальным этапом создания системы является изучение, анализ и моделирование деятельности заказчика.
Описание деятельности компании- дистрибьютора "МЕД"
Компания-дистрибьютор "МЕД" закупает медицинские препараты отечественных и зарубежных производителей и реализует их через собственную дистрибьюторскую сеть и сеть аптек. Планирование закупок компания осуществляет на основании статистики продаж, которую предоставляют сеть аптек и дистрибьюторы, а также заказов клиентов. Компания осуществляет доставку медикаментов от поставщиков, как собственным транспортом, так и с помощью услуг сторонних организаций. Компания имеет собственный склад для хранения медикаментов.
Языки программирования, используемые в том числе для разработки программного обеспечения управления средствами связи, делятся на две группы. Первая группа включает языки программирования низкого уровня. К первой группе относится машино-ориентированный или машинный язык (машинный код) – это способ записи команд и данных, которые непосредственно реализуются аппаратными средствами вычислительного устройства (процессора).
Машинный язык включает систему команд и метод кодирования информации. В команде всегда указывается тип выполняемой операции и местонахождение операндов. Типовыми символами машинного языка являются двоичные символы «0» и «1», которые задают адреса в командах, коды операций и признаки команд. При исполнении программ, «0» и «1» в виде физических сигналов поступают на входы микросхем и приводят к исполнению аппаратными средствами МПр заданных операций. Из последовательности команд составляются программы, реализующие алгоритмы задач управления системой коммутации. Эффективность решения различных задач с помощью МПр зависит от того, насколько машинный язык приспособлен для реализации заданных алгоритмов управления средством связи. Кроме того, ненемаловажную роль играет используемые способы программирования.
Программирование на машинном языке ведется в системе команд, поддерживаемой данным типом процессора. В результате аппаратные и логические ресурсы процессора используются максимальным образом, поэтому машинный язык рекомендуется использовать для создания операционных систем, библиотек стандартных программ в т.ч. ввода/вывода, которые расширяют возможности процессора. Также машинный язык применяется для создания ПО, на которое наложены ограничения по времени выполнения и занимаемой емкости памяти МПр.
Достоинства машинного языка следующие:
§ Компактность и высокая скорость выполнения программ;
§ Возможность непосредственного обращения и использования требуемых аппаратных ресурсов МПр;
§ Непредсказуемость объектного кода и распределение памяти.
Недостатками машинного языка являются:
§ Привязка к системе микрокоманд и особенностям микроархитектуры данного МПр;
§ Трудоемкость процесса составления программ;
§ Низкая скорость программирования;
§ Невозможность непосредственного использования программ, составленных на определенном языке на МПр другого типа.
Для упрощения программирования в машинных языках часто используются языки символического кодирования, в которых коды операций и адреса в командах вместо двоичного или шестнадцатеричного кода заменяются на символы (идентификаторы)или текстовые мнемотические коды, форма написания которых позволяет программисту лучше запомнить смысл выполняемой операции. Дополнительно здесь могут использоваться макрокоманды. Примером такого языка программирования является язык ассемблера – представляет собой символьную форму машинного языка с рядом возможностей, характерных для языка высокого уровня, включая макрокоманды (см. ГОСТ 19781-90). Ассемблер облегчает процесс программирования по сравнению с программированием в машинных кодах, потому что позволяет пристраивать символические имена регистрам компьютера и памяти, а также позволяет задавать удобные способы адресации. Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для предоставления числовых констант, использовать в программе коментарии и др. В результате существенно упрощается процедура, при которой для выполнения на МПр, программы на ассемблере транслируются в машинные коды с помощью трансляторов или компиляторов.
Транслятор – программа для перевода программ одного языка программирования на другой. Компилятор – транслятор, выполняющий перевод текста программы с проблемно-ориентированного или универсального языка на машинно-ориентированный язык, в машинный код. После этого машинный код может непосредственно запускаться на исполнение на МПр. Ассемблирование – процесс трансляции программы с языка ассемблера в машинный код.
К недостаткам ассемблера можно отнести привязку этого языка к конкретным типам процессоров.
В программе, составленной на машинном языке, используются определенные операторы для выполнения каждой вычислительной или логической операции. Оператор языка программирования – конструкция языка программирования, задающая одну или несколько операций, производимыми над операндами. При этом оператор точно указывает, где должны храниться числа (адрес ячейки запоминающего устройства, адрес операнда), как пересылать и обрабатывать числа и где хранить результатаы вычислений. Строка программного кода с оператором на языке ассемблера транслируется, как правило, в одну машинную команду.
Вторая группа включает языки программирования высокого уровня, машинно-независимые, в котором команды и данные записываются в языковой форме, привычной для восприятия человека. «Высокий уровень» применительно к языку программирования означает, что многие операции выполняются в нем автоматически, поэтому программистам при решении той же проблемы приходится писать меньше программного кода. Например автоматически выполняются следующие операции:
§ Назначение регистров выполняется компилятором, не требуется писать программу для пересылки информации между регистрами и оперативной памятью;
§ Для организации циклов в программе можн использовать простые ключевые слова, такие как WHILE и IF – компилятор в процессе преобразования исходного текста в машинный код сам генерирует все необходимые для их реализации машинные команды.
В результате строка программного кода с оператором языка программирования высокого уровня транслирует примерно в три – семь машинных команд. К этой группе относятся проблемно-ориентированные языки программирования, отражающий особенности класса задач, для записи которых они предназначены. К проблемно-ориентированным языкам относятся Фортран, Алгол, Лисп. К языкам высокого уровня относятся универсальные языки программирования, не являющиеся машинно-ориентированными, но которые могут быть транслированы на различные языки. К универсальными языками может быть отнесен язык программирования Си, часто используемый в средствах связи. Си – язык программирования общего назначения, который с одной стороны по своим возможностям иногда превосходит ассемблер, с другой стороны – программы на Си могут запускаться на различных типах МПр. Язык Си поддерживает процедуры т.е. аппарат подпрограмм, используемый для решения той или иной задачи.
Подпрограмма – часть программы для ЭВМ, реализующая определенный алгоритм и оформленная таким образом, что допускает гибкую настройку на входные и выходные данные, называемые параметрами программы.
Отличительной особенностью языка программирования Си является большой набор операций, многие из которых соответствуют машинным командам, и поэтому допускают прямую трансляцию в машинный код. В результате программы, написанные на Си, сравнимы по скорости исполнения с программами, написанными на языке ассемблера. Язык Си позволяет однозначно описать алгоритм.
С учетом вышеизложенного, достоинства языков высокого уровня следующие:
§ Близость к человеческому языку;
§ Развитые средства автоматизации программирования и отладки программ, отсюда – высокая скорость разработки ПО;
§ Возможность непосредственного использования программ, составленных на определенном языке, на МПр разных типов.
Недостатками языков программирования высокого уровня являются:
§ Недостаточная компактность и меньшая скорость выполнения программ, чем у языков программирования первой группы;
§ Для запуска на МПр требуется трансляция или компиляция в язык низкого уровня (в машинный код);
§ Невозможность непосредственного обращения и использования требуемых аппаратных ресурсов МПр;
§ Необходимость распределения памяти.
Любой язык программирования имеет:
§ Лексику, т.е. определенный состав символов языка (A, B, C, …, Z; 0, … 9; @, $, #, … );
§ Синтаксис – правило сочетания символов в слова и предложения (GO TO, MOV, ADD);
§ Семантика – правило предписывающее смысловое значение сочетания символов (GO TO <идти к …> или <переход к …>; MOV <перенос данных>, ADD <сложить>).
Лексика определяется системой счисления; синтаксис определяется форматом команд и данных; семантика определяется смысловым содержанием команд. Рассмотрим требования к системе команд машинного языка программирования для разработки программного обеспечения управления средства связи, имея в виду прежде всего язык ассемблер. Здесь возможно предъявить следующие требования:
Функциональная полнота системы команд означает, что система команд языка низкого уровня в средстве связи с программным управлением, должна полностью соответствовать паспортным функциям средства связи.
Обеспечение максимальной производительности УУ, что достигается путем оптимизации системы команд языка программирования низкого уровня, т.е. команда машинного языка должна иметь сравнительно небольшую длину (в битах), что обеспечивает выполнение требуемых операций МПр за минимальное число тактов.
Минимизация емкости ЗУ, требуемой для хранения программ управления – достигается применением совершенных алгоритмов, оптимальной длиной команд и рациональным размещением данных на запоминающих устройствах в процессе исполнения программы.
Рассмотрим используемые типы и форматы данных в языках программирования низкого уровня.