- •Федеральное агентство связи
- •Базовые стандартные типы данных
- •Определение объекта типа функции.
- •Проблема обмена информацией (данными) между функциями.
- •Передача информации в функцию через параметры по значению. Возврат значения одного результата из функции через возвращаемое значение.
- •Прототип (описание) функции. Понятие глобального объекта.
- •Передача параметров по ссылке.
- •Обмен данными между функциями через глобальные объекты.Функции без возвращаемого значения. Функции без параметров.
- •Смешанный обмен данными между функциями
- •Программы, состоящие из двух и более файлов.
- •Void countX (float c, float& X); // описанa функция countX для расширения ее // области видимости. Ее определение
- •Приложение 1
Базовые стандартные типы данных
Таблица 1
Имя типа |
размер в байтах объектов данного типа |
способ кодировки
|
диапазон значений данных, которые могут быть записаны в объектах данного типа (от … до …) |
char |
1 |
символ |
-128 … 127 (коды ASCII) |
unsigned char |
1 |
беззнаковый символ |
0 … 255 |
short |
2 |
целое |
-32768 … 32767 |
unsigned int |
2 |
беззнаковое целое |
0 … 65535 |
int |
2 |
целое |
-32768 … 32767 |
long |
4 |
длинное целое |
-2147483648 … 2147483647 |
unsigned long |
4 |
беззнаковое длинное целое |
0 … 4294967295 |
float |
4 |
действительное |
3.4E-38 … 3.4E+38 |
double |
8 |
длинное действительное |
1.7E-308 … 1.7E+308 |
long double |
10 |
длинное действительное |
3.4E-4932 … 3.4E+4932 |
Понятие определения объекта
Для того, чтобы в программе можно было работать с объектом, его надо создать, т.е. программист на языке С++ должен дать указание системе на его создание – на выделение памяти требуемого размера и задать способ кодировки информации в этой области памяти. Выделенной памяти должно быть присвоено имя. В этом случае говорят, надо определить (defined) объект. Определить объект можно только один раз!!!!!!!!
Объект, который определен, одновременно и описан (declared).
Инструкция определения объекта выглядит так:
имя_типа [имя_объекта1, имя_объекта2, …,] имя_объектаN ;
Т.е. эта инструкция должна начинаться с имени типа определяемых (определяемого) объектов(а) после которого через запятуюследуют имена объектов ( или одно имя, если в этой инструкции определяется только один объект ).
Инструкция обязательно заканчивается точкой с запятой. Нет точки с запятой – нет инструкции!!!
Например:
intnA1, 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).