Язык С




Функции


В языке "C" функции эквивалентны подпрограммам или функ- циям в фортране или процедурам в PL/1, паскале и т.д. Функ- ции дают удобный способ заключения некоторой части вычисле- ний в черный ящик, который в дальнейшем можно использовать, не интересуясь его внутренним содержанием. Использование функций является фактически единственным способом справиться с потенциальной сложностью больших программ. Если функции организованы должным образом, то можно игнорировать то, как делается работа; достаточно знание того, что делается. Язык "C" разработан таким образом, чтобы сделать использование функций легким, удобным и эффективным. Вам будут часто вст- речаться функции длиной всего в несколько строчек, вызывае- мые только один раз, и они используются только потому, что это проясняет некоторую часть программы. До сих пор мы использовали только предоставленные нам функции типа PRINTF, GETCHAR и PUTCHAR; теперь пора написать несколько наших собственных. так как в "C" нет операции воз- ведения в степень, подобной операции ** в фортране или PL/1, давайте проиллюстрируем механику определения функции на при- мере функции POWER(M,N), возводящей целое м в целую положи- тельную степень N. Так значение POWER(2,5) равно 32. Конеч- но, эта функция не выполняет всей работы операции **, пос- кольку она действует только с положительными степенями не- больших чисел, но лучше не создавать дополнительных затруд- нений, смешивая несколько различных вопросов. Ниже приводится функция POWER и использующая ее основная программа, так что вы можете видеть целиком всю структуру.

MAIN() /* TEST POWER FUNCTION */ { INT I;

FOR(I = 0; I < 10; ++I) PRINTF("%D %D %D\N",I,POWER(2,I),POWER(-3,I)); }

POWER(X,N) /* RAISE X N-TH POWER; N > 0 */ INT X,N; { INT I, P; P = 1; FOR (I =1; I <= N; ++I) P = P * X; RETURN (P); } Все функции имеют одинаковый вид: имя (список аргументов, если они имеются) описание аргументов, если они имеются { описания операторы }

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




Содержание  Назад  Вперед