Номер строки – IF – условие – THEN – номер строки -
Пример:
40 IF X>=5 THEN 80
11.3. Типовые программы на языке Бейсик.
В общем случае любую программу можно представить, как состоящую из трех частей (рис.11.1).
|
|
Рис. 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)
|
|
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.
Рассмотренные выше программы хотя и не охватывают всех возможностей языка Бейсик, однако, позволяют решать значительный объем инженерных и экономических задач.
12. ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И БИОТЕХНОЛОГИИ
По мнению многих футурологов, занимающихся долгосрочными прогнозами, первая половина XXI века ознаменуется стремительным прогрессом вычислительной техники и биотехнологий. Эти два научно-производственных направления по темпам своего развития в ближайшее время значительно опередят все остальные сферы общественной деятельности. Благодаря их тесному сотрудничеству человечество сможет добиться решения многих важных проблем, которые сегодня кажутся в принципе неразрешимыми.
Если верить этим прогнозам, то к середине XXI века биоэлектронные технологии достигнут такого уровня, что интеллект любого живущего индивидуума можно будет перенести в память компьютера. Специальная аппаратура сделает возможным полное сканирование человеческого мозга и преобразование составляющих его нейронов со всеми их сложнейшими функциями и взаимосвязями в действующие цифровые модели.
Благодаря процедуре такого копирования, сознание личности, по тем или иным причинам прекращающей свое существование, переместиться в цифровую среду, где сможет продолжить свое существование без видимых ограничений по времени. Таким образом, еще до того, как медицина найдет эффективные средства борьбы со всеми болезнями и причинами старения нашего организма, микробиология и компьютерная техника помогут людям обеспечить бесконечное продление жизнедеятельности их разума.
В ряде исследовательских центров США (Массачусетский технологический институт, биомедицинский центр Южной Каролины, университет Клемсона, технологический институт Нью-Джерси и др.) в настоящее время полным ходом идут работы по формированию новой предметной области - синтетической биологии. Целью этого направления является создание искусственных органических объектов с программируемым интеллектом. Например, разрабатываются микросхемы, способные заменит биологические компоненты живого мозга. Конечная цель – производство так называемых человекоэквивалентных чипов, содержащих всю информацию натуральных мозговых клеток. Первые такие чипы могут появиться в свободной продаже в 2015-2020 гг. Если сложенную из этих чипов «кибермыслительную систему» оснастить управляемыми синтетическими имитаторами всех остальных частей человека, то в результате получим искусственный гомо сапиенс.
Идущее в настоящее время широким фронтом наступление электронной промышленности и биоиндустрии привело, в частности, к заметному прогрессу в деле проектирования и производства нового поколения микросхем, базирующихся на биоэлементах естественного происхождения. Идея биологических микрочипов возникла в начале 90-х годов ХХ века в Югославии и России. А опытные экземпляры появились уже в середине 90-х гг. в США. Сейчас их серийным выпуском занимаются несколько американских фирм. Сегодняшний чип представляет собой стеклянную, пластиковую или кремниевую пластинку размером в несколько миллиметров с упорядоченно расположенными на ней молекулами белка или ДНК. На одном квадратном сантиметре пластины могут уместиться до миллиона таких молекул, каждая из которых содержит до огромное количество информации и способна выполнить множество целенаправленных операций. В настоящее время существует несколько способов изготовления биочипов. Самым испытанным является метод «вшивания» в матрицу заранее синтезированных олигонуклеотидов – коротких фрагментов однонитиевых ДНК. Недостаток этого метода – невысокая (не более тысячи) плотность размещения на матрице молекул, а также присутствие трудоемкого процесса их предварительного синтеза. Более современная и прогрессивная технология состоит в синтезе олигонуклеотидов непосредственно на матрице.
В этом направлении работают как известные фирмы мирового биотеха (Affymetrix), так и супергиганты глобальной электроники (Hitachi, Motorola, Fuji, Matsushita). В 2005 году объем продаж производимой этими фирмами биотехнологической продукции превысил миллиард долларов. Публиковались сообщения о создании одного транзистора на одной молекуле бензола (Йельский университет США и Корейский технологический университет города Ганжу).
Обычные современные электронные компьютеры обрабатывают информацию, используя электрические импульсы в кремниевых чипах. Но эта технология приближается к физическим пределам миниатюризации. По разным прогнозам где-то между 2010 и 2015 годами закон Мура (гласящий, что количество компонентов на чипе будет удваиваться каждые полтора года) перестанет действовать. Развитие электроники остановиться на ее физическом пределе. Биологические устройства обладают возможностями более высокого порядка, позволяя хранить гигантские массивы информации на микроскопических носителях, а все операции производить на клеточном уровне. 1 грамм высушенной ДНК, которая держит полный генетический код живого существа, может вобрать в себя столько информации, сколько содержится в нескольких триллионах компакт-дисков (~1021 байт).
В 1994 г. профессор университета Южной Калифорнии Леонард Эдельман с помощью отрезков ДНК создал устройство для решения задачи Гамильтона (поиск наикротчайшего пути между несколькими точками). В 2002 г. группа израильских ученых под руководством профессора Энада Шапиро в институте им. Вайцмана создала полноценный программируемый биокомпьютер, все блоки которого состояли из молекул ДНК.
В настоящее время в ряде научно-исследовательских объединений США, Европы и Японии ведутся работы по созданию вычислительных сред на основе искусственных органических соединений. Задача состоит в создании искусственной системы, работающей по аналогии с нейронами головного мозга и имеющей возможность симулировать деятельность этого важнейшего органа. Данные работы отличаются тем, что в органической вычислительной среде будут использоваться стабильные клетки на основе липидов, нанесенные на органическое покрытие и работать они будут наподобие нейронов головного мозга.
В Японии разработан новый вид устойчивой памяти на органических материалах, организация которой подобна флэш-памяти. Подобная структура позволяет создавать очень большие по размерам и объему памяти модули для внедрения их широкий спектр существующих устройств.
Важность биологических исследований для стимулирования всего научно-индустриального процесса и востребованность результатов биотехнологических разработок в качестве основы для перестройки промышленных и научных систем предопределили перерастание биотеха из сугубо научной сферы в полноправный сектор бизнеса, обеспечивающий весь цикл создания продукции – от идеи до выпуска на рынок готового товара. Бизнес биотехнологий уже доказал свою состоятельность и к настоящему времени достиг впечатляющих размеров. Но ведь это только начало пути.
13. ЗАКЛЮЧЕНИЕ
Вычислительная техника и информационные технологии в настоящее время практически проникли во все сферы деятельности человека. Темпы их развития не знает ни одна область науки и техники. Постоянно совершенствуется элементная база. Свыше 40 лет остается, в общем, справедлив закон Мура (один из основателей фирмы INTEL), согласно которому количество транзисторов на одном чипе (или тактовая частота процессора) удваивается каждые полтора-два года. Некоторые интерпретаторы этого закона считают, что закон Мура не технический, а скорее экономический. Гордон Мур в своей знаменитой статье (1965 г.) показал, что производителям микросхем памяти выгодно удваивать степень интеграции примерно за 18 месяцев. Современные исследования ученых показывают, идеальный квантовый компьютер сможет выполнять 1024 операций в сек. (Эксперименты с квантовым компьютером в настоящее время идут по нарастающей интенсивности и дают позитивные результаты). А остановка роста скорости работы компьютера произойдет только через 75 лет.
Теоретической основой построения компьютеров остается алгебра логики, двоичная и многозначная арифметика и другие специальные дисциплины. Структура компьютера практически не вышла за рамки классической структуры, реализующей постулаты фон Неймана (1946 г).
Дальнейшее развитие вычислительной техники связано с массовым внедрением параллельных вычислений, созданием многоядерных однокристальных структур с относительно небольшими рабочими частотами и низким потреблением энергии, развитием сетевых технологий (в том числе беспроводных) и переходом на новые принципы и элементную базу: биомолекулярные, квантовые, нейронные, нанотехнологии (нанотрубки) и т.п. решения. Для внешних запоминающих устройств наметились тенденции перехода к твердотельным системам, в которых отсутствуют подвижные механические части. Продолжаются исследования в области элементной базы компьютеров. На смену традиционным транзисторам приходят новые компоненты, функционирующие на молекулярном уровне.
Исследователи из корпорации IBM экспериментируют с использованием молекул ДНК в качестве миниатюрных цепей, способных послужить основой для более мощных и скоростных компьютеров. Изучаются необычные методы, при помощи которых ДНК способна самоорганизовываться на поверхности чипов и выступать в качестве проводников (вентилей) которые могут хранить и быстро передавать информацию. Для соединения цепочек ДНК используются углеродные нанотрубки.
Ученые Университета города Иерусалим создали молекулярный компью<