программирование на языке бейсик

 

УРОК 2. Работа с переменными. Ввод и вывод данных

Какие существуют переменные? Имеется несколько видов числовых и символьных переменных по типу значений, которые в них хранятся:

- целое (INTEGER) занимает два байта и принимает значения от -32768 до 32767. Имя переменной, в которой хранится это значение, заканчивается на символ %,

- длинное целое (LONG) занимает четыре байта и принимает значение от -2 147 483 648 до 2 147 483 647. Имя переменной, в которой хранится это значение, заканчивается на символ &,

- число с плавающей запятой простой или одинарной точности (SINGLE) занимает 4 байта, принимает минимальное и максимальное значение от 2.8Е-45 до 3.4Е+38 и имеет 6-7 значащих цифр. Имя переменной, в которой хранится это значение, заканчивается на символ !,

- число с плавающей точкой двойной точности (DOUBLE) занимает 8 байтов, принимает минимальное и максимальное значение от 4.54Е-324 до 1.797Е+308 и имеет 15 значащих цифр. Имя переменной, в которой хранится это значение, заканчивается на символ #,

- строка символов переменной длины (STRING) содержит от нуля до 32 767 символов. Переменная, которая хранит это значение, заканчивается на символ $.

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

Само имя переменной содержит латинские символы и цифры, причем не должно начинаться с цифры. Оно также не должно содержать символы кириллицы и специальные символы, например, тире, запятую и пр., а также не должно совпадать с именем оператора или ключевым словом языка, например, print, as, to и так далее. Приведем примеры правильных имен: i1%, i2$, i4, igorivasya. Примеры неправильных имен: 1i% (начинается с цифры), вася (имеет кириллицу), as (совпадает с ключевым словом), igor+vasya (содержит специальный символ плюс).

Иногда требуется указать фиксированную длину символьной переменной, для чего используется оператор «DIM a1 AS STRING * 10». В приведенном примере переменная a1 будет иметь длину 10 символов, если попробовать ввести в нее одиннадцатый символ, то он не будет введен. Более того, если присвоить такой переменной значение, длиной меньше, чем 10 символов, то оставшиеся поля будут дополнены пробелами до десяти символами. Поэтому данный вид описания переменных используется для некоторых особых случаев, например, при работе с полями записи файла прямого доступа.

Имя переменной начинается с символа, содержит символы и цифры и может иметь в своем названии до 40 символов, например, i123%, name5$, lampa4! и так далее. Первая переменная в примере содержит целые значения, вторая - символьная, третья - число с плавающей точкой одинарной точности. Отметим, что переменные с именами i1%, i1! и i1# являются разными переменными и содержат разные значения.

Рассмотрим виды переменных подробней.

Целые. Как известно, один байт содержит восемь бит. Каждый бит может иметь значение либо 0 либо 1. Таким образом, в одном бите можно представить два значения. Два бита могут представлять четыре различных значения, а именно: 00b, 01b, 10b и 11b. Для того, чтобы выделить тот факт, что записаны двоичные значения, справа от них ставится символ «b». Три бита могут иметь восемь разных значений и так далее. Ясно, что n-бит могут иметь 2n значений. Таким образом, два байта, которые содержат 16 бит (1 байт содержит 8 бит), вычитая один бит на знак, содержат 215=32768 значений как для положительных, так и для отрицательных чисел. Так как используется еще одно значение - ноль, то отрицательных, как правило, меньше на одно значение. Длинное целое занимает 4 байта или 32 бита, один бит на знак, остальные 31 на значения. Таким образом, всего значений будет 231.

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

Введем пример, который показан на рисунке:

i% = 1

PRINT i%

i% = - 32444 + i% - 1000

PRINT i%

   В первом операторе целой переменной i% присваивается значение 1, во втором на экране печатается значение этой переменной (1), в третьем происходит операция вычитания и сложения: -32 444 + 1 -1000 = - 33 443, что превышает возможности хранения в переменной i%, ведь минимальное значение, которое может в ней находиться равно -32768.

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

В окошке с сообщением об ошибке имеется две кнопки: «ОК» для перехода в основное окно и «Help» для вызова справочной системы. Как правило, во всех окнах, которые выводятся при ошибке во время выполнения программы, имеются эти кнопки, и далее мы их описывать не будем.

Иногда требуется просмотреть результаты работы программы, которые она выдает на экран до возникновения ошибки. В этом случае можно воспользоваться режимом ViewOutput screen или нажать на функциональную клавишу F4. В результате на экране появится окно, в котором для данной программы будет выведено значение 1. Для того, чтобы перейти в основное окно, нужно нажать любую клавишу.

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

Число с плавающей запятой одинарной точности или просто число с плавающей запятой занимает 4 байта или 32 бита. Первые биты содержат знак порядка, порядок и знак числа, далее сами значащие цифры числа. Понятно, что для самого значения остается не так много цифр, а именно около семи. Число с плавающей точкой двойной точности занимает уже 8 байт или 256 бит. Аналогично часть бит используется для знака порядка, самого порядка числа и знака числа. Для значащих цифр используется около пятнадцати цифр. В переменных находятся только значащие цифры, лидирующие нули не хранятся в памяти. Вместо этого число нормализуется, то есть приводится к специальному виду, в котором имеется одна значащая цифра до точки.

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

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

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

Не всегда значения переменных указываются в программах. Иногда требуется ввести значения с клавиатуры. Для этого существует команда INPUT. Посмотрим на примере, как она работает.

INPUTВведите значение - ”, i1

PRINT i1

В данном примере на экране появится текст «Введите значение - », после которого следует набрать нужное значение. Например, если ввести цифру «1», то она появится на экране. После ввода нужно нажать на клавишу Enter. Для введенного значения 1 результат работы программы показан на рисунке.

Если значение не ввести, а нажать на клавишу Enter, то в переменную i1 занесется значение 0.

Иногда требуется ввести не численное значение, а символы. В этом случае программа будет выглядеть следующим образом:

INPUTВведите значение - ”, i1$

PRINT i1$

В данном примере введено слово «программа», однако, в языке Бейсик русский символ «р» не вводится и поэтому не показывается на экране. Можно ввести этот символ как латинское «р» и тогда он появится на экране. Раньше символы вводились, если они были заключены в кавычки, однако, в современных версиях можно вводить без них. Если ввести сначала несколько пробелов, а потом текст, то пробелы в начале текста не будут введены. Когда существует потребность в воде пробелов, то текст нужно окружить кавычками, как это показано на рисунке.

В примере уже имеется символ «р», так как он набран на латинице и, как видно, пробелы были восприняты программой, так как выделенный текст находится не у левой границы экрана.

Можно вводить не одно значение, а несколько, например:

INPUTВведите значение - ”, i1, i2

PRINT i1, i2

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


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

INPUT i1

PRINT i1

Теперь рассмотрим разницу между сложением двух чисел и двух символов.

PRINT 2+3, “2”+”3”

Как видим, на экране появились два разных значения. Это происходит потому, что в первом случае на экран будет выведено значение арифметической операции сложения (5=2+3), а во втором случае - объединения двух текстовых значений (“2”+”3”=”23”).

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

PRINT 2+3; “2”+”3”

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

i1# = 5.678

PRINT USING "###.####"; i1#;

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

i1# = 5.678: i2#=123.45

PRINT USING "###.####"; i1#;

PRINT USING “###.####”; i2#

Когда формат вывода одинаковый для нескольких значений, то вместо двух последних строчек можно использовать одну: «PRINT USING "###.####"; i1#; i2#».

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

i1# = 5.678: i2#=123.45

PRINT USING "###.#### "; i1#; i2#

Или

i1# = 5.678: i2#=123.45

PRINT USING "###.####"; i1#; PRINT “ “;

PRINT USING “###.####”; i2#

Или

i1# = 5.678: i2#=123.45

PRINT USING " ###.####"; i1#, i2#

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

Задачи. 1. Укажите вид переменных: а. iitem234% б. stopped$ в. styleroom!

г. k5& д. lempad#

2. Ответьте, почему данные имена переменных неправильные? а. Ольга+Олег=Любовь б. 53i1% в. i1-i2% г. print

3. Какие значения будут выведены на экране?

x = 1

y = x + 3.4

z = x + 2 * x

PRINT x, y, z

4. Объясните, в чем разница следующих операторов: а. PRINT 1,2,3 б. PRINT 1;2,3 в. PRINT 1;2;3

5. Вычислите и выведите на экран: а. “результат равен - ”, 3+4*6 б. “результат = ”, 4*9/3 в. “сумма чисел ”, 3+5+11 г. “ результат умножения ”, 3*8*9*11

6. Предположим, что у нас имеются длины сторон прямоугольника. Выведите площадь прямоугольника для сторон: 1. a = 2, b = 4 2. a = 1, b = 5 3. a = 22, b = 34 4. a = 25, b = 47

7. Запросите ввести длину ребра куба и выведите на экран объем куба и площадь поверхностей граней куба.

8. Предположим, что автомобиль едет со скоростью 120 км/час. Составьте последовательность команд, позволяющих вычислить длину пути за 10 секунд.

9. Запросите курс перевода рублей в евро. Сколько евро можно получить за 10 000 рублей?


(переход на следующую страницу)

 

О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О











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

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


 
 
 
Яндекс.Метрика


Каталог@MAIL.RU - каталог ресурсов интернет