Basic - вводный курс



Basic - вводный курс

         

Где взять русский Бейсик

Собственно, проблем, я думаю, с этим возникнуть не должно — надо поспрашивать у учителей информатики, у друзей на компакт-дисках может быть, в конце концов обращайтесь к автору книги — не откажу. Рабочая версия занимает около 400 Кбайт.


Запуск русского Бейсика и начало работы

Существует три основных варианта.

Если у вас на компьютере ничего, кроме MS DOS, нет, то придется открыть каталог с Бейсиком, а затем в командной строке набрать имя запускающего файла qbasic и нажать клавишу <Enter>. Если у вас есть операционная оболочка Norton (или Volkov) Commander, то задача упрощается — переходите на панель, где содержится каталог с Бейсиком, открываете ее клавишей <Enter> или двойным щелчком левой кнопкой мыши, затем при помощи стрелок управления курсором находите файл qbasic.exe, и запускаете его нажатием клавиши <Enter> или двойным щелчком левой кнопкой мыши. Самый модный вариант, если у вас MS Windows: найдите на Рабочем столе ярлык QuickBasic и дважды щелкните по нему левой кнопкой мыши.

Во всех трех случаях экран очищается и появляется среда русского Бейсика (рис. 1.1).

Рис..1. Первое окно после запуска русского Бейсика

Далее следуйте инструкции, появившейся на экране. При нажатии клавиши <Enter> вы попадаете в Руководство для начинающих, а, нажав клавишу <Esc> — в окно редактора (рис. 1.2).
Компьютер теперь готов к вводу и редактированию ваших программ.
Вам для работы предоставляется два окна:



верхнее — окно редактирования; нижнее — окно немедленного выполнения.

Рис.1.2. Окно редактора

Переход из одного окна в другое осуществляется клавишей <F6> или щелчком в соответствующем окне левой кнопкой мыши.
В окне немедленного выполнения вы можете сразу видеть результаты работы набранных команд после нажатия клавиши <Enter>.


Как вводить текст программы в окне редактора

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

Удаление лишних символов. Слева от курсора — клавиша <Backspace>. Символ, под которым мигает курсор и справа от курсора — клавиша <Delete>. Вставка недостающих символов. Курсор установить под тот символ, слева от которого необходимо произвести вставку и набрать нужные символы. Текст при этом раздвинется автоматически. Переход из режима вставки в режим замены. Режим вставки включается автоматически. В режим замены и обратно мы переходим нажатием клавиши <Insert>. Курсор при этом принимает вид светящегося прямоугольника. Теперь, при вводе какого-либо символа, будет стираться тот символ, который находился прежде на этом месте. Автоматическое раз-движение строки в этом случае не происходит. Переход на следующую строку осуществляется нажатием клавиши <Enter>. Если вы случайно нажали клавишу <Enter> в середине строки, то вторая половина ее перейдет вниз. Пугаться этого не надо. Нажимайте клавишу <Backspace>. Копирование и перемещение фрагментов текста программы. Сначала фрагмент нужно выделить. Выделение производится либо мышью при удерживаемой левой кнопке, либо клавишами управления курсором <<-> и <->> при нажатой клавише <Shift>. После выделения возможны варианты: удаление фрагмента — клавиша <Delete>; копирование фрагмента в буфер — сочетание клавиш <Ctrl>+<Insert>; вырезка фрагмента в буфер — сочетание клавиш <Shift>+ +<Delete>; вставка фрагмента из буфера в новое место (сколько угодно раз) — сначала курсор нужно поместить в новое место, а затем — сочетание клавиш <Shift>+<Insert>.

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

Как Бейсик сообщает об ошибках

Если в программе была допущена ошибка, то после запуска программы на экране появится окно с сообщением об ошибке. У вас есть два варианта действий — выбрать кнопку Справка, чтобы получить информацию о допущенной ошибке, либо нажать клавишу <Enter> или <Esc>. Тогда вы вернетесь в окно редактирования, где курсор будет находиться в том месте, где компьютер нашел ошибку.


Запуск программы на выполнение

Как же запустить программу? Когда вы написали программу и хотите посмотреть, а что, собственно, из этого получилось, то надо нажать клавишу <F5>. Программа будет исполнена в случае отсутствия синтаксических ошибок, и тогда вы увидите результаты ее работы и сообщение внизу экрана "Чтобы продолжить, нажмите любую клавишу". Эта надпись вызывает иногда смятение в душах неопытных программистов, и они начинают судорожно искать на клавиатуре надпись "Любая клавиша". Надеюсь, у вас до этого не дойдет. Если же в программе есть ошибки, то вы их исправляете, и у вас вновь два варианта:

запустить программу с места, где она прервалась — клавиша <F5>; запустить программу сначала — сочетание клавиш <Shift>+

Если вы хотите видеть окно, в котором видны результаты выполнения программы, то нажмите клавишу <F4>.
Основы есть? Если возникают вопросы, то, во-первых, при выборе тех или иных пунктов меню внизу появляется краткая информация о нем на русском языке, а по нажатии клавиши <FI> вы получите более подробные сведения. Во-вторых, в самом меню есть справка и по командам языка Бейсик, и по содержанию. Учитесь пользоваться справочным материалом!

Предупреждение
Если у вас отсутствует мышь, то попадание в меню осуществляется клавишей <Alt>, а работа в нем — клавишами управления курсором <> и клавишей <Enter>.


Сохранение и открытие файлов в Бейсике

Написав программу и желая ее сохранить на диске, выберите в меню Файл команду Сохранить или Сохранить как. Откроется диалоговое окно, в котором вы должны выбрать диск и каталог для сохранения, дать имя файлу и нажать кнопку ОК. После этого в заголовке окна редактирования появится имя, назначенное файлу.

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

Чтобы открыть уже существующий файл, в меню Файл выберите команду Открыть. Появится диалоговое окно, в котором надо найти диск и каталог, где записан файл, указать его имя и нажать кнопку ОК.
Чтобы начать работу с новым файлом, в меню Файл выберите команду Новый.
Для выхода из Бейсика в меню Файл существует команда Выход. Если вы забыли сохранить свою программу, то Бейсик напомнит вам об этом до выхода и предложит сохранить ваш труд. И только после этого вы выйдете в ту среду, из которой Бейсик был загружен.


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

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

Заглавные (или прописные) буквы латинского алфавита: А, В, С, D, E, F, G, H, I, J, К, L, M, N, О, Р, Q, R, S, T, U, V, W, X, Y, Z. При наборе программы, впрочем, нет нужды следить за тем, чтобы буквы были заглавными. Интерпретатор сам изменит строчные буквы на заглавные. Арабские цифры: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. Разделители: , (запятая), ; (точка с запятой), . (точка), : (двоеточие), ' (апостроф), " (кавычки), ( (открывающая скобка), ) (закрывающая скобка), символ <Пробел>. Знаки арифметических операций: + (сложение), — (вычитание), * (умножение), / (деление), л (возведение в степень). Знаки операций отношений: > (больше), < (меньше), = (равно), <> (не равно), >= (больше либо равно), <= (меньше либо равно).

Переменная и что в ней меняется

Компьютер, как и вы, уважаемые читатели, обладает памятью. Она бывает разная. В процессе отладки вашей программы ком пьютер напрягает эту самую память, размещая в ней исходные данные, обрабатывая их, используя ваш алгоритм, получая результаты и доводя их до вашего сведения — чаще на экран монитора. Я думаю, для вас не секрет, что память эта называется ОЗУ (Оперативное Запоминающее Устройство), или по-английски RAM (Random Access Memory). Это, собственно, одно из основных устройств компьютера, имеющее, правда, ограниченный объем, измеряющийся в Мегабайтах.
Если вы пишете достаточно сложную и уже нелинейную программу, то наверняка потребуются переменные, т. е. такие области этой самой оперативной памяти, которые имеют имя, данное нами, и значения, которые могут меняться. Имя переменной в ходе выполнения программы постоянно, а значение может меняться многократно. Этот процесс можно сравнить со сдаваемой на лето дачей. Дача — это участок (область памяти компьютера), имеющий уникальный и неповторимый адрес, по которому его можно найти (имя переменной) и который не меняется, и каждое лето на дачу приезжают новые жильцы (значения переменной).
Каковы правила на этот счет в Бейсик? Так как Russian Quick-Basic — это язык, рассчитанный на использование из-под DOS (Disk Operation System, дисковая операционная система), то существуют ограничения на имена переменных:

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

Примеры правильных имен переменных:

X, Y, Z, IVAN; IVAN3, SI, T234, LOVE7, R6N8F43; NM, MAX, GAVGAV.

Примеры неправильных имен переменных:

(использована русская буква); ИВАН (использована кириллица); YOU+ME (использован недопустимый символ "+"); 23DROVA (имя переменной начинается с цифры).

Переменные различаются по типу хранимой в них информации. Два наиболее крупных типа — числовой (для хранения различных чисел) и строковый (для хранения символов и строк). Во втором случае к имени переменной добавляется обязательный символ $ (на клавиатуре — там же, где цифра 4, при нажатой-клавише <Shift>), например, Х$ или QUIKE3$.


Арифметика в Бейсике

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

в отличие от арифметики, выражение должно быть записано в одну строку безо всяких числителей и знаменателей; для записи арифметических действий допустимо использовать только перечисленные ниже знаки: + (сложение, слева от клавиши <Backspace> или на малой цифровой клавиатуре "серый плюс"); - (вычитание, то же, что дефис, или на малой цифровой клавиатуре "серый минус"); * (умножение, там же, где цифра 8 на основной клавиатуре при нажатой клавише <Shift> или на малой цифровой клавиатуре "серая звездочка"); / (деление, на разных клавиатурах бывает в разных местах или на малой цифровой клавиатуре "серый слэш"); ^ (возведение в степень, при выбранном латинском шрифте там же, где цифра 6 на основной клавиатуре при нажатой клавише <Shift>); () (скобки, там же, где цифры 9 и 0 на основной клавиатуре при нажатой клавише <Shift>). недопустим пропуск знака умножения между коэффициентом и переменной, как это возможно в алгебре (например, нельзя писать 2х, а надо 2*Х, или нельзя 5d, а надо 5*D); дробная часть отделяется от целой точкой, а не запятой (нельзя писать 3,14, а надо 3.14); допустимо опускать в записи десятичной дроби ноль, стоящий перед точкой (вместо 0.123 можно .123).

Чтобы компьютер вычислил выражение правильно, необходимо помнить о приоритете выполнения действий. Тут все как в элементарной математике:

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

Действия одинаковой очередности выполняются слева направо.
Приведем ряд примеров перевода арифметических выражений в пригодный для Бейсика вид.

В арифметике В арифметике В арифметике

Замечание
В последнем случае хочу обратить внимание на обязательность скобок как в числителе, так и в знаменателе. Потому что при записи 3+4/8-6 компьютер сначала произведет деление 4 на 8, затем прибавит 3 и вычтет 6. В ответе получится -2,5 вместо правильных 3,5. Будьте внимательны!
Чтобы потренироваться, вот вам ряд заданий на запись арифметических выражений в виде, пригодном для вычислений на Бейсике.

1.
2.
3.
4.
5.

Подсказка: корень квадратный (впрочем, как и любой другой) всегда можно представить в виде степени. А вот как, узнайте на уроках математики! Да про скобки не забудьте!

Теперь наоборот. Следующие выражения Бейсика запишите в обычной арифметической форме:

6.

7. (5^3*3-4) ^.5

8. 44/4*5+10-2^З/.3
9. 5+2/6-7+З^2
10. 5+2/6-7+З^2
11. (4*(5-4^2)^2
12. 3+8/4-7*З^2

Ну и чтобы закончить с арифметикой, расскажу еще о двух действиях, которые вы навряд ли использовали в школе, а в программировании они могут оказаться весьма полезными. Эти действия применимы только к целым числам!
Первое из них — деление нацело. Для этого действия используется знак \ (так называемый обратный слэш). Компьютер в этом случае делит числа как обычно, но в качестве результата деления представляет только целую часть, отбрасывая дробную. Например:

41\4=10 25\9=2 И Т. Д.

И второе — нахождение целого остатка от деления. Для этого действия нет специального знака и оно выполняется при помощи оператора mod. Оператор mod действует как и предыдущий, но в качестве результата представляет целочисленный остаток от деления. Например:

41 MOD 4= 1 25 MOD 9 = 7

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

13. 20\6
14. 20 mod 6
15. 34\4
16. 34 MOD 4
17. 2\5
18. 2 MOD 5
19. 4*7\3 MOD 6/3
20. 24 MOD 5\3


Оператор присваивания

Представьте, что вы разработали алгоритм, продумали, какие в нем будут участвовать переменные, придумали им имена и что же дальше? Как же сообщить компьютеру их значения? Как менять эти значения? Итак, мы знакомимся с первым оператором языка Бейсик — оператором присваивания. Знайте, что имя переменной после присваивания будет служить для компьютера своего рода ссылкой на адрес в памяти, где значение этой самой переменной разместилось.
В старых версиях Бейсика оператор присваивания всегда начинался со слова let. Сейчас этого нет, и оператор присваивания выглядит просто как обычное математическое равенство. Но это вовсе не так!

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

Обе части оператора присваивания соединяются знаком равенства. Тип переменных в левой и правой частях оператора присваивания должен совпадать!
Когда интерпретатор языка Бейсик встречает в программе оператор присваивания, то он обрабатывает его следующим образом: производятся все необходимые вычисления и операции в правой части оператора, находится конкретное значение (числовое или символьное), и это значение заносится в переменную, имя которой указано в левой части.

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


Синтаксис оператора присваивания

Произносится оператор присваивания следующим образом: "Присвоить Зет значение Икс минус три Игрек квадрат в скобках плюс семь" (рис. 1.3). Ни в коем случае нельзя говорить: "Зет равно" и далее по тексту.

Рис..3. Пример использования оператора присваивания

Рассмотрим работу приведенного выше оператора присваивания на примере фрагмента маленькой программы:

Х=15
Y=2
Z=(X-3*Y^2)+7

Вопрос. Чему будет равен Z после выполнения всех операторов присваивания?
Решение. Интерпретатор делает следующее:

присваивает переменной X значение 15; присваивает переменной Y значение 2; вычисляет значение правой части третьего оператора присваивания (15-3*2^2)+7. Получается 10; присваивает переменной Z значение 10.

Ответ. После выполнения всех операторов присваивания значение Z будет равно 10.

Вопрос. А если бы первые два оператора присваивания отсутствовали, то чему было бы равно значение Z?
Ответ. В этом случае интерпретатор принял бы значения X и Y по умолчанию равными 0, вычислил бы с этими нулями значение правой части и оказалось бы, что Z в этом случае равно 7.
Пока все было похоже на традиционную математику. Но есть один небольшой нюанс. Давайте рассмотрим такой фрагмент программы:

Х=2
х=х+1

Если читать эту запись как математическую, то первый оператор совершенно обычен, "Икс равен двум". Но второй сразу заставляет бунтовать испорченную холодной логикой голову. Так ведь не может быть! Как это "Икс равен Икс плюс один"? Но что противоречит здравому смыслу в математике, легко поддается пониманию в программировании. Ведь это не математическое равенство, а рассматриваемый нами оператор присваивания. Разберем его работу.

Итак, вопрос. Чему будет равно значение X после выполнения двух операторов присваивания?
Решение. Сначала переменной X присваивается значение 2. Затем интерпретатор обращается к правой части второго оператора присваивания, находит в памяти значение X. Оно равно 2. Прибавляет к нему 1. Получается 3. Пересылает получившийся результат в правую часть, в ту же самую переменную X. Старое значение ее, равное 2, стирается, записывается новое — 3.
Ответ. После выполнения двух операторов присваивания значение переменной X будет равно 3.
Теперь упражнения. Если следующие операторы Бейсика написаны правильно, то напишите слово "верно". Если нет, то укажите на ошибку. Все операторы рассматривайте по отдельности, т. к. они не являются частью общей программы.

21. 3+6=z
22. w=5+8
23. 5+8
24. s+r=76
25. v=(x+y+z)/3
26. F+F-5
27. H=H*2
28. x=x*s
29. d=e=i \
30. A+B=C-D

31. Записать операторы, которые переменной S присваивают среднее арифметическое чисел А, В и С.
32. Записать операторы, которые переменной S присваивают расстояние между точками с координатами XI, Y1 и Х2, Y2.
33. Записать операторы, которые переменной S присваивают длину гипотенузы С по катетам А и В.
34. Записать операторы, которые переменной S присваивают площадь треугольника со сторонами X, Y, Z.
35. Записать оператор присваивания, который меняет знак у значения переменной R.
36. Чему будут равны значения переменных X и Y после выполнения операторов?

х=3
У=6
x=y
У=Х

37. Поменять местами значения переменных X и Y.
38. Присвоить переменной W сумму цифр трехзначного числа К.
39. Присвоить переменной S значение длины светового года в километрах. Световой год — расстояние, которое свет проходит за астрономический год, т. е. 365 суток. Скорость света принять равной 300 000 км/сек.
40. Присвоить переменной V значение объема кирпича с размерами А — длина, В — ширина, С — высота.
41. Записать в форме оператора присваивания формулу перевода долларов США в рубли (курс по состоянию на июль 2000 г. — 28 руб. за $1).


Выводим результаты

Пока мы вводили в компьютер исходные данные, используя оператор присваивания. Другие способы ввода будут рассмотрены в одной из следующих глав.
Сейчас же хочется рассмотреть более важную на первых порах составляющую Бейсика — вывод полученных результатов на экран монитора, а также вывод всякого рода текстовых сообщений. То есть мы знакомимся с могущественным оператором print.
Этот оператор столь многообразен в своих применениях, что мы позволим себе посвятить ему несколько страниц, чтобы читатель увидел и понял все его возможности и особенности.
Первая возможность оператора print заключается в том, что он предписывает компьютеру вычислить арифметическое или алгебраическое выражение и вывести результат на экран. Таким образом, наши первые программы на Бейсике будут состоять всего из одного-двух операторов. Например:
PRINT 2*2
После запуска такой мощной программы компьютер напряжется, подумает и высветит на экране ответ — 4. После оператора print вы можете писать с целью получения результатов все те (или другие) выражения, с которыми мы будем упражняться в следующих разделах книги.
Например:
PRINT(3+4)/(8-6)
В данном случае ответом будет 3,5.

Замечание
Возможны ошибки при использовании оператора print для вычисления арифметических или алгебраических выражений. Если при наборе допущена неточность в написании операторов языка Бейсик, появится сообщение "Синтаксическая ошибка".

Примеры распространенных ошибок:

23-11+7 не дана команда print. print 2+2 неверно написано слово print. print (4+7)/3+2) не хватает открывающей скобки в знаменателе. print 23*6/2= в выражении использован лишний символ

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

Замечание
Сообщение об ошибке "Деление на ноль" последует если при,вычислении выражения с использованием операции деления ружилось деление на ноль.
Например, в знаменателе получается ноль:

PRINT(4+8) /(3*2-6).

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

Например:

PRINT 10^100

Теперь, прежде, чем мы перейдем к упражнениям с оператором print, хотелось бы облегчить ваш труд по набору. Дело в том, что вместо пяти символов слова print, вы можете ставить просто знак ?. Интерпретатор Бейсика чудесным образом после запуска программы сам заменит все знаки вопроса на оператор print, т. е. вместо

PRINT 2*2

можно смело писать

? 2*2

И второе, если ваше выражение настолько длинно, что не помещается в экранной строке, то позвольте компьютеру самому перенести часть выражения на следующую строку. Ни в коем случае не делайте этого при помощи клавиши <Enter>.
Вспомнив, что корень квадратный (как, впрочем, и любой другой степени) из числа можно представить в виде возведения в степень, вычислите и с помощью оператора print выведите на экран результаты следующих выражений.
42. Предскажите, какой результат будет получен при вычислении значения выражения 4л1/2. Проверьте свое предположение на компьютере.
43.
44.
45.
46.
47.
48.

Потренировались в вычислении арифметических выражений? Поехали дальше.
Оператор print позволяет, как мы уже говорили, не только вычислять арифметические выражения, но и выводить на экран надписи, что предоставляет программисту оформлять тот самый дружественный интерфейс. Ведь если после запуска программы я вижу на экране число, то я не всегда могу понять, к чему оно относится, результат ли это вычислений, или количество лет, оставшихся мне в жизни. Поэтому, чтобы получить законченный программный продукт, мы будем использовать вторую уникальную возможность оператора print.
Итак, если мы хотим вывести на экран сообщение, то необходимо прежде всего дать компьютеру команду print (или знак вопроса, что то же самое), после которой указать сообщение, взятое в кавычки.

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

Например, напишем, казалось бы, два совершенно одинаковых оператора и проследим их действие:

PRINT 2*2
PRINT "2*2"

После запуска программы в первом случае мы получим на экране ответ — цифру 4, а во втором просто выражение 2*2, т. к. при этом оно было взято в кавычки.
Ну что ж, попробуем теперь оформить более красиво программу о вычислении площади квадрата по длине его стороны, равной 5 м.

CLS ' это команда очистки экрана, для тех, кто не помнит
? "Площадь квадрата со стороной, равной 5 м составляет"
? 5^2

На экране мы увидим в левом верхнем углу надпись "Площадь квадрата со стороной, равной 5 м составляет", а под ней число 25. Уже лучше, не так ли? Я уже понимаю, что означает число 25.
Но пока все еще не очень красиво. Хотелось бы, чтобы сообщение и ответ были бы в одной строке, и чтобы единица измерения площади хоть как-то присутствовала. Как это ни удивительно, но оператор print может и это!
Он позволяет выполнять одновременно несколько действий, указанных после него в одной строке. Разделителем действий может служить точка с запятой или запятая.
Рассмотрим пример.

CLS
? "Площадь квадрата со стороной 5 м равна ";5^2;" кв. м"

После запуска программы мы увидим в левом верхнем углу чистого экрана надпись "Площадь квадрата со стороной 5 м равна 25 кв. м".
То есть в операторе print было указано три действия:

вывести на экран надпись "Площадь квадрата со стороной 5 м"; вычислить 5 в квадрате; вывести на экран надпись "кв. м".

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

? "Фамилия", "Телефон"
?
? "Иванов", "212-85-06"
? "Петров", "712-23-45"
? "Сидоров", "100-09-11"

после запуска выведет на экран следующую таблицу:

Фамилия Телефон
Иванов 212-85-06
Петров 712-23-45
Сидоров 100-09-11

Обратите внимание на вторую строку программы, в которой стоит оператор print без данных. Такая запись позволяет получить пустую строку. Это удобно, например, для отделения заголовка таблицы от данных. ¦ > ¦
Кроме того, если вы исполните команду

? "Печать"

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

? "Печать"; ' команду завершает точка с запятой

то курсор останется в этой же строке после слова "Печать". Это так называемая печать без перевода строки. >,
49. Выясните на компьютере, как отличаются при выводе на печать следующие строки:

? "X";"Y";"Z"
? "X","Y", "Z"
? "X","Y", "Z"

50. С помощью одного оператора print вычислите пять арифметических выражений: 5+2, 5-2, 5*2, 5:2, 52. В качестве разделителя используйте сначала точку с запятой, а потом запятую.
51. Вычислите и напечатайте с подсказкой на чистом экране:

• Сумма=312,66+79,4 4
• Корень из двух=v2
• Результат равен=2*ЗМ*5*6

52. Напечатайте на чистом экране слова "Печать", "через", "строку" одно под другим через строку.
53. Предскажите действие команды

?, "Эксперимент"

Проверьте свой прогноз.

Замечание
В целях более рационального использования экранного места при написании программы иногда допустимо в одной строке писать несколько операторов языка Бейсик. В таких случаях в качестве разделителя операторов применяется двоеточие

Например:

CLS:?"Экран чист"


Стандартные функции Бейсика

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

Таблица 1.1. Стандартные алгебраические функции

Функция Описание Пример Результат
ABS Возвращает абсолютную величину (модуль) аргумента ? ABS(-2.56) 2,56
SQR Возвращает квадратный корень из аргумента ? SQR (9) 3
SIN Возвращает значение синуса аргумента (аргумент ука­зывается в радианах) ? SIN(3) 0,14112
COS . Возвращает значение косинуса аргумента (аргумент указывается в радианах) ? COS(3) 0,98992599
TAN Возвращает значение тангенса аргумента (аргумент указывается в радианах) ? TAN(3) -0,1425465
EXP Находит значение показательной функции ех;, где х — аргумент, а е — основание '.' натурального логарифма, равное 2,718... ? EXP(l) 2,718282
LOG Возвращает логарифм по основанию е ? LOGO) 1,09861229
INT Возвращает целую часть аргумента (от англ. INTeger — целый) ? INT(30,l) 30
SGN "Возвращает 1, если аргумент больше нуля; 0, если аргумент равен нулю;-1,если аргумент меньше нуля (от англ. SiGN — знак)
? SGN (3)
? SGN(O)
? SGN(-3)  
1
0
-1

Предупреждение
Функция sqr применима только к положительным аргументам.

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

пишут аbc вместо abs для модуля; пишут tg вместо tan для тангенса.

Главное правило при использовании стандартных функций — брать аргумент в скобки:

нельзя SIN3, а надо sin(3); нельзя SQR9, а надо sqr(9).

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

Алгебра  Бейсик 
sin3 + cos6 + tg4 SIN(3) +COS(6) +TAN(4)
  SQR(ABS(SIN(45)-COS(30)^2)

Перед упражнениями расскажем про радианную меру углов, потому что не все, к сожалению, любят тригонометрию. Итак,

1 радиан= 180°/ п, отсюда 1 градус=п/180°, следовательно sin 30° в Бейсике будет представлено как sin (30*3.14/180), п==3,14. А вот теперь можно поупражняться. Запишите на Бейсике следующие выражения:

54.
55.
56.
57.
58.
59.
60.

Представьте в общепринятой математической форме:

61. (-R+SQR(SA2-6*A*B))/(3*А)
62. X/Y*(D-F)+(X+Y)/D/F
63. Xl+TAN(F2-V3)/3*ABS(X2-LOG(4)*Y3)/EXP(-2)

Выводим данные в заданном месте экрана

Экран компьютера в текстовом режиме представляет собой условную сетку из столбцов и строк. В стандартном режиме таких столбцов 80 (т. е. в строке может разместиться не более 80 символов), а строк 25.
В Бейсике есть оператор, который позволяет управлять выводом данных на экран, что существенно повышает восприятие программ пользователем. Текст или результаты вычислений всегда выводятся на экран начиная с той позиции, в которой на момент вывода находится курсор. Изменить эту позицию поможет оператор locate.
Правильно записывается он так:

LOCATE Y,X

где х — номер столбца экрана, a y — номер строки (0<х<80 и 0<у<25).
В операторе locate используются две величины, которые мы будем называть операндами. В этом операторе они должны быть целыми.
Например, команды

CLS:LOCATE 13,40:?"S" .

позволяют последовательно:

очистить экран и перевести курсор в позицию Х=0, Y=0; перевести курсор в позицию Х=40, Y=13; напечатать в центре чистого экрана букву S.

Выполним ряд упражнений с использованием оператора locate.
64. Наберите и запустите программу, которая выведет в центре чистого экрана ваши имя и фамилию. Обеспечьте симметричное расположение надписи относительно сторон экрана.
65. Укажите последовательные положения курсора. Предскажите, как будет расположен текст на экране после исполнения следующих маленьких программ:

LOCATE 20,7:CLS:?"HE ТУДА" LOCATE 12,10:?"А ГДЕ ЖЕ ТЕКСТ?".-CLS CLS:?"ЕЩЕ РАЗ НЕ ТУДА": LOCATE 0,0

66. С помощью нескольких команд напечатайте слова "Раз!" и "Два!" в разных местах экрана.
67. Напишите программу, которая вычислит и напечатает в центре чистого экрана значение выражения: 23+33+43+5J.
Над ним в качестве заголовка напечатайте надпись "Сумма кубов".
68. В центре чистого экрана выведите слово "СЕРЕДИНА", окруженное рамкой из звездочек, как показано ниже:

69. Напечатайте свое имя по диагонали, начиная от верхнего левого угла экрана.
Итак, мы научились вычислять и красиво выводить полученные результаты на экран. А теперь мы научимся вводить эти самые исходные данные.

 


Вводим данные

Чем хорош Бейсик? Тем, что позволяет писать программы, весьма дружественно настроенные к пользователю, запрашивающие у него свойственные только ему параметры и решающие поставленную задачу для вполне конкретных данных вполне конкретного человека или любого другого объекта.
По негласным законам программирования хорошая программа не должна зависеть от исходной информации и обязана решать поставленную задачу для произвольных данных. Например, если это задача о расчете среднего роста учеников вашего класса, то программа должна быть написана таким образом, чтобы при введении данных о росте всех учеников результатом был бы средний рост вашего класса, а при введении данных о росте только мальчиков — средний рост мальчиков.
Это позволяет делать оператор input.


Оператор INPUT

Оператор input обеспечивает запрос данных, необходимых для выполнения программы, непосредственно у пользователя, которые тот вводит прямо с клавиатуры. Это дает возможность вести диалог с пользователем и решать задачу, исходя из его конкретных запросов.
Работает оператор input следующим образом. В том месте программы, где вы хотите запросить у пользователя какие-то данные, вы должны написать input, а после него через пробел — переменную или несколько переменных, в которые будут занесены вводимые данные. Например:

CLS:?"Каков Ваш рост в см?"
INPUT R
?"Ваш рост превышает 1 м на ";R-100;"см"

Эта элементарная программа работает так: оператор cls очищает экран, оператор print выводит на экран надпись "Каков Ваш рост в см?". Далее вступает в действие оператор input. Когда программа встречает этот оператор, она приостанавливает свое действие, выводит на экран знак вопроса, после которого мигает курсор. Таким образом, программа показывает, что она ожидает от пользователя ввода данных с клавиатуры. Неискушенный пользователь в этот момент обычно пугается, что программа зависла и начинает звать на помощь. Тот же, кто внимательно прочитает эту книгу, будет знать, что делать, а именно ответить на заданный вопрос, в данном случае — набрать на клавиатуре свой рост и нажать клавишу <Enter>. После таких абсолютно правильных действий пользователя программа заносит введенное число в память в переменную с именем R, где оно и будет храниться, после чего переходит к исполнению следующей за input команды. В рассматриваемой программе она определяет вывод на экран результатов — надписи "Ваш рост превышает I м на ", затем компьютер вычислит разность между значением переменной R и 100 см, выведет ее на экран и добавит единицу измерения "см".
Очень запоминается следующий пример диалоговой программы, которая запрашивает у пользователя имя, а затем здоровается с ним:

CLS:?"KaK вас зовут?" ';
INPUT NAME$ Rem Знак $ указывает на то, что ожидается вьод Rem не числовой, а символьной информации
? "Здравствуйте"; NAME$

Эта программа очищает экран (оператор cls), затем выводит сообщение "Как вас зовут?", следом вступает в дело оператор input. При этом программа приостанавливает свое действие и ждет от человека ввода его имени, например Ваня, которое запоминается компьютером в переменной name$. После этого на экране появится сообщение "Здравствуйте, Ваня!". Ваня обычно радуется, как маленький, даже если это уже взрослый человек.
Для тех, кто в дальнейшем планирует изучать язык Паскаль, пожалуй, стоит запомнить именно такую конструкцию оператора input: сначала вывод сообщения оператором print, а затем запрос данных. Но Бейсик в этом смысле облегчает работу и позволяет объединить два действия в одном. Тогда обе вышеприведенные программы обретут иной вид.
Про средний рост:

CLS:INPUT "Каков Ваш рост в cm";R
?"Ваш рост превышает 1 м Ha";R-100; "см"

Про "Здравствуйте, Ваня!"

CLS: INPUT "Как вас 3OByT";NAME$
? "Здравствуйте"; NAME$

То есть в операторе input сначала можно разместить подсказку (но только одну), а затем после точки с запятой указать имя запрашиваемой переменной, или, если их несколько, перечислить через запятую.
Кроме того, обратите внимание, что в модифицированных вариантах программ в вопросах опущены знаки вопросов, т. к. оператор input при работе сам выставляет знак вопроса.
Рассмотрим примеры.
Далее приведена программа, запрашивающая длины катетов, а затем вычисляющая длину гипотенузы прямоугольного треугольника.

CLS:INPUT "Введите длины двух катетов";А,В
C=SQR(A"2+B"2)
?"Длина гипотенузы =";С

Когда оператор input требует не одно, а несколько значений, то после запуска программы их надо вводить в том порядке, в котором они запрашиваются, а по окончании нажать клавишу <Enter>.
Если вы случайно ввели меньше или больше данных, чем было необходимо, и нажали клавишу <Enter>, то появится сообщение "Ввод сначала". Это означает, что вы спокойно, без паники должны осуществить ввод данных заново.
Перед упражнениями приведем еще один пример программы с оператором input:

CLS: INPUT "Как вас зовут";NAME$
? "Здравствуйте,"; NAME$
INPUT "Введите год вашего рождения, а затем текущий год ";YEARl,YEAR2 ! <.
R=YEAR2-YEAR1
?"Вам около";R; "лет"

Запустим программу и проследим ее работу (выделенные полужирным символы должны набираться пользователем в процессе работы программы).

Rem Нажмите <Shift>+<F5>
Как вас зовут? Ваня Rem После ввода нажмите клавишу <Enter>
Здравствуйте, Ваня
Введите год вашего рождения, а затем текущий год? 1986, 2000
Rein После ввода нажмите клавишу <Enter>
Вам около 14 лет .

Несколько маленьких упражнений. < '¦¦'¦'"' ''¦'".
70. Напишите программу, запрашивающую ваш год рождений, год рождения вашей мамы и печатающую/; Во сколько лет мама вас родила. '
71. Напишите дружественную по отношению к пользователю программу. Пусть она обращается к вам по имени, а затем предложит последовательно ввести прилагательное, существительное, наречие и глагол, чтобы в результате вывести на экран несложную фразу с использованием введенных слов.
72. Напишите программу, запрашивающую три стороны треугольника А, В, С и вычисляющую его площадь по формуле Герона:

73. Напишите программу, запрашивающую высоту дома h (в метрах), ускорение свободного падения g, и вычисляющую время падения кирпича t (в секундах) с крыши этого дома по формуле:

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


Операторы DATA и READ

Существует другой способ ввода данных. Он применяется в том случае, если эти данные заранее известны. Тогда мы организуем в программе некое подобие склада (с помощью оператора data), а потом при помощи оператора read последовательно считываем эти данные в запрашиваемые переменные, в которых они хранятся и обрабатываются. Удобство этого способа в том, что не приходится каждый раз при запуске программы вводить исходные данные (особенно, когда их много), а также в простоте изменения исходных данных.
Приведем пример программы.

DATA 13, 17, 19
READ A
? А
READ A
? а
READ А
? А

На "складе" data хранятся три числа — 13, 17 и 19. Первый оператор read читает со "склада" число 13 и записывает его в переменную а, а затем оператор print выводит ее значение на экран. Потом считывается второе число — 17, вместо старого значения 13 в переменную а записывается новое — 17, которое тоже выводится на экран. Аналогичные действия происходят и в третий раз с последним числом со "склада"

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

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

DATA 1, 2, 4
READ А, В
DATA 8
? А, В
READ А, В
? А, В
READ А, В
? А, В
DATA 16, 32

При выполнении оператора data может возникнуть сообщение об ошибке типа "Нет данных". Подобная ошибка возникает при попытке чтения уже закончившихся данных. Если данных во всех операторах data шесть, то и считать их можно только шесть раз.
Можно восстановить все данные, хранящиеся в data командой RESTORE.

А теперь маленькие задания.
74. Напишите программу, рисующую три закрашенных прямоугольника с заданными координатами диагоналей и цветами.
75. Задайте в операторах data четыре строки любого стихотворения и напишите программу, выводящую их на экран.
Еще ряд заданий на операторы data и read мы выполним, когда научимся пользоваться оператором цикла.