назад

Язык BASIC для ПЭВМ

Порядок написания программы на языке BASIC

Алфавит языка BASIC

Данные языка BASIC

Стандартные математические функции

Стандартные строковые функции

Операции и выражения языка

Операторы ввода-вывода и преобразования информации

Операторы управления

Операторы цикла

Оператор DIM

Блоки данных

Подпрограммы языка BASIC

 
 

Порядок написания программы на языке BASIC

Программа на языке BASIC состоит из последовательности строк, которые имеют вид:

[line] statement [:statement]...['comment]

Здесь: line - номер строки от 0 до 65535;

statement - оператор;

comment - комментарии, которые отделяются от остальной части строки апострофом < ' > .

Элементы в квадратных скобках могут отсутствовать. Программная строка может содержать 255 знаков и занимать несколько физических строк на экране дисплея. В строке может быть один или несколько операторов, разделенных двоеточием < : > или ни одного. Естественный порядок выполнения программы сверху вниз или в порядке возрастания номеров строк. Порядок выполнения операторов в пределах одной много операторной строки слева направо.

Пример

10 INPUT "Введите размерность массива"; N

20 DIM X(N)

30 FOR I=1 TO N

40 INPUT "Введите элемент массива"; X(I)

50 NEXT I

60 S=0

70 FOR I=1 TO N

80 S=S+X(I)

90 NEXT I

100 C=S/N

110 PRINT "Среднее значение =";C

120 END

 

вверх

 

Алфавит языка BASIC

В алфавит языка BASIC входят следующие символы :

1. 26 букв латинского алфавита от А до Z;

2. Буквы кириллицы от А до Я;

3. Цифры от 0 до 9;

4. Знаки арифметических операций: + , - , * , / , ^ , \ ;

5. Знаки отношений: = , < , > ;

6. Специальные символы: пробел , " (кавычки) , # , $ , & , ? ,' (апостроф) , ( , ) , . , ; , % .

 

вверх

 

Данные языка BASIC

Это понятие включает в себя константы, переменные, массивы.

Константы

В языке ТURBO BASIC используются константы следующих типов:

1. Целые от -32768 до 32767, т.е. 215 и 215-1.

Например, -2; +128.

2. Действительные с фиксированной точкой (до 6 значащих цифр).

Например, 3.14; .18; -.67.

3. Действительные с плавающей точкой - этот тип констант полезен для представления очень больших или очень малых чисел. Так, например, число 1475000000000 можно записать как 1.475Е12, т.е. число 1.475 умноженное на число 10, возведенное в двенадцатую степень. Малые числа можно представить аналогично, например, число 0.0000228 можно записать как 2.28Е-5, т.е. число 2.28, деленное на 10, возведенное в пятую степень.

4. Строковые, представляющие собой набор любых допустимых символов языка, заключенных в кавычки и длиной до 32767 символов.

Например, "АБИТУРИЕНТ-97", "1997".

Переменные

Для хранения информации, к которой можно обратиться в программе, язык BASIC использует переменные . Имя переменной в программе является именем ячейки памяти, где хранится информация. Информация, хранимая в переменной, называется ее значением. Имена переменных могут состоять из букв и цифр и быть любой длины. Первым символом должна быть буква.

Имеется 4 типа переменных, которые определяются по послед нему символу в ее имени:

% - целые (А1%;МАХ1%);

! - действительные (А!;NM!);

# - действительные двойной точности (DR#, X5#);

$ - символьные (BS$;P$).

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

Переменные различных типов могут иметь одинаковые имена, например, X и X$.

Массивы

Переменные могут объединяться в массивы. Массив - это совокупность однородных элементов, имеющих общее имя и отличающихся друг от друга порядковым номером. Бывают одномерные, двумерные и т.д. массивы. Одномерный массив имеет вид: А=(а(1),а(2),...а(i),...,а(n)), где i - порядковый номер элемента а(i).

Например, А=(5,-7,8,0,3,-6), где а(1)=5; а(2)=-7; а(3)=8; а(4)=0; а(5)=3; а(6)=-6.

Двумерный массив (матрица) имеет вид:

а(1,1) а(1,2) а(1,3) .... а(1,m )

А = a(2,1) a(2,2) a(2,3) .... a(2,m)

..................................................

a(n,1) a(n,2) a(n,3) .... a(n,m)

Элементы двумерного массива имеют два индекса. Первый индекс указывает номер строки, в которой стоит элемент, а второй индекс - номер столбца.

Правила именования массива такие же, как и для переменной. Обращение к элементу массива осуществляется при помощи имени массива, за которым следует один или несколько (до 10) индексов, разделенных запятыми и заключенных в скобки. Массивы, у которых элементы содержат строковые значения, называются строковыми. Числовые массивы состоят из элементов, содержащих числовые значения.

Пример :

A$(6) - шестой элемент строкового массива;

TAB(4,10) - первый индекс двумерного массива равен 4, второй индекс равен 10;

Y5%(20,30) - первый индекс двумерного целочисленного массива равен 20 второй - 30 .

В качестве индексов можно использовать числовые значения, имена переменных, арифметические выражения.

 

вверх

 

Стандартные математические функции

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

ABS(x) - абсолютное значение x

ATN(x) - арктангенс х

COS(x) - косинус х

EXP(x) - экспоненциальная функция (ех)

FIХ(x) - целая часть числа (отсечение дробной части числа)

INT(x) - вычисление наибольшего целого, не превосходящего значение х

LOG(x) - натуральный логарифм х (х>0), ln x

PI - системная константа, имеющая значение 3.1415....

RND(x) - определение случайного действительного числа

SIN(x) - синус х

SGN(x) - знак числа х:

-1 , если х<0

0 , если х=0

1 , если х>0

SQR(x) - квадратный корень из х (х>=0)

TAN(x) - тангенс х

 

вверх

 

Стандартные строковые функции

LEN (A$) - определение длины строки.

  • Значение функции LEN("крокодил") равно 8.

  • MID$(A$,n,[,m]) - выделение заданной части строки.

  • Из строкового выражения или переменной А$ выделяется подстрока длиной m символов , начиная с n-й позиции. Если m = 0, то выделяется строка. Значение функции MID$ ("баобаб",1,3 ) равно "бао".

  • INSTR([n,]A$,B$) - поиск подстроки В$ в строке символов А$.

  • Функция INSTR дает номер позиции, начиная с которой заданная подстрока В$ появляется в исходной строке A$. Числовое выражение n определяет позицию в строке, с которой должен начинаться поиск. Если n не задано, то поиск начинается с первой позиции. Значение функции INSTR (2, баобаб","ба") равно 4. Значение функции INSTR ("баобаб", "ба") равно 1.

  •  

    вверх

     

    Операции и выражения языка basic

    Выражения состоят из констант, переменных или констант и переменных, соединенных знаками операций. Определены три типа операций над данными: арифметические, логические и строковые.

    Арифметические операции

    /в порядке очередности их выполнения/

    ЗНАК НАЗВАНИЕ ПРИМЕР

    ^ возведение в степень А^В

    *, / умножение и деление А*В,А/В

    \ целочисленное деление А\В

    МОD остаток от целочисленного А МОD В

    деления

    +,- сложение и вычитание А+В,А-В

    Арифметические выражения используются для выполнения вычислений. Эти выражения могут содержать символы арифметических операций, числовые константы и переменные. Операции одного уровня выполняются слева направо. Для изменения порядка вычисления используются скобки.

    Например, А-2/В+3

    (А-2)/(В+3)

    А-(2/В)+3

    А-(2/(В+3))

    Размещение скобок в различных местах выражений приводит к разным результатам.

    Логические операции

    Для сравнения двух величин служат операции отношения. Сравниваемые величины должны быть одинакового типа - либо обе число вые, либо обе строковые. Результатом операции отношения могут быть 1 (истина) или 0 (ложь). Сравнение строк символов осуществляется посимвольно слева направо. Допускается использование следующих операций отношения (в порядке приоритета выполнения):

    ЗНАК НАЗВАНИЕ ПРИМЕР

    = равно А=В

    >< или <> не равно А><В или А<>В

    < меньше А<В

    > больше А>В

    <= или =< меньше или равно А<=В

    >= или => больше или равно А>=В

    При объединении в одном выражении арифметических операций и операций отношения первыми выполняются арифметические операции.

    В языке BASIC используются следующие логические операции (в порядке приоритета их выполнения): NOT - не ; AND- и; OR - или.

    NOT AND OR

    R1 (NOT R1) R1 R2 (R1 AND R2) R1 R2 (R1 OR R2)

    0 1 1 1 1 1 1 1

    1 0 1 0 0 1 0 1

    0 1 0 0 1 0

    0 0 0 0 0 0

    Операции одного уровня выполняются слева направо. Для изменения порядка выполнения операций применяются скобки.

    Строковые операции

    Операцией над строками, подобной операции сложения чисел, является конкатенация. Эта операция заключается в присоединении одной строки символов к концу другой строки символов. Для обо значения конкатенации строк используется символ “+” .

    Например, "Высоко" + "урожайный"

    Результирующая строка имеет вид: " Высокоурожайный ".

    Для сравнения строк применяются операции отношения ( = , < , > , <= , >= , >< ).

     

    вверх

     

    Операторы ввода-вывода и преобразования информации

    Оператор INPUT

    Оператор предназначен для вывода на экран дисплея указанно го в нем сообщения и ввода с клавиатуры значений, указанных переменных во время выполнения программы.

    Формат: INPUT ["сообщение";] переменная [, переменная ]

    Текст сообщения поясняет, какие данные требуется ввести. При выполнении оператора INPUT на экране появляется ?, и программа ждет ввода данных с клавиатуры. Если после сообщения использовать <,> вместо <;>, то ? не появляется. Вводимые данные разделяются запятыми. Ввод заканчивается при нажатии <Return>. Тип вводимого элемента данных должен соответствовать типу переменной в операторе INPUT. Строки символов могут не заключаться в кавычки, если они не содержат запятых, начальных или конечных пробелов. Если значений переменных введено меньше, чем переменных содержится в операторе INPUT, то оставшиеся переменные полу чают значение 0.

    Пример : INPUT "введите А";A

    На экране появится введите А ? (после ? ввести значение переменной А и нажать < Return >).

    В качестве значения переменной A можно ввести любое число, но нельзя вводить запятую, арифметическое выражение и имя переменной.

    Оператор PRINT

    Оператор предназначен для вывода данных на экран дисплея.

    Форматы: PRINT [ список вывода ]

    ? [ список вывода ]

    Список вывода - константы, имена переменных, выражения, тексты.

    ? используется как сокращенная запись слова PRINT.

    Строковые константы в списке должны быть заключены в двойные кавычки.

    Элементы списка вывода разделяются запятой <,> или точкой с запятой <;>.

    Оператор PRINT без списка вывода выводит пустую строку.

    Примеры:

    PRINT A - выводит на экран значение переменной А;

    PRINT 5 - выводит на экран 5 ;

    Для удобства восприятия выводимых результатов каждая строка экрана может быть условно разделена на 5 зон по 14 позиций в каждой. Если элементы в списке оператора PRINT разделяются запятыми, то каждый следующий элемент выводится в следующей свободной зоне. Если последняя зона в строке заполнена, то вывод продолжается с первой зоны следующей строки. Наличие в списке двух рядом стоящих запятых вызывает пропуск одной зоны.

    Пример: ? 2,5,-6

    на экране: 2 5 -6

    Точка с запятой в качестве разделителя элементов списка размещает элементы друг за другом. При этом числовые значения выводятся с предшествующей знаковой позицией и последующим пробелом. Для положительных значений в знаковой позиции помещается пробел, а для отрицательных - знак " - ".

    Пример: ? 2;5;-6

    на экране: 2 5 -6

    Точка с запятой в конце оператора PRINT отменяет перевод строки.

    Пример: PRINT "A";

    PRINT "В"

    на экране: АВ

    Пример: PRINT "А"

    PRINT "В"

    на экране: А

    В

    Оператор CLEAR

    Предназначен для установки начальных значений переменных. Числовые переменные приравниваются 0 , строки - значению "пустая строка", элементы массивов не определены.

    Оператор LET

    Оператор используется для присваивания значения переменной.

    Формат: LET V=E

    V - переменная действительного, целого или строкового типа;

    Е - арифметическое или строковое выражение, константа или переменная;

    LET - необязательное ключевое слово.

    Слово LET обычно опускается: А=5+2 вместо LET А=5+2 .

    Пример: А=5

    В=2

    С=А+В^2 : С=С+10

    Переменная может иметь в каждый момент только одно значение. При присваивании переменной нового значения прежнее значение стирается.

    Оператор SWAP

    Оператор обменивает величины двух переменных.

    Формат: SWAP V1,V2

    V1 и V2 - переменные действительного, целого или строкового типа.

    Тип обеих переменных должен совпадать.

    Пример: A=5

    B=500

    SWAP A,B

    PRINT "A=";A,"B=";B

    на экране: А= 500 В= 5

    Оператор STOP

    Оператор используется для приостановки выполнения программы. Формат : STOP.

    После приостановки программы можно вводить непосредственно выполняемые операторы (без номеров строк), чтобы убедиться, работает ли программа так, как задумано. Приостановка программы позволяет вывести на экран значения переменных, изменить значения переменных и ход выполнения программы, т.е. осуществлять отладку программы. Количество операторов STOP в программе не ограничено. Они могут размещаться в любом месте программы. Обычно оператор STOP помещают в критические точки. Для продолжения выполнения программы необходимо набрать с клавиатуры команду CONT и программа будет продолжена со следующего за STOP оператора. Оператор остановки и продолжения является мощным средством разработки и отладки программы. После завершения процесса отладки программы операторы STOP удаляют из программы.

    Оператор END

    Оператор используется для завершения выполнения программы. Формат : END.

    Оператор END является последним оператором в программе. При его отсутствии оператор, выполняемый последним, завершает выполнение программы.

    вверх

     

    Операторы управления

    Операторы управления предназначены для изменения естественного порядка выполнения операторов. В языке BASIC используются операторы безусловного перехода и условные операторы.

    Оператор GOTO

    Оператор GOTO предназначен для безусловного перехода к заданной строке программы.

    Формат: GOTO N

    N - номер строки

    Оператор передает управление строке, номер которой указан в операторе.

    Пример: GOTO 250

    Оператор IF

    Условные операторы предназначены для изменения порядка выполнения операторов в зависимости от истинности или ложности не которого заданного условия. В языке BASIC допускается использование следующих форм условных операторов:

    Формат 1: IF E THEN (GOTO) N

    Формат 2: IF E THEN O

    Формат 3: IF E THEN O1 ELSE O2

    IF, THEN, GOTO, ELSE - ключевые слова;

    E - условие, представляющее собой выражение отношения;

    N - номер строки;

    O - оператор или группа операторов, разделенных символом ":";

    O1, O2 - оператор, группа операторов или номер строки.

    В первой конструкции используется одно из ключевых слов THEN или GOTO.

    При выполнении оператора IF вычисляется значение выражения отношения E. Если оно оказывается истинным, то в случае использования первого формата оператора IF управление будет передано на строку с номером N. При использовании второго формата опера тора IF будет выполнен оператор O (или группа операторов, разделенных двоеточием), записанный после ключевого слова THEN. Далее управление передается на следующую строку программы.

    Если значение условия E оказывается ложным, то конструкция, стоящая после ключевого слова THEN игнорируется, и управление передается строке, непосредственно следующей в программе за оператором IF.

    Операторы IF или GOTO могут быть использованы для организации разветвлений или циклов.

    Пример : Протабулировать функцию

    на интервале-1<=x<=1 c шагом 0.3.

    10 INPUT "Введите значения X1,X2,X3,B,A";X1,X2,X3,B,A

    20 X=X1

    30 Y=(B*X^2-A)/(EXP(A*X)-1)

    40 PRINT "X=";X;"Y=";Y

    50 X=X+X3

    60 IF X<=X2 THEN 30

    70 END

    В третьем формате оператора IF ключевое слово ELSE указывает, как поступить в случае, если проверяемое условие не выполняется. Этот формат оператора IF определяет, какие действия выполняются при истинном и ложном значениях проверяемого условия.

    Пример : IF X=45 THEN 50 ELSE PRINT " НЕВЕРНО "

    Если X не равен 45, то выводится сообщение " НЕВЕРНО ". Если X равен 45, то управление передается строке 50.

    Применение ELSE усложняет программу. Пользоваться этим форматом оператора IF нужно аккуратно.

    Пример : Решить квадратное уравнение ax2+bx+c=0

    10 INPUT "Введите значения A, B, C"; A, B, C

    20 D=B^2-4*A*C

    30 IF D>0 THEN X1=(-B-SQR(D))/(2*A): X2=(-B+SQR(D))/(2*A): PRINT"X1="; X1; "X2="; X2 ELSE PRINT "Действительных корней нет"

    40 END

    В условии E можно указать несколько проверок, соединив их логическими операциями: AND, OR, NOT.

    При выполнении оператора : IF X=12 AND Y<0 THEN 100 управление передается строке с номером 100, если одновременно выполнены условия X=12 и Y<0.

    Оператор : IF X=12 OR Y<0 THEN 100 передает управление строке с номером 100, если верно хотя бы одно из этих соотношений.

    Пример : Найти значение функции

    10 INPUT "Введите значения A, B, C, X"; A, B, C, X

    20 IF X<A THEN Y=EXP(-A*X)*COS(B*X)

    30 IF X>=A AND X<=B THEN Y=TAN(C*X)

    40 IF X>B AND X<C THEN Y=EXP(-B*X)*SIN(C*X) ELSE PRINT "Решения нет": GOTO 60

    50 PRINT "Y="; Y

    60 END

     

    вверх

     

    Операторы цикла

    Операторы FOR и NEXT

    Операторы FOR и NEXT предназначены для организации циклического вычислительного процесса.

    Формат: FOR V=E1 TO E2 STEP E3

    . . .

    NEXT V

    V- переменная, используемая в качестве счетчика цикла;

    E1, E2, E3 - арифметические выражения, задающие соответственно начальное, конечное значение и шаг изменения переменной V.

    Операторы FOR и NEXT могут использоваться только попарно, т.е. в программе каждому оператору FOR должен соответствовать свой оператор NEXT. FOR определяет начало, а NEXT - конец цикла. Если шаг изменения V равен 1, то конструкцию STEP E3 можно опускать.

    При работе цикла происходят следующие операции:

    1. Вычисляются значения E1, E2, E3, если они являются арифметическими выражениями.

    2. Переменной V присваивается в качестве начального значения значение E1.

    3. Полученное значение V сравнивается со значением выражения E2. При этом, если E3 > 0, то проверяется условие V <= E2, если E3 < 0, то проверяется условие V >= E2.

    4. Если проверяемое условие истинно, то выполняется группа операторов, расположенных между FOR и NEXT.

    5. Оператор NEXT изменяет текущее значение переменной V на шаг E3 (V=V+E3 ) и передает управление в начало цикла. Для нового значения V опять проверяется одно из условий пункта 3. При истинности условия еще раз выполняется группа операторов между FOR и NEXT. Весь процесс выполняется до тех пор, пока проверяемое условие не примет значение "ложно". В этом случае выполнение цикла заканчивается и управление передается оператору, следующему в программе непосредственно после оператора NEXT.

    Пример: Найти сумму натурального ряда чисел от 1 до N.

    10 INPUT N

    20 S=0

    30 FOR I=1 TO N

    40 S=S+I

    50 NEXT I

    60 PRINT "S=";S

    70 END

    При организации циклов с использованием операторов FOR-NEXT необходимо учитывать следующее:

    1. Проверка истинности условия V <= E2 (V >= E2) осуществляется перед очередным выполнением цикла. Следовательно, если это условие не выполняется перед первым выполнением цикла, то цикл не будет выполняться ни разу.

    Например, FOR I=15 TO 5

    2. Для правильного выполнения цикла внутри него не должно содержаться операторов, изменяющих значения счетчика цикла.

    Например,30 FOR I=1 TO 11

    40 A=I^2

    50 I=I+A

    60 NEXT I

    3. Передача управления внутрь цикла, минуя его заголовок, не допускается.

    Например,40 GO TO 100

    50 FOR K=10 TO 50 STEP 2

    ........................

    100 PRINT K

    110 NEXT K

    4. Внутри циклов могут быть другие операторы циклов, т.е. допускается вложение циклов друг в друга. Перекрытие циклов не допускается и внутренние циклы должны заканчиваться до завершения внешних.

    FOR I1

    FOR I2

    FOR I3

    (NEXT I1 нельзя !)

    NEXT I3

    NEXT I2

    NEXT I1

    5. Можно использовать оператор NEXT без переменной, что ускорит выполнение цикла .

    Например, 110 NEXT вместо 110 NEXT K

    Можно также объединять операторы NEXT, если они следуют друг за другом.

    Например, 200 NEXT I3,I2,I1 вместо 200 NEXT I3

    210 NEXT I2

    220 NEXT I1

     

    вверх

     

    Оператор DIM

    Если в задаче обрабатываемые данные организуются в виде массивов, в этом случае интерпретатору требуется сообщить информацию, необходимую для распределения памяти под массивы, используемые в программе. Для этого используется оператор DIM.

    Формат: DIM a1(m1), a2(m2),..., aN (mN)

    ai - имя массива;

    mi - список параметров, задающих максимальные значения индексов массива. Список mi может содержать одну или две целые константы или переменные, разделенные за пятыми, а также арифметические выражения. Индексы из меняются от 0 до максимального.

    Пример: DIM A(4), B(5,8), A1$(5), B1$(3,4)

    Оператор DIM описывает числовые массивы A и B, символьные массивы A1$ и B1$. Массив A одномерный и содержит 5 элементов A(0), A(1), A(2), A(3), A(4). Двумерный числовой массив B содержит 6 строк и 9 столбцов. Символьный одномерный массив A1$ состоит из 6 элементов. Символьный двумерный массив B1$ состоит из 20 элементов (4 строки, 5 столбцов).

    Обработка массивов в языке BASIC проводится поэлементно. Оператор DIM, описывающий массив, должен быть расположен в программе до первого оператора, использующего его элементы.

    Если в одномерном массиве не более 11 элементов, а в двумерном не более 11 строк и 11 столбцов, то такие массивы можно не описывать.

    В качестве максимальных индексов можно использовать имена переменных. Но значения переменным должны быть присвоены до оператора DIM.

    Пример 1: Пример 2:

    10 INPUT N,K 10 INPUT N,М

    20 DIM A(N),B(K,N) 20 DIM A(N+1,М)

    Пример 3: Даны одномерные массивы A и B, содержащие по N элементов. Сформировать новый массив D, каждый элемент которого определяется по формуле: D(i)=A(i)+B(i)+C(i), i=1,2,.....,N

    10 INPUT "Введите размерность массивов" ;N

    20 DIM A(N),B(N),C(N),D(N)

    30 FOR I=1 TO N

    40 INPUT A(I),B(I),C(I)

    50 NEXT I

    60 FOR I=1 TO N

    70 D(I)=A(I)+B(I)+C(I)

    80 PRINT "D(";I;")=";D(I);

    90 NEXT I

    100 END

     

    вверх

     

    Блоки данных

    Оператор DATA

    Оператор DATA предназначен для создания блока данных.

    Формат : DATA A

    DATA - ключевое слово ;

    А - список, содержащий одну или более вещественных, целых или строковых констант, разделенных запятыми (строковые константы необязательно заключать в кавычки).

    Оператор DATA создает в оперативной памяти ЭВМ блок данных. Информация в блок данных записывается в том порядке, в котором она располагается в списке. Если в программе используется не сколько операторов DATA, то формируется блок данных путем последовательного сцепления значений из списков в порядке появления операторов.

    Пример: 20 DATA 2, 5.6, программа

    ........................

    50 DATA 8, пример, 37.6, 5

    В блоке данных будет 7 элементов: 2, 5.6, программа, 8, пример, 37.6, 5 .

    Оператор READ

    Для чтения информации из блока данных предназначен оператор READ.

    Формат: READ V

    READ - ключевое слово;

    V - список имен одной или более переменных, разделенных запятыми .

    Блок данных организован таким образом, что обеспечивает последовательный доступ к хранящейся в нем информации с помощью внутреннего указателя. Текущее положение указателя показывает на элемент блока данных, который непосредственно доступен для чтения. При запуске программы указатель устанавливается на начальный элемент блока. При работе оператора READ первый элемент блока данных из списка оператора DATA присваивается в качестве значения переменной, имя которой расположено первым в списке оператора READ, а указатель смещается на следующую позицию и указывает теперь на второй элемент блока данных. Если в списке оператора READ имеется еще одно имя переменной, то второй элемент будет присваиваться ей в качестве значения. Затем указатель перемещается на следующую позицию, и процесс повторяется до тех пор, пока список оператора READ не закончится.

    По окончании списка указатель будет установлен на элемент блока данных, следующий за последним считанным значением. Если в программе встретится еще один оператор READ, то присвоение элементов из блока данных переменным из списка оператора READ будет производиться, начиная с текущего положения указателя.

    Пример: 30 READ A, B

    90 READ C$, D

    100 READ E$, F, G

    A = 2 B = 5.6 C = "программа"

    D = 8 E = "пример" F = 37.6 G = 5

    DATA - единственный оператор языка BASIC, номер строки которого не влияет на порядок выполняемых действий. Номер строки нужен лишь для того, чтобы был выдержан общий формат программы.

    Только оператор READ определяет, когда и какие данные должны быть считаны.

    Оператор RESTORE

    Для возврата указателя в начало блока данных служит опера тор RESTORE.

    Формат: RESTORE или RESTORE N

    N - номер строки, содержащей оператор DATA.

    Использование этого оператора позволяет многократно считывать одни и те же данные различными операторами DATA и присваивать их в качестве значений разным переменным.

    Пример:

    10 READ A,A1,A2

    20 RESTORE

    30 READ B,B1

    40 DATA 2, 4, 8, 3, -6, 4

    A = 2, A1 = 4, A2 = 8, указатель на числе 3, но RESTORE возвращает его на первое число, таким образом B = 2, B1 = 4 .

    Если в операторе RESTORE указать номер строки, содержащей оператор DATA, то указатель отметит первое значение. После того как RESTORE изменит положение указателя, любой последующий READ начнет чтение данных с новой указанной позиции.

    Оператор DATA целесообразно использовать в случаях, когда некоторым переменным каждый раз при выполнении программы требуется присваивать одни и те же значения.

    Правила работы с операторами READ, DATA и RESTORE

    1. Типы переменных в операторе READ должны соответствовать типам присваиваемых значений.

    2. Операторы READ могут появляться в разных местах программы. Необязательно сразу читать все данные.

    3. В программе может быть несколько операторов DATA. Даже если они отдалены друг от друга, ЭВМ воспринимает все значения как элементы общего длинного списка.

    4. Операторы DATA могут находиться в любом месте программы. Как правило, их пишут в самом начале или в самом конце, чтобы отделить данные от текста программы.

    5. В операторе DATA строковые константы могут не заключаться в кавычки.

    6. Числа в операторах DATA должны быть константами, но не арифметическими выражениями.

    7. Оператор RESTORE возвращает указатель к началу списка данных. Первый оператор READ, следующий за RESTORE, работает с первым значением, указанным в операторе DATA.

     

    вверх

     

    Подпрограммы языка BASIC

    Операторы GOSUB и RETURN

    При написании программ часто возникает необходимость в вы полнении одних и тех же действий в различных местах программы. Во многих случаях эти действия должны производиться с различными исходными данными. Написание такой программы упростится, если записать повторяющийся участок вычислений один раз, а потом обращаться к нему из различных мест программы. Такую возможность обеспечивает использование подпрограмм.

    В языке BASIC обращение к подпрограмме осуществляется оператором GOSUB.

    Формат: GOSUB N

    GOSUB - ключевое слово;

    N - номер первой строки, с которой должно начаться выполнение подпрограммы (точка входа в подпрограмму).

    Последним выполняемым в подпрограмме оператором должен быть оператор RETURN, возвращающий управление в основную программу.

    Работа операторов GOSUB и RETURN происходит следующим образом. Интерпретатор языка BASIC формирует стек возврата. Когда в программе встречается оператор GOSUB, интерпретатор заносит в стек возврата адрес (номер строки) оператора, следующего непосредственно за GOSUB. Затем управление передается на точку входа, заданную номером строки в операторе GOSUB, и начинают выполняться операторы подпрограммы. Если в подпрограмме встречается оператор RETURN, то из вершины стека извлекается текущий адрес возврата, и интерпретатор передает управление в вызывающую программу на оператор, непосредственно следующий за оператором GO SUB.

    Пример: Имеются данные о посевных площадях пшеницы в хозяйствах района. Требуется определить количество хозяйств, в которых площадь больше некоторой за данной величины.

    10 REM основная программа

    20 DIM A (100)

    30 PRINT "Введите количество хозяйств"

    40 INPUT M

    50 FOR I=1 TO M

    60 PRINT "Введите посевную площадь в хозяйстве" ;I

    70 INPUT A(I)

    80 NEXT I

    90 PRINT "Введите нижнюю границу посевной площади" 100 INPUT D

    110 GOSUB 200

    120 PRINT "Количество хозяйств с посевной площадью >"; D;"=" ; K

    130 STOP

    200 REM Подпрограмма

    210 K=0

    220 FOR I=1 TO M

    230 IF A(I)>D THEN K=K+1

    240 NEXT I

    250 RETURN

    Основные правила написания подпрограмм

    1. Подпрограмма записывается в наиболее общем виде, а вся необходимая информация должна передаваться при обращении к ней.

    2. Для правильной работы подпрограммы перед обращением к ней ее входные переменные должны получить в вызывающей программе требуемые значения.

    3. Вход в подпрограмму должен осуществляться только через оператор GOSUB, иначе при выполнении оператора RETURN интерпретатор не найдет точку возврата в вызывающую программу.

    Использование стека возврата позволяет из одних подпрограмм обращаться к другим, т.е. организовывать вложенные друг в друга подпрограммы.

     

    вверх

     

    назад