
- •Этапы создания исполняемой программы
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Структура программы
- •Вывод данных
- •Ввод данных
- •Вопросы для самоконтроля
- •Тема 1.1(2). Типы данных. Константы и переменные
- •Основные (стандартные) типы данных
- •Область действия переменных
- •1.3.1. Математические операции
- •1.3.2. Простое присваивание
- •1.3.3. Составное (сложное) присваивание
- •1.3.4. Операция приведения (преобразования) типов
- •1.3.5. Операции отношения
- •1.3.7. Операция sizeof
- •1.3.8. Операция "запятая" (,)
- •1.3.9. Условная операция (?:)
- •1.3.10. Указатель. Определение адреса переменной
- •1.3.11. Директива define
- •1.3.12. Директива include
- •1.3.13. Примеры программ
- •1.3.14. Вопросы для самоконтроля
- •Тема 1.3. Программирование алгоритмов различной структуры
- •Базовые конструкции структурного программирования
- •Операторы ветвления
- •1.4.1. Условный оператор if
- •If (условие) оператор_1; else оператор_2;
- •If (условие) оператор_1;
- •1.4.2. Оператор выбора switch
- •Операторы цикла
- •1.4.3. Оператор while
- •1.4.4. Оператор do...While
- •1.4.5. Оператор for
- •1.4.6. Функция exit(), операторы break, continue, return
- •Стандартные математические функции
- •Тема 1.4. Ввод-вывод данных
- •Функции get() и put()
- •Функция getch()
- •Функция printf
- •Функция sprintf()
- •Тема 1.5. Функции. Локальные и глобальные переменные. Способы передачи данных.
- •1.5.1. Видимость переменных
- •1.5.2. Определение функции
- •1.5.3. Функция main
- •1.5.4. Вызов функции
- •1.5.5. Способы передачи данных
- •1.5.6. Возвращаемые значения функции
- •1.5.7. Использование прототипов функций
- •Тема 1.6(1). Массивы и указатели
- •Объявление массива
- •Доступ к элементам массива
- •Многомерные массивы
- •Указатели
- •Тема 1.6(2). Структуры и строки
- •1.6.1. Структуры
- •1 Способ – по шаблону.
- •2 Способ – при объявлении (описании) шаблона.
- •1.6.2. Способы реализации строк
- •1.6.3. Строковые константы
- •1.6.4. Указатель на символьную строку
- •1.6.5. Массив символов
- •1.6.6. Некоторые функции для работы со строками
- •1.6.7. Некоторые функции проверки и преобразования символов
- •Тема 1.7. Работа с памятью
- •Функция malloc
- •Функция free
- •Операция new
- •Операция delete
- •Тема 1.10. Динамические структуры
- •Разновидности динамических структур
- •Примеры программ (фрагментов программ) для работы с динамическими структурами
Тема 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++;
}
}