[an error occurred while processing this directive]
─TM0 ─HM2 ─PL63 ─DH//-|P-// ─LM10 │...................................................................< ─PE 3. ЯЗЫК ПРОГРАММИРОВАНИЯ БЕЙСИК 3.1 Введение в Бейсик (краткие сведения) Язык программирования Бейсик для ПЭВМ в соответствии со стандартом предполагает два режима использования интерпретатора этого языка - командный и программный. В командном режиме ввод произвольной инструкции (команды) языка вызывает ее немедленное выполнение, независимо от предшествующих действий. В случае программного режима на вход интерпретатора поступает последовательность нумерованных строк, содержащих одну или несколько инструкций (программа), которая располагается в оперативной памяти ОЗУ и выполняется как единое задание для ПЭВМ. Останов выполнения программы может быть осуществлен в любой момент нажатием клавиши РЕД. Многие инструкции языка Бейсик могут использоваться в обоих указанных режимах. Имеется возможность расположить несколько инструкций в одной строке программы. Разделителем между инструкциями в этом случае служит символ ":" (двоеточие). Система программирования на Бейсике для ПЭВМ предоставляет в распоряжение пользователя не только инструкции самого языка, но и достаточно широкий набор команд для отладки и редактирования программ, распечатки и записи исходных текстов на устройства внешней памяти, работы с файлами данных, использования средств операционной системы, языка ассемблера и т.д. Остановимся на некоторых командах, предназначенных для подготовки и редактирования программ при работе за терминалом. Прежде всего отметим, что готовность компьютера немедленно выполнить произвольную команду пользователя индицируется на экране символом > в крайней левой позиции текущей строки.Такое состояние ПЭВМ носит название командного режима. Ввод каждой команды завершается нажатием клавиши ВВОД, после чего осуществляется переход к ее выполнению. Очередное появление на экране символа > свидетельствует о том, что поданная команда выполнена и ПЭВМ готова к приему новой команды. Переходим непосредственно к рассмотрению команд. RUN. Предположим, что в память ПЭВМ введена некоторая программа. Данная команда предназначена для передачи управления этой программе (запуска программы на выполнение). После подачи команды ПЭВМ переходит к выполнению программы, начиная со строки, имеющей минимальный номер. LIST. С помощью этой команды на экран дисплея выводится текст (листинг) находящейся в памяти ПЭВМ программы или ее части, например, для просмотра и поиска ошибок. Текст программы выводится в порядке возрастания номеров строк. Формат команды LIST [,][m][,][n] где м,n-номера строки программы, отвечающие обязательному условию m<n. Рассмотрим различные варианты возможного формата команды: LIST - вывод всей программы; LIST ,m - вывод части программы начиная с 1-й строки и кончая строкой с номером m; LIST m,n-вывод части программы, расположенной между м,n включительно; LIST m,-вывод части программы начиная со строки с номером m до конца. В случае вывода на экран достаточно большего фрагмента программы (количество выводимых строк превосходит количество позиций экрана по вертикали) перед подачей команды LIST можно установить постраничный режим вывода, введя управляющий символ УПР/N (см.п.1.1). Соответственно для возврата к режиму бегущего кадра надо ввести управляющий символ УПР/O. Для вывода листинга или его части на печатающее устройство перед командой LIST вводится управляющий символ УПР/J а за ним B, а по завершению печати - УПР/J и C . У вас есть возможность получить более наглядную распечатку исходного текста программы как на экране, так и на печатающем устройстве. Для этого перед командой LIST необходимо подать команду LISTO<oр>, где ор может принимать значения от 0 до 7. Команда LISTO задает режим, в котором будет работать команда LIST. Например, если вы установите ор равным 1, то при распечатке программы после номеров строк будут вставлены пробелы, если 2, то конструкции FOR...NEXT будут печататься со смещением, если 4, то пробелами будут выделены конструкции REPEAT...UNTIL. Для возвращения к стандартному режиму необходимо подать команду LISTO 0. DELETE. Команда позволяет удалить при редактировании произвольное количество следующих друг за другом строк программы. Формат команды DELETE m,n где m,n-номера строк программы с соблюдением обязательного условия m<n. По команде DELETE из хранящейся в памяти программы удаляются строки с номера m по номер n включительно. В часности, для удаления всех строк программы с номерами меньшими, чем n возможен следующий вариант команды DELETE 0,N , а для удаления всех строк начиная с заданной с номером m до конца программы - DELETE м,32767. Число 32767 - максимально вожможный номер строки программы. RENUMBER. Данная команда используется для автоматического перенумерования строк программы. Такая задача возникает, например, в случаях, когда между двумя имеющимися строками редактируемой программы требуется вставить дополнительно некоторый фрагмент, состоящий из нескольких строк. В некоторых случаях без перенумерования просто невозможно обойтись (напрмер, вставить пятнадцать строк между имеющимися с номерами 310 и 320). Формат команды: RENUMBER [i] [,h] , где i-номер первой строки, который будет установлен для новой версии программы, h-устанавливаемое значение шага нумерации при переходе к следующим строкам. По команде RENUMBER осуществляется не только перенумерация всех строк программы в соответствии с конкретными значениями параметров i,h, но и осуществляется автоматический просмотр всех строк с внесением соответствующих изменений номеров-меток, на которые имеются ссылки (наример, в операторах перехода). Возможные форматы команды: RENUMBER 200 i=200 - первая строка получает номер 200, каждая следущая имеет номер на 10 больше; RENUMBER,5 - h=5 и первая строка по умолчанию получает номер 10, а каждая следущая номер на 5 больше. AUTO.(automatic). Удобная команда, которая часто используется при вводе строк программы. Команда осуществляет автоматическую нумерацию строк. Формат: AUTO [i] [,h] , где i,h-имеют тот же смысл, что и в команде RENUMBER. После подачи команды AUTO (обычно она предшествует вводу программы или отдльного фрагмента) на экране автоматически появляется номер строки (i), а после ее ввода, завершившегося нажатием клавиши ВВОД - номер следующей строки (на h больше) и т.д. Режим автоматической нумерации может быть в любой момент отменени нажатием клавиши РЕД. Система умолчаний по отношению параметров команды i, h та же, что и для команды RENUMBER. NEW. Данная команда позволяет пользователю в произвольный момент времени перейти к вводу новой программы независимо от предществующей работы на ПЭВМ. Наличие в памяти какой-либо программы в каждый момент времени можно проверить, подав уже известную команду LIST. После подачи команды NEW на команду LIST не будет выведено никакого текста. OLD. Иногда возникают ситуации, когда ПЭВМ в результате непредвиденных сбоев программного обеспечения или аппаратуры оказывается в так называемом "подвешенном" состоянии. Это случай, когда пользователь не имеет возможности воздействовать на возникшую ситуацию вводом информации с клавиатуры (например, подать команду повторного запуска программы RUN - клавиатура не работает). Тогда необходимо перевести ПЭВМ в исходное состояние, что осуществляется нажатием клавиш УПР+СБР. При этом имевшаяся в памяти программа сохраняется, но ПЭВМ как бы о ней не знает. Для того, чтобы проинформировать ПЭВМ о наличии в памяти текущей программы и используетя команда OLD, после подачи которой можно продолжить работу с программой. Убедиться же в ее наличии можно, подав команду LIST. SAVE. Команда предназначена для сохранения (записи) программы, находящейся в оперативной памяти ПЭВМ на подключенное к ней устройство внешней памяти (гибкий или винчестерный диск). Формат команды SAVE "name" где name - имя, присваиваемое пользователем программе. Информация, хранимая на устройствах внешней памяти организована в виде набора логически независимых единиц (фрагментов), называемых файлами (см. руководство по ОС ОНИКС ). Каждая программа также представляется в виде файла, содержащего образ участка оперативной памяти в котором находилась программа. При этом имя файла совпадает с именем программы в команде SAVE. Имя представляет собой произволную последовательность (не более 10) алфавитно-цифровых символов. LOAD. Данная команда применяется для ввода (загрузки) в оперативную память ПЭВМ программы с подключенного устройства внешней памяти. Если перед подачей команды в оперативной памяти находится некоторая другая программа команде LOAD должна предшествовать команда NEW. Формат LOAD "name", где name - имя программы (в общем случае спецификация файла, содержащего программу ( см. руководство по ОС ОНИКС). Обращается внимание, что команда LOAD не вызывает выполнения требуемой программы, а только размещает ее в оперативной памяти, т.е. делает доступной для просмотра (распечатки) и редактирования. Запуск на выполнение должен осуществляться обычным образом - командой RUN. CHAIN. Команда осуществляет загрузку в оперативную память программы, расположенной на подключенном устройстве внешней памяти и автоматически передает ей управление (фактически совмещает последовательное действие команд LOAD и RUN). Формат CHAIN "name", где name - имеет тот же смысл, что и в команде LOAD. Команда CHAIN часто используется программистами в программах. С помощью этой команды можно организовать передачу управления от одной программы к другой. ─PE 3.2 Отличия от стандартного Бейсика 3.2.1. Имена переменных Для присвоения имен переменным в программе используется следующая совокупность правил 1. Имя переменной представляет собой последовательность произвольной длины алфавитно-цифровых символов (только латинский алфавит). Допускаются как строчные, так и прописные алфавитные символы (буквы). 2. Первым сиволом обязательно должна быть буква. 3. В имя переменной нигде не должен входить пробел. 4. Разрешаеться использовать в имени символ "подчеркивание" ("_") - для задания составных имен, например, My_name. 5. Имя переменной не должно начинаться с ключевых слов языка BASIC, например TO, LET, PRINT, и т.д. Примеры правильных имен в операторах присваивания: A=5.2 AGE=38 this-year=1984 UALUE5=16.1 CAR-mileage=13280 Примеры неправильных имен: Football Result=2 (пробел в середине имени): Who?=6 (знак?-не является адфавитно-цифровым символом); 4_Value=16.3 (имя начинаеться с цифры) Today=23 (имя начинается с ключевого слова языка BASIC-TO). ─PE10 3.2.2. Типы переменных В языке BASIC используются следующие типы переменных (данных), отличающиеся формой внутреннего представления их значений в оперативной памяти ПЭВМ: - целочисленные; - вещественные; - строковые. Целочисленные переменные содержат в имени в качестве последнего-символ %, например, SIZE% Для представления их значений в оперативной памяти ПЭВМ резервируется 4 байта. Диапазон изменения значений от -2147483648 до +21474483647. Выполнение арифметических операций над целочисленными переменными осуществляется значительно быстрее, чем над вещественными. Для целочисленных переменных в языке BASIC введены две специальные операции MOD и DIV. Целочисленные переменные, имена которых задаются заглавными буквами латинского алфавита с A по Z (A%, B%, C%,...,Z%) являются специальными. Их значения постоянно хранятся в оперативной памяти ПЭВМ и всегда под эти переменные резервируется соответствующая фиксированная область памяти. Команды RUN, NEW, CHAIN и т.д. не уничтожают (не инициализируют) эти значения. Таким образом, появляется возможность с помощью этих переменных осуществлять связь по данным между последовательно выполняемыми независимыми программами. Другими словами, определенный результат работы одной программы, присвоенный этим переменным, можно непосредственно использовать в другой, считая, что значения переменных, А%-Z% уже известны. Переменные А%-Z% получили название резидентных переменных. Значения резидентных переменных уничтожаются (переменные инициализируются, получая значение 0) при выключении ПЭВМ или в случае нажатия клавиши УПР+СБР Вещественные переменные могут принимать числовые значения в диапазоне от 1.47 Е-39 до 1.7 Е38, при этом максимальное количество значащих цифр (точность) - девять. Под эти пееменные резервируется 5 байт оперативной памяти. Имена вещественных переменных не содержат каких-либо специальных символов. Строковые переменные отличаются наличием в имени в качестве последнего-символа ¤, например NAME¤. Они принимают значения, представляющие собой строку произвольных символов (например, слово, предложение и т.д.) общим количеством не более 255. Строка символов, присваиваемая строковой переменной в соответсвующих операторах, заключается в кавычки. Например NAME¤="Николай". В выражениях, состоящих из строковых переменных и констант (строка символов в кавычках), может использоваться только один знак арифметической операции +, который имеет смысл конкатенации (слияния) строк. Пример простейшей программы с использованием строковых переменных: 10 A¤="Сегодня " 20 В¤="воскресный день" 30 С¤=А¤+В¤ 40 PRINT С¤ > RUN Сегодня воскресный день Значение строковых переменных представляется в оперативной памяти ПЭВМ в виде последовательности байтов, содержащих коды символов строки. При этом каждый символ хранится в соответствующем байте. Для кодировки используется наиболее распространненый код ASCII (American Standart Code for Information Interchange). Таким образом, когда мы используем в программе оператор присваивания, например А¤="HELLO!", то тем самым резервируем в оперативной памяти (область памяти определяется BASIC-интерпритатором) 6 байт, в которые последовательно заносятся коды ASCII символов строки "HELLO!". В языке BASIC имеются две функции, которые позволяют определить код заданного символа, и наоборот - символ по задаваемому коду. Первая функция ASC("символ"), вторая - CHR¤(код). Так, например, оператор PRINT ASC("G") - напечатает число 74 (код символа G), а оператор PRINT CHR¤ (74) - напечатает символ G. ASCII-коды используемых символов находятся в диапазоне 0-127, полная таблица определенных символов приводится в приложении I.[an error occurred while processing this directive]