П.6. Методика составления программ на языке программирования Бейсик

Программа на Бэйсике представляет собой последовательность строк, каждая строка снабжается десятичным номером. Выполнение программы осуществляется в порядке возрастания номеров. Причем последовательность номеров строк не обязательно должна состоять из следующих друг за другом натуральных чисел. Для того, чтобы облегчить в процессе составления программы вставление новых строк между уже имеющимися, строки программы обычно нумеруются с шагом в 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  




Подборка статей по вашей теме: