Решение задач с помощью ЭВМ
Этапы решения технических задач
Этапы решения задачи на ЭВМ
Бурное развитие вычислительной техники приводит к широкому проникновению математических методов в науку, технику и народное хозяйство. Происходит интенсивный процесс математизации не только естественных и технических, но и гуманитарных наук. Все это расширяет классы задач, решаемых на ЭВМ. Решение на ЭВМ задач каждого класса имеет свою специфику, однако его можно разбить на несколько этапов, характерных для большинства задач,
Постановка задачи и построение алгоритма
Решение задачи начинается с ее постановки, изложенной на языке строго определенных математических понятий. Поэтому, чтобы можно было решить задачу, связанную с исследованием реального объекта, необходимо сначала описать этот объект в математических терминах, т. е. построить его математическую модель. Математическая модель объекта позволяет поставить задачу математически и тем самым свести решение реальной задачи к решению задачи математической. Она, отражая наиболее существенные свойства реального исследуемого объекта или явления, не тождественна этому объекту, а является лишь приближенным его описанием. В этом смысле математические модели — те же относительные истины, через посредство которых познается реальная действительность с асимптотическим приближением к истине абсолютной. Степень соответствия модели реальному объекту проверяется практикой, экспериментом. Критерий практики дает возможность оценить построенную модель и уточнить ее в случае необходимости.
Метод математического моделирования реальных явлений возник и получил свое развитие в физике.
Так, еще в XVII в. Г. Галилеем была предложена хорошо известная теперь математическая модель, описывающая движение тела, брошенного под углом к горизонту с заданной начальной скоростью. Первая крупная математическая модель в физике — механика Ньютона.
Внедрение математических методов исследования в другие науки также тесно связано с созданием математических моделей. Например, такие модели успешно используются для прогноза погоды, исследования и предсказания поведения тропических тайфунов и т. п. Созданы модели, прогнозирующие глобальные последствия термоядерного конфликта, которые играют значительную роль в борьбе за уничтожение ядерного оружия.
Все большее значение приобретает математическое моделирование в экономике. Созданы, например, модели для изучения общих закономерностей политической экономии, многоотраслевые модели общегосударственного планирования, модели, описывающие функционирование отдельных отраслей и отдельных предприятий.
Успехи применения вычислительной техники во многих областях человеческого знания определяются не только развитием метода математического моделирования. Например, создание мощных информационно-поисковых систем может оказать существенное влияние на методы научной работы в таких областях, как философия или история, а создание человеко-машинных систем автоматизированного проектирования позволит не только по-новому организовать работу конструктора и сократить сроки проектирования, но и значительно сократить сроки и стоимость натурных испытаний и «доводки» разработанных конструкций.
Итак, построение математической модели приводит к математической постановке реальной задачи. Далее необходимо найти способ решения этой задачи. Очень часто решение такой задачи не удается получить в явном виде, т. е. в виде формулы, связывающей исходные данные и результаты. В таких случаях решение ищется в виде алгоритма.
Построение алгоритма — следующий этап решения задачи с использованием ЭВМ.
Описанные этапы решения задачи выполняются человеком и носят творческий характер — каждая новая задача требует новых подходов и новых способов решения, и этому вряд ли можно научить даже анализируя способы решения многих других уже известных задач.
Однако уже этап построения алгоритма включает помимо творческих и чисто технологические вопросы. Используя определенную дисциплину при конструировании алгоритма, можно получить алгоритм с явно выраженной структурой, что облегчает его понимание и дальнейшую работу с ним.
Аналогичная технология может быть использована и на последующих этапах — при разработке программы для ЭВМ и работе с этой программой. Конечно, и здесь от человека требуется немало творчества и изобретательности, тем не менее именно эти этапы решения задачи на ЭВМ получили наибольшее технологическое развитие.
Единая технология, применяемая на этапах разработки алгоритма и программы, может значительно облегчить и ускорить общий процесс решения задачи на ЭВМ.
ЭВМ никаких решений не принимает. Решение принимает человек, а ЭВМ только помогает найти варианты решении. Что же нужно сделать чтобы найти такие варианты решении? Основные этапы решения задачи проектирования технологических установок. Рассмотрим эти этапы.
Выбор задачи. Выбор задачи — важнейший вопрос. Решение задачи, особенно достаточно сложной, — это очень трудное дело требующее много времени. И если задача выбрана неудачно, то это может привести не только к сожалению о потерянном времени.
Выбор задачи завершается ее содержательной постановкой. Когда выбирается задача и производится ее содержательная постановка, естественно, приходится иметь дело со специалистами в предметной области (по управлению, проектированию, разработке технологических процессов) Эти специалисты, как правило, очень добросовестные, с одной стороны, прекрасно знают свой предмет, с другой — не всегда имеют представление о том, что требуется для решения задачи на ЭВМ. Поэтому содержательная постановка задачи зачастую оказывается перенасыщенной сведениями, которые совершенно излишни для работы на ЭВМ.
Поясним сказанное на простом примере. Пусть перед нами стоит такая задача Требуется определить, сколько у пятилетней девочки Маши, которая слушает папу, маму, дедушку и бабушку, каждое утро ест манную кашу, говорит «спасибо» и моет руки перед едой, было яблок, если, когда дворник соседнего дома тетя Даша дала ей еще два яблока, у этой чудесной белокурой девчушки, уже второй год занимающейся фигурным катанием, коллекционирующей марки и поющей в хоре при Доме народного творчества, находящемся в прекрасном здании, построенном по проекту, удостоенному второй премии на республиканском конкурсе, их стало пять.
Вот так достаточно часто выглядит содержательная постановка задачи, сделанная эрудированными специалистами в предметной области, несколько далекими от знания требований ЭВМ
Элементы теории алгоритмов
1. Понятие алгоритма и свойства алгоритма
Понятие алгоритма является основным при составлении любого вида программ для ЭВМ. Программа для ЭВМ — алгоритм, оформленный специальным образом, конечная последовательность предписаний, определяющих процесс переработки входных данных в выходные.
Слово "Алгоритм" происходит от algorithmi - латинского написания имени аль-Хорезми, под которым в средневековой Европе знали величайшего математика из Хорезма (город в современном Узбекистане) Мухаммеда бен Мусу, жившего в 783-850 гг. В своей книге "Об индийском счете" он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком. В дальнейшем алгоритмом стали называть точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных. Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством. Создание алгоритма, пусть даже самого простого, - процесс творческий. Он доступен исключительно живым существам, а долгое время считалось, что только человеку. Другое дело - реализация уже имеющегося алгоритма. Ее можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять. Такой субъект или объект принято называть формальным исполнителем. Примером формального исполнителя может служить стиральная машина-автомат, которая неукоснительно исполняет предписанные ей действия, даже если вы забыли положить в нее порошок. Человек тоже может выступать в роли формального исполнителя, но в первую очередь формальными исполнителями являются различные автоматические устройства, и компьютер в том числе. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Те действия, которые может совершать исполнитель, называются его его допустимыми действиями. Совокупность допустимых действий образует систему команд исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя.
Алгоритм — формальное предписание (указание), однозначно определяющее содержание и последовательность операций, переводящих совокупность исходных данных в искомый результат — решение поставленной задачи.
обычно формулируют несколько общих свойств алгоритмов, позволяющих отличать алгоритмы от других инструкций.
Из определения алгоритма и рассмотренных примеров можно сформулировать следующие требования к его свойствам.
Такими свойствами являются:
Дискретность (прерывность, раздельность) - алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов. Каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего.
Определенность - каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
Результативность (конечность) - алгоритм должен приводить к решению задачи за конечное число шагов.
Массовость - алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
Средства, используемые для записи алгоритмов, в значительной степени определяются тем, для какого исполнителя предназначается алгоритм. Если алгоритм предназначен для исполнителя — человека, то его запись может быть не полностью формализована, на первое место здесь выдвигаются понятность и наглядность, поэтому для записи таких алгоритмов может использоваться естественный или графический язык, лишь бы запись отражала все основные особенности алгоритма. Для записи алгоритмов, предназначенных для исполнителей — автоматов, необходима формализация, поэтому в таких случаях применяют специальные формальные языки.
Словесная запись алгоритма. Словесная форма обычно используется для алгоритмов, ориентированных на исполнителя — человека. Команды алгоритма нумеруют, чтобы иметь возможность на них ссылаться. Приведем в качестве еще одного примера словесной формы записи алгоритма классический алгоритм Евклида для нахождения наибольшего общего делителя двух натуральных чисел:
Даны два целых положительных числа m и n. Требуется найти их наибольший общий делитель, т.е. наибольшее положительное число, на которое делится без остатка как m, так и n.
Суть алгоритма Евклида можно представить следующими тремя этапами.
1. Нахождение остатка. Разделим m на n. Пусть остаток равен г:
0<г< n.
2. Проверка остатка на равенство нулю. Если г = О, вычисление кончается, n — искомое число.
3. Замена m ← n, n ← г. Повторить этап 1.
Пример
1. Даны m = 125, n = 75. Наши наибольший общий делитель.
1) 125: 75 = 1. Частное равно 1, остаток от деления равен 50,
2) Остаток от деления не равен 0. Проводим замену переменных:
m = 75, n = 50 и повторяем процесс,
1) 75: 50= 1, m = 25.
2) m = 50, n = 25, г = 0.
Повторяем процедуру.
1) 50:25= 2.
2) Остаток от деления равен 0, поэтому n = 25 является наибольшим общим делителем.
2. К отрезку АВ в точке М восстановить перпендикуляр. Алгоритм решения этой геометрической задачи может быть описан в виде четырех последовательных шагов (рис. 1).
1) Из произвольной точки О плоскости радиусом ОМ описать окружность, пересекающую отрезок АВ.
2) Отметить точку С пересечения окружности с отрезком АВ,
3) Найти точку D пересечения окружности с прямой ОС.
Рис. 1. Восстановление перпендикуляра к отрезку в данной точке
4) Соединить точку М и D.
Если строго выполнять все предписания, то будет получен однозначный ответ,
Форма записи команд не формализуется. В командах помимо слов могут использоваться символы и формулы. Важно лишь то, чтобы каждая команда была понятна исполнителю, точно определяла все его действия и могла бы быть им выполнена.
Для решения задачи можно разработать несколько алгоритмов. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Если планируется реализация алгоритма на машине, следует учитывать его приспособляемость к ЭВМ, простоту и время реализации на машине. Алгоритм должен быть разработан таким образом, чтобы исполнитель мог даже не вникать в смысл того, что он делает, и вместе с тем получать нужные результаты. Исполнение уже имеющегося алгоритма можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять.
Описание алгоритма
Правила выполнения арифметических операций или геометрических построений представляют собой алгоритмы.
Указание формулы или последовательности формул, расчеты по которым нужно выполнить для получения результатов.
Пример
Вычислить объем круглого конуса. Для вычисления следует воспользоваться формулой
При заданных двух размерах (r — радиус основания и h — высота конуса) эта формула дает предписание исполнителю, как действовать, т. е. определены характер и последовательность действий.
Представление алгоритма в виде схемы.
При реализации задачи на ЭВМ, особенно в случае написания программ на машинно-ориентированных языках, и задач сложных алгоритмов используются схемы алгоритмов.
Схема алгоритма — графическое представление хода решения задачи.
При выполнении схем алгоритмов и программ отдельные функции алгоритмов и программ (с учетом их детализации) отображаются в виде условных графических обозначений — символов (ГОСТ 19.003—80 и ГОСТ 19.002—80). В табл. 1 приведены основные символы, используемые в схемах алгоритмов. Схемы должны быть выполнены в форматах, установленных по ГОСТ 2.301—68.
Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. В таблице приведены наиболее часто употребляемые символы.
При выполнении схем символам присваивают порядковые номера. Порядковый номер проставляют слева в верхней части символа в разрыве его контура. Символы соединяются прямыми линиями (линиями потока).
Линии потока должны быть параллельны линиям внешней рамки схемы. Направления линий потока сверху вниз и слева направо принимают за основные и, если они не имеют изломов, их можно стрелками не обозначать. В остальных случаях направление линии потока обозначать стрелкой обязательно.
Записи внутри символа выполняются чертежным шрифтом по ГОСТ 2.304—81. Записи внутри символа или рядом с ним должны быть краткими. Символы применяются с учетом выполняемых функций.
Таблица 1. Основные символы для схем алгоритмов
Название символа |
Обозначение и пример заполнения |
Пояснение |
Процесс |
Вычислительное
действие или |
|
Решение |
Проверка условий |
|
Модификация |
Начало цикла |
|
Предопределенный процесс |
Вычисления
по подпрограмме, |
|
Ввод-вывод |
Ввод-вывод в общем виде |
|
Пуск-останов |
Начало, конец
алгоритма, |
|
Документ |
Вывод результатов на печать |
№ п/п |
Графическое изображение элемента |
Описание элемента |
1 |
а b |
Процесс - блок обработки данных, в котором указываются действия, изменяющие значение, форму представления или расположение данных. |
2 |
|
Данные – блок описания операции ввода/вы-вода данных, для которой не определено конкретное устройство. |
3 |
|
Решение – блок выбора направления выполнения алгоритма в зависимости от некоторых условий. В результате проверки условия осуществляется выбор одного из нескольких возможных путей. |
4 |
· · · |
Границы цикла - символ состоит из двух частей и определяет начало и конец цикла. |
5 |
|
Предопределенный процесс – блок описания процесса из одной или нескольких операций, описанных в отдельном модуле (самостоятельном алгоритме). |
6 |
|
Комментарий – содержит пояснение функции блока, с которым связан. |
7 |
|
Терминатор – обозначает начало и конец алгоритма. |
8 |
|
Линия потока – отображает потоки данных и управления в алгоритме. |
9 |
|
Соединитель – указание связи между прерванными линиями потока, связывающими блоки. |
Пример описания алгоритма нахождения максимального из трех чисел XI, Х2, ХЗ с помощью схемы алгоритма представлен на рис. 2.
Графический метод описания алгоритма очень наглядный, но в случае сложного алгоритма схема получается громоздкой и это ее достоинство теряется. Использование схем алгоритмов значительно упрощает написание программ начинающими программистами.
Рис. 2 Схема алгоритма поиска Схема алгоритма Евклида максимального числа из трех чисел