Необходимые элементы языка Бейсик

Структура программы. Основа структуры языка Бейсик — строка. Строка начинается с оператора, затем по определенным правилам (эти правила называются формат данного оператора) приводятся аргументы, т. е. числа или выражения, которые оператор будет использовать. На пробелы между оператором и числом в строке компьютер не обращает внимания. Их можно делать или не делать, но нельзя делать пробелы между буквами оператора.

Для компактности записи можно в одной строке набрать несколько операторов, записывая их через знак «:». Например:

Print»z=«z: Print»w=«w: Goto 200.

Вначале лучше писать только один оператор в каждой строке.

Если в строке поставить буквы «Rem» (ремарка, комментарий) или «'», то на все написанное после этого знака в данной строке компьютер не обращает внимания. Так можно для себя или другого пользователя сделать любое пояснение в любом виде.

Ввод данных, оператор присвоения. Числовые переменные обозначаются латинскими буквами с цифрой или без нее или двумя латинскими буквами, например А, В5, DO, Z9, DT. Чтобы присвоить переменной В5 значение 17, в программу надо ввести строку В5=17. Таким образом, знак «=» в Бейсике — оператор присвоения. Числа набираются по следующим правилам:

Десятичная дробь отделяется от целой части точкой, а не запятой, а клавиша е (латинская буква; следить внимательно, на каком регистре набирается буква е) означает ввод порядка. После нее число должно быть целым.

Для отличия нуля от буквы О в большинстве случаев нуль перечеркивают, например 0, или пишут другим шрифтом.

При вводе значений углов следует помнить, что формулы, содержащие углы, угловые скорости, угловые ускорения, подразумевают измерение углов в радианах, а не в градусах. Обозначив угол в градусах через А1, а в радианах — через А2, нужно делать необходимые переводы, вводя строки

А2 = 3.14 * Al/180 Rem перевод в рад.

А1 = 180 * А2/3.14 Rem перевод в град.

Строка

В5 = А1

означает, что переменной В5 присваивается то значение, которое в данный момент имеет переменная А1. Строка

Х = Х+ 1

означает присвоение переменной X старого значения X плюс 1, т. е. увеличение X на 1. Строка

Z = sin(Z)

означает присвоение переменной г нового значения, равного синусу от старого значения.

Ввод значений может производиться, кроме оператора «=», еще операторами Input и Data ... Read (см. далее).

Операторы арифметических действий, стандартные (встроенные) функции и функции пользователя. Любое выражение (совокупность арифметических действий над операциями) записывают в строку с помощью операторов +, —, * (умножить), / (делить), " (возвести в степень). Машина выполнит эти действия в том порядке, как это принято в алгебре (сначала возведение в степень, затем умножение и деление, затем сложение и вычитание). Порядок можно изменить введением скобок. Например, выражение

на языке Бейсик надо записать так:

Z = (А*Х"2 + В*Х + C)/(D - 2.5).

Если выражение сложное, его лучше вычислять по частям. В нашем примере можно это сделать так:

V = А‘Х*Х + В'Х + С W = D - 2.5 Z = V/W

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

Можно и самому ввести какую-либо функцию и попросить присоединить ее к встроенным. Для введения своей функции, например В(у) = у3 + 2 tg у (функция пользователя), надо набрать

Def FnB(Y) = Y"3 + 2 * TAN(Y)

Компьютер, попав на эту строку, будет каждый раз вычислять значение этой функции от того значения у, которое в данный момент имеется в памяти. Теперь это FnB(Y) можно вставлять в любое другое выражение.

Вывод результатов вычислений. Если набрать программу и запустить ее командой RUN, то компьютер вычислит приведенное в программе выражение и присвоит его значение некоторой переменной, например г, т. е. запомнит результат, но не выведет его на дисплей. Вывод результата производится оператором PRINT. Для того чтобы увидеть результат, надо ввести строку

PRINT«Z=»Z

или

PRINT (А*Х*Х + C)/SIN(Y)

То, что поставлено между кавычками, компьютер воспроизводит дословно.

Пример простейшей программы на языке Бейсик. Составим программу вычисления длины волны одной из линий излучения водорода по формуле Бальмера:

Выберем значения: п = 2, т = 3. Один из вариантов программы может быть таким:

PRINT «WODOl»

‘ВЫЧИСЛЕНИЕ ДЛИНЫ ВОЛНЫ ОДНОЙ ЛИНИИ

R=1.097373e-2

N=2

М=3

X=R*(1/N/N-1/M/M)

PRINT “L=”l/X

END

После команды Esc -* RUN компьютер должен выдать ответ L = 656,11 (нм).

Проверка и редактирование программы. Если при вводе программы или при выполнении вычислений компьютер обнаруживает ошибки в действиях пользователя, то он сообщает об этом определенной фразой (иногда красной надписью или звуковым сигналом). Расшифровку сообщений об ошибках можно найти в описании используемой версии языка Бейсик. В этих случаях, а также и в тех, когда компьютер выдает неверный ответ (например, «тест не проходит»), введенную в компьютер программу нужно проверить, дав команды Esc —» Edit, и сделать необходимые исправления, т. е. отредактировать программу. Для этого пользуются курсором — световым указателем. Клавишами управления курсор подгоняют в нужное место и неправильный текст заменяют на правильный. Теперь можно снова попытаться запустить программу командой RUN.

Организация диалога с компьютером. Оператор INPUT. Для беседы с машиной (для ответов на ее вопросы, введения новых значений переменных) необходимо, чтобы в определенных местах программы были предусмотрены остановки. Тогда машина может задавать пользователю вопросы и предлагать что-то ввести. Эта делается с помощью оператора INPUT («введите»). Если в предыдущей программе вместо строки N = 2 написать строку

ШРиТ«ВВЕДИТЕ N=»;N

то компьютер напечатает текст в кавычках дословно (он может быть любым) и остановится. Пользователь печатает значение N, например набирает цифру 2 и нажимает Ent. После этого компьютер продолжит работу по программе уже с этим значением N.

Безусловные и условные переходы. Безусловный переход на строку 10 делается введением следующей строки:

GOTO 10

В начале той строки, куда надо перейти, следует поставить «10:». Переход на подпрограмму, расположенную на строке 800, делается так:

GOSUB 800

В конце подпрограммы нужно поставить оператор возврата из подпрограммы:

RETURN

Условный переход организуется с помощью оператора IF. ...THEN... («Если..., тогда...»). Например, команда «Если А больше или равно В, то иди на строку 452» набирается так

If А >= В then 452

Если это условие не выполняется, то компьютер пойдет на следующую строку, а если оно выполняется, то на строку 452.

Если условие не выполняется, можно сделать переход и не на следующую строку, а, например, на строку 3:

If А>=В then 452 else 3

Организация циклов. Для организации циклов служит оператор For...to («для... до») — Next («следующий»). Рассмотрим пример. Допустим, надо сосчитать 8 линий в серии Бальмера (п = 2) для водорода. Необходимо, чтобы при данном п значение т изменялось отп + 1доп+8ис каждым новым значением т машина возвращалась к вычислениям по одной и той же формуле, пока значение m не станет больше п + 8. Усовершенствуем приведенную выше программу для вычисления длин волн в спектре водорода и получим программу

R=1.097373e-2

п=2

For m=3 to 11

x=R*(l/n~2—l/m'2)

Print «L=» 1/x

Next m

End

Здесь образован цикл For... Next. Машина пройдет по этому циклу восемь раз, напечатает восемь ответов и выйдет из цикла, когда М станет больше п + 8. На экране появится:

  • 656.1123
  • 486.0092 и т. д.

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

Если бы при организации цикла по т следующее значение т отличалось от предыдущего не на 1, а на другой шаг, например на h, то строку с оператором For...to надо дополнить:

For m=n+l to n+8 step h

Естественно, что значение h должно быть до этого введено в компьютер или указано не в виде буквы, а в виде числа:

...step 2.

Работа в графическом режиме. Вычерчивание графиков. Если не давать специальных распоряжений, дисплей работает в символьном режиме. Он воспроизводит на экране только буквы, цифры и другие знаки клавиатуры. Если же нужно рисовать на экране отдельные точки, линии, окружности и т. д., то надо перевести дисплей в графический режим, в котором он способен выполнять распоряжения: Pset (поставить точку), Line (провести прямую линию) и т. д. Для перевода в графический режим (и обратно в текстовый) служит оператор Screen, после которого ставят номер режима (в разных версиях Бейсика и для разных мониторов номера разные). Примеры режимов:

О — текст обычными символами (24 строки по 40 символов в строке, текстовый или символьный режим).

2 (или 8, или 12) — графический режим, рисунки изображаются с помощью мелких точек.

Точка х = 0, у = 0 (0,0) обычно расположена в левом верхнем углу экрана. Для постановки точки на 10 позиций правее и на 30 ниже следует в программе указать

Screen 12

Pset(10,30), С

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

Print “gr_exp”

Screen 8

For x=0 to 2 step le-2 y=Exp(x)

. xe=x*100: ye=180-y*20 Pset(xe,ye),12

Next x

End

В этой программе стоит не Pset(x,y), а более сложное выражение. Дело в том, что в режиме Screen 8 на экране имеется, допустим, 255 точек по оси х и 191 — по у. Надо, прикинув максимальный размах значений по х и по у, с помощью множителей (в данном случае 100 и 20) увеличить или уменьшить размер изображения так, чтобы оно было немного меньше экрана. Кроме того, эта строка написана для случая, когда по вертикали расстояния на дисплее отсчитываются вниз, а не вверх, как обычно при вычерчивании графиков. Для того чтобы у отложить вверх, надо после запятой в операторе PSET поставить не у*20, а 180 — у*20 (опустись на 180 точек и поднимись на у*20). В программе сначала отдельными строками вычислены экранные координаты хе, уе, значения которых затем подставляются в оператор Pset.

Для вычерчивания прямой линии из точки (xl,yl) в точку (х2,у2) цветом 8 служит оператор

Line(xl,yl)-(x2,y2)f8

Для вычерчивания окружности с центром в точке (х,у) радиусом R линией цвета С используется оператор Circle(x,y),R,C

В некоторых версиях аргументы оператора Circle надо указывать иначе. Формат каждого оператора в данной версии языка надо уточнить по описанию этой версии.

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

Если же программа будет выполнена до конца, это произойдет автоматически.

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

Изображение объемных (трехмерных) траекторий, предметов и т. д. на плоском экране дисплея. Для изображения на плоском экране трехмерного объекта, у которого каждая точка имеет координаты х, у, г, поступают так же, как мы всегда делаем, когда рисуем точки объекта на бумаге (рис. П.1, а, б). Точки объекта, которые ближе к нам (т. е. точки, у которых больше координата z), смещают вниз и влево (см. рис. П.1, а) или вниз и вправо (см. рис. П.1, б). Величину этих смещений делают пропорциональной координате z, но в 2—3 раза меньшей, чем z. Например, вместо х откладывают экранную координату хе = х — z/2, а вместо у — экранную координату уе = у - г/3.

Работа с массивами чисел. Если данных много, то удобно занести их сначала в компьютер в виде массива чисел. В Бейси-

П. 1

Рис. П. 1

ке для этого есть два способа. Первый — оператором Data можно ввести этот массив в программу. В любом месте программы надо вставить строку

Data 1, 2, 5, 7, 8, 103,105.5, 105.6,...

Если в строке не хватит места, можно дописать еще строку или несколько строк, тоже начинающихся со слова Data. Для использования этих чисел в программе (присвоения какой-либо переменной J этих значений), надо записать строку

Read J

Переменная J будет равна первому числу из массива. При вторичном использовании оператора Read переменной J будет присвоено значение второго числа и т. д.

Перед занесением ряда чисел в блок Data или перед чтением ряда чисел по порядку, начиная с первого, надо ставить счетчик Data на 0 командой Restore, иначе прочтение (или занесение в Data) пойдет не с первого элемента.

Если программу стереть, то с ней вместе сотрется и весь блок Data. Второй способ — запись массива отдельно от программы в ОЗУ компьютера. Тогда при стирании или изменении программы этот массив останется. Кроме того, можно будет читать числа не по порядку, а выбирать из него любой элемент. Делается это так. Сначала надо зарезервировать в ОЗУ место для массива командой Dim А5(20). Будет выделено место для одномерного массива под именем А5 в двадцать элементов: А5(1), А5(2), ... и т. д. Теперь можно записать этот массив, например, так:

А5(7) = 105.3 А5(8) = 105.4

и т. д. Но лучше организовать цикл для заполнения всего массива:

For J=1 to 20 Print«J=»J Input« A5(J)=»;A5(J)

Next J

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

х=А5(1) + А5(20)

Можно записать и другие массивы под другими именами А6, Ml, V2 ит. д.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >