Программное обеспечение

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

· получение и интерпретация команд пользователя;

· ввод и редактирование прикладных программ, их сохранение в файлах на вторичных запоминающих устройствах;

· управление процессом сохранения файлов на вторичных запоминающих устройствах и извлечение их с указанных устройств;

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

· управление устройствами ввода-вывода для получения входной информа­ции и вывода выходных данных;

· трансляция исходного кода программ, подготовленных ранее пользовате­лем, в объектные модули, состоящие из машинных команд;

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

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

Прикладные программы обычно пишутся на языках программирования высо­кого уровня, в том числе на С, C++, Java, Pascal, FORTRAN и т.д., позволяющих программисту задать действия, которые должна выполнить программа (скажем, математические вычисления или обработку строк текста). Такие операции описываются в фор­мате, не зависящем от типа компьютера, который будет выполнять программу.

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

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

Сосредоточим внимание на ключевом компоненте систем­ного программного обеспечения, называемом операционной системой (ОС). Это большая программа, а точнее, целый набор программ, используемый для управле­ния взаимодействием различных устройств компьютера при выполнении при­кладных программ. Компоненты операционной системы отвечают за предостав­ление прикладным программам ресурсов компьютера — основной памяти и памя­ти на магнитных дисках, устройств ввода-вывода и т. д.

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

Итак, вы видите, что при выполнении прикладной программы управление по­стоянно передается то ей, то программам операционной системы. Процесс пооче­редного использования процессора можно проиллюстрировать линейной диа­граммой, показанной на рис. 3.4. В течение времени от момента t0 до момента t1 одна из программ операционной системы инициирует загрузку прикладной программы с диска в память, дожидается завершения процесса загрузки, а затем передает управление прикладной программе. Аналогичные процессы происходят с момента t2 до момента t3 и с момента t4 до момента t5, когда операционная систе­ма считывает файл данных с диска в основную память и когда она печатает ре­зультаты. После момента времени t5 операционная система может загрузить и вы­полнить другую прикладную программу.

Программное обеспечение - student2.ru

Рис. 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 а. Внутри парных окружностей указывается один и тот же иденти­фикатор. В качестве идентификатора, как правило, используется порядковый номер блока, к которому направлена соединительная линия.

Если схема занимает более одного листа, то в случае разрыва линии вместо окруж­ности используетсямежстраничный соединитель. Внутри каждого соединителя ука­зывается адрес — откуда и куда направлена соединительная линия. Адрес записывает­ся в две строки: в первой указывается номер листа, во второй — порядковый номер блока.

Блок-схема должна содержать все разветвления, циклы и обращения к подпрограм­мам, содержащиеся в программе.

Наши рекомендации