Работа с функциями пользователя в языке программирования С++

№90-1,

технические науки

В статье на понятном для начинающего программиста уровне рассматривается создание функции пользователя в языке программирования С++. Приведены примеры решения задач с помощью функций. Рассмотрена тема передача массивов функции в качестве параметра.

Похожие материалы

Одними из самыми распространенными языками программирования высокого уровня являются Си и С++ [1, 2]. Эти языки программирования пользуются успехов у студентов. Они используются студентами при выполнении курсовых проектов, написании выпускных квалификационных работ [3, 4]. Кроме того, язык программирования С++ используются при решении многих научных задач [5-7].

В данной работе на понятном для начинающего программиста уровне рассматривается создание функции пользователя в языке программирования С++.

В отличие от некоторых других языков программирования высокого уровня в языке С++ нет деления подпрограмм на процедуры и функции. Аналогом процедуры здесь является функция, которая ничего не возвращает.

Функция объединяет объявления и операторы. Она оформляется в виде отдельной конструкции и снабжается именем. Имя функции применяется для её объявления, определения и вызова. В языке С++ функция не может быть описана внутри другой функции.

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

Общий вид описания функции пользователя:

[] [] ([] ) [throw () ] {}

Элементы указанные в квадратных скобках могут отсутствовать. Спецификатор задает класс памяти функции пользователя, например, static или extern. класс памяти

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

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

Спецификатор задает тип возвращаемого значения. Если спецификатор отсутствует, то по умолчанию функция возвращает значение типа int. Функция типа void результат не возвращает, а выполняет некоторые действия.

Возвращаемое значение указывается после оператора return. После return указывается выражение. Вычисляется значение выражения, преобразуется к типу возвращаемого значения функцией. Вычисленное значение возвращается в точку вызова функции в качестве результата.

После выполнения оператора return функция завершает свою работу. Общий вид оператора return:

return [] ;

Если функция возвращает значение типа void, то в операторе return должно отсутствовать:

return;

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

Примеры объявления функций с несколькими параметрами:

float integral (float x, float y, float z );//функция integral имеет три параметра типа floatdouble f1(int k, double x, int n);// функция f1 имеет два параметра типа int и один параметр типа double

Если у функции нет параметров, то круглые скобки после имени функции обязательно указываются. Вместо пустого списка параметров можно указать слово void:

int f2(void) { ;}

Параметрами функции могут быть массивы. На С++ массивы функциям автоматически передаются по ссылке.

Рассмотрим примеры передачи массивов функциям в качестве параметров.

const int k=30;int mas[k];void Function1 (int [ ], int );  

Первый параметр функции Function — это массив, а второй — количество элементов массива. При вызове функции передаем реальные параметры

Function1 (mas, k); //

Пример. Дан одномерный вещественный массив, содержащий 20 элементов. Найти наибольший элемент массива.

Решение задачи. В статье специально все программы приводятся в элементарном виде, чтобы она была понятна для начинающих программистов.

#include#includedouble max_massiv (double y[], int k){int i; double max=y[0];     for (i=1;iif(y[i]>max)max=y[i];          return max;}int main () {  const int k=20;double mas[k];cout for(int j=0; jcoutcin>>mas[j];}cout return 0;}

Пример. Дан одномерный вещественный массив, содержащий 20 элементов. Отсортировать элементы массива по неубыванию.

#include#include#includevoid sort_massiv (double y[], int k){    int i,p,j; double max;     for (i=0;ip=i;          for (j=i+1;jif(y[p]>y[j]) { p=j; }          max=y[p];y[p]=y[i];y[i]=max; }}int main (){  const int n=20;int j;double mas[n]={0};randomize();cout for(j=0;jmas[j]=random(100)-50;cout}sort_massiv (mas, n);cout for (j=0;jcout return 0;}

Массив является указателем, и поэтому функции sort_massiv массив mas передается по ссылке. При передаче массива функции в качестве параметра все изменения в значениях элементов массива внутри функции сохраняются после выхода из функции.

Для передачи массивов в функцию можно использовать указатели.

Пример. Дан двумерный целочисленный массив, содержащий 5 строк и 4 столбца. Вывести на экран номер строки и сумму элементов этой строки в столбик.

#include #include #include #include /*Функция input_mass() используется для присваивания элементам двумерного массива псевдослучайных чисел с помощью функции random */void input_mass(int **mas, int line, int column){int j, k;     for (j=0; j     for (k=0; kmas[j][k]=random(50); }/*Функция out_mass() используется для вывода элементов двумерного массива на экран в виде матрицы */void out_mass(int **mas, int line, int column){     cout      for (int j=0;j     for (int k=0;k coutcout }/*Функция summ_mass() находит сумму элементов строк */int summ_mass(int *x, int column){int s=0, k;for (k=0;kreturn s;}int main () { randomize();     int j, line, column;     cout cin>> line;     cout cin>> column;     int **mas = new int *[ line];     for (j=0;j     input_mass(mas, line, column);     cout      out_mass(mas, line, column);for (j=0;j     cout getch(); return 0;}

Таким образом, в статье на понятном для начинающего программиста уровне рассматривается создание функции пользователя в языке программирования С++. Приведены примеры решения задач с помощью функций. Рассмотрена тема передача массивов функции в качестве параметра.

Список литературы

  1. Дубров Г.В. Основы программирования на С++. – М.: Конкорд, 1993. – 219 c.
  2. Подбельский В.В. Язык С++: Учебное пособие – 5 изд. – М: Финансы и статистика, 2004. – 560 c.
  3. Шилдт Г. С++: базовый курс. 3-е издание. – М.: Издательский дом "Вильямс". 2010. – 624 с.
  4. Хусаинова Г.Я. Этапы проектирования информационной системы // Вестник Технологического университета. 2018. Т. 21. № 6. – С. 153-156.
  5. Хусаинов И.Г/ Исследование влияния круговой границы на процесс релаксации давления в скважине после её опрессовки // Автоматизация. Современные технологии. 2017. Т. 71. № 11. – С. 490-494.
  6. Хусаинов И.Г. Релаксация температуры пластины, помещенной в среду с более низкой температурой // Вестник Тюменского государственного университета. Физико-математическое моделирование. Нефть, газ, энергетика. 2017. Т. 3. № 4. – С. 132-141
  7. Хусаинова Г.Я. Нестационарная фильтрация вязкопластичной жидкости в пласте // Автоматизация. Современные технологии. 2018. Т. 72. № 4. – С. 147-149.