Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Создание загрузочного модуля программы

Разработка прикладного программного обеспечения

 

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

1 Постановка задачи.

2. Выбор метода решения задачи и разработка алгоритма.

3. Программирование.

4. Отладка программы и создание загрузочного (исполняемого) модуля для решения задачи.

5. Анализ результатов.

 

 

Постановка задачи

При постановке задачи необходимо, прежде всего, определить роль, отведенную ЭВМ, и сделать хотя бы грубую оценку целесообразности ее применения. Кроме того, определяют класс к которому принадлежит задача. Например, задача может заключаться в выработке рекомендаций при принятии человеком окончательного решения (задача принятия решений). Либо задача может заключаться в многократном выполнении сложных математических операций при различных исходных данных (вычислительная задача) и т.п.

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

Итак, при постановке задачи необходимо:

- Определить исходные данные, поделить их на два класса: переменные (меняющиеся при повторном решении) и постоянные.

- Задать вид, свойства и ограничения на исходные данные.

- Определить выходные данные и требования к ним (вид, точность и т.п.).

- Определить перечень выполняемых функций.

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

 

Пример. Рассмотрим следующую задачу: создание программы для вычисления интеграла:

J=

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

Исходные данные - границы интегрирования и параметры, определяющие вид подынтегральной функции. Перечень параметров подынтегральной функции определяется классом к которому принадлежит функция. Предположим подынтегральная функция - это полином пятой степени: а0х51х42х3+ а3х24х+а5. Поэтому кроме границ интегрирования исходными данными будут коэффициенты полинома: а0, а1, а2, а3, а4 , а5. Все исходные данные являются переменными параметрами.

Вид исходных данных - целые, действительные или комплексные переменные.

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

Определить способ ввода исходных данных (с клавиатуры, с дискеты из другой программы и т.п.). Определить форму выходных данных и путь (принтер, файл на гибком или жестком диске).

 

 

Выбор метода

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

- метод прямоугольников;

- метод Cимпсона;

- метод трапеций

и другие.

При выборе метода учитывают:

- точность (точность получения результатов);

- быстродействие (время решения задачи с заданной точностью);

- необходимый объем внешней памяти;

- необходимый объем оперативной памяти.

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

Если методов решения задачи несколько, то выбор должен быть обоснованным.

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

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

Пример: Для задачи вычисления интеграла предложены методы:

- метод прямоугольников;

- метод Cимпсона;

- метод трапеций.

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

 

 

Разработка алгоритма

Предположим для решения задачи вычисления интеграла выбран метод прямоугольников. Изложим этот метод с помощью рис.4.2. Идея метода заключается в следующем. Промежуток интегрирования (а,в) разделим на n равных частей. В результате на оси хобразуются точки x0=a, х1, х2,...,хn=b. Строим на полученных отрезках прямоугольники покрывающие площадь фигуры образованной кривой f(x), осью х, и прямыми параллельными оси у, проведенными в точках x01,...,хn. Прямоугольники могут быть вписанными, как на нашем рисунке, либо описывающими вычисляемую площадь. Ведем следующие обозначения: y0=f(x0), y1=(x1),...,yn=f(xn), h=(b-a)/n. Тогда интеграл вычисляется по следующей формуле:

Jn=h(y0+y1+...+yn-1).

 

                           
   
 
y
 
 
   
x0
 
x1
 
x2
 
xn=b
 
x
 

 


Рис.4.2..Вычисление интеграла методом прямоугольников

 

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

Чтобы добиться заданной точности, например e, поступают следующим образом:

Разбивают промежуток интегрирования на n интервалов.

Вычисляют значение интеграла Jn.

Увеличивают число интервалов в 2 раза.

Вычисляют значение интеграла J2n

Если |J2n - Jn|£e, то заданная точность достигнута, в противном случае продолжают процесс, увеличения числа отрезков.

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

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

Процесс разработки алгоритма называется алгоритмизацией.

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

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

- Однозначность (детерминированность). Это свойство означает, что алгоритм при одних и тех же данных должен приводить к одному и тому же результату.

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

Алгоритм может быть описан словесно, в виде дерева либо с помощью блок схем.

Блок-схема - это подробное графическое представление алгоритма: порядка решения задачи, конкретных действий в виде набора определенных блоков, соединенных совокупностью направленных связей. Блоки представляют собой геометрические фигуры различных форм, каждая из которых характеризует особенности выполняемых действий и принимаемых решений (рис.4.3). Связи показывают переходы от одних блоков к другим. Форма для описания действий внутри блоков произвольная.

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

 
 

 

 


 

 

Рис.4.3. Основные блоки: а) начало; б) конец; в) ввод данных; г) вывод данных; д) вычислительный блок; е) условный блок.

 

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

1) Первоначально необходимо представить алгоритм из укрупненных блоков. Укрупненные блоки обычно нумеруются, так как в дальнейшем они будут представлены с помощью более детализированных блок-схем. Для задачи вычисления интеграла можно предложить следующую укрупненную блок схему (рис.4.4). Здесь блоки ввода-вывода и вычисления интегралов требуют детализации.

2) На втором шаге необходимо расписать алгоритмы для укрупненных блоков. В нашем случае это блоки1,2,3.

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

 

Рис.4.4. Блок-схема алгоритма вычисления интеграла

 

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

Программирование

 

Чтобы алгоритм был выполнен ЭВМ, он должен быть представлен на машинном языке. ЭВМ понимает только язык машинных команд. Последовательность машинных команд, выполняемых на ЭВМ, называется программой. Процесс создания программы называется программированием.

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

Первые программы для ЭВМ создавались на языке машинных команд. Процесс был утомительным, а созданные программы громоздкими. Например: так выглядела команда загрузки для ЭВМ ЕС-1022 на машинном языке.

 
 

 


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

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

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

Для выполнения процесса представленного данной блок-схемой на рис.4.5. необходимо выполнить следующие действия: для вычисления переменной h необходимо выполнить следующие две операции 1) операцию вычитания, над содержимым ячеек в которые вы предварительно поместили значения исходных данных а и b; 2) операцию деления содержимого ячейки, в которой находится предыдущий результат, на значение переменной n. Далее необходимо выполнить три операции присваивания: i:=0; J:=0; xi:=a (в результате выполнения этих операций в ячейки отведенные для переменных i, J, xi будут засланы значения соответственно 0, 0, а). Вычисление подынтегральной функции сведется к выполнению простейших арифметических операций. Причем, чем сложнее подынтегральная функция, тем больше команд будет использовано для программирования этого блока. Несомненно, что программа будет громоздкой.

На смену машинно-ориентированным языкам (языкам низкого уровня) пришли языки высокого уровня - алгоритмические языки. Эти языки предназначены для того чтобы избежать утомительного и чреватого ошибками программирования на языке ассемблер. Языки высокого уровня это языки Фортран, Бейсик, Алгол, Кобол, Паскаль, Си и другие.

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

h:=(b-a)/n; J:=0; x[0]:=a;

FOR i:=0 TO n-1 DO

BEGIN

J:=J+h*f(x[i]); x[i+1]:=x[i]+h;

END;

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

В настоящее время на смену алгоритмическим языкам пришли языки объектно-ориентированного программирования и языки четвертого уровня (об этом можно прочитать в разделе «Языки программирования»).

 

 

Создание загрузочного модуля программы

 

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

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

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

Далее на основе объектных модулей создается загрузочный (исполняемый) модуль программы - готовый к исполнению программный модуль. Загрузочный модуль создается в процессе компоновки объектных модулей.

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

 

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...