Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Функции. В языке C функции эквивалентны подпрограммам или функ-





 

В языке "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 вызывается дважды в строке

 

PRINTF("%D %D %D\N",I,POWER(2,I),POWER(-3,I));

 

при каждом обращении функция POWER, получив два аргумента,

вазвращает целое значение, которое печатается в заданном

формате. В выражениях POWER(2,I) является точно таким же це-

лым, как 2 и I. /Не все функции выдают целое значение; мы

займемся этим вопросом в главе 4/.

Аргументы функции POWER должны быть описаны соответству-

ющим образом, так как их типы известны. Это сделано в строке

 

INT X,N;

 

которая следует за именем функции.

Описания аргументов помещаются между списком аргументов

и открывающейся левой фигурной скобкой; каждое описание за-

канчивается точкой с запятой. Имена, использованные для ар-

гументов функции POWER, являются чисто локальными и недос-

тупны никаким другим функциям: другие процедуры могут ис-

пользовать те же самые имена без возникновения конфликта.

Это верно и для переменных I и P; I в функции POWER никак не

связано с I в функции MAIN.

Значение, вычисленное функцией POWER, передаются в MAIN

с помощью оператора RETURN, точно такого же, как в PL/1.

внутри круглых скобок можно написать любое выражение. Функ-

ция не обязана возвращать какое-либо значение; оператор

RETURN, не содержащий никакого выражения, приводит к такой

же передаче управления, как "сваливание на конец" функции

при достижении конечной правой фигурной скобки, но при этом

в вызывающую функцию не возвращается никакого полезного зна-

чения.

 







Date: 2015-09-17; view: 340; Нарушение авторских прав



mydocx.ru - 2015-2024 year. (0.008 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию