Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.77 Mб
Скачать

10 Rem разветвленная программа, Иванов в.В. 310286

Между меткой и именем оператора, а также между именем

оператора и текстом делается пробел. Знак соответствует

переходу на новую строку (нажатие клавиши Enter - Ввод). Он всегда ставится и используется в конце оператора.

Оператор END

Е го формат:

Номер строки – ЕND - .

Оператор END последний оператор программы и должен иметь максимальный номер. Например, 9999 END .

Оператор PRINT

Ф ормат оператора:

Номер строки – PRINT – выводимый список - .

Элементы выводимого списка (числа, переменные, строки, арифметические выражения) отделяются друг от друга либо запятой, либо точкой с запятой.

Если разделитель запятая, то значение печатается с начала очередной «зоны» (позиции начала «зон» 1, 16, 31, 46).

Если разделитель точка с запятой, то значение очередного элемента списка печатается через один пробел после «предшественника».

Оператор присвоения.

Этот оператор имени не имеет и его формат выглядит как:

Н омер строки – имя переменной – арифметическое выражение -

.

П ример:

30 Y=35*X+B

Оператор INPUT (ввод).

Ф ормат оператора:

Номер строки – INPUT- список имен переменных -

П ример:

20 INPUT A,B,C,R

С помощью этого оператора вводятся конкретные числовые значения переменных, обозначенных в списке - A,B,C,R. Это производится с помощью клавиатуры после того, как система запросит их (на экране монитора появится символ ? ). Количество вводимых чисел должно соответствовать количеству имен переменных. Вводимые числа отделяются друг от друга запятой.

П ример :

?55.2,0.3,12.02,341

Оператор IFTHEN (если….тогда)

Оператор условного перехода используется для изменения естественного порядка выполнения операторов и для выполнения условия, записанного в операторе.

Ф ормат оператора:

Номер строки – IF – условие – THEN – номер строки -

П ример:

40 IF X>=5 THEN 80

11.3. Типовые программы на языке Бейсик.

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

Ввод

1

Решение

2

Вывод

Рис. 11.1. Составные блоки программы

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

Все алгоритмы и, соответственно, программы можно разбить на три группы:

  • линейные

  • разветвленные

  • циклические.

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

Для составления структурных схем алгоритмов используются следующие геометрические фигуры рис. 11.2.

Начало Ввод

Конец (Завершение) Вывод

Вычисление Проверка

Присвоение условия

Подготовка,

Печать на циклы

бумаге

Монитор

Рис.11.2. Некоторые геометрические фигуры для составления структурных схем алгоритмов.

1). Линейные программы.

Пусть необходимо определить значение переменной y по следующей формуле

y = ax5 + bx +c ,

где а=7,8 ; x= 14,9 ; b=0,3 ; c=6,2.

Структурная схема алгоритма (блок-схема) решения этой задачи выглядит следующим образом (рис.11.3)

А=7,8; В=0,3

С=6,2;Х=14,9

1 1 1

Y=AX5+BX+C

2 2 2

3 3

Рис. 11.3. Структурная схема линейного алгоритма

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

10 REM Линейная программа

20 A=7.8

30 X=14.9

40 B=0.3

50 C=6.2

60 Y=A*X^5+B*X+C

70 PRINT “Y=”; Y

80 END

Ok

RUN

Y=5728312

Ok

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

Первый оператор REM (от английского слова remark – комментарий) позволяет включать в текст программы дополнительные сообщения с использованием любых знаков, а не только латинских букв и цифр. Никакого участия в работе программы эта информация не принимает. Метка этого оператора (как и всех остальных операторов) –10 - отделена от его обозначения – REM – пробелом. Заметим, что в окончании любого оператора не ставится никакой знак, а само окончание фиксируется нажатием клавиши ENTER .

Операторы 20, 30, 40, 50 являются операторами присвоения. В них исходным переменным правой части решаемого выражения присваиваются заданные значения. Таким образом, с помощью этих операторов могут вводиться исходные данные для решения задачи, а также производятся вычисления по формулам. В дальнейшем мы рассмотрим и другие способы ввода исходных данных.

Оператор 60 также является оператором присвоения, однако, в нем переменной Y присваивается значение вычисленного выражения по заданной формуле

Y = A*X5 + B*X + C .

Оператор 70 PRINT выводит на печать результат вычисления переменной Y. После наименования оператора ставится пробел, а знаки в кавычках дословно печатаются в заключительной части программы. Само же значение печатаемой переменной Y определяется в операторе 60.

Последний оператор 80 END обозначает конец программы.

Нажатием функциональной клавиши F2 запускается выполнение программы (RUN) и печатается результат Y= 5728312.

Заметим также, что ввод исходных данных можно осуществить под одной меткой 20 как

20 A=7.8:X=14.9:B=0.3:C=6.2

Здесь разные операторы под одной меткой разделены двоеточием.

2). Разветвленные программы.

Рассмотрим следующую задачу

x¾ + lnx + 1 для х>5

y =

x6 + tgx – 2 для x<=5

В соответствие с заданием переменная у определяется или по верхней формуле или по нижней в зависимости от значения аргумента х. Если х > 5, переменная у определяется по верхней формуле. Если же х <= 5, то вычисление переменной у идет по нижней формуле.

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

Рис. 11.4. Структурная схема разветвленного алгоритма.

ПРОГРАММА 1

Разветвленная программа на языке Бейсик (версия GWBASIC) в соответствие с алгоритмом рис.11.4 выглядит следующим образом

10 REM Разветвленная программа. Иванов В.И.

20 INPUT X

30 IF X>5 THEN Y= X^(3/4) + LOG(X) +1

40 IF X<=5 THEN Y=X^6 + TAN(X) – 2

50 PRINT “Y=”; Y, “X=”; X

60 END

Ok

RUN

? 7

Y=7.249428 X=7

Ok

RUN

? 4

Y=4095.158 X=4

Ok

В этой программе оператор 20 INPUT (ввод, ввести) позволяет в отличие от предыдущей программы по новому организовать ввод переменной X. В этом операторе указывается только имя вводимой переменной, а ее количественное значение указывается в конце программы после нажатия функциональной клавиши F2 (RUN) и появления на экране знака “?”. После знака вопроса вводится конкретное, числовое значение переменной X. В нашем случае это 7 и далее 4.

Оператор 30 (как и оператор 40) является условным. По русски он читается как “ЕСЛИ Х>5, то У=Х^(3/4)+LOG(X)+1”. Необходимо обратить внимание на то, что дробный показатель степени при переменной Х берется в скобки. Оператор 40 читается аналогичным образом.

Оператор 50, как и в линейной программе, обеспечивает вывод на экран монитора результат вычислений. В данном случае выводятся переменные У и Х.

ПРОГРАММА 2

Другой вариант задачи с разветвлением может выглядеть так

х3 + е +3,1 для х > 6

у = х2 + сtgx +0,7 для 6 >= x >=5

x¼ + arctgx – 0,35 для x < 5

Здесь второе условие задается в виде отрезка аргумента х.

Структурная схема алгоритма для этого случая показана на рис. 11.5.

Рис.11.5. Структурная схема алгоритма с тремя разветвлениями.

А программа и результат вычислений записываются как показано ниже.

10 REM Программа с тремя разветвлениями

20 INPUT X

30 IF X>6 THEN Y = X^3+EXP(-X)+3.1

40 IF X<=6 AND X >=5 THEN Y=X^2+COS(X)/SIN(X) +0.7

50 IF X<5 THEN Y=X^(1/4)+ATN(X)-0.35

60 PRINT “Y=”;Y, “X=”;X

70 END

Ok

RUN

?8

Y=515.1003 X=8

Ok

RUN

?5.5

Y=29.94557 X=5.5

OK

RUN

?4

Y=2.390031 X=4

OK

Отметим некоторые особенности этой программы. Оператор 40 позволяет достаточно просто записать условие и решение второй формулы задачи, используя союз AND (по-русски «И»). При вводе исходных значений для переменной X используются три значения для каждого из трех условий задачи.

3). Циклические программы

Циклический вычислительный процесс – это процесс, в котором многократно выполняются вычисления по одним и тем же математическим зависимостям при различных значениях входящих в них переменных. Рассмотрим три типа программ, содержащих циклы : программы с одним циклом и вложенными циклами, итерационные программы и программы по обработке массивов.

Циклическая программа с одним циклом .

Предположим, необходимо построить таблицу функции по следующей формуле

X5 + Z3 + 0,4

Y = ---------------- ,

X3 + Z +0,15

причем, Х = 0,8; 1,3; 1,8,…,3,3. Z = 6,2.

Как видно из условия, вычислительный процесс будет содержать только одну изменяемую переменную – Х. Вторая переменная Z является константой. Следовательно, в программе для данной задачи будет реализовываться только один повторяющийся с разными значениями переменно Х цикл. Рассмотрим два варианта программы. На рис. 11.6 изображена структурная схема алгоритма циклической программы с одним циклом.

Рис. 11.6. Структурная схема алгоритма с одним циклом.

Сама программа для этого случая приводится ниже.

ПРОГРАММА 3

Вариант 1

10 REM Программа с одним циклом

20 Z=6.2

30 X=0.8

40 Y=(X^5+Z^3+0.4)/(X^3+Z+0.15)

50 PRINT “X=”;X, “Y=”;Y

60 X=X+0.5

70 IF X<=3.3 GOTO 40

80 END

Ok

RUN

X=0.8 Y=34.83761

X=1.3 Y=28.36562

X=1.8 Y=21.1479

X=2.3 Y=16.36828

X=2.8 Y=14.51599

X=3.3 Y=14.90013

Ok

Здесь в операторах 20 и 30 задаются начальные значения переменных Z и Х. В операторе 40 вычисляется первое значение переменной Y. Следует обратить внимание на то, что в этом операторе числитель и знаменатель обязательно заключаются в скобки. Оператор 50 обеспечивает вывод на печать вычисленных значений переменных Y и Х. В операторе 60 производится определение следующего значения переменной Х по заданию. Слагаемое 0.5 здесь представляет шаг изменения, т.е. разность между соседними значениями переменной Х. С точки зрения традиционной математики запись такого оператора не имеет смысла. Но здесь такая запись читается как : новому значению переменной Х присваивается старое значение переменной Х плюс шаг изменения. Т.е. знак “=” здесь является знаком присвоения, а не равенства. В операторе 70 проверяется условие достижения переменной Х максимально заданного значения. Если таковое не произошло, происходит возвращение к оператору 40 и вычисление переменной Y с новым значением аргумента X.

ПРОГРАММА 4

Вариант 2

Этот же алгоритм с использованием оператора цикла будет выглядеть как на рис. 11.7. Здесь в шестигранной вытянутой фигуре (циклы) под номером 2 переменная x принимает значения от 0,8 до 3,3 с шагом 0,15.

Рис. 11.7. Структурная схема алгоритма с одним циклом и с использованием оператора цикла (FOR…TO…STEP…).

Программа для этого случая записывается как:

10 REM Циклическая программа с оператором цикла

20 Z=6.2

30 FOR X=0.8 TO 3.3 STEP 0.5

40 Y=(X^5+Z^3+0.4)/(X^3+Z+0.15)

50 PRINT “X=”;X, “Y=”;Y

60 NEXT X

70 END

Здесь в операторе 30 задается начальное значение Х=0.8, конечное значение Х=3.3 и шаг приращения (STEP) Х=0.5. Тело цикла включает в себя операторы 40 и 50. Оператор 60 является конечным оператором цикла (слово NEXT переводится как «следующий»).

Рассмотрим теперь задачу, в которой изменяются две переменные X и Z. Это программа с двумя циклами, один из которых вложенный.

X5 + Z3 + 0,4

Y = ────────── ,

X3 + Z + 0,15

где X=0,8; 1,3; …,2,3, а Z=6,2; 6,5;…,7,1.

Структурная схема алгоритма с двумя циклическими операторами показана на следующем рис. 11.8.

Рис. 11.8. Структурная схема алгоритма с двумя циклическими операторами (один из них вложенный).

ПРОГРАММА 5

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

10 REM Программа с двумя циклами

20 FOR Z=6.2 TO 7.1 STEP 0.3

30 FOR X=0.8 TO 2.3 STEP 0.5

40 Y=(X^5+Z^3+0.4)/(X^3+Z+0.15)

50 PRINT “X=”;X, “Z=”;Z, “Y=”;Y

60 NEXT X

70 NEXT Z

80 END

Ok

RUN

X=0.8 Z=6.2 Y=34.83761

X=1.3 Z=6.2 Y=28.36562

X=1.8 Z=6.2 Y=21.1479

X=2.3 Z=6.2 Y=16.36828

X=0.8 Z=6.5 Y=38.44634

X=1.3 Z=6.5 Y=31.50649

X=1.8 Z=6.5 Y=23.54757

X=2.3 Z=6.5 Y=18.03627

X=0.8 Z=6.8 Y=42.23528

X=1.3 Z=6.8 Y=34.82507

X=1.8 Z=6.8 Y=26.10919

X=2.3 Z=6.8 Y=19.83551

Ok

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

Итерационные программы

Решение конкретной задачи часто сводится к нахождению корней уравнения вида

f(x) = 0 (1),

где функция f(x) определена и непрерывна на некотором интервале. Если функция f(x) представляет собой многочлен, то уравнение (1) называется алгебраическим; если же в функцию f(x) входят трансцендентные (тригонометрические, логарифмические, показательные и т.п.) функции, то уравнение (1) называется трансцендентным. Решение трансцендентного уравнения (1) методом последовательных приближений разбивается на две части:

  1. отыскание малых областей (отделение корней), в каждой из которых заключен один и только один корень уравнения;

  2. вычисление корня с заданной точностью.

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

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

Рассмотрим здесь только первый из этих методов – метод итераций.

Уравнение (1) представим в форме

x = φ(x) (2),

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

x = x + f(x) = φ(x).

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

В качестве иллюстрации этого метода рассмотрим пример нахождения корня следующего трансцендентного уравнения

tg(x) - e-x = 0 (3)

для x0 = 1, 2 , а погрешность Δ = 0,01.

В соответствии с уравнением (2) уравнение (3) представим в виде

x = tg(x) - e-x + x (4).

Полученное уравнение (4) можно представить как состоящее из двух

y = x (5)

y = tg(x) - e-x + x (6).

Уравнение (6) мы затем будем использовать в итерационной программе по определению корня уравнения (3).

Структурная схема алгоритма для решения данной задачи показана на рис. 11.9.

Рис. 11.9. Структурная схема алгоритма для нахождения корня уравнения (3).

ПРОГРАММА 6

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

10 REM Итерационная программа

20 INPUT X,D

30 Y=TAN(X)-EXP(-X) +X: A=ABS(X-Y): X=Y

40 IF A>D THEN 30

50 PRINT “X=”;X

60 END

Ok

RUN

?1.2,0.01

X=1.701412E+38

Ok

В операторе 20 вводятся начальное значение х0 и погрешность Δ (Х и D соответственно). В строке с меткой 30 находятся три оператора, разделенные двоеточием. В первом из этих операторов записано выражение (6). Во втором определяется текущее значение погрешности А по абсолютному значению разности X и Y. В третьем - переменной Х присваивается вычисленное значение Y. В операторе 40 сравнивается текущее значение погрешности вычисления разности X-Y с заданной погрешностью D. Если A>D - процесс итераций продолжается. В противном случае осуществляется переход к оператору печати результата вычислений 50. Здесь следует обратить внимание на то, что выведенная на печать в показательной форме переменная Х= 1.701412*10+38.

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

Рис.11.10. Структурная схема алгоритма с подсчетом количества итераций (циклов).

ПРОГРАММА 7

Такая программа будет выглядеть следующим образом

10 REM Итерационная программа

20 INPUT X,D,I

30 Y=TAN(X)-EXP(-X)+X: A=ABS(X-Y): X=Y:I=I+1

40 IF I=100 THEN 60

50 IF A>D THEN 30

60 PRINT “X=”;X, “I=”;I

70 END

Ok

RUN

?1.2,0.01,0

X=1.701412E+38 I=22

Ok

Здесь в операторе 20 участвует переменная I, в которой накапливается число, определяющее количество циклов (итераций). Начальное значение I=0. В строке 30 последний оператор I=I+1 обеспечивает подсчет количества циклов. Оператор 40 ограничивает количество циклов величиной равной 100. Эта величина может быть увеличена до 1000 или 10000, если за 100 или 10000 циклов соответственно корень не будет найден. В операторе 60 на печать выводится также переменная I, которая определяет количество циклов, за которое найден корень. После нажатия функциональной клавиши F2 (RUN) вводятся исходные данные х0=1,2; Δ=0,01; I=0 в той же последовательности, в которой они находятся в операторе 20. Строкой ниже печатается результат вычислений. Здесь нужно обратить внимание на то, что I=22. Это означает, что корень исходного уравнения найден за 22 цикла. Если же I=100 (или величине, обозначенной в операторе 40) - корень не найден, а итерационный процесс или плохо сходится или является расходящимся. Решить такую задачу можно с помощью специальных математических методов, которые здесь не рассматриваются.

Обработка массива.

Под массивом понимается набор переменных, упорядоченных по какому-либо признаку. Например, набор Х1, Х2, Х3,,ХN упорядочен по номерам.

Рассмотрим следующую задачу: определить среднее значение элементов массива Х1=2,3; Х2=1,8; Х3=4,7; Х4=3,6; Х5=3,1. Эта задача записывается как

i=5

S = (1/5) ΣXi (7),

i=1

где Σ знак суммы.

Структурная схема алгоритма для этой задачи выглядит как на рис. 11.11.

Рис. 11.11. Структурная схема алгоритма для задачи (7).

ПРОГРАММА 8

Программа для расчета по выражению (7) выглядит следующим образом.

10 REM Расчет среднего значения массива переменных

20 DIM X(5)

30 FOR I=1 TO 5

40 INPUT X (I)

45 NEXT I

50 S=0

60 FOR I=1 TO 5

70 S=S+X(I)

80 NEXT I

90 S=S*(1/5)

100 PRINT “S=”;S

110 END

Ok

RUN

?2.3

?1.8

?4.7

?3.6

?3.1

S=3.1

Ok

Здесь в операторе 20 (DIM от слова Dimension – размерность) задается количество резервируемых ячеек памяти для хранения переменных исходного массива. Этих переменных пять. В операторах 30, 40 и 45 организуется ввод исходных данных массива. Отметим, что элемент массива в общем виде обозначается как X(I), где переменная I является индексом и принимает значения от 1 до 5. Следовательно, у нас пять элементов массива, обозначаемых как X(1), X(2), X(3), X(4) и X(5) и которые в принципе могут принимать любые числовые значения. В операторе 50 обозначена начальная сумма значений элементов массива, а она равна 0. В операторах 60,70 и 80 (это операторы цикла) производится суммирование значений элементов массива. При первом прохождении оператора 60 переменной I (индекс массива) присваивается значение равное 1. Тогда в операторе 70 вычисляется сумма S=S+X(1). А поскольку значение S в правой части этого выражения равно 0 (см. оператор 50), то переменной S присваивается значение первого элемента массива X(1). При втором прохождении оператора 60 переменной I присваивается значение равное 2, а в операторе 70 при этом уже вычисляется сумма S =S+X(2)=X(1)+X(2). При третьем прохождении оператора 70 вычисляется уже сумма трех элементов массива, т.е. X(1)+X(2)+X(3). После пятого прохождения оператора 70 в переменной S суммируется значения элементов всей последовательности. Для получения искомого результата данной задачи полученную сумму необходимо умножить на 1/5, что и выполняется в операторе 90. Ввод исходных значений элементов массива производится после нажатия функциональной клавиши F2 (RUN).

Ввод исходных данных можно задавать с помощью генератора случайных чисел RND. Структурная схема алгоритма показана на рис. 11.12.

Рис.11.12. Структурная схема алгоритма с применением генератора случайных чисел RND.

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

ПРОГРАММА 9

10 REM Обработка массива случайных чисел

20 DIM X(5)

30 FOR I=1 TO 5

40 X (I)=RND

45 PRINT “X(“;I;”)=”;X(I)

50 NEXT I

60 S=0

70 FOR I=1 TO 5

80 S=S+X(I)

90 NEXT I

100 S=S*(1/5)

110 PRINT “S=”;S

120 END

Ok

RUN

X(1)= .1213501

X(2)= .651861

X(3)= .8688611

X(4)= .7297625

X(5)= .798853

S= .6341375

Ok

Здесь в операторе 40 запускается генератор случайных чисел RND. В такой записи генерируются случайные числа в пределах 0 – 1. Оператор 45 выводит на печать эти случайные числа. В остальном программа идентична предыдущей.

Если после знака суммы Σ в выражении (7) стоит сложное выражение, то оно в таком же виде ( но по синтаксису языка Basic) записывается в операторе 80.

Следует обратить внимание, что в распечатке результатов вычислений целая часть чисел (здесь она равняется 0) опущена, а перед дробной частью стоит десятичная точка . Это особенность данной версии языка Бейсик.

Рассмотрим следующую задачу обработки массива переменных.

i=6

R = 34.7 П ((xi )3 + 2,3) (8)

i=1

Знак П здесь означает произведение друг на друга выражений, стоящих после этого знака при разных значениях переменной i. Фактически задача сводится к вычислению следующего выражения

R = 34,7 (((x1)2+2,3)((x2)2+2,3)…((x6)2+2,3)) (9).

Структурная схема алгоритма для этой задачи имеет вид рис. 11.13.

Рис.11.13. Структурная схема алгоритма для задачи по выражению (8).

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

10 REM Обработка массива по выражению (8)

20 DIM X(6)

30 FOR I=1 TO 6

40 X(I)=RND

50 PRINT “X(“;I;”)=”; X(I)

60 NEXT I

70 R=1

80 FOR I=1 TO 6

90 R=R*(X(I)^2+2.3)

100 NEXT I

110 R=R*34.7

120 PRINT “R=”; R

130 END

Ok

RUN

X(1)=.1213501

X(2)=.651861

X(3)=.8688611

X(4)=.7297625

X(5)=.798853

X(6)=7.369865E-02

R=12828.91

В операторе 70 переменной R присваивается значение равное 1 (в отличие от предыдущей программы по суммированию). В операторах 90 и 110 реализуется операция умножения. В результирующей части программы, если целая часть вещественного числа равна нулю, нуль не печатается. Для X(6) результат следует читать как X(6) = 7.369865*10-2.

ПРОГРАММА 11

Задача ставится следующим образом. Задан одномерный массив Z(1),Z(2),…,Z(12). Сформировать новый массив X(I) из четных элементов заданного массива. Такая математическая процедура иногда бывает необходима при обработке телевизионных изображений.

Схема алгоритма показана на рис. 11.14.

Рис. 11.14. Структурная схема алгоритма получения массива четных элементов из заданного массива

Ниже приведена программа.

10 REM Получение массива из четных элементов

20 DIM Z(12), X(6)

30 FOR I=1 TO 12

40 Z (I)=RND*100

50 PRINT “Z (“; I;”)=”; Z (I)

60 NEXT I

70 FOR I=1 TO 6

80 N=2*I

90 X (I)=Z (N)

100 PRINT “X (“; I;”)=”; X (I)

110 NEXT I

120 END

Ok

RUN

Z(1)=12.13501

Z(2)=65.1861

Z(3)=86.88612

Z(4)=72.97625

Z(5)=79.8853

Z(6)=7.369805

Z(7)=49.0328

Z(8)=45.4519

Z(9)=10.72496

Z(10)=95.05102

Z(11)=70.38703

Z(12)=53.18641

X(1)=65.1861

X(2)=72.97625

X(3)=7.369805

X(4)=45.4519

X(5)=95.05102

X(6)=53.18641

Ok

В операторе 20 этой программы производится резервирование 12-ти запоминающих ячеек для хранения исходного массива Z(I) и 6-ти ячеек для хранения вновь полученного массива Х(I). Переменные в этом операторе разделены запятой. В операторах 30 – 60 реализуется ввод переменных массива Z(I) с помощью генератора случайных чисел RND. В операторе 40 случайные числа в диапазоне 0-1 умножаются на 100. Четные номера (индексы) элементов массива Z(I) определяются в операторе 80. Следует отметить, что вывод на печать четных элементов заданного массива производится в циклическом операторе 70 - 110.

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