Similar presentations:
Функции. Начальные сведения. С / С++. Тема 04
1. НРТК
С / С++Тема 04. Функции. Начальные сведения
НРТК, 2022 г. 1
Функции. Начальные сведения
Созонов А.А.
2. Что такое функция?
• Программа — форма представленияалгоритма
• Алгоритм должен допускать декомпозицию
• Функция — часть программы (часть алгоритма
программы)
• Каждая функция должна:
–
–
–
–
иметь имя для ее вызова
получать параметры (исходные данные)
содержать описание алгоритма
возвращать результат
• Для применения функций надо уметь:
– описывать функции
– вызывать функции
НРТК, 2022 г. 2
Функции. Начальные сведения
Созонов А.А.
3. Описание функции
• Синтаксис:<тип> <имя_функции>(<параметры>)
{
<тело функции>
return <возвращаемое значение>;
}
• где:
–
— список исходных данных
(формальных параметров) в виде:
<параметры>
<тип> имя_переменной
–
–
— описание алгоритма функции
<возвращаемое значение> — результат,
возвращаемый из функции, типа <тип>
<тело функции>
НРТК, 2022 г. 3
Функции. Начальные сведения
Созонов А.А.
4. Примеры
• Умножение двух чисел:double mlt(double p1, double p2)
{
double mlt = p1 * p2;
return mlt;
}
• Минимум из двух чисел:
double min(double a, double b)
{
if ( a < b ) return a;
else
return b;
}
• Операторов return может быть несколько, но не
стоит этим слишком увлекаться!
НРТК, 2022 г. 4
Функции. Начальные сведения
Созонов А.А.
5. Пример: вычисление НОД
int gcd(int a, int b){
int t;
while
{
t
a
b
}
( a != 0 )
= a;
= b % a;
= t;
return b;
}
НРТК, 2022 г. 5
Функции. Начальные сведения
Созонов А.А.
6. Вызов функции
• Синтаксис:<имя_функции> (<передаваемые параметры>)
• где:
–
— список
передаваемых исходных данных (фактических
параметров); элементом списка может быть:
<передаваемые параметры>
• константа
• переменная
• выражение
НРТК, 2022 г. 6
Функции. Начальные сведения
Созонов А.А.
7. Вызов функции
• В C++ количество фактических параметроввызова функции и их типы должны
совпадать с количеством и типами
формальных параметров описания
• Пример вызова функции:
int main()
{
double a = 3.4, b = 8.6, c, d;
c = mlt(a, b);
d = mlt(3.7, c) + mlt(a, с - 2.9);
return 0;
}
НРТК, 2022 г. 7
Функции. Начальные сведения
Созонов А.А.
8. Итак, программа на C/C++
• Набор функций, которые могут вызыватьдруг друга
• Среди которых есть одна функция main,
которую не может вызывать никакая другая
функция, с нее начинается исполнение
программы
• Функции не могут быть вложены друг в
друга
НРТК, 2022 г. 8
Функции. Начальные сведения
Созонов А.А.
9. Еще пример
double sum(double p1, double p2){
return p1 + p2;
}
double mlt(double p1, double p2)
{
return p1 * p2;
}
double sum_mlt(double p1 , double p2 , double p3)
{
return mlt(p1, sum_mlt(p2, p3));
}
int main()
{
double a = 3.4, b = 8.6, c, d;
c = mlt(a, b);
d = sum(3.7, c) * sum_mlt(a, b, -2.9);
return 0;
}
НРТК, 2022 г. 9
Функции. Начальные сведения
Созонов А.А.
10. Прототип функции
• В C++ функция должна быть описана до еевызова
• Прототип функции — предварительное
объявление функции
• Синтаксис: объявление тела функции, но тело
функции заменено на ; (точку с запятой):
<тип> <имя_функции>(<параметры>);
• Имена параметров могут быть опущены, но не
стоит этим увлекаться: удачные имена
функции и параметров — половина
документации к функции
НРТК, 2022 г. 10
Функции. Начальные сведения
Созонов А.А.
11. Пример использования прототипа
double Sum(double, double);int main()
{
double a = 3.4, b = 8.6, c;
c = Sum(a, b);
return 0;
}
double Sum(double p1, double p2)
{
return p1 + p2;
}
НРТК, 2022 г. 11
Функции. Начальные сведения
Созонов А.А.
12. Особенности функций в C
• Не проверяются типы и количествоформальных параметров
• Прототип необязателен, если его нет —
подразумевается, что функция возвращает
int
• Хорошие программы на C не используют эти
возможности (следовательно, их
программы «совместимы» с C++)
НРТК, 2022 г. 12
Функции. Начальные сведения
Созонов А.А.
13. Пример
double sum();int main()
{
double a = 3.4, b = 8.6, c;
int i;
c = sum(a, b);
// Нет проверки параметров
i = gcd(10, 15); // Вызов без прототипа
return 0;
}
double sum(double p1, double p2)
{
return p1 + p2;
}
НРТК, 2022 г. 13
Функции. Начальные сведения
Созонов А.А.
14. Задачи
• Вычисление периметра и площадитреугольника
• Задачи для самостоятельной работы
НРТК, 2022 г. 14
Функции. Начальные сведения
Созонов А.А.
15.
НРТК, 2022 г. 15Функции. Начальные сведения
Созонов А.А.