Similar presentations:
Л_14-Функции
1. Программирование на языке C++
1Программирование
на языке C++
Процедуры
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
2. Зачем нужны процедуры?
Алгоритмизация и программирование, язык C++, 10 класс2
Зачем нужны процедуры?
cout <<
"Ошибка программы";
void Error()
{
cout << "Ошибка программы";
}
много раз!
void – пустой,
нет результата
int main()
{
вызов
процедуры
int n;
cin >> n;
if ( n < 0 ) Error();
...
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
3. Что такое процедура?
Алгоритмизация и программирование, язык C++, 10 класс3
Что такое процедура?
Процедура – вспомогательный алгоритм, который
выполняет некоторые действия.
• в момент вызова процедура должна уже быть известна
(например, расположена до основной программы)
• в программе может быть много процедур
• чтобы процедура заработала, нужно вызвать её по
имени из основной программы или из другой
процедуры
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
4. Процедура с параметрами
Алгоритмизация и программирование, язык C++, 10 класс4
Процедура с параметрами
Задача. Вывести на экран запись целого числа (0..255) в
8-битном двоичном коде.
много раз!
Алгоритм:
178 101100102
? Как вывести первую цифру?
n=
7
6 5 4
3 2 1
0
1 0 1 1 0 0 1 02
n / 128
разряды
n % 128
? Как вывести вторую цифру?
К.Ю. Поляков, Е.А. Ерёмин, 2025
n1 / 64
http://kpolyakov.spb.ru
5. Процедура с параметрами
Алгоритмизация и программирование, язык C++, 10 класс5
Процедура с параметрами
Задача. Вывести на экран запись целого числа (0..255) в
8-битном двоичном коде.
Решение:
n
k
вывод
int k = 128;
178
128
1
while ( k > 0 )
50
64
0
{
cout << n / k;
50
32
1
n = n % k;
18
16
1
k = k / 2;
2
8
0
}
2
4
0
178 10110010
2
2
1
зависит
! Результат
от n!
К.Ю. Поляков, Е.А. Ерёмин, 2025
0
0
1
0
0
http://kpolyakov.spb.ru
6. Процедура с параметрами
Алгоритмизация и программирование, язык C++, 10 класс6
Процедура с параметрами
void printBin( int n )
{
int k;
Параметры – данные,
k = 128;
локальные
переменные
while ( k > 0 ) изменяющие работу
процедуры.
{
cout << n / k;
n = n % k;
k = k / 2;
}
}
int main()
значение параметра
{
(аргумент)
printBin( 99 );
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
7. Несколько параметров
Алгоритмизация и программирование, язык C++, 10 класс7
Несколько параметров
void printSred ( int a, int b )
{
cout << (a+b)/2.;
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
8. Изменяемые параметры
Алгоритмизация и программирование, язык C++, 10 класс8
Изменяемые параметры
Задача. Написать процедуру, которая меняет местами
значения двух переменных.
передача по
void Swap ( int a, int b )
значению
{
int c;
Процедура работает с
c = a; a = b; b = c;
копиями переданных
}
значений параметров!
!
? Почему не работает?
int main()
{
int x = 2, y = 3;
Swap ( x, y );
cout << x << " " << y;
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
2 3
http://kpolyakov.spb.ru
9. Изменяемые параметры
Алгоритмизация и программирование, язык C++, 10 класс9
Изменяемые параметры
переменные могут изменяться
void Swap ( int & a, int & b )
{
передача по
int c;
ссылке
c = a; a = b; b = c;
}
!
Вызов:
Здесь не видно, изменяются
аргументы или нет!
int a, b;
Swap(a, b);
// правильно
Swap(2, 3);
// неправильно
Swap(a, b+3); // неправильно
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
10. Программирование на языке C++
10Программирование
на языке C++
Функции
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
11. Что такое функция?
Алгоритмизация и программирование, язык C++, 10 класс11
Что такое функция?
Функция – это вспомогательный алгоритм, который
возвращает значение-результат (число, символ или
объект другого типа).
Примеры:
float s = sin(x);
char c = getch();
int v = rand() % 10;
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
12. Что такое функция?
Алгоритмизация и программирование, язык C++, 10 класс12
Что такое функция?
Задача. Написать функцию, которая вычисляет младшую
цифру числа (разряд единиц).
число
1234
lastDigit
последняя цифра
4
int lastDigit( int n ) {
int d = n % 10;
результат работы
функции – значение d
return d;
}
передача
// вызов функции
результата
k = lastDigit( 1234 );
cout << k;
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
13. Вычисление суммы цифр числа
Алгоритмизация и программирование, язык C++, 10 класс13
Вычисление суммы цифр числа
Задача. Написать функцию, которая вычисляет сумму
цифр числа.
Алгоритм:
сумма = 0
пока n != 0
сумма = сумма + n % 10
n = n / 10
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
14. Сумма цифр числа
Алгоритмизация и программирование, язык C++, 10 класс14
Сумма цифр числа
int sumDigits( int n )
{
тип результата
int sum = 0;
while ( n != 0 )
{
sum += n % 10;
n /= 10;
передача
}
результата
return sum;
}
int main()
{
cout << sumDigits(12345);
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
15. Использование функций
Алгоритмизация и программирование, язык C++, 10 класс15
Использование функций
x = 2*sumDigits(n+5);
z = sumDigits(k) + sumDigits(m);
if ( sumDigits(n) % 2 == 0 )
{
cout << "Сумма цифр чётная\n";
cout << "Она равна " << sumDigits(n);
}
! Функция, возвращающая целое число, может
использоваться везде, где и целая величина!
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
16. Логические функции
Алгоритмизация и программирование, язык C++, 10 класс16
Логические функции
Задача. Найти все простые числа в диапазоне
от 2 до 100.
int main()
{
for ( int i = 2; i <= 100; i++)
if ( iisPrime(i)
- простое )
cout << i << endl;
}
функция, возвращающая
логическое значение
(true/false)
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
17. Функция: простое число или нет?
Алгоритмизация и программирование, язык C++, 10 класс17
Функция: простое число или нет?
? Какой алгоритм?
bool isPrime ( int n )
{
int count = 0, k = 2;
while ( k*k <= n && count == 0 )
{
if ( n % k == 0 )
if( count == 0 )
count ++;
return true;
k ++;
else return false;
}
return (count == 0);
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
18. Логические функции: использование
Алгоритмизация и программирование, язык C++, 10 класс18
Логические функции: использование
! Функция, возвращающая логическое значение,
может использоваться везде, где и логическая
величина!
cin >> n;
while ( isPrime(n) )
{
cout << "простое число\n";
cin >> n;
}
К.Ю. Поляков, Е.А. Ерёмин, 2025
http://kpolyakov.spb.ru
programming