Запись текста программы на языке программирования.

Используя нарисованный алгоритм, можно без особых трудностей написать текст программы. Проделаем это для приведенного примера. Начинать программу следует с оператора CLS – очистки экрана. Нумерация строк в Бейсике принята через 10 (если Вы что-то пропустили, то между строками 10 и 20 можно вставить строки 11, 12… 19 с необходимыми операторами, не меняя остального текста программы). Оператор в строке 20 запускает генератор случайных чисел. Строка 30 выводит на экран название программы. Блок 1 алгоритма реализуется строками 40-50 программы. Строкой 60 подготавливается место в памяти для вводимых элементов последовательности, объявляя массив a(n1). Строки 70-80 выводят на экран своеобразное меню, выбор режима ввода завершается в строке 90 (строки 70-90 соответствуют блоку 3 алгоритма). Строка 100 исключает ошибку выбора (допустимы n2 = 1 или n2 = 2, если введено число > 2, то программа возвращается к повторению выбора. В литературе это обычно называют защитой от дурака). Цикл, реализованный в алгоритме в блоках 2-7, записан в программе в строках 110-150 с помощью операторов FOR…NEXT. Причем блоки 2,6,7 алгоритма отображаются в строках 110, 150 программы. В строке 120 обрабатываются результаты выбора (блок 3 алгоритма) и осуществляется ввод последовательности с клавиатуры (блок 5 алгоритма). Автоматический ввод последовательности из чисел в диапазоне от 1 до 20 с помощью функции случайных чисел RND(1) обеспечивается строкой 130 программы (блок 4 алгоритма).

Цикл блоков 8-14 алгоритма записан в строках 160-190 программы с помощью оператора FOR…NEXT. Блоку 8 алгоритма соответствует строка 160 программы, блокам 9,13,14 – строки 170,190. Блоки 11,12 реализованы в строке 180 посредством оператора IF… THEN…ELSE, где в качестве условия использована функция MOD, вычисляющая остаток от деления очередного a(j) на 2. Очевидно, что четные числа делятся на 2 без остатка. В противном случае по ELSE вычисляется произведение всех нечетных элементов последовательности. Вывод результата на экран обеспечивается строкой 200 с помощью оператора PRINT. Конец программы.

Рекомендуется в программе каждый оператор записывать в своей строке. Если же логика программы диктует многооператорную строку, то операторы в ней отделяются двоеточием. Например:

10 FOR i = 1 TO 1000: NEXT i

пустой цикл, реализующий временную задержку.

10 CIRCLE (320, 165), 40, 1: PAINT (320, 165), 1, 1

оператор CIRCLE рисует окружность, которую затем оператор PAINT заливает краской.

Тип переменных лучше объявлять только при необходимости, так как Бейсик, анализируя программу, сам это успешно делает. В начале программы обычно объявляются массивы (см. рекомендации к лабораторной работе № 3). Строковые переменные лучше объявлять с помощью суффикса $, например p$.

Ввод входных данных, в основном, осуществляется тремя способами: с помощью операторов READ и DATA (лабораторная работа № 1), INPUT (лабораторная работа № 2), из файла (лабораторная работы № 6). Еще один способ – с помощью оператора присваивания. Например, a = 2, где = и есть оператор присваивания. В левой части оператора присваивания может находится только имя той переменной, в которую будет заносится новое значение (и больше ни-

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

40 y = 2 * x ^ 2 + 4 * x – SIN (x)

50 z$ = "верно"

Вывод результата на экран дисплея осуществляется в Бейсике посредством оператора PRINT, используемого практически в любой программе. Например, PRINT 8 выведет на экран 8. Перед отрицательным числом PRINT ставит знак минус, а перед положительным – пробел. Элементов в списке оператора PRINT может быть несколько. Оператор PRINT без списка элементов выводит на экран строку пробелов (пустую строку). Это иногда необходимо, например, для отделения заголовка таблицы от данных.

Таблица 0.0.2


Оператор и его описание
CLS Оператор очистки экрана. Если все аргументы опущены, очищаются и графический и текстовый экраны.
CLS 1 Очищает только графический экран, если он активен
CLS 2 Очищает только текстовый экран, исключая нижнюю строку
RANDOMIZE 32767 – TIMER Оператор, запускающий генератор случайных чисел
GOTO 20 Оператор безусловного перехода, здесь задает переход на строку 20
END Оператор-указатель конца программы, останавливает выполнение программы и закрывает все файлы.
SLEEP Управляющий оператор, приостанавливающий выполнение программы до нажатия любой клавиши.
SLEEP 2 Управляющий оператор, приостанавливающий выполнение программы на 2 секунды.
REM Вся строка после оператора является комментарием Оператор, указывающий на комментарий. Вместо ключевого слова REM можно использовать апостроф ' При использовании REM в конце строки операторов его необходимо отделять двоеточием, а при записи с использованием апострофа, двоеточие можно опускать.
PRINT 2*x ^ 2 + 1; (3 + 7) / (0.5 + 1.5); 3 Оператор при x = 2 вычислит и выведет на экран 9, затем 5 и 3
PRINT "Значение х = "; 2; TAB(15); 3; SPC(5); 4 Оператор выводит на экран Значение x = 2,в 15-й позиции 3 и, сделав 5 пробелов, выводит 4.
Примечание:1. Операторы в многооператорной строке разделяются двоеточием. 2. При наборе программы можно вместо слова PRINT ставить знак ?, который затем Бейсик сам переделает в PRINT. 3. Если в программе впервые встречается какая-либо переменная, которой до этого не было присвоено никакого значения, то по умолчанию значение переменной будет равно 0.


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

10 PRINT (10 – 5) / (1 + 1.5)

вычислит и выведет на экран 2.

10 READ y: DATA 5

20 PRINT 2 * y + 1, 10, 5

вычислит и выведет на экран 11, а затем выведет на экран 10 и 5 (в списке элементов оператора PRINT в строке 20 их 3).

Бейсик печатает результаты вычислений в виде десятичного числа (целого или с плавающей запятой), если эти результаты находятся в интервале от 0.01 до 999999. В остальных случаях Бейсик использует экспоненциальное представление. Например:

Вводимое значение Значение, печатаемое Бейсиком

.000789 7.89000E-04

.03 .03

999889 999889

2200000 2.20000E+06

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

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

10 READ y: DATA 5

20 PRINT "z = "; 2 * y + 1

выведет на экран z = 11.

Заключенные в кавычки строковые выражения, печатаются в том виде, в каком они представлены в операторе PRINT. Например:

10 READ y: DATA 3

20 PRINT "Площадь квадрата S = "; y ^ 2; "кв. см"

выведет на экран: Площадь квадрата S = 9 кв. см

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

10 READ y: DATA 3

20 PRINT CINT(2 * y ^ 2 / SIN (y)); 2 * y ^ 2 / SIN (y)

Таблица 0.0.3
выведет на экран 128 (округленное) и 127.551. Функции, выводящие результат в виде целого числа, даны в таблице 0.0.3.

Число n -1.99 -1.5 -1.01 1.01 1.5 1.99 Примечание
CINT(n) -2 -2 -1 Округление
FIX(n) -1 -1 -1 Отсечение дробной части
INT(n) -2 -2 -2 Ближайшее целое, меньшее или равное аргументу

Вид вывода оператором PRINT может регулироваться с помощью функции TAB (n), где n – номер позиции печати. Например:

10 x = 2: y = 3: z = 4

20 PRINT TAB (7); x; TAB (18); y; TAB (23); z

выведет 2 в 7-й позиции, 3 в 18-й позиции и 4 – в 23-й. Если указана позиция, находящаяся левее текущей, то Бейсик игнорирует требование функции TAB..

Чтобы вывести таблицей элементы матрицы (двумерного массива), необходимо поставить оператор PRINT в двойной цикл.

40 FOR i = 1 TO 4

50 FOR j = 1 TO 3

60 PRINT m(i, j);

70 NEXT j

80 PRINT

90 NEXT i

Точка с запятой после m(i, j) в строке 60 позволяет вывести на экране в одной строке все элементы m(1, j). После чего PRINT из строки 80 обрывает экранную строку и 60 PRINT m(i, j); выводит уже на следующей экранной строке все элементы m(2, j), 80 PRINT обрывает 2-ю экранную строку и т.д.

Если же элементы массива могут быть, например, как однозначными числами, так и двузначными, то в строке 60 лучше использовать PRINT USING – оператор отформатированного вывода. В таблице 0.0.4 даны примеры использования этого оператора.

Таблица 0.0.4
Оператор и его описание

PRINT USING "Число ###"; 16 Выводит: Число 16, где # – позиция цифры
PRINT USING "Число #"; 16 Выводит: Число # (переполнение)или %16
PRINT USING "Число +##"; 16 Выводит: Число +16, где + печатает знак минус для отрицательных чисел и знак плюс для положительных
PRINT USING "Число $$####"; 16 Выводит: Число $16, где $$ печатает $ перед выводимым числом
PRINT USING "Число **####"; 16 Выводит: Число ****16, где **заполняет звездочками места перед числом
PRINT USING "Число **$####"; 16 Выводит: Число ****$16, где **$совмещает **и $$
PRINT USING "Ответ: #.### кг."; x Выводит: Ответ: 3.041 кг.для x = 3.0406 и Ответ: #.### кг.или %40.000 кг.для x = 40, где . (точка) – позиция десятичной точки
PRINT USING "Ответ: #.##^^^^ кг."; x Выводит: Ответ: .30E+01 кг.для x = 3.0406 и Ответ: .40E+02 кг.для x = 40, где ^^^^ - позиция для печати степени (числа в экспоненциальном представлении или в так называемом научном формате)
PRINT USING "!, &, \ \ , _&"; "Москва", "Москва", "Москва" Выводит: М, Москва, Мос, &,где ! – печать только первого символа, & - место для неограниченного строкового выражения, \ \ - печать первых n символов строкового выражения (n - число пробелов между косыми чертами + 2), _- следующий символ воспринимается не как управляющий, а как простой литерал
Примечание: #, !, $ и др. – управляющие символы. Остальные символы в управляющей строке печатаются без изменений.

Наши рекомендации