Лекции по проге / 12_Функции, определяемые пользователем
.pdf
Лекция №12. Функции, определяемые пользователем
Способы передачи данных между функциями
Входные и выходные данные функций — способы их реализации
Объявление, реализация и использование функций
1
Взаимодействие функций в программе
Функция ― это обособленный участок кода со своим набором переменных и операций, к которым другая функция не имеет непосредственного доступа
Программа представляет собой набор функций, которые взаимодействуют между собой посредством вызова друг друга
При вызове функции обмениваются между собой данными ― в функцию поступают входные дан-
2ные, а из функции ― выходные
Классификация данных, которыми обмениваются функции
Входные данные передаются в функцию и используются ею для реализации своего предназначения (расчета значений, вывода сообщений на экран и т.д.)
Если назначение функции заключается в вычислении некоторого значения, то функция обязана вернуть эти данные, которые рассматриваются как выходные
Обновляемые данные используются в ходе вычис-
3лений и обновляются в результате работы функции
Задание
Классифицировать данные, которыми обмениваются функции. Указать тип данных и их назначение
void printf(const |
char *format, int value); |
char _getch( void |
); |
double pow(double |
x, double y); |
void scanf( const |
char *format, int *value); |
void _strrev(char |
*str); |
4 |
|
Пример классификации данных, которыми обмениваются функции
void printf(const char *format, int value);
−вх. данные: format — форматная строка, value — печатаемое значение
char _getch( void );
−вых. данные: символ, введенный пользователем
double pow(double x, double y);
−вх. данные: x — основание степени, y — сама степень
−вых. данные: результат возведения в степень
5
Пример классификации данных, которыми обмениваются функции
void scanf( const char *format, int *value);
−вх. данные: format — форматная строка
−вых. данные: value — значение, введенное пользователем
void _strrev(char *str);
−обновл. данные: строка, подвергающаяся перевороту
6
Входные данные
7
Способы передачи данных между функциями
|
|
Скалярные типы |
Массивы |
|
|
(+структуры) |
|
|
|
|
|
|
Входные аргу- |
+ |
немодифицируемый |
|
|||
|
менты [in] |
массив |
|
|
|
||
|
|
|
|
|
Обновляемые |
переданные по |
+ |
|
аргументы |
||
|
адресу |
||
|
[in|out] |
|
|
|
|
|
|
|
|
|
|
|
Выходные ар- |
переданные по |
+ |
|
гументы [out] |
адресу |
|
|
|
||
|
|
|
|
|
Возвращаемое |
+ |
указатель на |
|
значение |
||
|
элемент массива |
||
|
[return] |
|
|
|
|
|
|
|
|
|
|
Выходные данные
Входные данные = входные аргументы
|
|
Скалярные типы |
Массивы |
|
Входные |
Входные аргументы |
+ |
немодифицируемый |
|
данные |
[in] |
массив |
||
|
||||
|
|
|
|
Входные аргументы скалярных типов данных и типа "структура" передаются как есть (по значению), т.к. их не требуется модифицировать, а работать с такими аргументами проще
Если входным аргументом является массив, то необходимо запретить его модификацию, т.к. мас-
сив всегда передается по адресу (следовательно,
8может быть изменен)
Передача одномерного массива как входного аргумента
С целью предотвращения модификации массива используется модификатор const
const <тип элемента> <имя массива>[] const <тип элемента> *<имя массива>
9
Задание на определение входных данных для функции
Определить входные данные для функции printPoint() - печать на экран координат некоторой точки на плоскости
10
