Типы с плавающей точкой (float, double и long double) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Типы с плавающей точкой (float, double и long double)



Стандарт С++ определяет три типа данных для хранения вещественных значений: float, double и long double.

Типы данных с плавающей точкой хранятся в памяти компьютера иначе чем целочисленные. Внутренние представление вещественного числа состоит из двух частей – мантиссы и порядка. Мантисса – это число, большее 1.0, но меньшее 2.0. поскольку старшая цифра мантиссы всегда равна 1, она не хранится.

Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка – его диапазон.

Спецификатор long перед именем типа double указывает, что под величину отводится 10 байтов.

Константы с плавающей точкой имеют по умолчанию тип double. Можно явно указать тип константы с помощью суффиксов F, f (float) и L, l (long).

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

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

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

Тип void

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

 

Понятие структур. Описание структур.

 

Структуры – это не что иное, как классы у которых разрешен доступ ко всем ипх элементам (доступ к определенным атрибутам класса может быть ограничен, о чем мы узнаем в лекции).

Пример: struct Record{

int number;

char name[20];

};

Так же, как и для классов, операция “.” обозначает обращение к элементу структуры.

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

struct{

double x;

double y;

} coord;

Обратиться к атрибутам переменной coord можно coord.x и coord.y.

Битовые поля.

В структуре модно определить размеры атрибута с точностью до бита. Традиционно структуры используются в системном программировании для описания регистров аппаратуры. В них каждый бит имеет свое значение. Не менее важной является возможность экономии памяти – ведь минимальный тип атрибута структуры это байт (char), который занимает 8 битов. До сих пор, несмотря на мегабайты и даже гигабайты оперативной памяти, используемые в современных компьютерах, существует немало задач, где каждый бит на счету.

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

Одна из функций должна иметь main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий вид:

Тип_возвращаемого_значения имя ([параметры]){

операторы, составляющие тело функции}

Как правило функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип.

ü Если функция не должна возвращать значение указывается тип void;

ü Тело функции является блоком и следовательно заключается в фигурные скобки;

ü Функции не могут быть вложенными;

ü Каждый оператор заключается точкой запятой (кроме составного оператора).

Программа может состоять из нескольки модулей.

Несколько предварительных замечаний о вводе/выводе.

Способы ввода/вывода:

· Int scanf(const char*format, …) //ввод

· Int printf(const char*format, …) //вывод

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

 

Операторы выделения и освобождения памяти для переменной и массива.

 

Оператор «выражение»

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

i++; //выполняется операция инкремента

a*=b+c; //выполняется умножение с присваиванием
fun(i,k); //выполняется вызов функции

Операторы ветвления

Условный оператор if

Условный оператор if используется для разветвления процесса вычислений на два направления.

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

Одна из ветвей может отсутствовать, логичнее опускать вторую ветвь вместе с ключевым словом else.если в какой-либо ветви требуется выполнить несколько операторов, их необходимо заключить в блок иначе компилятор не сможет понять, где заканчивается ветвление. Блок может содержать любые операторы, в том числе описания и другие условные операторы. Необходимо учитывать что переменная, описанная в блоке, вне блока не существует.

Тип переменных выбирается исходя из их назначения. Координаты выстрела нельзя представить целыми величинами, так как это приведет к потере точности результата, а счетчик очков не имеет смысла описывать как вещественный. Даже такую простую программу можно еще упростить с помощью промежуточной переменной и записи условия в виде двух последовательных, а не вложенных операторов if (обратите внимание, что в первом варианте значение переменной kol присваивается ровно один раз а во второй – от одного до трех раз в зависимости от выполнения условий):

#include <iostream.h>

Int main(){

Cout <<”введите координаты выстрела\n”;

Cin >>x>>y;

Temp = x*x+y*y;

Kol = 0;

If (temp < 4) kol = 1;

If (temp < 1) kol = 2;

Cout <<”\n очков” << kol;

Return 0;}

Если какая-либо переменная используется только внутри условного оператора, рекомендуется объявить ее внутри скобок, например:

If (int I = fun(t)) a -=I; else a +=I;

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

Оператор switch

Оператор switch (переключатель) предназначен для разветвления процесса вычислений на несколько направлений.

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

Ветви из переключателя обычно выполняется с помощью операторов break или return. Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while, do. Оператор return выполняет выход из функций, в теле которой он записан.

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

Операторы цикла

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

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

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

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

Цикл завершается если условие его продолжения не выполняется. Возможно принудительное завершение как текущей итерации так и цикла в целом. Для этого служат операторы break, continue, return, goto. Передавать управление извне внутрь цикла не рекомендуется.

Цикл с предусловием (while)

Цикл с предусловием реализует структурную схему и имеет вид:

While (выражение) оператор

Выражение определяет условие повторения тела цикла представленного простым или составным оператором. Выполнение оператора начинается с вычисления выражения. Если оно истинно выполняется оператор цикла. Если при первой проверке выражение равно false цикл не выполнится ни разу. Тип выражения должно быть арифметическим или проводимым к нему. Выражение вычисляется перед каждой итерацией цикла.

Распространенный прием программирования – организация бесконечного цикла с заголовком while (true) либо while (1) и принудительным выходом из тела цикла по выполнению какого-либо условия.

В круглых скобках после ключевого слова while можно вводить описание переменной.



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 544; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.240.178 (0.012 с.)