КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
ФункцииФункция – это автономная часть программы, реализующая определенный алгоритм и допускающая обращение к ней из различных частей главной программы и из других подпрограмм этой программы, так как каждая функция по отношению к другим является внешней. Общий вид описания функции Описание функции содержит заголовок со списком формальных параметров и тело функции. Тип Имя_функции(список формальных параметров) { Описание локальных переменных; Операторы тела функции; 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. (Конечно, можно было создать динамические матрицы, но это другая история, и мы говорили о ней в параграфе «Динамическая память»). В теории о подпрограммах-функциях следует остановиться еще на трех важных вопросах: - обращение к нетипизированной и типизированной функциям; - передача параметров в функцию; - возвращение результатов.
|