
Inform
.pdf
41
Постановка задачи (problem definition)- это точная формулировка решения задачи на компьютере с описанием входной и выходной информации.
Постановка задачи – обобщенный термин, который означает определенность содержательной стороны обработки данных. Постановка задачи связана с конкретизацией основных параметров ее реализации, определением источников и структурой входной и выходной информации, востребуемой пользователем.
К основным характеристикам функциональных задач, уточняемым в процессе ее формализованной постановки, относятся:
•Цель и назначение задачи, ее место и связи с другими задачами;
•Условия решения задачи с использованием средств вычислительной техники;
•Содержание функций обработки входной информации при решении задачи;
•Требования к периодичности решения задачи;
•Ограничения по срокам и точности выходной информации;
•Состав и форма представления выходной информации;
•Источники входной информации для решения задачи;
•Пользователи задачи (кто осуществляет ее решение и пользуется результатами ее решения).
Выходная информация по задаче может быть представлена в виде документов (типа листинга или машинограммы), сформированных кадров – видеограммы на экране
Документ |
Машинограмма |
ы |
|
Документ |
|
ы |
|
|
Задача |
|
БД |
БД |
|
|
Видеограмма |
Сигнал |
|
Сигнал |
|
|
|
Рис.3.2. Схема взаимосвязи входной и выходной информации для
решения задач.
монитора, файла базы данных, выходного сигнала устройству управления (рис.3.2.). Входная информация по задаче определяется как данные, поступающие на вход
задачи и используемые для ее решения. Входной информацией служат первичные данные документов ручного заполнения, информация, хранимая в файлах базы данных (результаты решения других задач, нормативно-справочная информация – классификаторы, кодификаторы, справочники), входные сигналы датчиков (рис.3.2.).
Обычно постановка задач выполняется в едином комплексе работ по созданию структуры внутримашинной базы данных, проектированию форм и маршрутов движения документов, изменению организации управления в рамках предметной области.
42
Алгоритм и его свойства
Алгоритм – это система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных (входной информации) в желаемый результат (выходную информацию) за конечное число шагов.
Алгоритм решения задачи имеет ряд обязательных свойств:
•Дискретность – разбиение процесса обработки информации на более простые этапы (шаги выполнения), выполнение которых компьютером или человеком не вызывает затруднений.
•Определенность (детерминированность) алгоритма – однозначность выполнения каждого отдельного шага преобразования информации. Эта характеристика обеспечивает однозначность результат процесса при заданных исходных данных.
•Результативность –конечность действий алгоритма решения задач, позволяющая получить желаемый результат при допустимых исходных данных за конечное число шагов.
•Массовость – пригодность алгоритма для решения определенного класса задач.
Валгоритме отражаются логика и способ формирования результатов решения с указанием необходимых расчетных формул, логических условий, соотношений для контроля достоверности выходных результатов. В алгоритме обязательно должны быть предусмотрены все ситуации, которые могут возникнуть в процессе решения комплекса задач.
Формы представления алгоритма
Существуют следующие формы представления алгоритма:
•словесная (текстуальная);
•графическая;
•на языках программирования.
При словесном способе записи алгоритма содержание последовательных этапов вычислений задается в произвольной форме на естественном языке. Словесная форма имеет ряд недостатков. Для достаточно сложных алгоритмов описание становится слишком громоздким и ненаглядным. Эта форма обычно используется на начальных стадиях разработки алгоритма.
Графическая форма представления алгоритмов является более компактной и наглядной. Алгоритм изображается в виде последовательности связанных между собой блоков, каждый из которых соответствует выполнению одного или нескольких операторов. Такое графическое представление называется блок-схемой алгоритма.
Условные графические обозначения символов (блоков), используемых для составления блок-схем, стандартизированы. Некоторые часто используемые обозначения приведены ниже.
Примечание: все эти блоки можно изобразить с помощью текстового процессора WORD (список “Автофигуры”).
Линии, связывающие элементы схемы, должны проводиться только по вертикали или горизонтали, параллельно линии внешней рамки схемы и подводиться к середине блока. Чтобы показать изменение направления, линии проводят с изломом в 90 градусов. На схеме может быть пересечение двух несвязанных линий потока или слияние их.
Записи внутри блока должны быть представлены так, чтобы их можно было читать слева направо и сверху вниз, независимо от направления потока.
Для удобства нахождения блока на схеме, блоки можно нумеровать. Номер символа задается в виде цифр, букв или сочетания букв и цифр. Номер проставляется сверху слева в разрыве контура. Нумеруются блоки в порядке сверху вниз и слева направо.
Если содержание пояснения не помещается внутри блока, то используется “комментарий”, который может относиться как к блоку, так и к линии потока.

43
Комментарий помещают в свободном месте схемы и соединяют с поясняемым блоком или с линией потока штриховой линией. Записывают комментарий в пределах верхней и
в
а
- процесс, обозначающий выполнение операций или группы операций, в результате которых изменяются значение, форма или расположение данных
-предопределенный процесс (подпрограмма),
состоящий из одной или нескольких операций, определенных в другом месте
-решение (условие), имеет один вход и ряд альтернативных выходов, один из которых может быть активизирован после вычисления условий, определенных внутри этого блока
-подготовка (модификация), отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию, используется для задания циклических действий
-ввод-вывод (здесь перечисляются данные, подлежащие вводу или выводу)
- пуск-завершение (терминатор)
-узел (соединитель), указывает связи между прерванными линиями потока
-линии потока, отображают поток данных или
управления. Нормальным направлением линий потока
(следованием этапов процесса переработки данных) считается направление сверху вниз и слева направо и стрелками не обозначается. Во всех других случаях обозначение направления стрелками обязательно
- комментарий
Примечание: значение а выбирается из ряда чисел 10, 15, 20 …мм; b=1,5a.
нижней граничных линий параллельно основной надписи.
В качестве примера рассмотрим блок-схему алгоритма решения квадратного уравнения. Схема приведена на рис. 3.3.

44
Представление алгоритма в виде блок-схемы является промежуточным, так как алгоритм в таком виде не может быть выполнен на ЭВМ. Составление блок-схемы является важным и в большинстве случаев необходимым этапом решения задачи на ЭВМ, значительно облегчающим процесс составления программ.
Начало
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ввод |
|
|
|
|
ds = |
d |
|
|
|
|
|
||||
a, b, c |
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1 |
|
−b + ds |
d=b2-4ac |
|
|
|
|
Вычисление x1 |
|
|
|
= |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2a |
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
x2 |
= |
−b −ds |
|||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
Вычисление x2 |
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
||||||
d>=0? |
|
|
|
|
|
|
|
|
|
|
|
|
2a |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
нет
Вывод: |
Вывод |
корней |
x1 и x2 |
нет |
|
Конец
Рис. 3.3 Блок-схема алгоритма решения квадратного уравнения Алгоритм, записанный на языке программирования, называется программой.
Программирование
Программирование (programming) – теоретическая и практическая деятельность, связанная с созданием программ.
Программирование является собирательным понятием и может рассматриваться и как наука, и как искусство, на этом основан научно-практический подход к разработке программ.
Программа – результат интеллектуального труда, для которого характерно творчество, а оно, как известно не имеет четких границ. В любой программе присутствует индивидуальность ее разработчика, программа отражает определенную степень искусства программиста. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам.
Программирование базируется на комплексе научных дисциплин, направленных на исследование, разработку и применение методов и средств разработки программ (специализированного инструментария создания программ). При разработке программ используются ресурсоемкие и наукоемкие технологии, высококвалифицированный интеллектуальный труд.
Программирование – это развитая отрасль хозяйственной деятельности, связанная со значительными затратами материальных, трудовых и финансовых ресурсов. По данным

45
зарубежных источников, в середине 90-х годов в мире было занято программированием до 2% трудоспособного населения. Совокупный оборот в сфере создания программных средств достигает несколько сот миллиардов долларов в год.
В связи с ростом потребности в разнообразных программах обработки данных весьма актуален вопрос применения эффективных технологий программирования и их перевода на промышленную основу. Это означает:
•стандартизованность, тиражируемость и воспроизведение различными разработчиками методов программирования;
•внедрение прогрессивных инструментальных средств разработки программ;
•использование специальных методов и приемов организации работ по разработке программ.
Категории специалистов, занятых разработкой и эксплуатацией программ
Основная категория специалистов, занятых разработкой программ, - это программисты (programmer). Программисты неоднородны по уровню квалификации, а также по характеру своей деятельности. Наиболее часто программисты делятся на системных и прикладных.
Системный программист (system /software programmer, toolsmith) занимается разработкой, эксплуатацией и сопровождением системного программного обеспечения, поддерживающего работоспособность компьютера и создающего среду для выполнения программ, обеспечивающих реализацию функциональных задач.
Прикладной программист (application programmer) осуществляет разработку и отладку программ для решения функциональных задач.
Вусловиях создания больших по масштабам и функциям обработки программ появляется новая квалификация – программист-аналитик (programmer-analyst), который анализирует и проектирует комплекс взаимосвязанных программ для реализации функций предметной области.
Впроцессе создания программ на начальной стадии работ участвуют и специалисты
–постановщики задач.
Большинство информационных систем основано на работе с базами данных (БД). Если база данных является интегрированной, обеспечивающей работу с данными многих
|
|
Постановка |
|
|
|
задачи |
|
Конечный |
Постановщ |
|
|
пользовател |
ик |
Алгоритмизация |
|
|
|
||
Эксплуатаци |
|
решения задач |
|
Прикладно |
|
||
я программ |
Программирова |
||
й |
|||
|
|
ние |
Оператор ЭВМ Создание
операционной Системный
среды
программис
|
Создание |
Администр |
информационной |
атор БД |
среды |
|
|
Рис.3.4. Схема взаимодействия специалистов, связанных с созданием и эксплуатацией
46
приложений, возникает проблема организационной поддержки базы данных, которая выполняется администратором базы данных.
Основным потребителем программ служит конечный пользователь (end user), который, как правило, относится к категории пользователей-непрограммистов. Конечный пользователь не является специалистом в области программирования, т.е. не владеет технологией проектирования и создания программ, но имеет элементарные знания и навыки работы с вычислительной техникой. Такая квалификационная характеристика пользователя программного обеспечения в значительной степени влияет на спецификацию требований к создаваемым программам, интерфейсам, формам машинных документов, технологии решения задач на ЭВМ.
Возможна эксплуатация программ квалифицированными программистами или специально обученными техническими работниками – операторами ЭВМ.
Взаимодействие специалистов различного вида, участвующих в разработке и эксплуатации программ, показано на рис.3.4. В ряде случаев один специалист совмещает несколько видов деятельности. Администратор базы данных и системный программист осуществляют подготовку информационных и программно-технических условий для работы программ. Пунктирные линии означают участие специалиста в качестве консультанта.
Характеристика программного продукта
Все программы по характеру использования и категориям пользователей можно разделить на два класса – утилитарные программы и программные продукты (изделия).
Утилитарные программы (”программы для себя”) предназначены для удовлетворения нужд их разработчиков. Чаще всего утилитарные программы выполняют роль сервиса в технологии обработки данных либо являются программами решения функциональных задач, не предназначенных для широкого распространения.
Программные продукты (изделия) предназначены для удовлетворения потребностей пользователей, широкого распространения и продажи.
В настоящее время существуют и другие варианты распространения программных продуктов, которые появились с использованием глобальных или региональных телекоммуникаций:
•freeware – бесплатные программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в них необходимые изменения;
•shareware – некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно. При условии регулярного использования подобных бесплатных продуктов осуществляется взнос определенной суммы.
Ряд производителей используют OEM-программы (Original Equipment Manufacturer), т.е. встроенные программы, устанавливаемые на компьютеры или поставляемые вместе с вычислительной техникой.
Программный продукт должен быть соответствующим образом подготовлен к эксплуатации, иметь необходимую техническую документацию, предоставлять сервис и гарантию надежной работы программы, иметь товарный знак изготовителя, а также желательно наличие кода государственной регистрации. Только при таких условиях программный комплекс может быть назван программным продуктом.
КЛАССИФИКАЦИЯ ПРОГРАММНЫХ ПРОДУКТОВ
Классы программных продуктов
Программные продукты можно классифицировать по различным признакам. Рассмотрим классификацию, в которой основополагающим признаком является сфера (область) использования программных продуктов:

Классы программных
продуктов
47
Системное |
Пакеты прикладных |
Инструментарий |
программное |
программ |
технологии |
обеспечение |
|
программирования |
Рис. 4.1. Классы программных продуктов
•аппаратная часть автономных компьютеров и сетей;
•функциональные задачи различных предметных областей;
•технология разработки программ.
Для поддержки информационной технологии в этих областях выделим соответственно три класса программных продуктов, представленных на рис.4.1:
•системное программное обеспечение;
•пакеты прикладных программ (прикладное программное обеспечение);
•инструментарий технологии программирования.
Системное программное обеспечение направлено:
•на создание операционной среды функционирования других программ;
•на обеспечение надежной и эффективной работы самого компьютера и вычислительной сети;
•на проведение диагностики и профилактики аппаратуры компьютера и вычислительных сетей;
•на выполнение вспомогательных технологических процессов (копирование, архивирование и восстановление файлов программ и баз данных и т.д.)
Данный класс программных продуктов тесно связан с типом компьютера и является
его неотъемлемой частью. Программные продукты в основном ориентированы на квалифицированных пользователей - профессионалов в компьютерной области: системного программиста, администратора сети, прикладного программиста, оператора. Однако знание базовой технологии работы с этим классом программных продуктов требуется и конечным пользователям персонального компьютера, которые самостоятельно не только работают со своими программами, но и выполняют обслуживание компьютера, программ и данных.
Программные продукты данного класса носят общий характер применения, независимо от специфики предметной области. К ним предъявляются высокие требования по надежности и технологичности работы, удобству и эффективности использования.
Системное программное обеспечение (System Software) - совокупность программ и программных комплексов для обеспечения компьютера и сетей ЭВМ.
Пакеты прикладных программ (ППП) служат программным инструментарием решения функциональных задач и являются самым многочисленным классом программных продуктов. В данный класс входят программные продукты, выполняющие обработку информации различных предметных областей.
Установка программных продуктов на компьютер выполняется квалифицированными пользователями, а непосредственную их эксплуатацию осуществляют, как правило, конечные пользователи - потребители информации, во многих случаях, деятельность которых весьма далека от компьютерной области. Данный класс программных продуктов может быть весьма специфичным для отдельных предметных областей.
48
Пакет прикладных программ (application program package) - комплекс взаимосвязанных программ для решения задач определенного класса конкретной предметной области.
Инструментарий технологии программирования обеспечивает процесс разработки программ и включает специализированные программные продукты, которые являются инструментальными средствами разработчика. Программные продукты данного класса поддерживают все технологические этапы процесса проектирования, программирования (кодирования), отладки и тестирования создаваемых программ. Пользователями этого класса программных продуктов являются системные и прикладные программисты.
Инструментарий технологии программирования - совокупность программ и программных комплексов, обеспечивающих технологию разработки, отладки и внедрения создаваемых программных продуктов.

49
Системное программное обеспечение
Структура системного программного обеспечения
На рис.4.2. представлена структура системного программного обеспечения - базового программного обеспечения, которое, как правило, поставляется вместе с компьютером, и сервисного программного обеспечения, которое может быть приобретено дополнительно.
Системное программное обеспечение
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Базовое |
|
|
|
|
Сервисное |
||||
программное |
|
|
программное обеспечение |
||||||
обеспечение |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
Операционная |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программы |
|||
система |
|
|
|
|
|
|
|||
|
|
|
|
|
|
диагностики |
|||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
работоспособности |
|
Операционная |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
Антивирусные |
|||
оболочка |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
программы |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программы |
|
|
|
|
|
|
|
|
обслуживания дисков |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программы |
|
|
|
|
|
|
|
|
архивирования |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
данных |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Программы |
|
|
|
|
|
|
|
|
обслуживания сети |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
Рис. 4.2. Классификация системного программного обеспечения компьютера.
Базовое программное обеспечение (base software) - минимальный набор программных средств, обеспечивающих работу компьютера.
Сервисное программное обеспечение - программы и программные комплексы,
которые расширяют возможности базового программного обеспечения и организуют более удобную среду работы пользователя.
50
Базовое программное обеспечение
В базовое программное обеспечение входят:
•операционная система;
•операционные оболочки (текстовые и графические). Понятие операционной системы
Операционная система - это совокупность программ, выполняющих две основные
функции:
1.управление ресурсами системы, их распределение между несколькими пользователями и контроль за выделением ресурсов для одновременного выполнения многих задач;
2.предоставление набора услуг, обеспечивающего пользователю удобный интерфейс.
Пользовательский интерфейс (interface – средства взаимодействия, связи, согласования) – методы и средства взаимодействия человека с аппаратными и программными средствами.
Операционные системы классифицируются по:
•количеству одновременно работающих пользователей на однопользовательские и многопользовательские;
•числу задач, одновременно выполняемых под управлением ОС, на однозадачные и многозадачные;
•количеству используемых процессоров на однопроцессорные и многопроцессорные;
•разрядности процессора на 8-, 16-, 32- и 64-разрядные;
•типу пользовательского интерфейса на командные (текстовые) и объектно-
ориентированные (графические);
•типу использования общих аппаратных и программных ресурсов на сетевые и локальные.
Главным отличием многопользовательских систем от однопользовательских является наличие средств защиты информации каждого пользователя от несанкционированного доступа других пользователей.
Вмногозадачном режиме каждой задаче (программе, приложению) поочередно выделяется какая-то доля процессорного времени. Поскольку процесс переключения идет очень быстро, а выделяемые задачам доли процессорного времени достаточно малы, то для пользователя создается впечатление одновременного выполнения нескольких задач. Например, можно одновременно запустить на счет математическую систему, включить принтер для печати текста, вести поиск вирусов и раскладывать пасьянс – заметить замедление работы компьютера будет практически невозможно.
Различают вытесняющую и невытесняющую многозадачность.
При работе ЭВМ важнейшим разделяемым ресурсом является процессорное время. Распределение процессорного времени между несколькими одновременно выполняемыми программами может осуществляться двумя способами. При невытесняющей многозадачности активный процесс выполняется до тех пор, пока он сам по собственной инициативе не отдаст управление ОС для того, чтобы та выбрала из очереди другой готовый к исполнению процесс. При вытесняющей многозадачности решение о переключении процессора с одного процесса на другой принимается ОС, а не самим активным процессом.
Вкачестве примера однопользовательской однозадачной ОС можно назвать MSDOS, однопользовательской многозадачной – Windows. Операционная система UNIX является многопользовательской многозадачной ОС.
Создание ОС очень трудоемкий процесс и затраты исчисляются сотнями, даже тысячами человеко-часами. Современные ОС содержат множество системных программ и по этой причине часто занимают на диске больше места, чем прикладная программа, которая использует сервис, предоставляемый ОС.