Содержание
- 2. Назначение подпрограмм Экономия кода Структуризация программы
- 3. Два вида подпрограмм Функция – возвращает значение через свое имя a=sqrt(x); Процедура – выполняет какое-то действие
- 4. Пример: возведение в степень double power(double a, int n) { int i; double x=1; for (i=0;
- 5. Формальные и фактические параметры Параметры передаются по значению, т.е. создаются локальные переменные, соответствующие формальным параметрам, и
- 6. Заголовок функции double power(double a, int n); main() { int i; for (i=-10; i printf("%lf\n", power(2,i)
- 7. Создание библиотек функций Lib1.cpp Lib2.cpp main.cpp Lib1.h Lib2.h Lib1.obj Lib2.obj main.obj main.exe
- 8. Файл myfunc.c #include #include "myfunc.h" double power(double a, int n) { int i; double x=1; for
- 9. Файл myfunc.h double power(double, int);
- 10. Файл prog.c #include #include "myfunc.h" main() { int i; for (i=-10; i printf("%lf\n", power(2,i) ); }
- 11. Область видимости имен int m = 10; // Глобальная переменная int f(int n) { int i;
- 12. Область видимости внутри модуля main() { int i; i=0; { int i,j; i=5; } j=0; //
- 13. Область видимости внутри модуля main() { int i; i=0; for (int k=0; k { printf(“%d\n”,k); }
- 14. void-функции void prt(int n) { printf("%10d\n",n); return; } main() { int i; for (i=0,i }
- 15. Встраиваемые функции inline double sqr(double x) { return x*x; } Помещать лучше в заголовочный файл
- 16. Классы памяти переменных auto – локальные переменные создаются при входе и уничтожаются при выходе из функции
- 17. Область видимости и классы памяти
- 18. Способы передачи аргументов в С
- 19. Передача массивов f(int a[10]); f(int a[]); f(int *a); Варианты заголовков функций
- 20. Передача массивов #include #define N 10 int sum(int a[], int n) { int b = 0;
- 21. Функция сортировки массива #include #define N 10 void sort(int a[], int n) { for (int i=0;
- 22. Задача: бинарный поиск int findbin(int x, int *a, int n) { int left, right; left=0; right=n-1;
- 23. char str[12] = "Borland C++"; Передача строк int strlen(char *s); { int k=0; while (*s++) k++;
- 24. Задача: поиск символа в строке int findc(char c, char *s) { int n=0; while (*s) {
- 25. Передача функций как параметров double deriv(double f(double), double x, double eps) { return (f(x+eps*0.5)-f(x-eps*0.5))/eps; } double
- 26. Рекурсивные функции fact(int n) { int a; if (n a = fact(n-1)*n; return a; }
- 27. Рекурсивные функции fib (int n) { if (n else return fib(n-1)+fib(n-2); } main() { printf("%d\n",fib(5)); }
- 28. Функции с переменным числом параметров void f(int a, int b, ...) Тип va_list Макрос va_start(list, last_fixed)
- 29. 1-й способ: последний параметр – 0 int sum1(int a, ...) { va_list args; int result=a, t;
- 30. 2-й способ: первый параметр – число аргументов int sum2(int num, ...) { va_list args; int result=0,
- 32. Скачать презентацию