Функции

Язык С
Строк программы, исключая математическое обеспечение Является учебным введением в центральную часть языка “C” Hачинаем. Единственный способ освоить новый язык Оператор FOR Набор полезных программ Подсчет символов Подсчет слов Функции Аргументы - вызов по значению Область действия: внешние переменные Резюме Константы Описания Преобразование типов До 9 и буквы от а до F Операции и выражения присваивания Старшинство и порядок вычисления Операторы и блоки Переключатель Цикл DO - WHILE Оператор CONTINUE Основные сведения Функции, возвращающие нецелые значения Еще об аргументах функций Правила, определяющие область действия Статические переменные Блочная структура Рекурсия Указатели и адреса Указатели и массивы Адресная арифметика Указатели символов и функции Указатели - не целые До 12, а не от 0 до 11. Так как за экономию памяти у нас пока не награждают, такой способ проще, чем подгонка индек-сов Инициализация массивов указателей Указатели на функции Структуры Структуры и функции Указатели на структуры Мы продемонстрируем, как правильно выполнить эту задачу Поля Определение типа Обращение к стандартной библиотеке Форматный вывод - функция PRINTF Форматный ввод - функция SCANF Форматное преобразование в памяти Обработка ошибок - STDERR и EXIT Обращение к системе Низкоуровневый ввод/вывод - операторы READ и WRITE Произвольный доступ - SEEK и LSEEK Пример - распечатка справочников Пример - распределитель памяти Константы Синтаксическая нотация Преобразования Первичные выражения Унарные операции Аддитивные операции Операция присваивания Спецификаторы типа Описание структур и объединений Инициализация TYPEDEF Оператор SWITCH Внешнее определение функции Область действия внешних идентификаторов Неявные описания Явные преобразования указателей Анахронизмы Операторы
439386
знаков
0
таблиц
0
изображений

1.7. Функции.

 

В языке “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);

}


·     30 -

 

Все функции имеют одинаковый вид:

имя (список аргументов, если они имеются)

описание аргументов, если они имеются

{

описания

операторы

}

 

 

Эти функции могут быть записаны в любом порядке и нахо-

диться в одном или двух исходных файлах. Конечно, если ис-

ходная программа размещается в двух файлах, вам придется

дать больше указаний при компиляции и загрузке, чем если бы

она находилась в одном, но это дело операционной системы, а

не атрибут языка. В данный момент, для того чтобы все полу-

ченные сведения о прогоне “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, не содержащий никакого выражения, приводит к такой

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

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

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

чения.

Упражнение 1-13.

Апишите программу преобразования прописных букв из айла

ввода в строчные, используя при этом функцию OWER©, кото-

рая возвращает значение 'C', если C'- не буква, и значение

соответствующей строчной уквы, если 'C'-буква.


·     31 -


Информация о работе «Язык С»
Раздел: Информатика, программирование
Количество знаков с пробелами: 439386
Количество таблиц: 0
Количество изображений: 0

Похожие работы

Скачать
48443
0
0

... основаниям. При этом философская абстракция языка оказывается неразрывно связана с основными темами и движениями философии в целом. Более конкретно, на ранние стадии традиционно рассматриваемого в рамках АФ анализа обыденного языка глубокое влияние оказала философия Дж. Э. Мура, особенно его учение о здравом смысле, согласно которому такие понятия, как «человек», «мир», «я», «внешний мир», « ...

Скачать
43709
0
0

... и других странах СНГ, а также облегчение доступа к русской и мировой культуре и науке. Таким образом, судя по данным наших исследований, востребованность русского языка осталась в республике достаточно высокой. Многие представители современной молдавской молодежи продолжают, как их отцы и деды, тянуться к русской культуре, научным и техническим достижениям России. Русский язык остается языком ...

Скачать
39778
0
1

... рисуночное словесно-слоговое письмо). Памятники среднеэламского периода (14—12 вв. до н.э.) выполнены аккадской клинописью. Памятники новоэламского периода относятся к 8—6 вв. до н.э. Был официальным языком в персидском государстве Ахеменидов в 6—4 вв. предполагается, что он, подвергшись влиянию древнеперсидского, сохранился до раннего средневековья. 7. Бурушаски язык Язык бурушаски ( ...

Скачать
64931
0
0

... /диалект), скифский, согдийский, среднеперсидский, таджикский, таджриши (язык/диалект), талышский, татский, хорезмийский, хотаносакский, шугнано-рушанская группа языков, ягнобский, язгулямский и др. Они относятся к индоиранской ветви индоевропейских языков. Области распространения: Иран, Афганистан, Таджикистан, некоторые районы Ирака, Турции, Пакистана, Индии, Грузии, Российской Федерации. Общее ...

0 комментариев


Наверх