Разделы презентаций


Тема 9. Функции

Содержание

Информационные технологииТема 9. Функции2Шевченко А. В.Понятие функцииПрограмма на СТочка входа (main)Программа на С состоит из одной или нескольких функций, имена которых должны быть правильными идентификаторами. Функция является логически самостоятельной именованной частью

Слайды и текст этой презентации

Слайд 1Информационные технологии
Тема 9. Функции
1
Тема 9. Функции
Шевченко А. В.

Информационные технологииТема 9. Функции1Тема 9. ФункцииШевченко А. В.

Слайд 2Информационные технологии
Тема 9. Функции
2
Шевченко А. В.
Понятие функции
Программа на С
Точка входа (main)
Программа

на С состоит из одной или нескольких функций, имена которых

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

Другие файлы (.h)

Другие файлы (.h)

Функции

Статические данные

Информационные технологииТема 9. Функции2Шевченко А. В.Понятие функцииПрограмма на СТочка входа (main)Программа на С состоит из одной или

Слайд 3Информационные технологии
Тема 9. Функции
3
Декларация функций
Шевченко А. В.
double square(double length, double

width);
Тип функции
Имя функции
Список параметров
Тип параметра
Имя параметра
void func(int a, int b);
Функция

не возвращает значения

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

Информационные технологииТема 9. Функции3Декларация функцийШевченко А. В.double square(double length, double width); Тип функцииИмя функцииСписок  параметровТип параметраИмя

Слайд 4Информационные технологии
Тема 9. Функции
4
Применение функций
Шевченко А. В.
Текст заголовка lib.h
int abs(int

val);
Текст программы prog.cpp
#include ... int a = abs(b); ... int c =

a+abs(d);

Текст программы lib.cpp

int abs(int val) { if(val < 0) val = -val; return(val); }

Информационные технологииТема 9. Функции4Применение функцийШевченко А. В.Текст заголовка lib.hint abs(int val); Текст программы prog.cpp#include  ... int

Слайд 5Информационные технологии
Тема 9. Функции
5
Классы памяти для функций
Шевченко А. В.
Для функций

могут быть заданы классы памяти extern (по умолчанию) или static.

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

Пример программы

extern int f1(); int f2(); static int f3();

Информационные технологииТема 9. Функции5Классы памяти для функцийШевченко А. В.Для функций могут быть заданы классы памяти extern (по

Слайд 6Информационные технологии
Тема 9. Функции
6
Возвращаемое функцией значение
Шевченко А. В.
Функции могут возвращать

результат своих действий. Оператор return реализует механизм возврата результата от

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

Пример программы 1

int min(int a, int b) { if(a <= b) return(a); else return(b); }

Пример программы 2

void swap(int &a, int &b) { int c = a; a = b; b = c; }

Информационные технологииТема 9. Функции6Возвращаемое функцией значениеШевченко А. В.Функции могут возвращать результат своих действий. Оператор return реализует механизм

Слайд 7Информационные технологии
Тема 9. Функции
7
Параметры функции
Шевченко А. В.
Параметры предназначены для передачи

некоторых значений из вызывающей функции в вызываемую. Параметры всегда являются

локальными переменными, областью видимости которых является тело функции. Существует два способа передачи параметров функции: по значению (call by value) и по ссылке (call by reference).

Пример программы 1

int min(int a, int b) { if(a <= b) return(a); else return(b); }

Пример программы 2

void swap(int &a, int &b) { int c = a; a = b; b = c; }

Информационные технологииТема 9. Функции7Параметры функцииШевченко А. В.Параметры предназначены для передачи некоторых значений из вызывающей функции в вызываемую.

Слайд 8Информационные технологии
Тема 9. Функции
8
Вызов функции с передачей значения
Шевченко А. В.
При

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

переменные функции (находящиеся в стеке). Вызываемая функция не может воздействовать на передаваемые в качестве параметров переменные.

Пример программы

int add(int x) { x += 1; } int a = 5; add(a);

Информационные технологииТема 9. Функции8Вызов функции с передачей значенияШевченко А. В.При данном способе вызова передаваемые в функцию переменные

Слайд 9Информационные технологии
Тема 9. Функции
9
Вызов функции с передачей по ссылке
Шевченко А.

В.
При данном способе вызова в функцию передаются не копии переменных,

а их адреса. Вызываемая функция может изменять значения передаваемых ей переменных. Для передачи адреса используется оператор &.

Пример программы

int add(int &x) { x += 1; } int a = 5; add(a);

Информационные технологииТема 9. Функции9Вызов функции с передачей по ссылкеШевченко А. В.При данном способе вызова в функцию передаются

Слайд 10Информационные технологии
Тема 9. Функции
10
Значения параметров функций по умолчанию
Шевченко А. В.
Текст

заголовка
int func(int a, int b = 3, int c =

5);

Значение параметра по умолчанию

Текст программы

int func(int a, int b, int c) { return(a+b+c); } int x = func(7, 5, 2); int x = func(7, 5); int x = func(7); int x = func();

Ошибка!

Информационные технологииТема 9. Функции10Значения параметров функций по умолчаниюШевченко А. В.Текст заголовкаint func(int a, int b = 3,

Слайд 11Информационные технологии
Тема 9. Функции
11
Функции с переменным числом параметров
Шевченко А. В.
Пример

программы
int sprintf(char *buffer, const char *format, ...); { va_list args;

va_start(args, format); while(int* par = va_arg(args, int*)) { ... } va_end(args); }

Последний фиксированный параметр

Получение следующего параметра

Информационные технологииТема 9. Функции11Функции с переменным числом параметровШевченко А. В.Пример программыint sprintf(char *buffer, const char *format, ...);

Слайд 12Информационные технологии
Тема 9. Функции
12
Рекурсивный вызов функции
Шевченко А. В.
Пример программы
double factorial(double

N) { return(N == 1 ? 1 : N*factorial(N-1)); } ... ShowMessage(factorial(170));

Информационные технологииТема 9. Функции12Рекурсивный вызов функцииШевченко А. В.Пример программыdouble factorial(double N) {   return(N == 1

Слайд 13Информационные технологии
Тема 9. Функции
13
Затраты на вызов функции
Шевченко А. В.
Текст программы
...

int a = 5; int b =

4; int c = square(a, b); ...

Стек

0х00000005 0х00000004 0х00402768 0х0001238С

Параметры, точка возврата, сохраняемые регистры

При вызове фунции в стеке резервируется некоторый объем памяти, в которов размещаются копии фактических аргументов, запоминаются точки возврата и значения регистров процессора. Размещение этих данных в памяти требует затрат времени, которые и называют затратами на вызов функции (function overhead).

Информационные технологииТема 9. Функции13Затраты на вызов функцииШевченко А. В.Текст программы ...     int a

Слайд 14Информационные технологии
Тема 9. Функции
14
Сравнение макросов и функций
Шевченко А. В.
Макросы
Функции
#define SQUARE(a,

b)((a)*(b)) ... int x1 = 5; int y1

= 4; int z1 = SQUARE(x1, y1); ... float x2 = 5.5; float y2 = 2.0; float z2 = SQUARE(x2, y2); ...

int square(int a, int b); ... int square(int a, int b) { return(a*b); } int x1 = 5; int x2 = 4; int x3 = square(x1, y1); ... float x2 = 5.5; float y2 = 2.0; float z2 = square(x2, y2); ...

Информационные технологииТема 9. Функции14Сравнение макросов и функцийШевченко А. В.МакросыФункции #define SQUARE(a, b)((a)*(b))   ...

Слайд 15Информационные технологии
Тема 9. Функции
15
Сравнение макросов и функций
Шевченко А. В.
Макросы
Быстрота выполнения
Большие

затраты памяти
Функции
Дополнительные затраты времени
Экономия памяти
Нет контроля типов параметров
Контроль типов параметров
inline

- функции, шаблоны
Информационные технологииТема 9. Функции15Сравнение макросов и функцийШевченко А. В.МакросыБыстрота выполненияБольшие затраты памятиФункцииДополнительные затраты времениЭкономия памятиНет контроля типов

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика