Программа на Бэйсике представляет собой последовательность строк, каждая строка снабжается десятичным номером. Выполнение программы осуществляется в порядке возрастания номеров. Причем последовательность номеров строк не обязательно должна состоять из следующих друг за другом натуральных чисел. Для того, чтобы облегчить в процессе составления программы вставление новых строк между уже имеющимися, строки программы обычно нумеруются с шагом в 10 номеров. Каждая строка содержит один или несколько операторов.
Программы могут быть линейными (когда каждый оператор в указанной последовательности выполняется ровно один раз), разветвленные (когда выполнение одной из нескольких групп операторов зависит от соблюдения некоторого условия), циклических (когда какой-то блок операторов выполняется многократно).
1. Линейные программы.
Начинать составление программы рекомендуется с составления блок-схемы алгоритма. А написание программы сводится к замене блока алгоритма соответствующими операторами.
|
|
Пример 11.6.1 Даны 2 действительных числа. Требуется вычислить в программируемом режиме среднее арифметическое этих чисел и среднее геометрическое их модулей.
Решение:
10 REM "Вычисление ср.ар. и ср. геом."
20 INPUT X, Y
30 A=(X+Y)/2
40 B=SQR(ABS(X)*ABS(Y))
50 PRINT A,B
60 END
Контрольный счет:
X | Y | A | B |
-5 | -1 | 3.872983 |
Пример 11.6.2 Даны катеты прямоугольного треугольника. Найти гипотенузу и площадь.
10 REM "Вычисление гипот. и площади"
20 INPUT "Введите значения катетов:";X,Y
30 A=SQR(X^2+Y^2)
40 S=X*Y/2
50 PRINT "Гипотенуза=";A;"Площадь=";S
60 END
Контрольный счет:
X | Y | A | S |
640.3124 | |||
728.5307 |
2. Разветвляющиеся программы.
Для реализации логического блока используется оператор условного перехода. Он изменяет ход выполнения программы в зависимости от результата проверки условия. Эта управляющая конструкция называется развилка. На Бейсике развилка выражается с помощью оператора:
IF выражение THEN операторы ELSE операторы
Пример 11.6.3 Вычислить действительные корни квадратного уравнения при произвольных значениях коэффициентов a,b,c и условии a¹0.
10 REM "Вычисление корней"
20 INPUT A,B,C
30 D=B^2-4*A*C
40 IF D<0 THEN 50 ELSE 70
50 PRINT "Корней нет"
60 GOTO 140
70 IF D>0 THEN 80 ELSE 110
80 X=-B/(2*A)
90 PRINT X
100 GOTO 140
110 X1=(-B-SQR(D))/(2*A)
120 X2=(-B+SQR(D))/(2*A)
130 PRINT X1,X2
140 END
Пример 11.6.4 Определить, является ли данное целое число четным.
10 REM"ОПРЕДЕЛЕНИЕ ЧЕТНОСТИ"
20 INPUT X
30 IF X / 2 = INT(X / 2) THEN 30 ELSE 60
40 PRINT "ЧЕТНОЕ"
50 GOTO 70
60 PRINT "НЕЧЕТНОЕ"
70 END
3. Циклические программы
Циклы с произвольным числом повторений реализуются с помощью базовых алгоритмических структур цикл-“пока”, цикл-“до”, цикл с параметром
|
|
Цикл-“пока” реализуется на Бейсике с помощью операторов
IF … THEN…ELSE и GOTO…
Пример 11.6.5 Дано натуральное число n. Вычислить n!.
10 REM "вычисление факториала"
20 INPUT N
30 M = 1
40 P = 1
50 IF M <= N THEN 60 ELSE 90
60 P = P * M
70 M = M + 1
80 GOTO 50
90 PRINT P
100 END
Контрольный счет:
при n=5 n!=120
Пример 11.6.6 Вычислить
10 REM "Вычисление суммы"
20 I = 1
30 S = 0
40 IF I <= 128 THEN 50 ELSE 90
50 A = 1 / 2 ^ I
60 S = S + A
70 I = I + 1
80 GOTO
90 PRINT S
100 END
Ответ: 1
Цикл-“до” реализуется на Бейсике с помощью оператора IF … THEN…ELSE
Пример 11.6.7 Задана последовательность . Найти сумму m первых членов последовательности.
10 REM "НАХОЖДЕНИЕ СУММЫ"
20 INPUT M
30 N = 1
40 S = 0
50 A = 1 / (N ^ 2 + 1)
60 S = S + A
70 N = N + 1
80 IF N > M THEN 90 ELSE 50
90 PRINT S
100 END
Контрольный счет:
m=13 S=1.002768;
m=45 S=1.0547
Пример 11.6.8 Дано действительное число а. Найти среди чисел и т.д. первое большее а.
10 REM "НАХОЖДЕНИЕ ЭЛЕМЕНТА"
20 INPUT A
30 I = 1
40 S = 0
50 S = S + 1/I
60 I = I + 1
70 IF S > A THEN 80 ELSE 50
80 PRINT S
90 END
Цикл с параметром реализуется с помощью операторов цикла со счетчиком:
FOR счетчик = начало TO конец [STEP приращение]
блок операторов
NEXT счетчик
Пример 11.6.9 Вычислить (для данного n) n!.
10 REM"Вычисление факториала"
20 INPUT N
30 P = 1
40 FOR I = 1 TO N
50 P = P * I
60 NEXT I
70 PRINT P
80 END
Пример 11.6.10 Вычислить значение функции y=4x3-2x2+5 для значений х, изменяющихся от -3 до 1 с шагом 0,1.
10 REM "Вычисл. значения функции"
20 FOR X = -3 TO 1 STEP.1
30 Y = Y * X ^ 3 - 2 * X ^ 2 + 5
40 PRINT Y
50 NEXT X
60 END
Э. Дийкстр (известный математик) в своей структурной теореме сказал: "Алгоритм любой сложности можно реализовать, используя триаду "следование" - "повторение (циклы)" - "выбор (развилки)".
Пример 11.6.11 Алгоритм Евклида нахождения наибольшего общего делителя (НОД) неотрицательных целых чисел основан на следующих свойствах этой величины. Пусть m и n одновременно не равные нулю целые неотрицательные числа и пусть m³n. Тогда, если n=0, то НОД(n,m)=m, а если n¹0, то для чисел m, n и r, где r - остаток от деления m на n, выполняется равенство НОД(m,n)=НОД(n,r). Например, НОД(15,6) = НОД(6,3) = НОД(3,0) =3
НОД(24,8) = НОД(8,16) = НОД(8,8) = 8
НОД(56,24) = НОД(24,32) = НОД(24,8) = НОД(8,16) = НОД(8,8) = 8
Даны натуральные числа n, m. Используя алгоритм Евклида, найти наибольший общий делитель n и m.
10 REM “Алгоритм Евклида”
20 INPUT M, N
30 IF M<>N THEN 40 ELSE 60
40 IF M>N THEN M=M-N ELSE N=N-M
50 GOTO 30
60 PRINT “НОД=”; M
70 END
Пример 11.6.12 Задано n троек чисел a, b, c. Определить, сколько из предложенных троек можно использовать для построения треугольника, если
a, b, c – длины его сторон.
10 REM “Треугольник”
20 INPUT N
30 FOR I=1 TO N
40 INPUT “A=”;A
50 INPUT “B=”;B
60 INPUT “C=”;C
70 IF A>C+B AND B>A+C AND
C>A+B THEN K=K+1
80 NEXT I
90 PRINT “Пригодно троек”; K
100 END