Программное обеспечение
Для того чтобы пользователь мог запустить прикладную программу, в памяти компьютера должно уже содержаться некоторое системное программное обеспечение. Системное программное обеспечение — это набор программ, предназначенных для выполнения следующих функций:
· получение и интерпретация команд пользователя;
· ввод и редактирование прикладных программ, их сохранение в файлах на вторичных запоминающих устройствах;
· управление процессом сохранения файлов на вторичных запоминающих устройствах и извлечение их с указанных устройств;
· запуск стандартных прикладных программ, таких как текстовые процессоры, электронные таблицы или игры, с данными, которые предоставляются пользователем;
· управление устройствами ввода-вывода для получения входной информации и вывода выходных данных;
· трансляция исходного кода программ, подготовленных ранее пользователем, в объектные модули, состоящие из машинных команд;
· компоновка пользовательских прикладных программ со стандартными библиотечными подпрограммами (например, выполняющими числовые вычисления) и запуск результирующих программ.
Таким образом, системное программное обеспечение отвечает за координирование всех операций, выполняемых в компьютерной системе. В этом разделе мы рассмотрим его важнейшие аспекты.
Прикладные программы обычно пишутся на языках программирования высокого уровня, в том числе на С, C++, Java, Pascal, FORTRAN и т.д., позволяющих программисту задать действия, которые должна выполнить программа (скажем, математические вычисления или обработку строк текста). Такие операции описываются в формате, не зависящем от типа компьютера, который будет выполнять программу.
Программисту, использующему язык высокого уровня, не нужно знать машинные команды и особенности их использования. Специальная системная программа, называемая компилятором, транслирует программу на языке высокого уровня в программу на машинном языке, состоящую из таких команд, как Add и Load, о которых рассказывалось в разделе 3.2.
Еще одна важная системная программа, которой пользуются все программисты, называется текстовым редактором. Она предназначена для ввода и редактирования прикладных программ. Пользователь такой программы с помощью клавиатуры вводит и редактирует инструкции исходного текста программы и накапливает их в файле. Файл — это просто последовательность буквенно-цифровых символов или двоичных данных, которая сохраняется в памяти или на вторичном запоминающем устройстве. К файлу можно обращаться по заданному пользователем имени.
Сосредоточим внимание на ключевом компоненте системного программного обеспечения, называемом операционной системой (ОС). Это большая программа, а точнее, целый набор программ, используемый для управления взаимодействием различных устройств компьютера при выполнении прикладных программ. Компоненты операционной системы отвечают за предоставление прикладным программам ресурсов компьютера — основной памяти и памяти на магнитных дисках, устройств ввода-вывода и т. д.
Чтобы понять назначение и основные принципы функционирования операционной системы, давайте рассмотрим систему с одним процессором, одним диском и одним принтером. Сначала мы обсудим процесс выполнения прикладной программы. Когда он станет вам понятен, мы сможем поговорить о том, как операционная система организует одновременное выполнение нескольких прикладных программ. Предположим, у нас имеется уже откомпилированная прикладная программа, сохраненная в виде машинных команд на диске. Первым делом файл, в котором хранится эта программа, нужно переслать в память. Как только это будет сделано, начнется выполнение программы. Допустим, что в функции программы входит чтение файла данных с диска в основную память, выполнение определенных вычислений с этими данными и печать результатов. Когда выполняемой программе потребуется файл данных, программа попросит операционную систему переслать ей таковой с диска в память. Операционная система выполнит этот запрос и вернет управление прикладной программе, которая перейдет к вычислениям. Когда вычисления будут завершены и придет время печати результатов, прикладная программа снова направит запрос операционной системе. В ответ будет осуществлена соответствующая программа операционной системы, которая обеспечит отправку нужных данных на принтер.
Итак, вы видите, что при выполнении прикладной программы управление постоянно передается то ей, то программам операционной системы. Процесс поочередного использования процессора можно проиллюстрировать линейной диаграммой, показанной на рис. 3.4. В течение времени от момента t0 до момента t1 одна из программ операционной системы инициирует загрузку прикладной программы с диска в память, дожидается завершения процесса загрузки, а затем передает управление прикладной программе. Аналогичные процессы происходят с момента t2 до момента t3 и с момента t4 до момента t5, когда операционная система считывает файл данных с диска в основную память и когда она печатает результаты. После момента времени t5 операционная система может загрузить и выполнить другую прикладную программу.
Рис. 3.4. Поочередное использование процессора прикладной программой и программами операционной системы
А теперь давайте рассмотрим способ более эффективного использования ресурсов компьютера, заключающийся в параллельном выполнении нескольких программ. Обратите внимание, что в течение отрезка времени от момента (t4 до момента t5 ни процессор, ни диск не заняты никакой работой. В это время работает только принтер, и операционная система могла бы загрузить в память следующую программу. Аналогичным образом, в промежуток времени от t0 до t1 операционная система могла бы печатать результаты, сгенерированные предыдущей программой (пока текущая программа загружается с диска). Именно так операционная система управляет параллельным выполнением нескольких прикладных программ, обеспечивая поочередное использование ими ресурсов компьютера. Такая схема параллельного выполнения программ называется многозадачностью.
3.4.1.Этапы подготовки и решения задач на ЭВМ
На ЭВМ могут решаться задачи различного характера, например: научно-инженерные; разработки системного программного обеспечения; обучения; управления производственными процессами и т. д. Для примера рассмотрим процесс подготовки и решения на ЭВМ научно-инженерных задач. Здесь можно выделить следующиеэтапы:
- постановка задачи;
- математическое описание задачи;
- выбор и обоснование метода решения;
- алгоритмизация вычислительного процесса;
- составление программы;
- отладка программы;
- решение задачи на ЭВМ и анализ результатов.
В задачах другого класса некоторые этапы могут отсутствовать, например, в задачах разработки системного программного обеспечения отсутствует математическое описание.
Перечисленные этапы связаны друг с другом. Например, анализ результатов может показать необходимость внесения изменений в программу, алгоритм или даже в постановку задачи. Для уменьшения числа подобных изменений необходимо на каждом этапе по возможности учитывать требования, предъявляемые последующими этапами. В некоторых случаях связь между различными этапами, например, между постановкой задачи и выбором метода решения, между составлением алгоритма и программированием, может быть настолько тесной, что разделение их становится затруднительным.
Постановка задачи. На данном этапе формулируется цель решения задачи и подробно описывается ее содержание. Анализируются характер и сущность всех величин, используемых в задаче, и определяются условия, при которых она решается. Корректность постановки задачи является важным моментом, так как от нее в значительной степени зависят другие этапы.
Математическое описание задачи. Настоящий этап характеризуется математической формализацией задачи, при которой существующие соотношения между величинами, определяющими результат, выражаются посредством математических формул. Так формируется математическая модель явления с определенной точностью, допущениями и ограничениями. При этом в зависимости от специфики решаемой задачи могут быть использованы различные разделы математики и других дисциплин.
Математическая модель должна удовлетворять, по крайней мере, двум требованиям:
- реалистичности;
- реализуемости.
Под реалистичностью понимается правильное отражение моделью наиболее существенных черт исследуемого явления.
Реализуемость достигается разумной абстракцией, отвлечением от второстепенных деталей, чтобы свести задачу к проблеме с известным решением. Условием реализуемости является возможность практического выполнения необходимых вычислений за отведенное время при доступных затратах требуемых ресурсов.
Выбор и обоснование метода решения. Модель решения задачи с учетом ее особенностей должна быть доведена до решения при помощи конкретных методов решения. Само по себе математическое описание задачи в большинстве случаев трудно перевести на язык машины. Выбор и использование метода решения задачи позволяет привести решение задачи к конкретным машинным операциям. При обосновании выбора метода необходимо учитывать различные факторы и условия, в том числе точность вычислений, время решения задачи на ЭВМ, требуемый объем памяти и другие.
Одну и ту же задачу можно решить различными методами, при этом в рамках каждого метода можно составить различные алгоритмы.
Алгоритмизация вычислительного процесса. На данном этапе составляется алгоритм решения задачи согласно действиям, задаваемым выбранным методом решения. Процесс обработки данных разбивается на отдельные относительно самостоятельные блоки, и устанавливается последовательность выполнения блоков. Разрабатывается, например, блок-схема алгоритма.
Составление программы. При составлении программы алгоритм решения задачи переводится на конкретный язык программирования. Для программирования обычно используются языки высокого уровня, поэтому составленная программа требует перевода ее на машинный язык ЭВМ. После такого перевода выполняется уже соответствующая машинная программа.
Отладка программы. Отладка заключается в поиске и устранении синтаксических и логических ошибок в программе. В ходе синтаксического контроля программы транслятором выделяются конструкции и сочетания символов, недопустимые с точки зрения правил их построения или написания, принятых в данном языке. Сообщения об ошибках ЭВМ выдает программисту, при этом вид и форма выдачи подобных сообщений зависят от вида языка и версии используемого транслятора.
После устранения синтаксических ошибок проверяется логика работы программы в процессе ее выполнения с конкретными исходными данными. Для этого используются специальные методы, например, в программе выбираются контрольные точки, для которых вручную рассчитываются промежуточные результаты. Эти результаты сверяются со значениями, получаемыми ЭВМ в данных точках при выполнении отлаживаемой программы. Кроме того, для поиска ошибок могут быть использованы отладчики, выполняющие специальные действия на этапе отладки, например, удаление, замена или вставка отдельных операторов или целых фрагментов программы, вывод или изменение значений заданных переменных.
Решение задачи на ЭВМ и анализ результатов. После отладки программы ее можно использовать для решения прикладной задачи. При этом обычно выполняется многократное решение задачи на ЭВМ для различных наборов исходных данных. Получаемые результаты интерпретируются и анализируются специалистом или пользователем, поставившим задачу.
Разработанная программа длительного пользования устанавливается на ЭВМ, как правило, в виде готовой к выполнению машинной программы. К программе прилагается документация, включая инструкцию для пользователя.
Чаще всего при установке программы в ЭВМ для ее последующего использования, с ней устанавливаются различные вспомогательные программы (утилиты, справочники, настройщики и т.д.), а также необходимые для работы программы разного рода файлы с текстовой, графической, звуковой и другой информацией.
3.4.2.Алгоритмы и способы их описания (для более детального изучения раздела можно посмотреть ресурс http://www.tmn.fio.ru/works/04x/306/P04_04/page/p1.htm)
Понятие алгоритма
Для составления программы, предназначенной для решения на ЭВМ какой-либо задачи, требуется составление алгоритма ее решения.
Алгоритм — это точное предписание, которое определяет процесс, ведущий от получения исходных данных к требуемому конечному результату Алгоритмами, например, являются правила сложения, умножения, решения алгебраических уравнений, умножения матриц и т.п.
Слово алгоритм происходит от algoritmi, являющегося латинской транслитерацией арабского имени хорезмийского математика IX века аль-Хорезми. Благодаря латинскому переводу трактата аль-Хорезми европейцы в XII веке познакомились с позиционной системой счисления, и в средневековой Европе алгоритмом называлась десятичная позиционная система счисления и правила счета в ней.
Каждый алгоритм создаётся в расчёте на выполнение конкретного исполнителя и должен содержать только те действия, которые допустимы для исполнителя, которому предназначается данный алгоритм. Объекты, над которыми исполнитель может совершать действия, образуют так называемую среду исполнения.
Применительно к ЭВМ алгоритм определяет вычислительный процесс, начинающийся с обработки некоторой совокупности возможных исходных данных и направленный на получение определенных этими исходными данными результатов. Термин вычислительный процесс распространяется и на обработку других видов информации, например, символьной, графической или звуковой.
Если вычислительный процесс заканчивается получением правильных результатов, то говорят, что соответствующий алгоритм применим к рассматриваемой совокупности исходных данных. В противном случае говорят, что алгоритм неприменим к совокупности исходных данных. Любой применимый алгоритм обладает следующимиосновными свойствами;
- дискретность;
- понятность
- результативностью;
- определенностью;
- массовостью.
Дискретность алгоритма означает, что он исполняется по шагам: каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего.
Понятностьозначает, чтокаждый шаг алгоритма обязательно представляет собой какое-либо допустимое действие исполнителя.
Результативность подразумевает, что каждый шаг (и алгоритм в целом) после своего завершения даёт среду, в которой все имеющиеся объекты однозначно определены, т.е. это означает, что должна быть возможность получения результата после выполнения конечного количества операций.
Определенность означает, что на каждом шаге однозначно определено преобразование объектов среды исполнителя, полученных на предшествующих шагах алгоритма. Это приводит к совпадению получаемых результатов независимо от пользователя и применяемых технических средств.
Массовость означает, что имеется некоторое множество данных, которые могут обрабатываться алгоритмом, или данный алгоритм может быть применен для решения любой задачи одного типа.
заключается в возможности применения алгоритма к целому классу однотипных задач, различающихся конкретными значениями исходных данных.
Для задания алгоритма необходимо описать следующие его элементы:
- набор объектов, составляющих совокупность возможных исходных данных, промежуточных и конечных результатов;
- правило начала;
- правило непосредственной переработки информации (описание последовательности действий);
- правило окончания;
- правило извлечения результатов.
Алгоритм всегда рассчитан на конкретного исполнителя. В нашем случае таким исполнителем является ЭВМ. Для обеспечения возможности реализации на ЭВМ алгоритм должен быть описан на языке, понятном компьютеру, то есть на языке программирования.
Таким образом, можно дать следующее определение программы.
Программа для ЭВМ представляет собой описание алгоритма и данных на некотором языке программирования, предназначенное для последующего автоматического выполнения.
Способы описания алгоритмов
К основным способам описания алгоритмов для компьютеров можно отнести следующие:
- словесно-формульный;
- графический или структурный, т.е. с помощью блок-схем;
- программный, т.е. тексты на языках программирования.
При составлении алгоритмов большинства программ чаще всего используются словесно-формульный и блок-схемный способы. Иногда перед составлением программ на низкоуровневых языках программирования типа языка Ассемблера алгоритм программы записывают, пользуясь конструкциями некоторого высокоуровнего языка программирования. Удобно использовать программное описание алгоритмов функционирования сложных программных систем. Так, для описания принципов функционирования ОС использовался Алголоподобный высокоуровневый язык программирования.
Присловесно-формульном способе алгоритм записывается в виде текста с формулами по пунктам, определяющим последовательность действий. Пусть, например, необходимо найти значение следующего выражения:
у=2а-(х+6).
Словесно-формульным способом алгоритм решения этой задачи может быть записан в следующем виде:
1. Ввести значения а и х.
2. Сложить х и 6.
3. Умножить а на 2.
4. Вычесть из 2а сумму (х+6).
5. Вывести у как результат вычисления выражения.
Приблок-схемном описании алгоритм изображается геометрическими фигурами (блоками), связанными по управлению линиями (направлениями потока) со стрелками. В блоках записывается последовательность действий. Первые понятия о блок-схемном описании алгоритмов ввели русские советские математики А.А. Ляпунов и Ю.Н. Янов в 1956 г.
Данный способ по сравнению с другими способами записи алгоритма имеет ряд преимуществ. Он наиболее нагляден: каждая операция вычислительного процесса изображается отдельной геометрической фигурой. Кроме того, графическое изображение алгоритма наглядно показывает разветвления путей решения задачи в зависимости от различных условий, повторение отдельных этапов вычислительного процесса и другие детали.
Оформление алгоритмов программ должно соответствовать определенным требованиям. Например, в единой системе программной документации (ЕСПД) операции обработки данных и носители информации изображаются на схеме соответствующимиблоками. Большая часть блоков по построению условно вписана в прямоугольник со сторонами а и b, размер b = 1,5a. Минимальное значение а равно 10 мм, увеличение апроизводится на число, кратное 5 мм. В пределах одной схемы рекомендуется изображать блоки одинаковых размеров. Все блоки нумеруются. Виды и назначение основных блоков приведены в табл. 3.1.
Линии, соединяющие блоки и указывающие последовательность связей между ними, должны проводится параллельно линиям рамки. Стрелка в конце линии может не ставиться, если линия направлена слева направо или сверху вниз. В блок может входить несколько линий, то есть блок может являться преемником любого числа блоков. Из блока (кроме логического) может выходить только одна линия. Логический блок может иметь в качестве продолжения один из двух блоков, и из него выходят две линии. Если на схеме имеет место слияние линий, то место пересечения выделяется точкой. В случае, когда одна линия подходит к другой и слияние их явно выражено, точку можно не ставить.
Схему алгоритма следует выполнять, как единое целое, однако в случае необходимости допускается обрывать линии, соединяющие блоки.
Если при обрыве линии продолжение схемы находится на этом же листе, то на одном и другом конце линии изображается специальный символсоединитель — окружность диаметром 0,5 а. Внутри парных окружностей указывается один и тот же идентификатор. В качестве идентификатора, как правило, используется порядковый номер блока, к которому направлена соединительная линия.
Если схема занимает более одного листа, то в случае разрыва линии вместо окружности используетсямежстраничный соединитель. Внутри каждого соединителя указывается адрес — откуда и куда направлена соединительная линия. Адрес записывается в две строки: в первой указывается номер листа, во второй — порядковый номер блока.
Блок-схема должна содержать все разветвления, циклы и обращения к подпрограммам, содержащиеся в программе.