Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции по проге / 12_Функции, определяемые пользователем

.pdf
Скачиваний:
31
Добавлен:
14.03.2016
Размер:
209.62 Кб
Скачать

Лекция №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