Переменные часть 1
Понятие битов и байтов:
Если представить память компьютера как огромный лист бумаги в клеточку, то вот отдельные клеточки будут битами. В каждом бите может быть значение равное либо 0 либо 1. Почему не может быть 2 , 3 , 4 ? Это связано с устройством работы процессора. Ниже я для понимания предлагаю посмотреть на рисунок простой микросхемы (ведь процессор это тоже микросхема, только выводов у него в несколько раз больше).
И так у нее, как вы можете заметить, с каждой стороны по 8 лапок. Каждая лапка олицетворяет бит. То есть на одну лапку можно подать электрический сигнал 1 или снять 0 . С другой стороны 8 лапок (бит) - это байт. И в зависимости от того в каком соотношении на лапках микросхемы располагаются электрические сигналы, кодируются различные цифры и буквы. Например текстовая информация кодируется так:
цифра 1 кодируется как 00110001
буква R кодируется как 01010010
Если вы посчитаете сколько возможных состояний может быть, то поймете что байт вмещает 256 состояний (от -128 до 127) и этого вполне хватает чтобы закодировать русские, латинские символы, числа от 0 до 9, а так же специальные символы(* ; . " и др.) . Конечно дальнейшее устройство микросхем мы разбирать не будем(тем более, что устройство именно этой микросхемы чуточку другое), все это я привел для того чтобы получить частичку фундаментальных знаний. И как для раздумий: все наверно слышали про азбуку Морзе, так вот там тоже только два состояния (- .) , но так же кодировали буквы, цифры и др. Знаю, что это нудно, но не переживайте, если что-то не поняли, просто примите что это так. На начале обучения языку, у вас вряд ли возникнет необходимость работы с такими маленькими величинами как биты, но с байтами будете сталкиваться постоянно.
Понятие переменных:
Переменная - это область памяти, в которой располагается определенное значение (1 или несколько байтов). Как видно из названия, значения может быть переменным(меняться). В программировании трудно обойтись без переменных, ну разве что в очень маленьких программах. В обиходе вы часто встречаетесь с подобием переменных. К примеру кошелек вашей жены или мамы содержит в разные дни разное кол-во денег, так вот кошелек в данном случае это сама переменная, а кол-во денег это меняющееся значение. Сама переменная состоит из имени и значения. Имя может быть любым, состоящим из символов латиницы, цифр, знаков подчеркивания. Но есть ограничения:
- Имя не должно начинаться с цифры
- Имя не должно иметь сходство со встроенными операторами или командами
языка. То есть имя Dim создать нельзя.
Имя имеет свой определяемый тип. Пример:
Dim Alpha As Byte = 45
Здесь мы объявили переменную с именем Alpha и типом Byte. Слова Dim и As являются служебными операторами. Оператор Dim в связке с As , вы будете использовать практически в каждой программе. Dim буквально означает (ОБЪЯВИТЬ). Служебное слово As означает (КАК). Это как бы помощник для Dim и для вас, чтобы лучше воспринимать исходный текст программы. Справа после знака равно лежит значение переменной. Если буквально прочитать, то получится следующее:
Dim Alpha As Byte = 45
Объявить переменную Alpha как байтовую и присвоить ей значение 45
Или похожими словами:
Объявляем переменную Alpha с типом Байт и значением 45
Или так:
Выделить память в размере 1 байт для переменной Alpha и занести туда значение 45
Язык FreeBasic не различает регистр букв для имен переменных, функций, встроенных операторов. То есть записи ниже эквивалентны:
Dim Alpha As Byte = 45 Dim alpha As Byte = 45 Dim alPha As Byte = 45
В примере выше мы объявили переменную и сразу присвоили ей значение, но это является необязательным, используя оператор Dim. То есть мы могли записать так:
Dim Alpha As Byte
А потом в любом месте программы присвоить ей значение, только там уже не нужно объявления типа и операторов Dim и As
Alpha = 45
При объявления стандартных переменных, компилятор FreeBasic автоматически выделяет под них память и заносит туда 0 . У многих других языков программирования в переменных при объявлении может лежать все что угодно, или как говорят содержит мусор! Переменная объявляется только один раз, а дальше просто используется ее имя для присваивания и получения значений. Пример:
Dim Beta As Integer Beta = 10000 Print Beta Sleep
Вот мы и написали уже первую работающую, хоть и бесполезную программу, которую легко можно компилировать. Разберем ее по косточкам:
- Объявляем переменную Beta с типом Integer (integer вмещает 4 байта на 32-bit системе)
- Присвоили переменной Beta значение 10000
- Командой Print запустили консоль и вывели туда значение переменной Beta
- Остановили выполнение программы командой , до нажатия любой клавиши.
Внимание! Язык FreeBasic любое кол-во пробелов между операторами и переменными и т. п. воспринимает как один пробел:
Dim value As Short Dim value As Short
Записи эквивалентны!
Теперь поговорим о типах переменных. Как вы могли прочитать выше Byte вмещает 256 состояний, или если проще числа от -128 до 127. То есть число 128 в него уже не войдет, произойдет переполнение. Но переполнение в программировании не похоже на переполнение стакана с чаем. Здесь действует другое правило:
Dim A As Byte =127 A=A+1 Print A Sleep ' результат будет -128
Dim A As Byte =127 A=A+2 Print A Sleep ' результат будет -127
Dim A As Byte =127 A=A+3 Print A Sleep ' результат будет -126
То есть для переменной при переполнении как бы получается ходьба по кругу. А что делать когда нужно чтобы в переменной помещалось число больше 127 ? Правильно, применить другой тип, который будет вмещать больше чем тип Byte. Давайте посмотрим на основные типы данных для переменных в таблице:
Тип | Размер(в битах) | Формат | Мин. значение | Макс Значение |
---|---|---|---|---|
BYTE | 8 | Целое число со знаком | -128 | +127 |
UBYTE | 8 | Целое число без знака | 0 | +255 |
SHORT | 16 | Целое число со знаком | -32768 | +32767 |
USHORT | 16 | Целое число без знака | 0 | 65535 |
INTEGER | 32/64 [*] | Целое число со знаком | [*]32bit: -2147483648, 64bit: -9223372036854775808 | [*]32bit: +2147483647, 64bit: +9223372036854775807 |
UINTEGER | 32/64 [*] | Целое число без знака | 0 | [*]32bit: +4294967295, 64bit: +18446744073709551615 |
LONG | 32 | Целое число со знаком | -2147483648 | +2147483647 |
ULONG | 32 | Целое число без знака | 0 | 4294967395 |
LONGINT | 64 | Целое число со знаком | -9223372036854775808 | 9223372036854775808 |
ULONGINT | 64 | Целое число без знака | 0 | +18446744073709551615 |
SINGLE | 32 | С плавающей точкой | +/-2.802597 E-45 | +/-3.402823 E+38 |
DOUBLE | 64 | С плавающей точкой | +/-4.490656458412465 E-324 | +/-1.797693134862310 E+308 |
[*] Integer и UInteger типы данных различаются в зависимости от платформы и зависят от размера указателей. |
В этой таблице нет строковых типов, но в отдельной статье мы так же
рассмотрим их.
Некоторым читателям будет казаться, а почему бы не использовать сразу большие
числа, зачем возится с Byte, Short . Все дело в конечности памяти компьютера.
Может так случится, что ее не хватит и ваша программа либо зависнет, либо просто
вылетит с ошибкой.
И закончив первое знакомство с переменными, хочется обратить ваше внимание на то, что в FreeBasic есть оператор Var , способный объявлять переменные без их типов (точнее типы он определяет сам). Но при работе с ним, значение нужно заносить сразу! Пример:
Var a=1111111 Var b=3.14
Всего доброго!
содержание | назад | вперед