Базовые стандартные типы данных
Таблица 1
Имя типа | размер в байтах объектов данного типа | способ кодировки | диапазон значений данных, которые могут быть записаны в объектах данного типа (от … до …) |
char | символ | -128 … 127 (коды ASCII) | |
unsigned char | беззнаковый символ | 0 … 255 | |
short | целое | -32768 … 32767 | |
unsigned int | беззнаковое целое | 0 … 65535 | |
int | целое | -32768 … 32767 | |
long | длинное целое | -2147483648 … 2147483647 | |
unsigned long | беззнаковое длинное целое | 0 … 4294967295 | |
float | действительное | 3.4E-38 … 3.4E+38 | |
double | длинное действительное | 1.7E-308 … 1.7E+308 | |
long double | длинное действительное | 3.4E-4932 … 3.4E+4932 |
Понятие определения объекта
Для того, чтобы в программе можно было работать с объектом, его надо создать, т.е. программист на языке С++ должен дать указание системе на его создание – на выделение памяти требуемого размера и задать способ кодировки информации в этой области памяти. Выделенной памяти должно быть присвоено имя. В этом случае говорят, надо определить (defined)объект.Определить объект можно только один раз!!!!!!!!
Объект, который определен, одновременно и описан (declared).
Инструкция определения объекта выглядит так:
имя_типа [имя_объекта1, имя_объекта2, …,] имя_объектаN ;
Т.е. эта инструкция должна начинаться с имени типа определяемых (определяемого) объектов(а) после которого через запятую следуют имена объектов ( или одно имя, если в этой инструкции определяется только один объект ).
Инструкция обязательно заканчивается точкой с запятой. Нет точки с запятой – нет инструкции!!!
Например:
int nA1,nA2, nA3 = 0 ;
float fltVar ;
char chSymb ;
Здесь записаны три инструкции определения объекта.
Первая создает в памяти три объекта с именами nA1, nA2, nA3, размер каждого из них 2 байта, в область этих объектов можно записывать целые числа из диапазона от -32768 до 32767 (смотри табл .) При создании объектов nA1, nA2 в их область памяти ничего разумного не записано, там могут в данный момент находиться любые целые числа из диапазона объектов типа int.
В область объекта nA3 записано в момент создания число 0. Об объекте nA3 говорят, что объект nA3 инициализирован нулем.
Какие объекты созданы в в следующих двух инструкциях, смотри таблицу 1.
В программе могут быть определены константные объекты, значения которых устанавливаются в момент их создания и не могут быть изменены в процессе выполнения программы. Далее приведены примеры неименованных констант. Их именем является само их значение.
Так определяют целые константные объекты, тип которых long:
3 55 -10 +1 1 1876
Так определяют действительные константные объекты, тип которых double ( в записи таких констант всегда присутствует точка):
3.0 3.55. – 10. -1.1 0.34 .34 -15.12345678
Так определяют символьные константные объекты, тип которых char (их значения взяты в одинарные кавычки – кавычки не являются частью данного, а призваны только для того , чтобы обозначить его значение):
‘3‘ ‘a‘ ‘\n‘ ‘я‘ ‘%‘ ‘}‘
Так определяют символьные константные строки (их тип пока называть не будем, т.к. эти константные объекты являются объектами производного типа), значения этих констант взяты в двойные кавычки – двойные кавычки не являются частью данного, а призваны только для того, чтобы обозначить его значение:
“3“ “abcd“ “123456789“ “-15.12345678“ “я“
“константная строка, в памяти занимает столько байт, сколько в ней символов + 1 байт на символ конца строки“
Символом конца строки является символ ‘\0’, код которого равен 0.
Понятие описания объекта
Каждый объект в программе может быть создан один раз, то есть инструкция его определения может так же появиться только один раз.
Но иногда в программе приходится объект не создавать (он где-то уже создан или гарантировано будет создан), а только описывать (declared) его основные характеристики, для того чтобы система знала, как правильно организовать его обработку. В этом случае используют инструкцию описания объекта.
Вот ее вид:
extern имя_типа [имя_объекта1, имя_объекта2, …,] имя_объектаN ;
Обратите внимание, что инструкция описания объекта повторяет синтаксис инструкции определения объекта, перед которой появляется зарезервированное слово extern.
Модульная структура программы в СИ++. Объект типа функция.
Любой алгоритм можно сформулировать в виде последовательности операций, выполняемых над некоторыми объектами, и записать эту последовательность операций в виде программы. С увеличением алгоритмов и соответственно объема программы невозможно удержать в памяти все ее детали. Возрастает трудоемкость создания таких программ и уменьшается их надежность. К счастью программисты давно используют принципы структурного программирования, разбивая программу на отдельные процедуры, реализующие определенные группы операции алгоритма. Каждая процедура решает свою узкоспециализированную задачу, может обращаться к другим процедурам, а для этого ей необходимо уметь обмениваться данными с другими процедурами. Понятие подобной процедуры в языке С++ конкретизируется в виде объекта типа функции.
Такой стиль программирования, использующий принципы структурного программирования, ведет к повышению степени абстракции программы и к упрощению ее структуры, повышает надежность программы. Разделение программы на объекты-функции позволяет избежать избыточности кода (многократного повторения одного и того же кода), поскольку функцию записывают один раз, а вызывать ее на выполнение можно многократно из разных точек программы. Упрощается процесс отладки, т.к. каждую функцию можно отладить отдельно. Дальнейшим шагом в повышении уровня абстракции является объединение функций и связанных с ними данных в отдельные файлы - исходные модули (они имеют расширение .срр), компилируемые раздельно. Получившиеся в процессе компиляции файлы объектные модули (файлы с расширением .obj), объединяются в исполняемую программу с помощью компоновщика (получают исполняемый файл с расширением .exe).