BASIC

BASIC (Бейсик [1]) - (от англ. basic - начальный, элементарный) язык высокого уровня, целью создания которой было получить простую в пользовании язык для начинающих. Язык получила распространение в 1980-х, и остается популярной до сих пор, имея немало диалектов. Язык был создан в 1963 профессорами Дартмутского колледжа Джоном Кемени и Томасом курильщика.

Название языка является акронимом от фразы англ. Beginner's All-purpose Symbolic Instruction Code , Что означает "универсальный код символьных инструкций для начинающих".


1. История

1.1. Предпосылки

К середине 1960-х компьютеры были слишком дорогими машинами, которые использовались только для особых задач, и выполняли только одну задачу за раз (т. н. пакетная обработка). Однако, в течение 1960-х, цена на компьютеры стала падать так, что даже небольшие компании могли их себе позволить. Скорость компьютеров увеличивалось, и пришло время, когда они часто стали простаивать, не развязывая задач.

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

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


1.2. Рождение

Оригинальный Бейсик был придуман в 1963 году Джоном Кемени и Томасом курильщиков в Дартмутском колледже, и под их руководством было реализовано командой студентов колледжа. Со временем, когда появились другие диалекты, этот "начальный" диалект стали называть Дартмутский Бейсиком (Dartmouth BASIC).

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

В проектировании языка использовались такие восемь принципов: новый язык имеет

  1. быть простой в использовании для начинающих
  2. быть языком программирования общего назначения
  3. предоставлять возможность расширения функциональности, доступа опытным программистам
  4. быть интерактивной
  5. предоставлять ясные сообщения об ошибках
  6. быстро работать на небольших программах
  7. не требовать понимания работы аппаратного обеспечения
  8. защищать пользователя от операционной системы

Язык доля основана на FORTRAN II и частично на ALGOL 60, с приложениями, которые делали язык удобной для работы в режиме разделения времени и, позднее, обработки текста и матричной арифметики. Сначала Бейсик был реализован на мейнфрейме GE-265 с поддержкой большого количества терминалов. Вопреки распространенному мнению, на момент своего появления это была компиляторна речь. Несколькими годами позже, очень уважаемый специалист в гализу программирования Эдсгер Дейкстра, высказал мнение, что использование оператора GOTO, существовавший во многих языках, в том числе, в Бейсике, способствовало плохой практике программирования. Некоторые также высмеивал Бейсик за его медлительность и простоту.

Авторы языка решили, что она должна принадлежать общественности, поэтому речь быстро получила распространение. Также, много времени авторы тратили на популяризацию языка. В результате, знание языка Бейсик стало довольно распространенным, и она была реализована бесчисленным количеством производителей. Особую популярность язык получил на новых миникомпьютерах вроде DEC PDP и Data General Nova. На этих машинах язык был реализован как интерпретатор, а не как компилятор.


1.3. Взрывное рост

Несмотря на то, что речь уже использовался на нескольких миникомпьютерах, ее настоящее распространение началось с появления на микрокомпьютере Altair 8800. Большинство языков программирования были слишком большими, чтобы вместить в небольшую память, которую пользователи этих машин могли себе позволить. Для машин с таким медленным носителем как бумажная лента (позднее - аудио-кассета), и отсутствием надлежащего текстового редактора, такая небольшая речь, как Бейсик, была замечательной находкой. BASIC, также имел то преимущество, что, благодаря усилиям Кемени и Курца, он был хорошо известен юными программистами, интересовались микрокомпьютерами в те времена. Одним из первых для этой машины был Tiny BASIC, простая реализация Бейсика, написанная доктором Ли-Чен Вангом и, позже, перенесена на Altair Деннисом Эллисоном по просьбе Боба Альберта (он позже основал Dr. Dobb's Journal). Полный код Tiny BASIC опубликованы в 1976 в Dr. Dobb's Journal.

В 1975 Microsoft (тогда, это только двое - Билл Гейтс и Пол Аллен, при участии Monte Davidoff) выпустили Altair BASIC. Затем его версии появились на другой платформе под лицензией и вскоре использовались уже миллионы копий и вариантов; одним из варрантов стал стандартным языком на Apple II. В 1979 Microsoft обсуждала с несколькими поставщиками компьютеров (включая IBM) лицензирование интерпретатора Бейсик на их машинах. Одну из версий был включен в ПЗУ IBM PC - компьютер мог загружаться в Бейсик.


1.4. Зрелость

В тот период было создано несколько новых версий Бейсика. Microsoft продавала несколько версий для MS-DOS/PC-DOS, включая BASICA, GWBASIC (модификация BASICA, не требовала ПЗУ от IBM) и Quick BASIC. Borland, известная своим Turbo Pascal, в 1985 выпустила Turbo BASIC 1.0 (его потомки позже продавались под названием PowerBASIC). На домашних компьютерах появились различные расширения Бейсика, обычно так, что включаюлы средства для работы со звуком, графикой, выполнением команд операционной системы, а также средства структурного программирования. Некоторые другие языки использовали хорошо известный синтаксис Бейсика в качестве основы, на которой строилась совсем другая система (например, GRASS).

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

Фортуна снова повернулась к Бейсика с появлением Visual Basic от Microsoft (сокращенно MS VB). Хотя и трудно согласиться, что этот язык действительно Бейсиком (несмотря на большое количество привычных ключевых слов), со временем она стала одним из языков, наиболее часто используемых на платформе Windows - некоторое время она использовалась на 70-80% всех коммерческих разработок. Microsoft создала вариант под названием WordBasic и использовала его в MS Word до появления Word 97. Microsoft встроила Visual Basic for Applications (VBA) в Excel 5.0 в 1993 году, затем в Access 95 в 1995, а также, в другие инструменты, входящие в пакет Office - в 1997. Internet Explorer 3.0 и выше, а также Microsoft Outlook включали интерпретатор языка VBScript. В полный вариант пакета OpenOffice также включен интерпретатор Бейсика.


2. Основные понятия

2.1. Назначение и версии языка

Считают, что название языка образовано из первых букв английских слов Beginner's All-purpose Sumbolic Instruction Code. В вольном переводе это означает "язык для начинающих". Английское слово Basic переводят как элементарный, базовый (например, набор знаний). Первая версия языка насчитывала 14 служебных слов.

Train Basic everyday! - Said a poster in Russian school

Язык бейсик разработали сотрудники Дармудського колледжа ( США) в 1964 с целью обучения студентов, и сразу получила широкое признание. В 80-х годах интерес к языку уменьшился, поскольку ее разнообразные версии не удовлетворяли требованиям структурного программирования. Этот недостаток был преодолен в версиях языка Turbo Basic, Quick Basic и Power Basic. Упрощенная версия Быстрого Бейсика (Quick Basic) - Qbasic - вошла в комплект программ операционной системы MS-DOS корпорации Microsoft.

Все указанные выше версии языка (Turbo Basic, Quick Basic, Power Basic, Qbasic) имеют много общих элементов. Ознакомившись с ними, можно работать практически с любой версией. Возможности новейших версий ( компиляторов, позволяющих создавать exe-файлы настолько велики, что во многих случаях они успешно конкурируют с языками Паскаль и Ci.

Язык бейсик постоянно развивается. Она существенно обновляется после создания корпорацией Microsoft программно среды Visual Basic (VB), которое позволяет пользователям средствами визуального программирования составлять собственные программы для операционной системы Windows. Большинство программных средств в Microsoft созданные средствами этого языка. Для расширения возможностей таких программ, как MS Word, MS Excel, MS Access те других корпорация Microsft разработала версию VB под названием Visual Basic for Applications) VBA).

Следующее усовершенствование языка - Visual Basic. NET, является составной интегрированной среды создания программ Visual Studio. NET. Среда - это программный комплекс, автоматизирующий процессы создания, отладки и выполнения программ пользователя.

Visual Basic. NET позволяет не только создавать типовые учебные программы, можно делать и в среде Qbasic, или типичные Windows-проекты, для чего достаточно среды Visual Basic, но и высокопрофессиональные программы для работы в локальной сети, а также в интернете с характерным web-интерфейсом, запускаемых с сервера, доступ к которым осуществляется с помощью браузера.


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

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

  • цифр от 0 до 9;
  • символов математических операций (+, -, *, /, ^);
  • символов отношения (= <> и других);
  • разделительных символов (точка, запятая, двоеточие, точка с запятой, кавычки, круглые скобки, пробел);
  • специальных символов (!, #, $,%, ^, & и других).

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


2.3. Служебные слова и команды языка

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

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

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

DATA данные
DIM объявления переменных
END конец
FOR-TO-STEP для к-шаг
FUNCTION описание функции
GOTO перейти к
IF-THEN если-то
INPUT ввести
LET пусть
DO-LOOP цикл
NEXT следующий
ON при
OPTION BASE задать базу
PLAY играть
PRINT печатать
READ читать
REM объяснение
RESTORE восстановить
RETURN вернуться
WHILE-WEND цикл "пока"

2.4. Структура Qbasic-программ

Бейсик-программа состоит из программных строк. Один программный строка не должен быть длиннее, чем 255 символов. В среде Qbasic при создании длительного, чем 80 символов программного строки происходит скролниг - смещение текста слева, поэтому использовать длинные строки не рекомендуют.

В среде VB часть команды можно переносить. В этом случае используют символ переноса "_", который располагают в конце строки после лексемы (неделимого элемента языка) и пропуска. Для перехода на следующую строку нажимают на клавишу ввода.

В одной строке можно разместить одну или несколько команд, отделенных друг от друга двоеточием (:).

В ранних версиях языка программный строку начинался с номера. Номер программного строки - это целое число из некоторого диапазона, например, от 1 до 65535. Команды выполнялись по возрастанию номеров соответствующих строк. Для удобства программные строки нумеровали числами с определенным интервалом, например, с интервалом 10: 10, 20, 30 ... Это позволяло системе автоматически вставлять в середину программы пропущенные и впоследствии и впоследствии дополнительно введены программы строками: 15 17 25 и т.д.. В современных версиях номера строк можно не писать. Здесь они не влияют на очередность выполнения команд программы. Если же номера есть, то система трактует их как метки (отметки). После номера строки можно ставить двоеточие.


3. Типы данных

3.1. Текстовые данные

Данное - это некоторая информация, например, числовая или текстовая, которую обрабатывают с помощью компьютера.

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

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

Текстовые данные - это тексты, записанные в двойных кавычках, например, "Информатика", "Масса", "2012".

Текстовые данные применяют, в частности, в команде вывода PRINT для создания заголовков и объяснения результатов, например, PRINT "Это решение задачи" или PRINT "P =", P. Лапки на экран не выводится.


3.2. Числовые данные

Числовые данные предназначены для работы с числовой информацией. В информатике различают числа целые (1, 25, 100) и действительные (-1.0, -15.2, 12.25). Действительные данные обычно содержат в своем изображении десятичную точку. Целые числа изображают цифрами без точки.

Действительные числа. Есть две формы изображения действительных чисел: 1) с фиксированной точкой, 2) с плавающей (двигательной) точкой.

В изображениях чисел с фиксированной точкой размещения десятичной точки непосредственно указывает на величину числа. Например: 2., 10., 0.00006, 9000000.

В математике для удобного написания очень больших или очень малых чисел является показательная (научная) форма их изображения: 0,000006 = 0,6 ? 10 -5, 900000000 = 9.10 8.

Число в показательной форме имеет общий вид ? m - мантисса, а ? p порядок числа. Знак "+" можно опускать. Знак "-" опускать нельзя. В языках программирования соответствующее число изображают так:

 ? mE ? p 

Например, одно и то же число 0,0000006 можно записать различными способами: 0.6E-5, 6.0E-6, .06 E-4.

Поскольку размещение десятичной точки в мантиссе явно не указывает на величину числа, говорится, что "точка плавает". Поэтому такое изображение числа называют изображением с плавающей точкой. Например, число 12,5 можно записать так:
12.5, 12.5E0, 1.25E +1, 125.E +1, 0.125E +2.

3.3. Типы данных

Цели данные делят на короткие (название типа INTEGER): -45, 135, 32765 и длинные (LONG): 32769, -234565500.

Оперативную память компьютера измеряют байтами. В одном байте может храниться один символ алфавита или число со значением от 0 до 255, или от -127 до 128.
В Qbasic значение коротких целых данных (INTEGER) занимают по 2 байта в памяти компьютера, а длинных целых (LONG) - по 4.То цели краткие данные имеют значение в диапазоне от -32768 до 32767, а целые длинные - ориентировочно до плюс-минус двух миллиардов. В VB и VB.NET несколько иначе: цели типа SHORT занимают 2 байта, типа SNTEGER - 4, а типа LONG - 8 байт.

Действительные данные. Различают следующие типы числовых действительных данных:

1) короткие (одинарные, чотирибайтни, название типа SINGLE) до 7 цифр в мантиссе;
2) длинные (двойные, с двойной точностью, название типа DOUBLE) - до 15 цифр. Для хранения длинных данных система отводит вдвое больше памяти (8 байт), чем для коротких.

3.4. Константы

Числам или текстами можно предоставлять имена с помощью команды объявления постоянных CONST

 CONST <имя 1> = <выражение 1>, <имя 2> = <выражение 2> ... 

Команду записывают в одном программном строке или, если постоянных много, каждая следующая строка должна начинается со служебного слова CONST. Угловые скобки <> здесь предназначены для формальной записи команд, в фактических командах их пишут. Например,

CONST Pi = 3.1415926, A = "Программирование".
Действие команды. Вычисляются значения выражений и результаты присваиваются соответствующим постоянным. Данные Pi и A называют постоянными.
Стали данные не могут изменить своего значения во время выполнения программы. По этому признаку данные в программировании делятся на стали и переменные.

3.5. Переменные

В математике и физике величинами дают имена: стороне - a, высоте - h, времени - t, площади или пути - s и т.д.. Аналитически в программировании. Физические величины обычно могут менять свои значения, т.е. являются переменными. Именно этим термином в программировании принято называть данные, которые могут менять свои значения во время выполнения программы.

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

Название переменных предоставляет пользователь. В ранних версиях языка использовали короткие имена, состоящие из одной буквы или буквы и цифры. Примеры коротких имен переменных: A, A1, A6, C6.

В новых системах имена могут быть длиннее и состоят как из крупных, так и малых латинских букв (и цифр), например, Myname1, Myname2. Цифра не может быть первым символом в имени. Регистр значения не имеет. Имена di D обозначают одну и ту же переменную.
При составлении программы имена переменным следует предоставлять, руководствуясь содержанием задачи, например, сумму можно обозначать буквой S, произведение - D, аргументы x 1, x 2 некоторой функции - X1, X2.

3.6. Типы данных

Переменные бывают числовые и текстовые. Разделение переменных на типы пользователь может зафиксировать в программе разными способами. Их четыре:

1) принципы умолчание;
2) специальные символы $,% или &,! или #;
3) команды описания типов DEF;
4) команды объявления переменных DIM.

Использование принципа умолчания. Если в программе нет описаний типов, то Qbasic рассматривает переменные как короткие действительны числовые, а VB - как длинные действительные числовые. Однако текстовые переменные нужно описывать всегда. Для этого к имени текстовой переменной переменной дописывается специальный символ $, к примеру A $, A1 $.

Использование специальных символов. Чтобы указать явно типы переменных, их именам дописывают специальные символы ( суффиксы).
К переменной целого типа можно дописать символ% (короткое данное) или символ & (длинное это), например, A1%, C &.
Объявить короткие или длинные действительные переменные можно с помощью символов! или # соответственно. Например, D!, X1 #.
Имена текстовых переменных заканчивается суффиксом $, например, B5 $, C $, M $ (8).
Специальные символы можно дописывать к числам, например: 5%, 534 778 &, 5.2!, 45246.34534 #, но это делать необязательно.

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

Команды описания типов записывают в начале программы. В Qbasic используют следующие команды:
Описание переменных Назначение
DEFINT список букв Для переменных целого короткого типа
DEFLNG список букв Для переменных целого долго типа
DEFSNG список букв Для истинных коротких переменных
DEFDBL список букв Для истинных длинных переменных
DEFSTR список букв Для переменных символьного типа

Пример 1. Цели переменные A, B, C, D можно описать так:

 DEFINT A, B, C, D 

или так:

 DEFINT A, B: DEFLNG C, C. 

Пример 2. Чтобы проинформировать систему, все переменные, которые начинаются с символов A, B, C, D, K, M, являются переменными целого типа, из символов E, F настоящего короткого типа, с P, Q текстового типа, в начале программы записывают такие команды:

 DEFINT AD, K, M DEFSNG E, F DEFSTR P, Q. 
Обратите внимание на дефис в первой команде. Здесь он заменяет перечень элементов списка через запятую (A, B, C, D).
Использование команды объявления переменных DIM. Для объявления переменных в современных версиях языка применяют команду DIM
 DIM <переменная 1> AS <тип 1> <переменная 2> AS <тип 2> DIM <переменная 3> AS <тип 3> ... 

Пример 3. Цели переменные A, B, действительны C, D и текстовую H можно сказать так:

 DIM A AS INTEGER, B AS INTERGER, C AS DOUBLE DIM D AS DOUBLE, H AS STRING * 10. 

Текстовые данные (название типа STRING) могут содержать Qbasic до 255 букв и занимать в памяти до 256 байт (в VB эти данные значительно длиннее). Если заранее известно, что количество букв в тексте не превышает числа n, то тип этого данного описывают как STRING * n.


4. Команды присвоения. Функции. Выражения.

Простые (линейные) программы состоят из команд присвоения, ввода-вывода данных и вызовов процедур.

4.1. Команда присвоения.

Команду присвоения используют для придания начального значения переменной или для изменения ее текущего значения. Команда присваивания имеет вид

 LET  =  

Здесь A - название переменной, B - выражение, символ = здесь является символом присваивания. Служебное слово LET необязательна.

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

Действие команды. Вычисляется значение выражения B и результат присваивается переменной A. Предварительное значение переменной A теряется.

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

Пример 1. Рассмотрим фрагмент программы:

A = 5: B = 10: C = -2.6
D = (A + B) / (B - A) + C.

Пример 2. Во многих задачах требуется считать количество некоторых объектов (обозначим их именем K) или сумму (S) величин Y. Соответствующие команды присвоения иметь такой вид:

K = K + 1 'так вычисляют количество
S = S + Y 'так исчисляют сумму S значений Y.

4.2. Преобразование типов.

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

S% = 4 * Pi * R ^ 2,
то результат округлится до целого значения - 1006. Нельзя числовой переменной присваивать текстовое значение, а текстовой - числовое.

4.3. Арифметические выражения

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

Арифметические выражения строит пользователь в соответствии с условиями задачи, комбинируя стали, переменные, функции по определенным правилам и соединяя их с помощью символов операции.
Над числовыми данными выполняют следующие операции:
  • возведение в степень (^);
  • умножения (*) и деления (/);
  • сложения (+) и вычитания (-).

4.4. Операции \ и MOD.

Над целыми данными выполняют две операции:

  • целочисленного деления (символ \);
  • вычисления остатка двух чисел (слово MOD).

Первая операция отвергает дробную часть результата, например, 5 \ 2 = 2, 359 \ 100 = 3, а 5 MOD 2 = 1, 17 MOD 3 = 2.

Задача 1. Дано трехзначное целое число A. Вычислить сумму его цифр.

Обозначим искомые цифры C1, C2, C3, а сумму - S. Рассмотрим любое трехзначное число, например 357, и убедимся, что такие команды присвоения обеспечивают отыскания суммы (15) его цифр:
 'Программа Сумма чисел A = 357 C1 = A \ 100 C2 = A \ 10 MOD 10 C3 = A MOD 10 S = C1 + C2 + C3 PRINT "S ="; S 

4.5. Последовательность выполнения операции

В выражениях такая же, как в математике. Ее описывают правилу приоритетов (порядком выполнения операции).

Есть четыре уровня приоритетов:

1) вычисляются значения функций, если они в выражении;

2) выполняются все имеющиеся операции возведения в степень;

3) выполняются операции умножения и деления;

4) выполнение операции добавления и вычитание.

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

Оформление выражений. Выражения записываются в Qbasic в одном или (если допускает версия языка, например VB) в нескольких строках без дублирования символов арифметических операций в случае переноса. Есть такое ограничение на оформление выражений при написании программы: показатель степени, индексы, числители и знаменатели размещают в горизонтальной строке. Нужно внимательно записывать знаменатель. Во многих случаях их берут в скобки. Лишний пар скобок в сложном выражении не влечет ошибки.
Тип результата. В арифметическом выражении используют числовые стали и числовые переменные разных типов - целые, действительные. Тип результата будет целым только тогда, когда все операнды будут целого типа. Например, результат A% + B% будет целого типа, а результаты действий A + B% или A + B - настоящего, если заранее не объявлено, что переменные A и B является целого типа. Результат деления двух чисел A / B всегда данным вещественного типа.

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

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

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

Функция Математическая запись Комментарий
SIN (X) Sin X x задают в радианах
COS (X) cos x x задают в радианах
TAN (X) TG X x задают в радианах
ATN (X) arctg x Арктангенс x
ABS (X) x | Модуль (абсолютная величина) x
SQR (X) x Квадратный корень x
LOG (X) ln x Логарифм натуральный x
EXP (X) e x Экспонента
INT (X) x Больше целое число, не превышающее x
FIX (X) Целое число, образуется отбрасыванием дробной части числа x
RND (X) Случайное число из промежутка от 0 до 1 (не считая 1)
SGN (X) sign x

Пример 3. Значениями функции TAN (0), ABS (-2), SQR (3 * 35), INT (2.5) INT (-2.5) являются соответственно 0, 2, 2, 2, -3.


5. Простые программы

5.1. Структура простой программы

Простая (линейная) программа состоит преимущественно из команд ввода-вывода данных (READ, INPUT, PRINT), команды присвоения (LET), остановки (STOP) и выхода (END) из программы, из команд-комментариев и др.. Эти команды называют простыми. Рассмотрим некоторые из них.

Команду-комментарий REM используют для внесения пояснений в текст программы:

 REM <текст объяснения> 

или

 '<Текст объяснения> 

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

Команда остановки STOP. Команда остановки выполнения программы может быть в любом месте программы:

 STOP 

Эта команда останавливает выполнение программы и на экран выводится сообщение об этом. Часто эту команду используют, чтобы переписать промежуточные результаты с экрана монитора. Выполнение программы можно продолжить с помощью команды Continue из меню среды Qbasic (или нажимают на клавишу F5).

Команда END. Команда окончания работы программы имеет вид

 END 

Эта команда является необязательной в программе. Ее можно не писать.


5.2. Команда SWAP.

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

 SWAP A, B 

Здесь A и B - имена переменных, обмениваются значениями.

Пример 1. В результате выполнения программы

A = 7: B = 5
SWAP A, B
PRINT A, B

на экране монитора будут выведены значения 5 и 7.

Без этой команды для обмена данными необходимо вводить промежуточную переменную C. Программа выглядеть так:
 A = 7: B = 5 C = A: A = B: B = C PRINT A, B 

6. Разветвление

Разветвление - это алгоримична конструкция, где проверяется условие (значение логического выражения), и в зависимости от ее истинности или ложности выполняется та или иная серия команд. Изучать такие виды ветвлений: 1) полное; @) неполное; #) выбор.

7. Ввод данных

В Qbais есть такие способы предоставления значений переменным:

1) с помощью команды присвоения;

2) с помощью команды INPUT - ввода данных с клавиатуры в режиме диалога с компьютером;

3) с помощью команды READ - считывание и предоставления значений из блока данных.

7.1. Использование команды присвоения

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

Пример 1. Пусть переменной А нужно придать значение 5, переменной В - 10 переменной С - 2.5, переменные D $ - значение "Украина". Соответствующие команды будут выглядеть:

A = 5: B = 10: C = -2.5: D $ = "Украина"

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


7.2. Команда INPUT.

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

 INPUT <список переменных> 

В списке через запятую или точку с запятой пишем имена переменных, значения которых сдавать с клавиатуры, например,

INPUT A, B, C, D $

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

Пример 2. Рассмотрим действие предыдущей команды INPUT. Ответим на запрос компьютера следующим образом:

? 5, 10, -2.5 "Украина" (Нажимаем на клавишу ввода).
Переменная А получит значение 5, В - значение 10, С - значение -2.5, а D $ - значение "Украина". Кавычки в текстовых постоянных можно не писать.

Во избежание ошибок при вводе данных с клавиатуры в команде INPUT, а именно:

INPUT "Введите А, В, С, ТЕКСТ", A; B; C, D $.

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


7.3. Команда READ (Qbasic)

Команда READ придает значения переменным из блока данных (блок рассмотрим ниже). Она имеет вид

 READ <список переменных> 

Список состоит из имен переменных, записанных через запятую, например:

READ A, B, C, D $.

Значение переменной предоставляют из блока данных.

Блок данных - это список данных (например: 2, 3, 4), значения которых присваивают

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

 DATA <список данных> 

Команда DATA не выполняет активного действия. Она является описательной. В список заносим числовые и текстовые данные, например:

DATA 5, 10, 2.5, "Украина".

8. Графика

8.1. Текстовый и графический экраны

Размеры текстового экрана в Qbasic определяют количеством символов в горизонтальном и вертикальном. Чаще всего это 80 символов в строке и 25 символов в столбце.

Изображение символа возникает путем изменения цвета точек на участке экрана, где изображаются один символ. Участок может иметь различные размеры, что зависит от типа монитора. Пусть участок имеет размеры 8 на 8 точек. Количество точек на экране будет такой: 640 точек в строке и 200 точек в столбце. Экран работает так: в каждую точку можно направить сигнал, изменит ее цвет. Если цвет точки совпадает с цветом окружающих точек, т.е. с фоном, то изображение точки на экране невидимое.

Экран, который позволяет работать непосредственно с точками, называют графическим.
Переход от векторного (n = 0) до графического экрана выполняют с помощью команды SCREEN, а именно:
 SCREEN n 

Здесь n - номер экрана, который определяет разрешающую способность. Например, 2 - разрешение 640x200 графических точек, 16 цветов, 1 видео-страница, 7 - 320x200 графических точек, 2 видеостраницы, 8 - 640x200, 9 - 640x350, 11 или 12 640x480 т.п..

Расположение точки на экране определяется ее координатами - парой чисел (X, Y).

8.2. Цвета

Цвета в программе задают командой COLOR:


 COLOR A, B, C | | n = 0; 
 COLOR A, B | | n = 7-10; 
 COLOR A | | n = 12 


Здесь A, B, C - числа или переменные. Значение А задает цвет изображения, В - цвет тела, С - цвет границы. Цветов такие:

№ ( номер) Цвет
0 черный
1 синий
2 зеленый
3 голубой
4 красный
5 розовый
6 коричневый
7 светло-серый
8 темно-серый
9 ярко-синий
10 ярко-зеленый
11 ярко-голубой
12 ярко-красный
13 ярко-розовый
14 желтый
15 белый

Пример 1. Команда COLOR 0, 14 3 обеспечивают черное изображение на желтом фоне с голубой границей текстового экрана.: Изменить цвет точки можно с помощью команды PSET

 PSET (X, Y), D 

Здесь X - горизонтальная координатная точки, Y - вертикальная, D - цвет; X, Y, D - постоянные переменные или выражения.

Если цвета заданы командой COLOR A, B то засветить точку (X, Y) цветом А (на фоне В) можно так:
 PSET (X, Y) 

Пример 2. Зажечь зеленым цветом точку с координатами (50, 100) можно так: PSET (50, 100), 2.

Потушить точку можно командой PSET (X, Y), B или командой
 PRESET (X, Y) 

Пример 3. Потушить зажженную ранее точку можно так: PSET (50, 100).

Команду PRESET используют также для размещения графического курсора в стартовое положение (X, Y) при построении рисунков.

8.3. Изображение прямых и прямоугольников

Для изображения (рисования) прямой цветом D используют команду LINE:

 LINE (X1, Y1) - (X2, Y2), D 

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

 LINE - (X2, Y2) 

В этом случае рисуется (цветом A) прямая линия от некоторой текущей точки к точке с координатами (X2, Y2).

Пример 4. Соединить точки с координатами (50, 100) и (50, 150) красной линией можно так:

LINE (50, 100) - (50, 150), 4 или LINE - (50, 150), 4.
Для изображения прямоугольника используют команду
 LINE (X1, Y2), D, B 

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

Чтобы разрисовать весь прямоугольник цветом D, вместо символа B пишут символы BF.

Пример 5 Нарисуйте квадрат и разрисуем его ярко-синим цветом: LINE (50,100) - (100, 150), 9, BF.

Для раскрашивания замкнутых участков (не только прямоугольников) используют команду PAINT:
 PAINT (X, Y), D, C 

Здесь X, Y - координаты любой точки, лежащей внутри замкнутой участка, разрисовывают, D - цвет раскрашивания; C - цвет границы участка.

Действие команды PAINT. Пусть граница участка (фигуры) имеет цвет C. В результате выполнения команды замкнутая участок будет разрисована цветом D.

Пример 6. Солнце можно нарисовать так:

Программа "Солнце"
 SCREEN 7 COLOR 5, 3 CIRCLE (160, 100), 70, 4 'Команда CIRCLE изображает круг. " PAINT (160, 100), 14, 4 END 

8.4. Изображение окружности, дуги, сектора и эллипса

Для изображения круги используют команду CIRCLE:

 CIRCLE (X, Y), R, D 

Здесь в скобках указано координаты центра окружности, R - радиус, D - цвет.

Пример 1. Команда CIRCLE (125, 100), 50, 4 нарисует красный круг с радиусом 50 точек и центром в точке (125, 100).

Для изображения дуги окружности используют эту же команду с дополнительными параметрами:
 CIRCLE (X, Y), R, D, A1, A2 

Здесь A1, A2-углы начала и конца дуги в радианах (1 радиан - 57 градусов, а 90 градусов - это 1,57 радиан). Отсчет ведут против часовой стрелки.

Пример 2. Четверть круга можно изобразить на экране командой CIRCLE (125, 100), 50, 4, 0, 1.57.

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

Пример 3. Четверть круга изображаем так:

CIRCLE (125, 100), 50, 4, -1.57, -3.14.
Для изображения эллипса команду CIRCLE используют со следующими параметрами:
 CIRCLE (X, Y), R, D,,, Z 

Здесь Z означает растяжение, если Z> 1, или сжатие, если Z <1, эллипса в вертикальном направлении. Рассмотрим программу "Эллипсы".

Программа "Эллипсы"
 SCREEN 7 "или 8" COLOR 3, 1 FOR I = 80 TO 20 STEP -4 D = RND (1) * 16 CIRCLE (128,96), 96, D,,, 10 / I CIRCLE (128,96), 96, D,,, I/10 NEXT I END 

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


8.5. Команда DRAW

Команду DRAW используют (только Qbasic) для рисования линий разного цвета различной длины в восьми допустимых направлениях. Она имеет вид

 DRAW текстовая стала 

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

Буква Направление
U
R
D
L
E ↑ →
F ↓ →
G ↓ ←
H ↑ ←

Пример 4. С помощью команды 30 DRAW "U30R40D30L40" можно нарисовать прямоугольник, исходя из некоторой точки, заданной командой PSET, или с точки, где закончила рисовать предыдущая команда, иначе рисования начнется в центре экрана.

Полезны также следующие три параметра: N, B, C.
Если в начале строки символов отметить параметром N, то после рисования линии невидимый графический курсор вернется в стартовую точку.
Если в начале строки написать B, то графический курсор переместится в указанном другими параметрами направлении, ничего не рисующий.
Если в середине строки символов поставить параметр C с числом цвета, то цвет линий изменится на заданный. Этот параметр действует только в пределах команды DRAW.

8.6. Имитация движения объекта на экране

Для имитации движения изображения объекта на экране нужно выполнить такой алгоритм:

 1. Нарисовать объект в заданной точке. 2. Уничтожить объект зарисовав его цветом фона. 3. Изменить координаты объекта. 4. Перейти к пункту 1. 

Продемонстрируем этот алгоритм на примере программы "Движение круга". На экране зеленый круг на черном фоне двигаться вверх-вниз. Программа "Движение круга"

 SCREEN 8 COLOR 2,1 Y = 10: SY = 4 start: CIRCLE (120, Y), 40, 2 'Рисование круга' CIRCLE (120, Y), 40, 1 'Удаление круга' Y = Y + SY 'Изменение y-координаты центра 'IF Y <10 OR Y> 190 THEN SY =-SY GOTO start' Рисование круга ' 

Прервать выполнение этой программы можно аккордом CTRL + Braek.

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


(Еще не написано, автор устал)


См.. также

9. Стандарты

  • ANSI X3.60-1978 "FOR MINIMAL BASIC"
  • ISO / IEC 6373:1984 "DATA PROCESSING - PROGRAMMING LANGUAGES - MINIMAL BASIC"
  • ANSI X3.113-1987 "PROGRAMMING LANGUAGES FULL BASIC"
  • ISO / IEC 10279:1991 "INFORMATION TECHNOLOGY - PROGRAMMING LANGUAGES - FULL BASIC"
  • ANSI X3.113 INTERPRETATIONS-1992 "BASIC TECHNICAL INFORMATION BULLETIN # 1 INTERPRETATIONS OF ANSI 03.113-1987"
  • ISO / IEC 10279:1991 / Amd 1:1994 "MODULES AND SINGLE CHARACTER INPUT ENHANCEMENT"

Источники


11. Сноски