Презентация на тему: Лекция

Реклама. Продолжение ниже
Лекция
Вопросы
ОБЪЯВЛЕНИЕ ФУНКЦИИ
Оператор return
Лекция
Прототипы функций
Параметры и аргументы функции
Лекция
Лекция
Лекция
Лекция
Лекция
Лекция
Лекция
Лекция
Аргументы функции main ()
Рекурсивные функции
Указатель на функцию
Лекция
Лекция
Лекция
1/21
Средняя оценка: 4.9/5 (всего оценок: 24)
Код скопирован в буфер обмена
Скачать (67 Кб)
Реклама. Продолжение ниже
1

Первый слайд презентации: Лекция

Функции

Изображение слайда
1/1
2

Слайд 2: Вопросы

ОБЪЯВЛЕНИЕ ФУНКЦИИ ОПЕРАТОР RETURN ПРОТОТИПЫ ФУНКЦИЙ ПАРАМЕТРЫ И АРГУМЕНТЫ ФУНКЦИИ АРГУМЕНТЫ ФУНКЦИИ MAIN() УКАЗАТЕЛЬ НА ФУНКЦИЮ

Изображение слайда
1/1
3

Слайд 3: ОБЪЯВЛЕНИЕ ФУНКЦИИ

тип < имя функции > ( список параметров ) { тело функции } Если тип не указан, то по умолчанию предполагается, что функция возвращает целое значение (типа int ). Функция может не иметь параметров, но круглые скобки необходимы в любом случае. В списке параметров дл я каждого па раметра должен быть указан тип.

Изображение слайда
1/1
4

Слайд 4: Оператор return

Назначение Во-первых, этот оператор вызывает немедленный выход из текущей функции и возврат в вызывающую программу. Во-вторых, этот оператор может использоваться для возврата значения функции. в теле функции может быть несколько операторов return, но может и не быть ни одного. Когда функция не возвращает никакого значения, она должна быть описана как функция типа void (пустая).

Изображение слайда
1/1
5

Слайд 5

Пример - функция для нахождения наибольшего из двух чисел: int max ( int a, int b ) { int m; if (a>b) m =a; else m =b; return m ; } Эта же функция без использования дополнительной переменной: max(int a, int b) { if (a>b) return a; else return b ; } Можно еще короче: max ( int a, int b) { if (a>b) return a; return b ; } А можно и так: max ( int a, int b) { return (a>b)? a: b; }

Изображение слайда
1/1
6

Слайд 6: Прототипы функций

тип <имя функции> (список параметров); int func ( int a, float b, char* с ); или так : int func ( int, float, char*); пример # include < stdio. h > float sqr ( float a ); /* это прототип функции, объявление функции */ main() { float b; b=5.2; printf(" квадрат числа %f равен %f', b, sqr(b) ); } /************ конец main************* float sqr ( float a ) /* Это описание функции */ { return a * a ; }

Изображение слайда
1/1
7

Слайд 7: Параметры и аргументы функции

все аргументы функции передаются по значению. При вызове функции в стеке выделяется место для формальных параметров функции, и в это выделенное место заносится значение фактического параметра. Далее функция использует и меняет значения в стеке. При выходе из функции измененные значения параметров теряются. Если в качестве аргумента берется имя массива, то передаваемое функции значение фактически есть адрес первого элемента массива. Пример. Функция swap (), которая должна менять значения параметров местами, не будет фактически это делать void swap(int a, int b) { int tmp=a; a=b; b = tmp ; }

Изображение слайда
1/1
Реклама. Продолжение ниже
8

Слайд 8

Если необходимо изменение аргументов. Надо передавать в качестве параметра не значение, а адрес переменной, которую нужно изменять, т. е. передавать указатель на переменную. Такой прием в языке С будет называться передачей параметра по ссылке. void swap 1(int *a, int *b ) { int tmp = *a; *a=*b; * b = tmp; }

Изображение слайда
1/1
9

Слайд 9

Иллюстрация использования этих двух способов передачи параметров : #include <stdio.h> void swap(int a, int b); void swap1 (int *a, int *b); void main( void) { int x=5, y=10; р rintf ("Сначала x = % d у = % d \ n ", x, y ); swap ( x, y ); printf ( "Te перь x= %d y=%d\n", x, y); printf ("Ничего не изменилось "); swap1 (& x, & y ); /* Мы должны передать адреса переменных */ printf ( "Te п ep ь x = %d y=%d\n", x, у ); printf(" Значения поменялись "); return 0; } Результатом работы этой программы будет следующее: вначале х=5, у=10, после х=5, у=10.

Изображение слайда
1/1
10

Слайд 10

в качестве аргумента функции используется массив function(int ar[10]); function(int ar[]); function ( int * ar ); const int MONTHS = 3; void display ( double [ DISTRICTS ][ MONTHS ] ); /////////////////////////////////////////////////////////// int main ( ) { double sales [ DISTRICTS ][ MONTHS ] = { { 1432.07, 234.50, 654.01 }, { 322.00, 13838.32, 17589.88 }, { 9328.34, 934.00, 4492.30 }, { 12838.29, 2332.63, 32.93 } }; display ( sales ); cout << endl; return 0; }

Изображение слайда
1/1
11

Слайд 11

// функция для вывода на экран массива void display ( double funsales [ DISTRICTS ][ MONTHS ] ) { int d, m; cout << "\n\n"; cout << " Месяц\n"; cout << " 1 2 3"; for ( d = 0; d < DISTRICTS; d++ ) { cout << "\nОтдел " << d + 1; for ( m = 0; m < MONTHS; m++ ) { cout << setiosflags ( ios::fixed ) << setw ( 10 ) << setiosflags ( ios::showpoint ) << setprecision ( 2 ) << funsales [ d ] [ m ]; } } }

Изображение слайда
1/1
12

Слайд 12

void bubbleSort (int array[], int col){ int temp=0; for (int i=0; i<col-1 ; i++){ for (int j=0; j<col-i-1; j++){ if (array [j]>array [j+1]){ temp=array[j]; array [j]=array [j+1]; array [j+1]=temp; } } } }

Изображение слайда
1/1
13

Слайд 13

//======================================= long double** Lin(const long double l, const long double** A, const int m, const int n) { long double** AA = new long double* [m]; for (int i=0; i<m; i++) AA[i] = new long double [n]; for (i=0; i<m; i++) for (int j=0; j<n; j++) AA[i][j] = l*A[i][j]; return AA; };

Изображение слайда
1/1
14

Слайд 14

//=============================================== long double** Mult(const long double** A, const int m, const int n, const long double** B, const int mm, const int nn) { if (n != mm) { cout << "\nERROR: MULTIPLICATION OF MATRIXES IS IMPOSSIBLE!"; getch(); return 0; } long double** D = new long double* [m]; for (int i=0; i<m; i++) D[i] = new long double [nn]; for (i=0; i<m; i++) for (int j=0; j<nn; j++) { long double sum = 0; for (int k=0; k<n; k++) sum += A[i][k]*B[k][j]; D[i][j] = sum; } return D; };

Изображение слайда
1/1
Реклама. Продолжение ниже
15

Слайд 15

//====================================== long double** Sum(const long double** A, const long double** B, const int m, const int n) { long double** C = new long double* [m]; for (int i=0; i<m; i++) C[i] = new long double [n]; for (i=0; i<m; i++) for (int j=0; j<n; j++) C[i][j] = A[i][j] + B[i][j]; return C; };

Изображение слайда
1/1
16

Слайд 16: Аргументы функции main ()

В языке С заданы два встроенных аргумента функции main (): argc и argv : main ( int argc, char * argv [] ) {...} В системе Borland C++ предусмотрен еще и третий аргумент, который, так же как и второй, является указателем на массив строк: main ( int argc, char * argv [], char * env [] ) {...} Два первых аргумента используются для передачи аргументов командной строки. Третий аргумент используется для доступа к параметрам среды операционной системы. Эти три аргумента доступны только функции main ().

Изображение слайда
1/1
17

Слайд 17: Рекурсивные функции

Функция называется рекурсивной, если оператор в теле функции содержит вызов этой же функции. Классический пример рекурсивной функции - это вычисление факториала числа N ! = 1*2*3*...* N. Назовем эту функцию factorial(). Int factorial ( int n ) { int a; if (n=l) return 1; a = factorial(n-l)*n; return a; } Вызов функции в рекурсивной функции не создает новую копию функции, а создает в памяти новые копии локальных переменных и параметров. Из рекурсивной функции надо предусмотреть выход, иначе это вызовет "зависание" системы.

Изображение слайда
1/1
18

Слайд 18: Указатель на функцию

Указатель pfunc на функцию, возвращающую значение типа type и имеющую параметры типа type1, type 2, объявляется следующим образом: type (*pfunc)(type1 t1, type2 t2); По определению указатель на функцию содержит адрес первого байта или слова выполняемого кода функции. Над указателями на функцию запрещены арифметические операции. Использование указателей на функцию имеет несколько применений, в частности он используется, если необходимо передать функцию как параметр другой функции.

Изображение слайда
1/1
19

Слайд 19

# include < stdio. h > # include < math. h > /* Пример Использование указателя на функцию */ double f(double x); double f 1 (double x); double f2(double x); double ff ( double (* pf )( double x )); /* Указатель на фукцию в качестве аргумента функции */ main() { double z=1.1, у ; double (*ptrf)(double x); /* Указатель на функцию */ ptrf = f ; /* Инициализация указателя */ y =(* ptrf )( z ); /* Вызов функции через указатель - первый способ */

Изображение слайда
1/1
20

Слайд 20

printf (" z =% f y =% f \ n ", z, у); y = ptrfl ( z ); /* Вызов функции через указатель - второй способ */ printf (" z =% f y =% f \ n ", z, у); ptrf = sin ; /* В качестве функции можно использовать стандартные библиотечные функции */ y=ptrf(z); printf(" z=%f sin(z)=%f\n", z, у ); y =(* ptrf )(2.5); /* Можно вызвать функцию и так */ pnntf("z=%f y=%f\n", z, у ); y = ff ( fl ); /* Вызов функции ff сп параметром f 1 */ printf("z=%f y=%f\n", z, у ); y = ff ( cos ); /* Другой вызов с другой функцией */ printf("z=%f y=%f\n", z, у ); y = ff ( ptrf ); /* То же через указатель на функцию */ printf("z=%f y=%f\n", z, у ); return 0; }

Изображение слайда
1/1
21

Последний слайд презентации: Лекция

double f(double x) { puts(“In f()"); return x; } double f1 (double x) { puts("In f1()"); return x*x; } double f2(double x) { puts("In f20"); return x*x*x; } double ff(double (* pf)(double x)) /* Функция с указателем на функцию в качестве параметра */ { printf(" In ff() %f\n", pf(3)); return pf(3); }

Изображение слайда
1/1
Реклама. Продолжение ниже