Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_С++.docx
Скачиваний:
88
Добавлен:
11.04.2015
Размер:
842.63 Кб
Скачать

Функции

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

Общий вид описания функции

Описание функции содержит заголовок со списком формальных параметров и тело функции.

Тип Имя_функции(список формальных параметров)

{

Описание локальных переменных;

Операторы тела функции;

return результат;

}

Тип, указываемый в заголовке функции, определяет тип результата ее работы, который будет возвращаться в точку вызова. Если тип не указан, то по умолчанию подразумевается int (целый). Для возврата значения в теле функции должен быть оператор return. В дальнейшем будем называть такую функцию типизированной.

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

void имя_функции(список формальных параметров)

{

Описание локальных переменных;

Операторы тела функции;

}

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

#include "stdafx.h"

int maximum(int a, int b) //заголовок функции maximum

{

int c; //локальная переменная

if (a>b)

c=a;

else

c=b;

return c; // возвращение результата

}

void main()

{ int x,y,z;

printf("Введите x и y:");

scanf("%d%d",&x,&y); // ввод двух чисел

z=maximum(x,y); // обращение к функции maximum

printf("max=%d\n",z);

}

Рассмотрим пример программы, использующей нетипизированную функцию. Функция Form_matrix будет заполнять целочисленную матрицу размера mxn случайными числами.

#include "stdafx.h"

#include "stdlib.h"

#define M 50

void Form_matrix(int A[][M], int m, int n) /*заголовок функции Form_matrix */

{

Int I,j; //локальные переменные

for(i=0;i<m;i++)

for(j=0;j<n;j++)

A[i][j]=rand()%100-50;

}

void main()

{ int m1,n1,m2,n2; //переменные для задания размерности матриц

int Matr1[M][M],Matr2[M][M]; /*объявление двух матриц размера 50х50 */

printf("Введите размерность Mart1 ");

scanf("%d%d",&m1,&n1); // ввод двух чисел

Form_matrix(Matr1,m1,n1); //обращение к функции Form_matrix

printf("Введите размерность Mart2 ");

scanf("%d%d",&m2,&n2); // ввод двух чисел

Form_matrix(Matr2,m2,n2); //обращение к функции Form_matrix

}

Данный пример демонстрирует использование функции Form_matrix дважды в главной функции. При первом обращении к функции произойдет заполнение матрицы Mart1, а при втором обращении – Matr2, так как их имена указаны в соответствующих обращениях к функции. Функция Form_matrix может заполнить матрицу любого размера, не превышающего 50х50. (Конечно, можно было создать динамические матрицы, но это другая история, и мы говорили о ней в параграфе «Динамическая память»).

В теории о подпрограммах-функциях следует остановиться еще на трех важных вопросах:

  • обращение к нетипизированной и типизированной функциям;

  • передача параметров в функцию;

  • возвращение результатов.