Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Programmirovanie_na_S__Ch1_Strukturnoe_i_modul.doc
Скачиваний:
14
Добавлен:
22.02.2015
Размер:
553.98 Кб
Скачать

Структура программы

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

тип_возвращаемого_результата имя_функции ([параметры])

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

}

В определении функции следует отметить следующие моменты:

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

2. Тело функции является блоком и заключается в фигурные скобки.

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

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

Пример. Структура программы, содержащей функции main, f1 и f2.

Директивы препроцессора

Описания

int main ( ) {

операторы главной функции

}

int f1 ( ) {

операторы функции f1

}

int f2 ( ) {

операторы функции f2

}

Программа может состоять из нескольких модулей (исходных файлов).

Переменные и выражения Переменные

Переменная − это именованная область памяти, в которой хранятся данные определенного типа. Перед использованием переменная должна быть описана.

Общий вид оператора описания переменных:

[класс памяти] [const] тип имя [инициализатор];

Квадратные скобки [ ] указывают на необязательный параметр, т. е. параметр, который может опускаться. Класс памяти может принимать значения: auto, extern, static и register (см. далее). Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют константой. При описании переменной можно присвоить начальное значение, это называется инициализацией. Инициализатор можно записывать либо со знаком равенства, либо в круглых скобках. Константа должна быть инициализирована при объявлении.

Примеры

short int a=1;

const char c='c';

char s, sf='f'; //инициализация относится только к sf

int t(54);

float d=0.22, x(3), sum;

!!! Если тип инициализирующего значения не совпадает с типом переменной, выполняются преобразования типа по определенным правилам (см. далее).

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

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

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

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

Время жизни может быть постоянным (в течение выполнения всей программы) и временным (в течение выполнения блока).

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

Для задания класса памяти используются следующие спецификаторы:

auto − автоматизированная переменная. Время жизни от начала до конца блока;

extern − переменная определена в другом месте программы (в другом файле или дальше по тексту);

static − статическая переменная. Время жизни постоянное;

register − аналогично auto.

Примеры

int a; // 1 глобальная переменная

int main ( ) {

int b; // 2 локальная переменная

extern int x; // 3 определена в другом месте

static int c; // 4 статическая локальная

a=1; // 5 присваивание глобальной переменной

int a; // 6 локальная переменная а

a=2; // 7 присваивание локальной переменной а

return 0;

}

int x=4; // 8 определение и инициализация х

!!! Имя переменной должно быть уникальным в своей области действия (т. е. в одном блоке нельзя описать две переменные с одинаковыми именами).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]