Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТРПП. ЛЕКЦИИ! Готовимся к экзамену))).docx
Скачиваний:
12
Добавлен:
10.12.2018
Размер:
175.63 Кб
Скачать

Тема 1.5. Функции. Локальные и глобальные переменные. Способы передачи данных.

Цели изучения темы

  • изучить способы описания локальных и глобальных переменных, использования функций;

  • изучить механизмы передачи данных.

1.5.1. Видимость переменных

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

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

Пример 1

Программа содержит два блока.

main()

{

int I=10; \\ начало блока 1

{ \\начало блока 2

int I=20;

cout<<"\n i="<< i;

} \\конец блока 2

cout<<"\n i="<< i;

return 0;

} \\ конец блока 1

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

Поэтому в программе фактически две различные переменные. Результатом выполнения программы будут сообщения:

i=20

i=10

Пример 2

int a;

main()

{

int I;

return 0;

}

a - глобальная переменная, она существует внутри блока main и существовала бы в других блоках, если бы они присутствовали в программе.

I - локальная переменная блока main.

Локальные переменные подразделяются на автоматические и статические.

Автоматические переменные уничтожаются сразу после завершения того блока, в котором они описаны.

Автоматические переменные описываются со словом auto.

auto float с;

По умолчанию все переменные являются автоматическими, поэтому префикс auto можно не указывать.

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

Для описания статических переменных используется префикс static.

Пример

{

static int i=l;

…….

}

Инициализация переменной происходит только при первом обращении к блоку (функции). Если Вы не проинициализируете переменную, то C++ сам обнулит ее при первом обращении.

1.5.2. Определение функции

Функция — это именованная последовательность описаний и операторов, выполняющая какое-либо законченное действие.

Функция может принимать параметры и возвращать значение (результат).

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

Формат определения функции:

ТипРезультата ИмяФункции (СписокПараметров) //заголовок функции

{

... // Тело функции

return Результат;

}

Функция, написанная на C++, имеет следующие свойства:

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

  • имя функции задается по правилам создания идентификаторов языка С++;

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

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

Пример 3

Функция, которая вычисляет .

х,y – вещественные числа, результат будет так же вещественным числом.

Float sqr (float x, float y)

{

float rez;

rez=sqrt (x*x+y*y);

return rez;

}

Пример 4

Функция, которая выводит квадраты чисел от n до тех пор, пока квадрат числа меньше 250:

int kvadrat (int n)

{ int i=n;

while (i*i<=250)

{

cout<<"Квадрат числа "<<i<<" = "<<i * i<<"\n>>;

i++;

}

return 0;

}

Если функция возвращает значение типа int, тип результата можно не указывать:

kvadrat (int n)

{ int i=n;

while (i*i<=250)

{

cout<<"Квадрат числа "<<i<<" = "<<i * i<<"\n>>;

i++;

}

return 0;

}

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

Пример 5

void kvadrat (int n)

{ int i=n;

while (i*i<=250)

{

cout<<"Квадрат числа "<<i<<" = "<<i * i<<"\n>>;

i++;

}

}