Файл: Понятие переменной в программировании. Виды и типы переменных.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 230

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Целочисленной переменной, в зависимости от разрядности компьютера, отводится в памяти компьютера один, два, четыре или восемь байтов. Она может хранить числа от нуля до 2 в 64-й степени минус 1. Таким образом, максимальное число которое может храниться в целочисленной переменной, равно 18,446,744,073,709,551,615 (18 квинтиллионов 446 квадриллионов 744 триллиона 073 миллиарда 709 миллионов 551 тысяча 615).

Для целочисленных переменных применимы следующие операции:

Операция

Описание операции

+

Сложение

-

Вычитание

*

Умножение

/

Деление

%

Остаток от деления

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

a + b = b + a , ab = ba

(a + b) + c = a + (b + c) , (ab)c = a(bc) a(b + c) = ab + ac

В языке С целым числам соответствуют типы int, char, bool

Вещественные переменные

Вещественные переменные бывают: с фиксированной точкой, то есть хранятся знак и цифры целой и дробной частей (в настоящее время в языках программирования реализуются редко), и с плавающей точкой, то есть вещественное число r имеет вид r= +- 2(в степени e) * m,

Число с плавающей запятой состоит из следующих частей:

  • знак мантиссы (указывает на отрицательность или положительность числа). Под знак отводится 1 бит.
  • показатель степени e, его называют порядком или экспонентой. Экспонента указывает степень двойки, на которую домножается число. Экспонента может быть как положительной, так и отрицательной (для чисел, меньших единицы). Под экспоненту отводится фиксированное число двоичных разрядов, обычно восемь или одиннадцать, расположенных в старшей части двоичного представления числа, сразу вслед за знаковым разрядом.
  • мантисса m представляет собой фиксированное количество разрядов двоичной записи вещественного числа в диапазоне от 1 до 2: 1 <= m<2

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


В языке С вещественным числам соответствуют типы float и double.

Элемент типа float занимает 4 байта, в которых один бит отводится под знак, восемь - под порядок, остальные 23 - под мантиссу (на самом деле, в мантиссе 24 разряда, но старший разряд всегда равен единице, поэтому хранить его не нужно). Тип double занимает 8 байтов, в них один разряд отводится под знак, 11 - под порядок, остальные 52 - под мантиссу. На самом деле в мантиссе 53 разряда, но старший всегда равен единице и поэтому не хранится. Поскольку порядок может быть положительным и отрицательным, в двоичном коде он хранится в смещенном виде: к нему прибавляется константа, равная абсолютной величине максимального по модулю отрицательного порядка. В случае типа float она равна 127, в случае double - 1023.

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

Несколько примеров представления вещественных чисел в плавающей форме:

  1. 1.0 = +20*1.0

Здесь порядок равен 0, мантисса - 1. В двоичном коде мантисса состоит из одних нулей, так как старший разряд мантиссы (всегда единичный) в коде отсутствует. Порядок хранится в двоичном коде в смещенном виде, он равен 127 в случае float и 1023 в случае double ;

  1. 3.5 = +21*1.75

Порядок равен единице, мантисса состоит из трех единиц, из которых в двоичном коде хранятся две: 1100...0 ; смещенный порядок равен 128 для float и 1024 для double ;

  1. 0.625 = +2-1*1.25

Порядок отрицательный и равен -1, дробная часть мантиссы равна 0100...0 ; смещенный порядок равен 126 для float и 1022 для double ;

  1. 100.0 = +26*1.5625

Порядок равен шести, дробная часть мантиссы равна 100100...0 ; смещенный порядок равен 133 для float и 1029 для double.

При выполнении сложения двух положительных плавающих чисел происходят следующие действия:

  1. выравнивание порядков. Определяется число с меньшим порядком. Затем последовательно его порядок увеличивается на единицу, а мантисса делится на 2, пока порядки двух чисел не сравняются. Аппаратно деление на 2 соответствует сдвигу двоичного кода мантиссы вправо, так что эта операция выполняется быстро. При сдвигах правые разряды теряются, из-за этого может произойти потеря точности (в случае, когда правые разряды ненулевые);
  2. сложение мантисс;
  3. нормализация: если мантисса результата стала равна или превысила двойку, то порядок увеличивается на единицу, а мантисса делится на 2. В результате этого мантисса попадает в интервал 1 <= m<2. При этом возможна потеря точности, а также переполнение, когда порядок превышает максимально возможную величину.

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

Символьные переменные

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

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

Кодировка определяется тремя параметрами:

1) диапазон значений кодов. например ASCII. стандартный код обмена информацией. от 0 до 127. требует 7 бит на символ. большинство современных кодировок имеют диапазон кодов от 0 до 255, т.е. 1 байт на символ. Unicode, — диапазон от 0 до 65535 — т.е. 2 байта (16 бит) на символ.

2) множеством изображаемых символов.

3) отображением множества кодов на множество символов. кодировки кои-8, cp-1251, и тд.

В языке C++ для Unicode существует тип wchar_t в котором под каждый символ отводится 2 байта.

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

Логические переменные и выражения

В языке С++ определен логический тип данных bool, реализуемый одним байтом.

Данные этого типа имеют два значения: истина (true) и ложь (false). К ним могут применяться логические операции. Логические, или условные, выражения используются в качестве условия в конструкциях ветвления "если ... то ... иначе ... конец если" и цикла "пока". В первом случае в зависимости от истинности условия выполняется либо ветвь программы после ключевого слова "то", либо после "иначе"; во втором случае цикл выполняется до тех пор, пока условие продолжает оставаться истинным.

В некоторых языках, например С++, является подтипом числового типа, при этом ложь = 0, истина = 1.

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

В языке С++:

  • операция проверки равенства двух выражений обозначается двойным знаком равенства: == (в С++ не используется обычный знак равенства во избежание путаницы, поскольку часто знак равенства применяется для обозначения операции присваивания);
  • неравенство обозначается: != (в С++ восклицательный знак используется для отрицания);
  • Для сравнения величин выражений применяется четыре операции: больше > ; меньше < ; больше или равно >= ; меньше или равно <=;

Несколько примеров логических выражений:

x == 0 - выражение истинно, если значение переменной x равно нулю, и ложно в противном случае;

0!= 0 - выражение ложно;

3>= 2 - выражение истинно.

Из элементарных логических выражений и логических переменных можно составлять более сложные выражения, используя три логические операции "и", "или", "не":

  1. результат логической операции "и" истинен, когда истинны оба ее аргумента. Например, логическое выражение

0 <= x и x <= 1

истинно, когда значение переменной x принадлежит отрезку [0, 1]. Логическую операцию "и" называют также логическим умножением или конъюнкцией; в языке Си логическое умножение обозначается двойным амперсандом &&;

  1. результат логической операции "или" истинен, когда истинен хотя бы один из ее аргументов. Например, логическое выражение

x != 0 или y != 0

ложно в том и только том случае, когда значения обеих переменных x и y равны нулю. Логическую операцию "или" называют также логическим сложением или дизъюнкцией; в Си логическое сложение обозначается двойной вертикальной чертой ||;

  1. в отличие от логических операций "и" и "или", логическая операция "не" имеет только один аргумент. Ее результат истинен, когда аргумент ложен, и, наоборот, ложен, когда аргумент истинен. Например, логическое выражение

не x == 0

истинно, когда значение переменной x отлично от нуля. Логическая операция "не" называется логическим отрицанием (иногда негацией); в Си логическое отрицание обозначается восклицательным знаком "!".

2. Практическое использование переменных в программировании

2.1 Основные элементы программирования

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

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

Для использования переменной необходимо выполнить три действия:

  1. Объявить переменную. Сообщить программе имя и тип переменной, которую требуется использовать.
  2. Присвоить переменной значение. Передать переменной значение для хранения.
  3. Непосредственно использовать переменную. Извлечь значение, содержащееся в переменной, и использовать его в программе.

Синтаксис определения переменной выглядит следующим образом:

тип_переменной имя_переменной;

Простейшее определение переменной:

int age; // мы объявили переменную age типа int

Здесь определена переменная age, которая имеет тип int. Поскольку определение переменной представляет собой инструкцию, то после него ставится точка с запятой.

Имена переменных могут быть любыми. Однако есть несколько общих правил их написания:

  1. Желательно давать переменным осмысленные имена, говорящие о назначении данных, на которые они ссылаются.
  2. Имя переменной не должно совпадать с командами языка (зарезервированными ключевыми словами).
  3. Имя переменной должно начинаться с буквы или символа подчеркивания (_).

Переменная должна быть объявлена до ее использования.

При попытке использовать переменную, которая не была объявлена, код не будет компилироваться, о чем вас предупредит компилятор.

Вот несколько примеров

// Правильные переменные

_cat = "кот";

Kitten3 = "Котенку 3 года";

Cat_Name = "Кота зовут Рыжик";

// Неправильные переменные

3Kitten = "кошка"; //начинается с цифры

Cat,Me = "Meow"; //нельзя использовать запятую

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

int Cats, Kittens, Dogs;

Кроме того, можно сразу инициализировать объявляемую переменную

int Cats = 7;

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

int widthSquare = 5; // ширина квадрата

// динамически инициализируем переменную perimeter

int perimeter = widthSqare * 4;

После определения переменной можно присвоить некоторое значение: Связь между данными и переменными устанавливается с помощью знака =. Такая операция называется присваиванием (инициализацией).

int x;

x = 2

То есть в данном случае переменная x (левый операнд) будет иметь значение 2 (правый операнд).

При этом операции присваивания имеют правосторонний порядок, то есть выполняются справа налево. И, таким образом, можно выполнять множественное присваивание:

int a, b, c;

a = b = c = 34;

Здесь сначала вычисляется значение выражения c = 34. Значение правого операнда - 34 присваивается левому операнду с. Далее вычисляется выражение b = c: значение правого операнда c (34) присваивается левому операнду b. И в конце вычисляется выражение a = b: значение правого операнда b (34) присваивается левому операнду a.