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

№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<iostream.h>#include<conio.h>double max_massiv (double y[], int k){int i; double max=y[0];     for (i=1;i<k;i++)if(y[i]>max)max=y[i];          return max;}int main () {  const int k=20;double mas[k];cout <<"Введите элементы массива:\n";for(int j=0; j<k; j++) {cout<<"mas["<<j<<"]="; }cin>>mas[j];}cout <<"\n max_massiv="<<: max_massiv (mas,k);return 0;}

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

#include<iostream.h>#include<conio.h>#include<stdlib.h>void sort_massiv (double y[], int k){    int i,p,j; double max;     for (i=0;i<k;i++) {p=i;          for (j=i+1;j<k;j++)if(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 <<"исходный массив:\n";for(j=0;j<n;j++) {mas[j]=random(100)-50;cout<<mas[j]<<" ";}sort_massiv (mas, n);cout <<"\n отсортированный массив: \n";for (j=0;j<n;j++) cout <<mas[j]<<" ";return 0;}

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

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

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

#include <iostream.h>#include <conio.h>#include <stdlib.h>#include <iomanip.h>/*Функция input_mass() используется для присваивания элементам двумерного массива псевдослучайных чисел с помощью функции random */void input_mass(int **mas, int line, int column){int j, k;     for (j=0; j<line; j++)     for (k=0; k<column; k++)mas[j][k]=random(50); }/*Функция out_mass() используется для вывода элементов двумерного массива на экран в виде матрицы */void out_mass(int **mas, int line, int column){     cout <<”\n”;     for (int j=0;j<line;j++){     for (int k=0;k<column;k++) cout<<setw(4)<<mas[j][k];cout <<"\n"; }}/*Функция summ_mass() находит сумму элементов строк */int summ_mass(int *x, int column){int s=0, k;for (k=0;k<column;k++) { s+=x[k]; }return s;}int main () { randomize();     int j, line, column;     cout <<"Введите количество строк \n";cin>> line;     cout <<"Введите количество столбцов \n";cin>> column;     int **mas = new int *[ line];     for (j=0;j< line;j++){ mas[j]=new int[column];}     input_mass(mas, line, column);     cout <<"исходная матрица\n";     out_mass(mas, line, column);for (j=0;j< line;j++){     cout<<"сумма элементов "<<(j+1)<< "-й строки " <<summ_mass(mas[j], column)<<"\n"; }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.