4 4 10 void inputvect double v int
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Структурная декомпозиция void input_vect (double v [ ], int dim) программы { Выполнение начинается с main int main() { … input_vect (a, n); … add_vect (a, b, c, n); … output_vect (c, n); … return 0 } Возврат из main в ОС … return; } void add_vect (double v 1 [ ], double v 2 [ ], double res [ ], int dim) { … return; } void output_vect (double v [ ], int dim) { … return; }
4. Структурное программирование 4. 10. Функции Простой пример: void input_vect( double v[ ], int n) функции для ввода и вывода { одномерного массива for (int i=0; i<=n-1; i++) void input_vect(double v[ ], int n); void output_vect(double v[ ], int n); int main() { const int m=5; double x[5]; input_vect(x, m); output_vect(x, m); return 0; } { cout << "Enter vector[" << i << "] : "; cin >> v[i]; } return; } void print_vector (double v[ ], int n) { cout << endl << "The vector is: "; for (int i=0; i<=n-1; i++) cout <<setw(10)<<v[i]; cout << endl; return; }
4. Структурное программирование 4. 10. Функции Передача аргументов по значению int my(int i); int main() { int k=3, m=0; m=my(k); АЛУ cout << k << " " << m; // 3 8 3*2 = 6 _getch(); return 0; } int my(int i) { 2 3 3 0 int p=2; F 5 C F 5 E F 60 F 62 F 64 F 66 F 68 F 7 A F 7 C F 7 E F 80 i*=2; return p+i; } k i m p
4. Структурное программирование 4. 10. Функции Передача аргументов по значению int my(int i); int main() { int k=3, m=0; m=my(k); АЛУ cout << k << " " << m; // 3 8 3*2 = 6 _getch(); return 0; } int my(int i) { 2 6 3 0 int p=2; F 5 C F 5 E F 60 F 62 F 64 F 66 F 68 F 7 A F 7 C F 7 E F 80 i*=2; return p+i; } k i m p
4. Структурное программирование 4. 10. Функции Передача аргументов по значению int my(int i); int main() { int k=3, m=0; m=my(k); АЛУ cout << k << " " << m; // 3 8 2+6 = 8 _getch(); return 0; } int my(int i) { 8 2 6 3 0 int p=2; F 5 C F 5 E F 60 F 62 F 64 F 66 F 68 F 7 A F 7 C F 7 E F 80 i*=2; return p+i; } k my i m p
4. Структурное программирование 4. 10. Функции void set(short [ ][3], int); Передача массивов по ссылке int main() { short a[2][3]={0}; set(a, 2); return 0; } 2 void set (short k[ ][3], int m) F 2 E F 30 F 32 F 34 F 36 … { for (short i=0; i<=m-1; i++) for (short j = 0; j<=2; j++) k[i][j]=i+j; return; } 0 0 0 F 5 C F 5 E F 60 F 62 F 64 F 66 a F 68 F 7 A F 7 C F 7 E F 80
4. Структурное программирование 4. 10. Функции void set(short [ ][3], int); Передача массивов по ссылке int main() { short a[2][3]={0}; set(a, 2); return 0; } 2 void set (short k[ ][3], int m) F 2 E F 30 F 32 F 34 F 36 … { for (short i=0; i<=m-1; i++) for (short j = 0; j<=2; j++) k[i][j]=i+j; return; } 2 0 0 0 F 5 C F 5 E F 60 F 62 m F 64 F 66 a k F 68 F 7 A F 7 C F 7 E F 80
4. Структурное программирование 4. 10. Функции void set(short [ ][3], int); Передача массивов по ссылке int main() { short a[2][3]={0}; set(a, 2); return 0; } 2 void set (short k[ ][3], int m) F 2 E F 30 F 32 F 34 F 36 … { for (short i=0; i<=m-1; i++) for (short j = 0; j<=2; j++) k[i][j]=i+j; return; } 0 0 2 0 0 0 F 5 C F 5 E F 60 F 62 j i m F 64 F 66 a k F 68 F 7 A F 7 C F 7 E F 80
4. Структурное программирование 4. 10. Функции void set(short [ ][3], int); Передача массивов по ссылке int main() { short a[2][3]={0}; set(a, 2); return 0; } 2 void set (short k[ ][3], int m) F 2 E F 30 F 32 F 34 F 36 … { for (short i=0; i<=m-1; i++) for (short j = 0; j<=2; j++) k[i][j]=i+j; return; } 0 0 2 0 1 2 3 F 5 C F 5 E F 60 F 62 j i m F 64 F 66 a k F 68 F 7 A F 7 C F 7 E F 80
4. Структурное программирование 4. 10. Функции void set(short [ ][3], int); Передача массивов по ссылке int main() { short a[2][3]={0}; set(a, 2); return 0; } 2 void set (short k[ ][3], int m) F 2 E F 30 F 32 F 34 F 36 … { for (short i=0; i<=m-1; i++) for (short j = 0; j<=2; j++) k[i][j]=i+j; return; } 0 1 2 3 F 5 C F 5 E F 60 F 62 F 64 F 66 a F 68 F 7 A F 7 C F 7 E F 80
4. Структурное программирование 4. 10. Функции int my(int *i); int main() { int k=3, m=0; m=my(&k); cout << k << " " << m; // 6 8 _getch(); return 0; 8 2 } F 5 C F 5 E F 60 F 62 int my(int *i) { int p=2; my p *i *= 2; return p + *i; } АЛУ 2+6 = 8 F 7 A F 64 &i F 66 6 F 68 F 7 A k 0 F 7 C F 7 E F 80 m Передача указателей в функции
4. Структурное программирование 4. 10. Функции Передача указателей на функции: пример double calc_fun (double (*p_f)(double), double x); int main() { double (*p_func)(double)=NULL; p_func=sin; // можно и p_func = &sin; cout << p_func(0) << endl; cout << calc_fun(cos, 0) << endl; // можно и calc_fun(&cos, 0) _getch(); return 0; } double calc_fun (double (*p_f)(double), double x) { return p_f(x); }
4. Структурное программирование 4. 10. Функции void repchar () { void repchar (); for (int i=1; i<=20; i++) cout << ’_’ void repchar (char с); cout << endl; void repchar (int n); } void repchar (char c, int n); void repchar (char c) int main () { { for (int i=1; i<=20; i++) cout << c; repchar (); // _______ cout << endl; repchar (5); // _____ } repchar ('=', 3); // === void repchar (int n) repchar ('+'); // +++++++ { _getch(); for (int i=1; i<=n; i++) cout << ’_'; return 0; cout << endl; } } void repchar (char c, int n) { for (int i=1; i<=n; i++) cout << c; cout << endl; } Перегрузка функций
4. Структурное программирование 4. 10. Функции char &repl (int i, char c[ ]); int main() { char str[]="Hehlo"; repl(2, str)=‘l'; cout << str; // Hello _getch(); return 0; } F 5 C F 5 E char &repl(int i, char c[]) { return c[i]; } l F 60 F 62 F 64 2 F 2 E F 30 F 32 F 34 F 36 H e F 66 F 68 h l o /0 F 6 A F 6 C F 6 E F 70 Str Возврат ссылок …
4. Структурное программирование 4. 10. Функции char &repl (int i, char c[ ]); int main() { char str[]="Hehlo"; repl(2, str)=‘l'; cout << str; // Hello _getch(); return 0; } l 2 F 5 C F 5 E char &repl(int i, char c[]) { return c[i]; } F 60 i F 62 F 64 2 F 2 E F 30 F 32 F 34 F 36 H e F 66 F 68 h l o /0 F 6 A F 6 C F 6 E F 70 Str c Возврат ссылок …
4. Структурное программирование 4. 10. Функции char &repl (int i, char c[]); int main() { char str[]="Hehlo"; repl(2, str)=‘l'; cout << str; // Hello _getch(); return 0; } l 2 F 5 C F 5 E char &repl(int i, char c[]) { return c[i]; } F 60 i F 62 F 64 2 F 2 E F 30 F 32 H e F 66 F 68 Str F 34 F 36 h l o /0 F 6 A F 6 C F 6 E F 70 c[2] c Возврат ссылок …
4. Структурное программирование 4. 10. Функции char &repl (int i, char c[]); int main() { char str[]="Hehlo"; repl(2, str)=‘l'; cout << str; // Hello _getch(); return 0; } l 2 F 5 C F 5 E char &repl(int i, char c[]) { return c[i]; } F 60 i F 62 F 64 2 F 2 E F 30 F 32 F 34 F 36 H e F 66 F 68 h l o /0 F 6 A F 6 C F 6 E F 70 Str c[2] c repl Возврат ссылок …
4. Структурное программирование 4. 10. Функции char &repl (int i, char c[]); int main() { char str[]="Hehlo"; repl(2, str)=‘l'; cout << str; // Hello _getch(); return 0; } F 5 C F 5 E char &repl(int i, char c[]) { return c[i]; } l F 60 F 62 F 64 2 F 2 E F 30 F 32 F 34 F 36 H e F 66 F 68 l l o /0 F 6 A F 6 C F 6 E F 70 Str repl Возврат ссылок …
4. Структурное программирование 4. 10. Функции Просто пример: внутреннее представление переменных internal_form (void *p, int n_bytes, char str [72]) // Explores memory area from p within n_bytes (n_bytes <=8) // The result is string str[72]: // each bit is represented with '0' or '1‘ like bits in the memory // bytes are separated with space // Returns 0 if OK, -1 when n_bytes >8 { unsigned char k=0, m=0; if (n_bytes > 8) return -1; unsigned char *pc = reinterpret_cast <unsigned char*> (p); for (int i=0; i<=70; i++)str[i]=' '; str[71]='