Skip to content

Практическая работа №4

Цель работы

Основные теоритические положения

Section titled “Основные теоритические положения”

Функция - это блок кода, который выполняет определенную задачу и может быть вызван из других частей программы.

Синтаксис объявления функции:

тип_возвращаемого_значения имя_функции (параметры) {
// тело функции
return значение;
}

Простая функция

#include <iostream>
using namespace std;
int sum(int a, int b) {
return a + b;
}
int main() {
int result = sum(3, 5);
cout << "Result: " << result << endl;
return 0;
}

Функция без возвращаемого значения

#include <iostream>
using namespace std;
void printMessage() {
cout << "Print message!" << endl;
}
int main() {
printMessage();
return 0;
}

Функция с параметрами по умолчанию

#include <iostream>
using namespace std;
int power(int base, int exponent = 2) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= base;
}
return result;
}
int main() {
cout << "5 в степени 2 = " << power(5) << endl;
return 0;
}

Рекурсия - это свойство, при котором функции должна вызываться сами собой.

Пример рекурсии

#include <iostream>
using namespace std;

Компиляция и запуск программы

Section titled “Компиляция и запуск программы”
Terminal window
g++ *имя_файла*.cpp -o *название_файла_для компиляции*
./*название_скомпилированного_файла*

Общие требования к выполнению практической работы

Section titled “Общие требования к выполнению практической работы”

Для каждого задания необходимо:

  1. Составить схему алгоритма программы;
  2. Написать программу на языке программирования C++;
  3. Произвести отладку программы на различных взодных данных.

Задание для выполнения

Section titled “Задание для выполнения”

1. Создание базовых функций

Section titled “1. Создание базовых функций”

1.1 Калькулятор простых операций

Создайте функции для основных арифметических операций:

  • int add(int a, int b) - сложение;
  • int subtract(int a, int b) - вычетание;
  • int multiply(int a, int b) - умножение;
  • double divide(int a, int b) - деление (с проверкой деления на ноль).

Объясните почему в функции деления используется double

1.2 Функции для проверки числа

Создайте функции для анализа числа на:

  • bool isEven(int number) - проверка четности;
  • bool isPrime(int number) - проверка, что число простое;
  • int sumDigit(int number) - сумма цифр числа;

2. Математические функции

Section titled “2. Математические функции”

Для работы с математическими функциями используется стандартная библиотека <cmath>, но некоторые функции необходимо реализовывать самостоятельно

2.1 Факториал числа

Реализуйте функцию long long factorial(int n) для вычисления факториала числа двумя способами:

  • Итеративный (с использованием цикла);
  • Рекурсивный.

2.2 Числа Фибоначчи

Создайте функцию int fibonacci(int n) для вычисления n-го числа Фибоначчи двумя способами:

  • Итеративный (с использованием цикла);
  • Рекурсивный.

3. Функции с передачей по ссылке

Section titled “3. Функции с передачей по ссылке”

3.1 Поиск минимума и максимума

Создайте функции для поиска минимального и максимального значения:

  • double min(double x, double y)
  • double max(double x, double y)

В переменную x записываем минимальное из значений x и y, а в переменную y - максимальное из этих значений. Параметры x и y выступают одновременно как входные и выходные параметры.

3.2 Функция для обмена значений

Необходимо создать функцию для обмена значений двух переменных

  • void swap(double x, double y)

С ее помощью для данных переменных A, B, C, D последовательно поменять содержимое следующих пар: A и B, C и D, B и C и вывести новые значения A, B, C, D.


  1. Определение пользовательской функции. Аргументы, возвращаемое значение и тело функции. Пример.
  2. Функции без аргументов. Примеры.
  3. Вызов функции и возврат из неё. Оператор return. Пример.
  4. Использование переменных в функциях. Локальные и глобальные переменные.