НРТК
Что такое функция?
Описание функции
Примеры
Пример: вычисление НОД
Вызов функции
Вызов функции
Итак, программа на C/C++
Еще пример
Прототип функции
Пример использования прототипа
Особенности функций в C
Пример
Задачи
86.40K
Category: programmingprogramming

Функции. Начальные сведения. С / С++. Тема 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
Функции. Начальные сведения
Созонов А.А.
English     Русский Rules