Добавлен: 31.03.2023
Просмотров: 193
Скачиваний: 1
Вещественные переменные
Вещественные числа представляются в компьютере в так называемой экспоненциальной, или плавающей, форме. Вещественное число r имеет вид r= +- 2(в степени e) * m. [Дьяконов, В.П. Справочник по расчетам на микрокалькуляторах; М.: Наука. Главная редакция Физико-математической литературы - Москва, 2011. – с.132]
Представление числа состоит из трех элементов
1) Знак числа — плюс или минус. Под знак отводится 1 бит.
2) Показатель степени e, его называют порядком или экспонентой. Экспонента указывает степень двойки, на которую домножается число. Она может быть как положительной, так и отрицательной. Для чисел, меньших единицы. Под экспоненту отводится фиксированное число двоичных разрядов, обычно 8 или 11, расположенных в старшей части двоичного представления числа, сразу вслед за знаковым разрядом. [Дьяконов, В.П. Справочник по расчетам на микрокалькуляторах; М.: Наука. Главная редакция Физико-математической литературы - Москва, 2011. – с.133]
3) Мантисса m представляет собой фиксированное количество разрядов двоичной записи вещественного числа в диапазоне от 1 до 2: 1 <= m <= 2. [Дьяконов, В.П. Справочник по расчетам на микрокалькуляторах; М.: Наука. Главная редакция Физико-математической литературы - Москва, 2011. – с.133]
В языке С вещественным числам соответствуют типы float и double.
Основным типом является тип double, именно он наиболее естественен для компьютера. В программировании следует по возможности избегать типа float (этот тип оправдан в трехмерной компьютерной графике), т.к. его точность недостаточна, а процессор все равно при выполнении операций преобразует его в тип double. Если к большому плавающему числу прибавить очень маленькое, то оно не изменится. [Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2013. – с.303]
a + b = a при b != 0
Для сложения не выполняется закон ассоциативности: a + (b + c) != (a + b) + c
Точность вычислений вещественных чисел типа double составляет 16 десятичных цифр. Кроме потери точности, при операциях с вещественными числами могут происходить и другие неприятности. [Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2013. – с.307]
— Переполнение — когда порядок результата больше максимально возможного значения. Эта ошибка часто возникает при умножении больших чисел; [Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2013. – с.309]
— Исчезновение порядка — когда порядок результата отрицательный и слишком большой по абсолютной величине, т.е. порядок меньше минимально допустимого значения. Эта ошибка может возникнуть при делении маленького числа на очень большое или при умножении двух очень маленьких по абсолютной величине чисел. — вызывают аппаратное прерывание работы процессора; [Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2013. – с.310]
— Деление на ноль — является некорректной операцией. — вызывают аппаратное прерывание работы процессора. [Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2013. – с.310]
Запись вещественных констант
Вещественные константы записываются в двух формах — с фиксированной десятичной точкой или в экспоненциальном виде. 1.2 , 0.725, 1. , .35 , 0 Отметим, что в программировании именно точка, а не запятая используется для отделения дробной части; запятая обычно служит для разделения элементов списка. [Кристиансен, Том; Торкингтон, Натан Perl: библиотека программиста; СПб: Питер - Москва, 2013. – с.327]
Экспоненциальная форма записи вещественной константы содержит знак, мантиссу и десятичный порядок (экспоненту).
Мантисса — это любая положительная вещественная константа в форме с фиксированной точкой или целая константа.
Порядок указывает степень числа 10, на которую домножается мантисса. Порядок может иметь знак плюс или минус.
1.5e + 6 —> 1 500 00.0
1e-4 —> 0.0001-.75e3 —> -750.0
Вещественные типы аппаратно могут иметь два предоставления: вещественные числа с фиксированной точкой и вещественные числа с плавающей точкой. Как правило, по умолчанию компиляторы преобразуют вещественные значения в экспоненциальный формат (формат с плавающей точкой).
Символьные переменные
Значением символьной переменной является один символ из фиксированного набора. Такой набор обычно включает буквы, цифры, знаки препинания, знаки математических операций и различные специальные символы (процент, амперсенд, звездочка, косая черта и др.)
Символы представляются их целочисленными кодами в некоторой фиксированной кодировке. Кодировка определяется тремя параметрами:
1) диапазон значений кодов. например ASCII. стандартный код обмена информацией. от 0 до 127. требует 7 бит на символ. большинство современных кодировок имеют диапазон кодов от 0 до 255, т.е. 1 байт на символ. Unicode, — диапазон от 0 до 65535 — т.е. 2 байта (16 бит) на символ. [Кауфман, В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2011. — с.122]
2) множеством изображаемых символов. [Кауфман, В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2011. — с.122]
3) отображением множества кодов на множество символов. кодировки кои-8, cp-1251, и.т.д. [Кауфман, В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2011. — с.123]
В языке C++ для Unicode существует тип wchar_t в котором под каждый символ отводится 2 байта.
Логические переменные и выражения
Логический тип данных bool, реализуется 1 байтом
Логические или условные выражения используются в качестве условия в конструкциях ветвления «если… то… иначе… конец если» и цикла «пока». [Кауфман, В.Ш. Языки программирования. Концепции и принципы / В.Ш. Кауфман. — М.: ДМК, 2011. — с.203]
Любая операция сравнения имеет два аргумента и вырабатывает логическое значение «истина» и «ложь» (true и false)
Операции сравнения:
— Проверка равенства: ==
— Неравенство обозначается: !=
— Для сравнения величин выражений применяется четыре операции: больше > ; меньше < ; больше или равно >= ; меньше или равно <=
x == 0 // истина, если значение x равно 0
0 != 0 // ложь
3 >= 2 // истина
Логические выражения
0 < = x && x <= 1x != 0 or y != 0
1.2. Виды и типы переменных
В программировании переменная задается именем, определяющим область оперативной памяти компьютера, куда во время работы программы можно занести и хранить в закодированном виде некоторое значение (целое или вещественное число, последовательность символов, логическое значение), которым при необходимости можно пользоваться и которое можно изменять. Таким образом, переменную можно представить себе как ящик с какими-либо данными, на котором написано его название. [Доорс, Дж.; Рейблейн, А.Р.; Вадера, С. Пролог - язык программирования будущего; М.: Финансы и статистика - , 2011. – с.46]
Основными характеристиками переменной являются:
· Имя - переменные задаются именами, определяющими область памяти, в которой хранится значение переменной.
Имя любой переменной уникально и не может изменяться в процессе выполнения программы. Имя переменной должно обязательно начинаться с буквы. Например: А, MAX, t1
· Тип – тип переменной определяется типом данных, которые могут быть значениями переменных.
· Значение - значениями переменных могут быть данные различных типов (целое или вещественное число, последовательность символов, логическое значение и т.д.). Например: 5, -3.14 (запятая в десятичных дробях заменяется точкой), «результат» (текст - это любой набор знаков, взятый в кавычки).
Тип переменной определяет размер области памяти для хранения переменной и какие операции допустимы с этой переменной (например, над числовыми переменными возможны арифметические операции, над строковыми – операции преобразования символьных строк, над логическими – логические операции).
Типы переменных
|
Тип переменной |
Возможные значения |
Объем занимаемой памяти |
Обозначение в QBasic |
Обозначение в Visual Basic |
|
Числовая целого типа |
Целые числа от -32768 до 32767 |
2 байта |
А% |
intA |
|
Числовая вещественного типа |
Десятичные числа одинарной точности |
4 байта |
А |
sngA |
|
Десятичные числа двойной точности |
8 байтов |
А! |
dblA |
|
|
Символьная |
Строка символов |
1 байт на каждый символ |
А$ |
strA |
|
Логическая |
Логическое значение True или False |
2 байта |
blnA |
Источник:Новичков, В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2007. — с.98.
Значение переменной, занесенное и хранимое в ячейке с ее именем, может быть различным по типу числом (целым или действительным) либо символьным текстом. В соответствии со значением переменные называются целыми, действительными, символьными. Очевидно, что операции, которые можно произвести с числами, нельзя осуществить с символьным текстом Объем памяти для хранения разных по типу значений тоже потребуется различный. Это ясно уже потому, что при хранении целого числа занимать место под нулевую дробную часть было бы нерационально. Поэтому в некоторых языках программирования предусмотрены операторы, объявляющие тип переменной с указанным именем, например integerA. Следовательно, для хранения значений А в этом случае будет отведено столько места, чтобы поместить знак и собственно целую часть. В других языках программирования прямо в имени переменной употребляют значки (символы), чтобы указать транслятору, сколько может понадобиться места под хранение значения данной переменной (неявное указание типа). Например, имя переменной А% содержит указание, что ее значением может быть только целое число, и только для него хватит места, отводимого в оперативной памяти. Более того, указание типа данных, которые могут стать значениями переменной, с помощью правил задания имени переменной позволяет компьютеру контролировать правомерность требуемых по отношению к переменной операции. Так, если имя переменной А%, то по отношению к ее значению будет ошибкой употребление команды «определить длину значения», которая уместна лишь для символьного текста. А если имя переменной содержит указание на вещественный или целый тип ее допустимого значения, то в ячейку с этим именем нельзя занести символьный текст. Ограничения, налагаемые на операции со значениями в зависимости от их типа, следовательно, требуют соответствующих ограничений на операции с именами переменных. [Новичков, В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2007. — с.104]
Приведем несколько поясняющих примеров.
Выполнение программы будет прервано с выдачей сообщения об ошибке из-за несоответствия типов, если встретится команда, где будут одновременно присутствовать имена переменных или константы символьного типа и вещественного и/или целого.
На работе программы и получаемом результате никак не отразится занесение целого числа в ячейку, предназначенную, в соответствии с именем переменной, для значений вещественного типа. В этом случае автоматически будет образована нулевая дробная часть, а участвовать целые и действительные числа могут в одинаковых операциях (что соответствует известному включению области целых чисел в область действительных).
Если же действительное число станет значением переменной целого типа, то из-за отсутствия места для хранения дробной части последняя просто будет отброшена (произойдет преобразование типа значения), что в этом случае равносильно потере точности расчета. Это может оказаться незамеченным при получении результата, так как такое несоответствие типов значения и переменной не вызывает прерывания в работе программы.
Вывод
Следовательно, имя переменной не только удобным образом заменяет в программе числовой адрес ячейки в ОЗУ, а в случае индексированных переменных обязывает программиста позаботиться о выделении непрерывной области, но и указывает своим типом, какой объем памяти выделить под хранение ее значений, а также несет смысловую нагрузку и указывает, какие операции с этой переменной допустимы.
2. Практическое использование переменных в программировании
2.1. Основные элементы программирования
Знакомство с основными элементами программирования VisualBasic начинается с понятия переменной. Кто уже знаком с этим понятием из системы программирования QBasic, легко обнаружит отличия, которые переменные имеют в VisualBasic. [Новичков, В.С. Начала программирования на языке QBASIC. Учебное пособие / В.С. Новичков, А.Н. Пылькин. — М.: ГЛТ, 2007. — с.17]
1. Переменные, оператор присваивания
В языках программирования одним из важнейших понятий является понятие переменной.