void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
void input_vect (double v [ ], int dim)
{
…
return;
}
void add_vect (double v1 [ ], double v2 [ ],
double res [ ], int dim)
{
…
return;
}
void output_vect (double v [ ], int dim)
{
…
return;
}
Выполнение начинается с main
Возврат из main в ОС
4. Структурное программирование
4.10. Функции
int k = add_ints (2,3);
int add_ints (int a, int b)
{
return a+b;
}
аргументы
формальные параметры
Значения аргументов заменяют соответствующие параметры в определении функции
Возвращается
значение 5
4. Структурное программирование
4.10. Функции
Заголовок
Тело функции
4. Структурное программирование
4.10. Функции
void print_vector (double v[ ], int n) void input_vect( double v[ ], int n) Простой пример:
{
cout << endl << "The vector is:";
for (int i=0; i<=n-1; i++)
cout <
return;
}
{
for (int i=0; i<=n-1; i++)
{
cout << "Enter vector[" << i << "] :";
cin >> v[i];
}
return;
}
функции для ввода и вывода одномерного массива
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
k
m
АЛУ
4. Структурное программирование
4.10. Функции
Передача аргументов по значению
k
m
i
АЛУ
4. Структурное программирование
4.10. Функции
Передача аргументов по значению
k
m
i
p
АЛУ
4. Структурное программирование
4.10. Функции
Передача аргументов по значению
k
m
i
p
АЛУ
3*2 = 6
4. Структурное программирование
4.10. Функции
Передача аргументов по значению
k
m
i
p
АЛУ
3*2 = 6
4. Структурное программирование
4.10. Функции
Передача аргументов по значению
k
m
i
p
АЛУ
2+6 =
4. Структурное программирование
4.10. Функции
Передача аргументов по значению
k
m
i
p
АЛУ
2+6 = 8
4. Структурное программирование
4.10. Функции
my
Передача аргументов по значению
k
m
АЛУ
4. Структурное программирование
4.10. Функции
my
Передача аргументов по значению
4. Структурное программирование
4.10. Функции
k
m
АЛУ
4. Структурное программирование
4.10. Функции
Передача аргументов в функцию по ссылке
k
m
i
АЛУ
4. Структурное программирование
4.10. Функции
Передача аргументов в функцию по ссылке
k
m
p
АЛУ
4. Структурное программирование
4.10. Функции
i
Передача аргументов в функцию по ссылке
k
m
p
АЛУ
3*2 = 6
4. Структурное программирование
4.10. Функции
i
Передача аргументов в функцию по ссылке
k
m
p
АЛУ
3*2 = 6
4. Структурное программирование
4.10. Функции
i
Передача аргументов в функцию по ссылке
k
m
p
АЛУ
2+6 =
4. Структурное программирование
4.10. Функции
i
Передача аргументов в функцию по ссылке
k
m
p
АЛУ
2+6 = 8
4. Структурное программирование
4.10. Функции
i
Передача аргументов в функцию по ссылке
k
m
АЛУ
4. Структурное программирование
4.10. Функции
my
Передача аргументов в функцию по ссылке
4. Структурное программирование
4.10. Функции
a
4. Структурное программирование
4.10. Функции
Передача массивов по ссылке
4. Структурное программирование
4.10. Функции
a
k
m
Передача массивов по ссылке
4. Структурное программирование
4.10. Функции
a
k
m
j
i
Передача массивов по ссылке
4. Структурное программирование
4.10. Функции
a
k
m
j
i
Передача массивов по ссылке
4. Структурное программирование
4.10. Функции
a
Передача массивов по ссылке
4. Структурное программирование
4.10. Функции
k
m
АЛУ
4. Структурное программирование
4.10. Функции
Передача указателей в функции
Передача указателей в функции
&i
Передача указателей в функции
&i
Передача указателей в функции
&i
Передача указателей в функции
&i
Передача указателей в функции
&i
Передача указателей в функции
Передача указателей в функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
void repchar ()
{
for (int i=1; i<=20; i++) cout << ’_’
cout << endl;
}
void repchar (char c)
{
for (int i=1; i<=20; i++) cout << c;
cout << endl;
}
void repchar (int n)
{
for (int i=1; i<=n; i++) cout << ’_';
cout << endl;
}
void repchar (char c, int n)
{
for (int i=1; i<=n; i++) cout << c;
cout << endl;
}
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
myst init()
{
myst w;
w.i=1; w.j=2;
return w;
}
4. Структурное программирование
4.10. Функции
myst init(int n)
{
myst w;
for (int i=0; i<=n-1; i++) w.k[i]=i;
return w;
}
4. Структурное программирование
4.10. Функции
Str
4. Структурное программирование
4.10. Функции
Возврат ссылок
Str
4. Структурное программирование
4.10. Функции
i
c
Возврат ссылок
Str
4. Структурное программирование
4.10. Функции
i
c
c[2]
Возврат ссылок
Str
4. Структурное программирование
4.10. Функции
i
c
c[2]
repl
Возврат ссылок
Str
4. Структурное программирование
4.10. Функции
repl
Возврат ссылок
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
Номер анализируемого байта i=0
сохраняем анализируемый байт в char k= *pc
m=k; k>>=1; k<<=1
[i > n_bytes-1]
[i<=n_bytes-1]
Номер анализируемого бита j=0
str [i*8+7-j+i] = ‘0’
str [i*8+7-j+i] = ‘1’
j++; k>>=1
(отбрасываем обработанный бит)
i++; pc++ (сдвигаемся на 1 байт)
[j <= 7]
[j > 7]
Диаграмма деятельности для функции анализа внутреннего представления переменных
[m == k]
[m != k]
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
Полученный ранее алгоритм на псевдокоде
4. Структурное программирование
4.10. Функции
Проект функции на псевдокоде
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.10. Функции
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
(1) m=4, worker=1; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
1) cout << fact_dn (4) << endl
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
(2) m=3, worker=4; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
(2) m=3, worker=12; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
if (3 != 1) return fact_dn (2, 12);
(2) m=3, worker=12; fact_dn=?
(3) m=2, worker=12; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
if (3 != 1) return fact_dn (2, 12);
(2) m=3, worker=12; fact_dn=?
(3) m=2, worker=24; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
(2) m=3, worker=12; fact_dn=?
(3) m=2, worker=24; fact_dn=?
(4) m=1, worker=24; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
if (3 != 1) return fact_dn (2, 12);
if (2 ! = 1) return fact_dn (1, 24);
(2) m=3, worker=12; fact_dn=?
(3) m=2, worker=24; fact_dn=?
(4) m=1, worker=24; fact_dn=?
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
if (3 != 1) return fact_dn (2, 12);
if (2 ! = 1) return fact_dn (1, 24);
(1) m=4, worker=4; fact_dn=?
(2) m=3, worker=12; fact_dn=?
(3) m=2, worker=24; fact_dn=?
(4) m=1, worker=24; fact_dn=24
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
if (3 != 1) return fact_dn (2, 12);
if (2 ! = 1) return fact_dn (1, 24);
if (1 !=1)…else return worker
(1) m=4, worker=4; fact_dn=?
(2) m=3, worker=12; fact_dn=?
(3) m=2, worker=24; fact_dn=24
Трассировка вызовов
cout << fact_dn (4) << endl
if (4 !=1) return fact_dn (3, 4);
if (3 != 1) return fact_dn (2, 12);
if (2 ! = 1) return fact_dn (1, 24);
4. Структурное программирование
4.11. Рекурсия
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
(1) m=4, worker=4; fact_dn=?
(2) m=3, worker=12; fact_dn=24
4. Структурное программирование
4.11. Рекурсия
int fact_dn (int m, int worker)
{
worker *= m;
if (m!= 1) return fact_dn (m-1, worker);
else return worker;
}
(1) m=4, worker=4; fact_dn=24
4. Структурное программирование
4.11. Рекурсия
Можно записать короче
Оптимизируем типы аргументов
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
(1) m=4, fact_dn=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(1) m=4, fact_up=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(2) m=3, fact_up=?
(1) m=4, fact_up=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(2) m=3, fact_up=?
(3) m=2, fact_up=?
(1) m=4, fact_up=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(2) m=3, fact_up=?
(3) m=2, fact_up=?
(4) m=1, fact_up=?
(1) m=4, fact_up=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(2) m=3, fact_up=?
(3) m=2, fact_up=?
(4) m=1, fact_up=1
(1) m=4, fact_up=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(2) m=3, fact_up=?
(3) m=2, fact_up=2*1
(1) m=4, fact_up=?
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
(2) m=3, fact_up=3*2
(1) m=4, fact_up=4*6
unsigned long fact_up (unsigned int m)
{
if (m > 1) return m * fact_up (m - 1);
else return 1;
}
Можно записать короче
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
void Rec ()
{
if (условие)
{
… S1 …;
Rec;
… S2 … ;
}
return;
}
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
_
4. Структурное программирование
4.11. Рекурсия
_
1) c= ?
4. Структурное программирование
4.11. Рекурсия
1) c=
H
_
‘H’
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
H
2) c=
‘E’
E
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
HEL
2) c=‘E’
3) c=‘L’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
HELL
2) c=‘E’
3) c=‘L’
4) c=‘L’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
HELLO
2) c=‘E’
3) c=‘L’
4) c=‘L’
5) c=‘O’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
HELLO
2) c=‘E’
3) c=‘L’
4) c=‘L’
5) c=‘O’
6) c=13
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
HELLO
2) c=‘E’
3) c=‘L’
4) c=‘L’
5) c=‘O’
6) c=13
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
OELLO
2) c=‘E’
3) c=‘L’
4) c=‘L’
5) c=‘O’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
OLLLO
2) c=‘E’
3) c=‘L’
4) c=‘L’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
OLLLO
2) c=‘E’
3) c=‘L’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
OLLEO
2) c=‘E’
_
4. Структурное программирование
4.11. Рекурсия
1) c=‘H’
OLLEH
_
4. Структурное программирование
4.11. Рекурсия
OLLEH
_
j=3 Вызов не выполня-ется
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.11. Рекурсия
4. Структурное программирование
4.12. Шаблоны функций
struct detail
{
int id;
float weight;
};
Быстрая сортировка: шаблоны функций
template struct Date struct Name
void qsort (T s [ ], int l, int r);
{
unsigned short year;
unsigned short month;
unsigned short day;
};
{
char surname [80];
char firstname [40];
char patronymic [60];
};
4. Структурное программирование
4.12. Шаблоны функций
4. Структурное программирование
4.12. Шаблоны функций
4. Структурное программирование
4.12. Шаблоны функций
4. Структурное программирование
4.12. Шаблоны функций
4. Структурное программирование
4.12. Шаблоны функций
Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть