Для того чтобы ЭВМ "поняла" алгоритм решения задачи и выполнила его, нужно записать этот алгоритм на специальном языке. Такие языки называют языками программирования, или алгоритмическими языками. Они являются одним из основных средств общения человека и компьютера.
В настоящее время существуют сотни различных языков программирования. Один из наиболее распространенных - язык программирования Бейсик.
Любой алгоритм состоит из допустимых действий, организованных с помощью алгоритмических конструкций - ветвлений, циклов, вспомогательных алгоритмов. Поэтому для того чтобы изучить язык программирования, надо узнать, как в нем называются те или иные допустимые действия и как оформляются алгоритмические конструкции.
Вот основные правила записи программ на Бейсике: в начале каждой строки программы ставится номер; при записи программы можно несколько команд записывать в одной строке, разделяя их двоеточием.
Действию "Присвоить X значение F" соответствует команда
LET X=F.
В большинстве "диалектов" Бейсика слово LET можно опускать.
Переменную в Бейсике можно обозначать не только буквой, но и буквой с цифрой или двумя буквами.
Вот пример программы, содержащей команды присваивания:
11 Al = 2 : B1 = A1/7 - 2
36 С = (А1 + В1)∗А1^2
Список основных функций и их обозначений в Бейсике см. в § 20. Действию "Запросить A, В" на языке Бейсик соответствует команда
INPUT A, B
Если же ввести в ЭВМ строку
INPUT "ВВЕДИТЕ ТРИ ЧИСЛА"; А, В, С
то на экране сначала появится надпись ВВЕДИТЕ ТРИ ЧИСЛА?, после чего ЭВМ будет ждать ввода трех чисел.
Действию "Сообщить" на Бейсике соответствует команда
PRINT...
Вместо многоточия после слова PRINT может стоять текст, заключенный в кавычки, а также переменные или выражения. Например, по команде
PRINT "КОРНИ УРАВНЕНИЯ" X1, Х2
сначала на экране дисплея появится сообщение КОРНИ УРАВНЕНИЯ, а затем - значения переменных X1 и Х2.
Команды STOP и END - для остановки выполнения программы.
По команде
GOTO...
где вместо многоточия ставится номер строки программы, ЭВМ перейдет к выполнению указанной строки.
Ветвление в неполной форме записывается на языке Бейсик так (здесь Q - условие, а номера команд взяты произвольно):
10 IF Q THEN ВЕТВЬ ВЕТВЛЕНИЯ
или так
120 IF NOT (Q) THEN GOTO 150
121 ветвь ветвления
150 ...
Например, алгоритм нахождения максимума из двух чисел:
Запросить A, В.
Присвоить М значение A.
Если М<В, то:
Присвоить М значение В.
Конец ветвления.
Сообщить М.
на языке Бейсик можно записать любым из двух способов:
10 INPUT А,В
20 М = А
30 IF M<B THEN M=B
40 PRINT И
50 END
10 INPUT А,В
20 М = А
30 IF N0T(M<B) THEN 50
40 M = B
50 PRINT M
60 END
Ветвление в полной форме записывается так:
IF Q THEN первая ветвь ELSE вторая ветвь
или так:
530 IF Q THEN 601
531 первая ветвь
600 GOTO 700
601 вторая ветвь
700 ...
В языке Бейсик цикл "Пока" в зависимости от реализации на ЭВМ оформляется одним из двух способов:
100 WHILE <условие>
110 тело цикла
200 WEND
210 ...
100 IF NOT <условие> THEN 210
110 тело цикла
200 GOTO 10
210 ...
Цикл "Для каждого" "со счетчиком" I оформляется так:
100 FOR I = L TO R
110 тело цикла
120 NEXT I
где L - нижняя, a R - верхняя граница изменения I.
Вот, например, три возможные записи программы нахождения
квадратов целых чисел от 10 до 100:
10 1=1
20 WHILE I<=100
30 PRINT I^2
40 I = I + 1
50 WEND
60 END
10 I = 1
20 IF NO0T(I< = 100) THEN 60
30 PRINT I^2
40 I = I + 1
50 GOTO 20
60 END
10 FOR I = 1 ТО 100
20 PRINT I^2
30 NEXT I
40 END
При оформлении подпрограмм в Бейсике заголовки и комментарии записываются в начале подпрограммы в строке комментариев, начинающейся со слова REM. Например:
1000 REM "НАЗВАНИЕ". АРГУМЕНТЫ X, Y; РЕЗУЛЬТАТЫ С, D
В конце подпрограммы надо ставить команду RETURN. Нумеруя строки программы, надо располагать подпрограммы после текста основной программы.
Вызов подпрограммы осуществляется так: сначала аргументам подпрограммы присваиваются необходимые значения, а затем записывается команда GOSUB..., где вместо многоточия указывается номер первой строки подпрограммы.
Вот, например, программа нахождения минимума из трех чисел:
10 INPUT А, В, С
20 X = A : Y = B : GOSUB 100
30 X = M : Y = C : GOSUB 100
40 PRINT M
50 STOP
100 REM Поиск минимума ив двух чисел. Аргументы х, у?
результат М
110 IF X>Y THEN M = Y ELSE M = X
120 RETURN
В языке Бейсик можно использовать и другой вид подпрограмм - так называемые подпрограммы-функции, предназначенные для расширения списка основных функций Бейсика. Команда для задания новой функции выглядит так:
DEF FNG (X)=U.
Здесь U - выражение, X - один или несколько аргументов функции.
Например, команда
DEF FNY (А, В, C)=COS (A + LOG (B)/(COS (C) + l))
задает новую функцию FNY от трех аргументов.
После задания функций их можно использовать в записи выражений наряду с основными функциями. Например:
PRINT SIN (FNY (2, 3, Х + ЕХР (Y)) - 2)
В программах на языке Бейсик можно пользоваться прямоугольными и линейными таблицами. По команде
DIM ...
ЭВМ отведет в своей памяти место для таблицы. Вместо многоточия надо указать имя таблицы, а также - в скобках - число ее строк и столбцов. Например,
10 DIM А (5,6)
или
23 DIM В (23)
Одной командой DIM можно описывать несколько таблиц:
10 DIM А (100), В (10, 30), С1 (25)
Вот, например, программа вычисления максимального элемента линейной таблицы, состоящей из 55 чисел:
10 DIM A(55)
20 REM ВВОДИМ ЭЛЕМЕНТЫ ТАБЛИЦЫ А
40 FOR I = 1 TO 55
50 INPUT A(I)
60 NEXT I
70 REM БУКВОЙ М БУДЕТ ОБОЗНАЧЕН МАКСИМУМ
80 M = А(1)
90 FOR I = 2 TO 55
100 IF M<A(I) THEN M = A(I)
110 NEXT I
120 PRINT"MAKCИMAЛЬНЫЙ ЭЛЕМЕНТ - "M
С помощью языка Бейсик можно составлять программы для решения разнообразных жизненных задач. Многие такие задачи сводятся к решению уравнений. Один из основных методов решения уравнений на ЭВМ - метод деления пополам. Он состоит в том, что отрезок, на котором находится корень, делят пополам и выбирают половинку, содержащую корень. Эту половинку снова делят пополам и так далее. В результате корень можно найти с любой точностью.
Однако не всегда можно записать связи аргументов и результатов в виде одного или нескольких уравнений. Часто при изучении "поведения" сложного объекта нас интересует, как меняется его состояние с течением времени. В этом случае результатом служит последовательность чисел, отражающих состояние объекта в определенные моменты времени (см., например, "экологическую" задачу из § 11 и "биологическую" задачу из § 23). Обычно каждое последующее число в этой последовательности определяется одним или несколькими предыдущими членами этой последовательности. Чтобы проследить за развитием процесса, достаточно задать ЭВМ начало последовательности и поручить ей вычисление остальных чисел одного за другим. Изменяя начальные значения, можно изучить различные варианты протекания процесса.
Еще один большой и важный класс задач, решаемых с помощью ЭВМ, составляют задачи по обработке статистических данных (имеются в виду данные, полученные в результате наблюдений, подверженных влиянию различных случайных факторов). Во многих случаях такие задачи сводятся к выяснению того, похожи ли две совокупности результатов наблюдений. Для этого бывает достаточно вычислить и сравнить две пары чисел - средние значения и дисперсии этих совокупностей. Средним значением последовательности а1, ..., аn называется число
Дисперсия этой же последовательности находится так:
Эти два числа хорошо отражают индивидуальные особенности последовательности результатов наблюдений.