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

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

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

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

Добавлен: 22.04.2023

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

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

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

a+(b+c) ≠ (a+b)+c

Приблизительная точность вычислений вещественных чисел типа double составляет 16 десятичных цифр. А в результате операций с четырехбайтовыми плавающими чисами (тип float языка Си) точность вычислений составляет и того меньшую величину примерно 7 десятичных цифр. Из за этого тип float достаточно редко используется на практике. К тому же современные процессоры в основном созданы для работы с восьмибайтовыми вещественными числами и при выполнении операций с четырехбайтовыми он все равно сначала приводит их к восьмибайтовому типу. В программировании не следует пользоваться типом float и в основном пользоваться типом double.

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

-      переполнение – в случае когда порядок результата больше максимально возможного значения. Данная ошибка достаточно часто возникает при умножении больших чисел;

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

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

Запись вещественных констант

Вещественные константы представляют собой десятичные дроби и записываются в двух формах - с фиксированной десятичной точкой или в виде формы с порядком (экспоненциальном виде).

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

1.5,   0.125,   2.,   .23,   0.

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

Числа в экспоненциальной форме записи имеют следующий вид:


Мантисса х 10экспонент

Рассмотрим следующее выражение:

1.5 x 10³

Значение 1.5 является мантиссой;

Степень 3 является экспонентой (порядок числа);

Результатом данного выражения будет являться значение равное 1500

Так же для примера записи в экспоненциальной форме можно привести массу Земли. В десятичной системе счисления масса будет представлена как 5973600000000000000000000 кг. Согласитесь, что это достаточно большое число (естественно данное значение не поместится в файл размером 8 байт). Это число даже трудно читать (там 18 или 20 нулей?). Но, если использовать экспоненциальную запись, массу Земли возможно представить как 5.9736 х 1024кг (данная форма гораздо более удобна для восприятия). Мантисса - это любая положительная вещественная константа в форме с фиксированной точкой или целая константа. Порядок указывает степень числа 10, на которую домножается мантисса. Порядок отделяется от мантиссы буквой "e" (от слова exponent), она может быть прописной или строчной. Порядок может иметь знак плюс или минус, в случае положительного порядка знак плюс можно опускать. Примеры:

1.7e+6      константа эквивалентна  1700000.0

1e-5        константа эквивалентна  0.00001

-.75E3      константа эквивалентна  -750.0

Вещественное значение с плавающей точкой может иметь в памяти компьютера следующее представление:

Рис.3   Битовая структура типа float

Для понимания представления вещественных чисел с плавающей точкой необходимо рассмотреть такую дробь как 1/3, десятичное представление которого выглядит как 0,33333333333333 (и т.д. до бесконечности). Но так как переменные с плавающей запятой могут хранить только определенное количество цифр, ограниченное как правило 4 или 8 байтами, в связи с чем остальные цифры просто отбрасываются. В разряды мантиссы записываются значащие цифры, а в разряды экспоненты заносится показатель степени.

При обозначении чисел с плавающей точкой приняты следующие соглашения: знаковый разряд обозначается буквой s, экспонента - e, а мантисса - m.

5. СИМВОЛЬНЫЕ ПЕРЕМЕННЫЕ

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


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

1.      Диапазон значений кодов. Самая распространенная в мире кодировка ASCII (от слов American Standard Code of Information Interchange - Американский стандартный код обмена информацией) включает в себя диапазон значений кодов от 0 до 127, т.е. требуется семь бит на один символ. Множество современных кодировок включают в себя диапазон кодов от 0 до 255, т.е. один байт на один символ. В последнее время во всем мире осуществляется переход на кодировку Unicode, которая использует коды в диапазоне от 0 до 65535, т.е. 2 байта на символ;

2.      Множество изображаемых символов. К примеру в кодировке ASCII содержатся буквы латинского алфавита, в западноевропейской кодировке к символам присутствующим в ASCII добавляются дополнительные знаки препинания, в частности, разные знаки присущие определенным странам, основанных на латинской графике. Любая русская кодировка содержит кириллицу;

3.      Отображение множества кодов на множество символов. К примеру русская кодировка КОИ-8 (Код обмена информацией восьмибитовый) и "Windows CP-1251", традиционно используютсяе в операционных системах Unix и MS Windows, включают в себя один и тот же диапазон кодов и один и тот же набор символов, но отображения их различны (одни и те же символы имеют разные коды в кодировках КОИ-8 и Windows).

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

1.  Кодировка КОИ-8 (Достаточно старый стандарт, принятый еще в конце 70-х годов XX века). Данная кодировка в основном используется в системе Unix и до последнего времени была стандартом де-факто для русскоязычной электронной почты. Однако в последнее время чаще всего используют кодировку Windows в электронной почте;

2.   Кодировка CP-866, используемая в основном в системе MS DOS. Данная кодировка не удовлетворяет требованиям международных стандартов – например из за совпадения ряда русских букв с кодами символов, используемых для управления передачей по линии. Система DOS постепенно уходит в прошлое Совместно с данной кодировкой;

3.   Кодировка Windows CP-1251, появившаяся значительно позже кодировки КОИ-8, при создании русской версии Windows создатели не стали пользоваться КОИ-8. В последние годы из за широкого распространения операционной системы Windows, кодировка Windows получает все большее распространение;


4.   Кодировка, используемая в компьютерах Apple Macintosh.

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

С переходом на кодировку Unicode данные проблемы должны исчезнуть. Кодировка Unicode включает в себя символы алфавитов всех европейских стран, а так же кириллицу. Большинство существующих компьютерных программ разработано на представлении одного символа в виде одного байта. В связи с чем сейчас достаточно часто применяются промежуточные решения: компьютерные программы используют внутреннее представление символов в кодировке Unicode (данные решения принято в языках Java и C#). Во время записи в файл символы Unicode приводятся в однобайтовую кодировку в соответствии с текущей языковой установкой.

В языке Си символьным переменным соответствует тип char представляющий значение символа, реализуемое одним байтом. Для работы с символами в кодировке Unicode язык C++ использует тип wchar_t, в который под каждый символ отводятся два байта.

сhar – хоть и относится к целочисленным типам данных, но работа с данным типом отличается, чем с целочисленным типам данных.

6. ЛОГИЧЕСКИЕ ПЕРЕМЕННЫЕ И ВЫРАЖЕНИЯ

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

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

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


·    При выполнении операции проверки равенства двух выражений используем двойной знак равенства = =  (обычный знак равенства применяется для другой операции - присваивания);

·    Обозначение неравенства выглядит следующим образом ! = (в языке программирования Си восклицательный знак используется для отрицания);

·    При операции сравнения величин выражений используются знаки больше >, больше или равно >=, меньше <, меньше или равно <=.

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

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

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

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

Далее рассмотрим более сложные логические выражения и логические переменные: "и", "или", "не":

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

5 <= y и y <= 6

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

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

x != 4 или y != 4

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

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

“не” x == 5

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

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

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