Суммирование осуществляется в строке 60. Бессмысленное с точки зрения правил арифметики выражение C = C + H(I) означает, что новое (левая часть формулы) значение числа, в закодированной именем С ячейке памяти, равно старому (ранее помещенному туда) значению плюс текущее I – тое значение величины Н. Первоначально (до начала циклов) в ячейке С находилось число 0.

Посмотрим, что происходит в ячейке С в ходе циклов. В первом цикле к старому значению 0 прибавляется первое значение рейсовой проходки Н(1), т. е 11 (см. оператор DATA). Это число и хранится здесь до следующего цикла. В цикле номер 2 к старому значению 11 прибавляется Н(2), т. е. 6 и теперь в ячейке сохраняется сумма 11 + 6 = 17. В третьем цикле происходит следующее сложение: 17 + 71 = 88. Очевидно, что после 16-го цикла все значения Н(I) вплоть до Н(16) окажутся просуммированными. По окончании циклов оператор PRINT “заглянув” в ячейку с именем С, обнаруживает значение суммы 16-ти рейсовых проходок и печатает: С = 425

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

Введем обозначения: H(I) – глубина подошвы I –й толщи пластов; М (I) – его мощность; Р(I) – ресурс шарошечного долота при бурении по I –му пласту; РА(I)– ресурс алмазного долота по тому же пласту; CD(I) – стоимость шарошечного долота для бурения по I –му пласту; DА(I) – стоимость соответствующего алмазного долота; D(I) – стоимость всех шарошечных долот, отработанных по I –му пласту; DА(I) – стоимость всех алмазных долот; NR(I) – число шарошечных долот, потребовавшихся для перебурки пласта; NRА(I) – число алмазных долот; CP(I) – стоимость СПО (спускоподъемных операций) при перебурке I-го пласта шарошками; CPА(I) – стоимость СПО при перебурке I-го пласта алмазами; OD – общая стоимость всех шарошечных долот; ODА – общая стоимость всех алмазных долот; ONR – общее число СПО при бурении шарошками; ONRА – общее число СПО при бурении алмазами; ОCP – общая стоимость всех СПО при бурении шарошками; ОCА – общая стоимость всех СПО при бурении алмазами; СРО – средняя стоимость одного спуско-подъема на данном разрезе; CD – общая стоимость при бурении данного разреза шарошками; CDА – общая стоимость при бурении данного разреза алмазами

НЕ нашли? Не то? Что вы ищете?

В программе оператор DIM (строка 20) разрешает каждой из 12 индексных переменных принимать до 10 значений. Оператор DATA (строка 30) coдержит 30 чисел (все они умещаются в одну строку монитора, но в строке страницы WORD не убираются и поэтому условно пришлось применить перенос на нижеследующую строку).

В строке 40 происходит “обнуление” ячеек, где будет происходить суммирование. В одной строке 40 разделенные двоеточием размещаются 6 таких операторов (обнуляются ячейки OD, ODA, ONR, ONRA, OCR, OCRA)

В строке 45 указана средняя по скважине стоимость СПО, и далее в заголовке цикла (строка 50) указывается, что будет проведено 6 циклов (бурение ведется по 6-ти пачкам пород).

В строке 60 располагается оператор READ, указывающий на то, что в каждом I-том цикле из оператора DATA будут последовательно отбираться значения пяти величин, а именно подошвы пачки H(I), ресурса P(I), и стоимости CD(I) шарошечного, и PA(I) и CDА(I) и алмазного долот. В частности, в первом цикле H(1)=548 м, P(1)=84 м CD(1) =2976 $, PA(1)=434 м и CDА(1)=32370 $, во втором – 1777, 97, 2264, 577 и 28905 и т. д. соответственно (все линейные размеры даны в м), стоимости - в у. е.)

Программа SHAD (шарошечные и алмазные долота)

10 CLS

15 PRINT “ВЫБОР ТИПА ДОЛОТА”

20 DIM H(10),M(10),P(10),PA(10), CD(10),CDA(10),D(10),DA(10),NR(10),NRA(10),

CP(10),CPA(10)

30 DATA 548,84,2976,434,32370, 1777,97,2264,577,28905, 2865,68,2190,383,23788,

3575,27,2456,307,25604, 4282,18,3015,259,23399, 4815,45,3067,339,24879

40 OD=0: ODA=0: ONR=0: ONRA=0: OCP=0: OCPA=0

45 CPO=1095

50 FOR I=1 TO 6

60 READ H(I), P(I), CD(I), PA(I), CDA(I)

70 M(I)=H(I) – H(I-1)

80 NR(I)=M(I)/P(I): NRA(I)=M(I)/PA(I)

90 D(I)=NR(I)*CD(I): DА(I)=NRА(I)*CDА(I)

100 CP(I)= NR(I)*CPO: CPA(I)= NRA(I)*CPO

110 OD = OD+D(I): ODA=ODA+DA(I)

115 ONR=ONR+NR(I): ONRA=ONRA+NRA(I)

120 OCP= OCP+CP(I): OCPA= OCPA+CPA(I)

130 NEXT I

140 CD=OD+OCP: CDA=ODA+OCPA

150 PRINT “ONR, OD, OCR, CD”;: PRINT USING “########”;ONR, OD, OCR, CD

160 PRINT“ONRA, ODA, OCRA, CDA”;:PRINTUSING“########”;ONRA, ODA, OCRA, CD

170 IF CD>CDA THEN 190

180 PRINT “ВЫБИРАЕМ ШАРОШЕЧНЫЕ ДОЛОТА”: GOTO 200

190 PRINT “ВЫБИРАЕМ АЛМАЗНЫЕ ДОЛОТА”

200 END

Далее в строках 70 – 100 производятся вычисления :

– Мощности пачки M(I) – путем вычитания глубины подошвы предшествующего пласта (номер I-1) из глубины последующего (номер I)

– Числа рейсов шарошечных NR(I) и алмазных NRА(I) по каждой I-той пачке (или, что то же, – числа отработанных долот)

– Стоимости шарошечных D(I) и алмазных DА(I) долот, отработанных на I-той пачке

– Стоимости спускоподъемных операций при бурении I-той пачки шарошечными CP(I) и алмазными CPА(I) долотами

Наконец, в строках 110 – 120 производится суммирование с целью вычисления:

– Общей стоимости затраченных на скважину шарошечных OD и алмазных ODA долот

– Общего числа рейсов ONR и ONRA по каждому типу долот

– Общей стоимости спускоподъемных операций OCP и OCPA

После оператора конца цикла вычисляются суммарные затраты на долота и спускоподъемные операции CD и CDA (строка 140)

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

В строке 170 располагается оператор условного перехода. Если затраты на бурение шарошечными долотами превышают затраты на алмазное бурение, то осуществляется переход на оператор 190 с появлением на печати заключительного вывода: ВЫБИРАЕМ АЛМАЗНЫЕ ДОЛОТА и переходом на строку 200 – END (конец программы). Если же условие CD>CDA не удовлетворяется, то на строке 180 осуществляется печать противоположного вывода: ВЫБИРАЕМ ШАРОШЕЧНЫЕ ДОЛОТА, после которого через двоеточие помещен оператор безусловного перехода на конец программы.

При тех числовых значениях, которые введены в программу оператором DATA после выполнения программы будет в соответствии с операторами PRINT (15, 150, 160, 190) напечатано:

ВЫБОР ТИПА ДОЛОТА

ONR, OD, OCR, CD 113 302473 123311 425784

ONRА, ODА, OCRА, CDА 13 332219 14069 346288

ВЫБИРАЕМ АЛМАЗНЫЕ ДОЛОТА

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

Скважина, которая здесь рассматривается, состоит из 6 пачек пород примерно одинаковой буримости. Рассмотрим случай, когда данная модель применяется только для бурения трех верхних пачек (из оператора DATA будут автоматически взяты только данные, относящиеся к ним). Естественно при малой глубине среднее время спускоподъемной операции должно быть много меньше, а буримость верхних пачек несколько выше, как и ресурсы обоих типов долот.

Заменим содержание строки 45 на: СРО = 200, а строки 50 на: FOR I=1 TO 3. В итоге прогона программы для этих новых условий получим:

ВЫБОР ТИПА ДОЛОТА

ONR, OD, OCR, CD 35 83140 7039 90179

ONRА, ODА, OCRА, CDА 6 170015 1247 171262

ВЫБИРАЕМ ШАРОШЕЧНЫЕ ДОЛОТА

Из-за низкой стоимости СПО, их роль в общем балансе упала, и на передний план выдвинулась стоимость самих долот. Теперь шарошечные долота стали экономичнее.

К изложенному добавим, что, хотя в операторе DATA приведены данные по 6-и пачкам, оператор READ использовал, только то, что относится к 3-м, что допустимо

Нахождение максимального значения из ряда чисел.

Программа MAX

10 СLS

15 PRINT “НАХОЖДЕНИЕ НАИБОЛЬШЕГО ЧЛЕНА ЧИСЛОВОГО РЯДА”

20 DIM А(20)

30 DATA 11, 48, 3, б, 21, 12, 36, 7, 56, 33, 41, 23, 40, 18, 41

40 MAX=0

50 FOR I=1 TO 15

60 READ A(I)

70 IF A(I)> MAX THEN MAX=A(I)

80 NEXT I

90 PRINT “MAX”, MAX

Числовой ряд массива А вводится с помощью оператора DATA. Искомый максимум обозначается именем MAX и в строке 40 ему присваивается наименьшее возможное значение 0. Далее после заголовка цикла (строка 50) и ввода числового ряда с помощью оператора READ (60) программа подходит к строке 70, содержащей условие IF A(I)>MAX THEN MAX=A(I), в котором и заключается основной механизмом поиска максимума. Присмотримся к его работе:

В ходе первого цикла программа имеет дело с величиной А(1) =11. Т. к 11 >0, а MAX=0 (строка 40), то A(I) >MAX и значит, по результатам первого цикла, имеем MAX=А(1) т. е. MAX=11. Далее программа переходит к оператору NEXT (80) и от него к заголовку цикла. Параметр цикла I принимает значение 2

В ходе второго цикла программа имеет дело с величиной А(2) =48. Условие строки 70 соблюдается и на этот раз (48> 11), поэтому после второго цикла MAX=48.

В ходе третьего цикла программа имеет дело с величиной А(3) =3. Условие не соблюдается и значение MAX=48 после третьего цикла сохраняется.

Из рассмотрения оператора DATA очевидно, что значение MAX=48 сохраняется вплоть до восьмого цикла включительно (все значения меньше 48) Однако после девятого цикла мы имеем MAX=56.

Это значение сохраняется в ходе оставшихся циклов, вследствие чего по их завершении на печать выводится: MAX=56. Наибольшее значение найдено.

Нахождение минимального значения из ряда чисел.

Программа MIN

10 СLS

15 PRINT “НАХОЖДЕНИЕ НАИМЕНЬШЕГО ЧЛЕНА ЧИСЛОВОГО РЯДА”

20 DIM А(20)

30 DATA 11, 48, 3, б, 21, 12, 36, 7, 56, 33, 41, 23, 40, 18, 41

40 MIN=10000

50 FOR I=1 TO 15

60 READ A(I)

70 IF A(I)< MIN THEN MIN =A(I)

80 NEXT I

90 PRINT “ MIN ”, MIN

Она совпадает с предшествующей программой во всем, кроме 2-х моментов:

– До начала циклов в строке 40 принимается число заведомо большее, чем все члены ряда в операторе DATA (мы приняли 10000)

– В строке 70, в операторе условия вместо знака > теперь стоит <. Механизм работы программы станет понятным, если рассмотреть работу каждого цикла, так, как это было сделано выше при рассмотрении поисков максимума.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29