Шестаков В.С. Расчет на ЭВМ нефтегазового оборудования. Учебное пособие для МНГ-2015 (811778), страница 16
Текст из файла (страница 16)
Для сложных задач алгоритмывключают в себя все три вида схем.a1б 122Нет3в 1Нет3Да23ДагДаДаНет3132д1еI2I11НетI2InIiinРис. 3.1. Основные структуры алгоритмов и их производные:а – линейная, последовательное выполнение действий (блоков);б - цикл «До» (с постусловием), тело цикла (блок 2) выполняется до техпор, пока условие (блок 3) не станет истинным;в - цикл «Пока» (с предусловием), пока не будет нарушено условие(блок 3), осуществляется повторение тела цикла (блок 2);г – разветвление, применяется, когда в зависимости от условия требуетсявыполнить либо одно действие, либо другое;д – обход, частный случай разветвления, когда одна ветвь не содержитникаких действий;е - множественный выбор, обобщение разветвления, когда в зависимостиот значения переменной I выполняется одно из нескольких действийВ программе, составленной по алгоритму линейной структуры,все действия выполняются одно за другим.
В программе они реализуются операторами присваивания.85В программе, составленной по алгоритму разветвленной структуры, присутствуют условия проверки, и если условие «истина», товыполнится первая группа действий, а если нет, т. е. если условие«ложно», то выполнится другая группа действий. В программе ониреализуются операторами сравнения и присваивания.В программе, составленной по алгоритму циклической структуры, действие повторяется до тех пор, пока переменная, изменяясьот минимального значения, не достигнет максимального значения.
Впрограмме такие структуры реализуются операторами цикла и присваивания.Примеры часто применяемых алгоритмовОчень часто при решении инженерных задач в них входят типовые алгоритмы вычисления сумм, поиска наибольшего и наименьшего значения из некоторого ряда. Рассмотрим эти типовые алгоритмы.Алгоритм и программа вычисления суммыВоспользуемся приведенными выше рекомендациями, чтобы напримере вычисления суммы научиться составлять алгоритмы. Рассмотрим задачу: вычисление суммы N чисел.Вычисление суммы нескольких чисел на калькуляторе выполняется следующим образом:1) нажатием кнопки очистки очищается окно ввода (если в окнеимелось значение, отличное от нуля);2) набирается первое число;3) нажимается кнопка «плюс»;4) набирается следующее число;5) нажимается кнопка «плюс»;6) пункты 4, 5 повторяются до тех пор, пока не будут введенывсе числа.Указанные пункты представляют собой алгоритм решения задачи с помощью калькулятора.
Анализ приведенных пунктов последовательности расчетов показывает, что присутствуют операции вводаданных, вычисления и повторения действий.При разработке алгоритма решения задачи на ЭВМ первоначально прорабатывается вопрос использования данных. В этой задачедля хранения суммируемых значений можно применить массив и однупеременную для хранения суммы, а можно обойтись и без массива,86используя только одну переменную, в которую необходимо будет последовательно вводить значения и затем использовать их в формулевычисления суммы. Этот выбор повлияет на вид алгоритма. При использовании массивов ввод данных можно выполнить в одной подпрограмме, а вычисление в другой. При решении задачи без использования массивов ввод и вычисления должны выполняться в однойподпрограмме, в которой должен быть выполнен ввод числа, а затемсразу же его суммирование.При использовании массива для исходных данных и проведениирасчетов на ЭВМ процесс суммирования может быть организованследующим образом:1) выделяется ячейка памяти для хранения количества суммируемых значений и организуется массив для хранения этих значений;2) в ячейку памяти в программе вводится значение количествасуммируемых чисел;3) организуется цикл для ввода всех суммируемых значений;4) внутри цикла вводятся все суммируемые значения;5) для хранения результата суммирования в памяти компьютерадолжна быть выделена и очищена ячейка памяти (в нее первоначальнодолжен быть занесен нуль);6) организуется цикл по перебору всех элементов, подлежащихсуммированию;7) вычисляется сумма путем добавления текущего значенияэлемента суммирования к значению, хранимому в ячейке, и результатсуммирования отправляется в ту же ячейку;8) полученное значение суммы выводится на экран.Указанные пункты представляют собой алгоритм решения задачи на ЭВМ.
Анализ приведенных действий показывает, что пункты 14 обеспечивают ввод данных, пункты 5, 6, 7 – вычисление суммы, последний пункт вывод результатов. В соответствии с рекомендуемымиприемами по составлению алгоритмов эту задачу можно разбить натри подзадачи: ввод данных, расчет и вывод результатов. В представленном виде алгоритм позволяет хорошо уяснить задачу, но по немусоставлять программу затруднительно. Для повышения наглядности иудобства последующего программирования алгоритм изобразим вграфической форме с помощью специальных символов (табл.
3.1).Пример алгоритма вычисления суммы элементов одномерного87массива представлен на рис. 3.2. Вариантов алгоритмов решения дажеодной и той же задачи может быть несколько. В этой задаче алгоритмввода данных (рис. 3.2, а) может быть и другим.Начало1а2N35Ввод числа элементовЦикл повторения N раз вводаВвод i-го элемента массиваi=1,NA( i )4N,AN,AКонец алгоритма с выводомданныхНачало (поступление данных)2S=0Очистка ячейки под сумму3i=1,Nб 15Цикл повторения N раз вычисленийS=S+A(i)Вычисление суммы4SКонец алгоритма с выводом суммыРис. 3.2. Алгоритм вычисления суммы (пример алгоритмациклической структуры):а - алгоритм ввода данных, б - алгоритм вычисленияНачало1Задание начального номеравводимого элементаN =02Цикл для ввода массиваN =N+13Изменение номера вводимогоэлементаA( i )4Ввод i-го элемента массива5Проверка окончания вводаA( N )>0Да6N= N-17N,AВозврат к последнему ненулевому элементу массиваКонец алгоритма, вывод данныхРис.
3.3. Алгоритм ввода массива данных (пример алгоритмациклической структуры)88По приведенному алгоритму составляется программа. Рассмотрим пример вычисления суммы элементов данных, расположенных налисте Excel (это пример учебной задачи, Excel позволяет получитьтребуемую сумму с помощью формулы суммы непосредственно налисте Excel без программы Visual Basic).На листе Excel располагаются исходные данные, подготавливается место вывода результатов расчета, например, в видеАBПример программы расчета суммыИсходные данныеКоличество элементовЭлемент 1Элемент 2Элемент 3Элемент 4Элемент 5CD534355Программа на Visual Basic, составленная по приведенному алгоритмус данными, расположенными указанным способом на листе, будет иметь вид:Option ExplicitDim A(1 To 100) As Single, i As Integer, N As Integer, S As SingleSub Сумма()Ввод N, A‘Вызов процедуры ввода данныхCall Расчет(N, A, S)'Вызов процедуры вывода данныхCall Вывод(N, A)'Вызов процедуры расчетаEnd SubSub Ввод(N, A)'Процедура ввода данныхN = Worksheets("Лист1").Range("C3")'Ввод кол-ва элементовFor i = 1 To N'Начало циклаA(i) = Worksheets("Лист1").Cells(i + 3, 3) 'Ввод i-го элементаNext i'Конец циклаEnd SubSub Расчет(N, A, S)'Процедура расчетаS=0'Очистка переменной под вычисляемую суммуFor i = 1 To N'Начало циклаS = S + A(i)'Вычисление суммыNext i'Конец циклаEnd SubSub Вывод(N, A)'Процедура вывода данных89Worksheets("Лист1").Cells(N + 5, 1) = "Сумма:"Worksheets("Лист1").Cells(N + 5, 3) = SEnd SubДля решения этой задачи можно применять несколько вариантов программ.
Так, можно не вводить количество элементов, вводэлементов массива можно организовать не путем повторений цикла Nраз, а другим способом. Цикл в таких алгоритмах должен обязательноприсутствовать, а условие завершения его может быть другим. Можноорганизовать цикл и сделать выход по условию, когда элемент массива исходных данных будет нулевой или отрицательный. Вид алгоритма при таком условии показан на рис.
3.3. В цикле выполняется вводэлементов массива до тех пор, пока A(N) > 0. Ввод данных выполняется с листа Excel и будет прекращен при достижении первой незаполненной ячейки.Процедура, составленная алгоритму, будет иметь вид:Sub Ввод1(N, A)'Процедура ввода данныхN=0'Для организации ввода в 1 элементDo'Начало циклаN=N+1A(N) = Worksheets("Лист1").Cells(N + 3, 3) ‘Ввод i-го элементаLoop While A(N) > 0'Конец циклаN=N-1'Запоминание количества ненулевых элементовEnd Sub.Алгоритм поиска наибольшего значенияПодобные задачи решаются, например, при расчете эпюр изгибающих моментов для балочных конструкций.При решении задач без ЭВМ процесс определения максимального значения будет следующим:1) рассчитывается первое значение функции и запоминаетсякак наибольшее (например, записывается на бумаге);2) рассчитывается следующее значение и сравнивается с запомненным, если новое значение окажется большим, то запоминаетсяоно, а прежнее удаляется.Процесс поиска с помощью ЭВМ осуществляется следующимобразом: для хранения результата поиска в памяти компьютера должнабыть выделена ячейка памяти и в нее должна быть занесена величиназаведомо меньшая из тех, среди которых осуществляется поиск (так,90для поиска наибольшего из положительных значений можно занестинуль, а при поиске из массива можно занести первый элемент); организуется цикл по расчету или перебору всех элементов, изкоторых осуществляется поиск наибольшего; каждое рассматриваемое значение сравнивается со значениемв отведенной для хранения ячейке, и если оно окажется больше, то запоминается новое значение взамен предыдущего.Для примера рассмотрим задачу поиска максимального значения функции Y=A+B x+C x2 при изменении аргумента.
Алгоритм решения в виде блок-схемы показан на рис. 3.4. В данной задаче максимальное значение может быть положительным и отрицательным, поэтому в качестве начального значения использовано очень большоеотрицательное число (10^10).12Задание величины переменной дляхранения максимального значенияYmax= - 10^10345НачалоА,B,C,Xн,Xк,dXx=Xн,Хк,dXИзменение х от Хн до Хк через dXВычисление функцииПроверка превышения полученного значения ранее запомненногоY=A+B*x+C* x ^2ДаYmax=YY>YmaxНет6Запоминание нового значения7YmaxКонец алгоритма свыводом данныхРис.
3.4. Алгоритм поиска максимального значения(пример алгоритма циклической и разветвляющей структур)Пользователь должен научиться составлять собственные и читать составленные другими разработчиками алгоритмы. Приведенныев алгоритме комментарии помогут понять назначение элементов. Валгоритмах с разветвляющей структурой начинающим программистамнеобходимо полностью понять действие элемента «Решение».Переход по линии, на которой находится надпись «Да», происходит в случае, если условие выполняется в рассматриваемом алго91ритме, если Y действительно будет больше Ymax.