Контрольные вопросы:
1.Что такое перечисление?
2.Спомощью какого ключевого слово объявляется перечисление?
3.Отличие перечисление от смеси?
Литература:
Подбельский В.В. Программирование на языке С\С++. С.-П.-2000 г.
Павловская Т.А. С/C++. Программирование на языке высокого уровня. С.-П.-2001 г.
Марченко А.Л. С++. Бархатный путь. М-2000 г.
Карпов Б, Баранова Т.С. С++. Специальный справочник. С.-П.-2000 г.
Мансуров К.Т. и др. Программирование на языке С/С++. Ош-2001 г.
The C Programming Lanquage by Brian W.Kernigan and Dennis
M.Ritchie (New Jersey: Prentice-Hall. 1978) Переведена на русский язык
Б.Керниган, Д.Ритчи, А.Фьюэр "Язык программирования Си. Задачи по языку Си".
Лабораторная работа № 8
( 2 часа)
Тема: Функция. Определения, объявления и вызов функции.
Целью лабораторной работы является получение базовых практических навыков использования функций в программировании, необходимых для дальнейшего выполнения цикла лабораторных работ.
Занятие 1
2 часа
В языке "С" функции эквивалентны подпрограммам или функциям в Фортране или процедурам в PL/1, Паскале и т.д. Функции дают удобный способ заключения некоторой части вычислений в черный ящик, который в дальнейшем можно использовать, не интересуясь его внутренним содержанием. Использование функций является фактически единственным способом справиться с потенциальной сложностью больших программ. Если функции организованы должным образом, то можно игнорировать то, как делается работа; достаточно знание того, что делается. Язык "С" разработан таким образом, чтобы сделать использование функций легким, удобным и эффективным. Вам будут часто встречаться функции длиной всего в несколько строчек, вызываемые только один раз, и они используются только потому, что это проясняет некоторую часть программы.
До сих пор мы использовали только предоставленные нам функции типа PRINTF, GETCHAR и PUTCHAR; теперь пора написать несколько наших собственных, так как в "С" нет операции возведения в степень, подобной операции ** в Фортране или 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 */
INTX,N;
INT I, P;
P=1;
FOR(I=1;K=N;++I) P = P*X;
RETURN (P);
Все функции имеют одинаковый вид:
имя (список аргументов, если они имеются) <
описание аргументов, если они имеются
описания операторы
Эти функции могут быть записаны в любом порядке и находиться в
одном или двух исходных файлах. Конечно, если исходная программа
размещается в двух файлах, вам придется дать больше указаний при
компиляции и загрузке, чем если бы она находилась в одном, но это дело
операционной системы, а не атрибут языка. В данный момент, для того
чтобы все полученные сведения о прогоне "С"- программ, не изменились в
дальнейшем, мы будем предполагать, что обе функции находятся в одном и
том же файле.
Функция POWER вызывается дважды в строке
PRINTF("%D %D %D\N",I,POWER(2,I),POWER(-3,I));
при каждом обращении функция POWER, получив два аргумента, возвращает целое значение, который печатается в заданном формате. В выражениях POWER(2,I) является точно таким же целым, как 2 и I. /Не все функции выдают целое значение; мы займемся этим вопросом в главе 4/.
Аргументы функции POWER должны быть описаны соответствующим образом, так как их типы известны. Это сделано в строке
INTX,N; которая следует за именем функции.
Описания аргументов помещаются между списком аргументов и
открывающейся левой фигурной скобкой; каждое описание заканчивается
точкой с запятой. Имена, использованные для аргументов функции POWER, являются чисто локальными и недоступны никаким другим функциям: другие процедуры могут использовать те же самые имена без возникновения конфликта. Это верно и для переменных I и Р; I в функции POWER никак не связано с I в функции MAIN.
Значение, вычисленное функцией POWER, передаются в MAIN с помощью оператора RETURN, точно такого же, как в PL/I, внутри круглых скобок можно написать любое выражение. Функция не обязана возвращать какое-либо значение; оператор RETURN, не содержащий никакого выражения, приводит к такой же передаче управления, как "сваливание на конец" функции при достижении конечной правой фигурной скобки, но при этом в вызывающую функцию не возвращается никакого полезного значения.
Мощность языка Си во многом объясняется легкостью и гибкостью в определении и использовании функции в Си-программах. В отличие от
других языков программирования высокого уровня в языке Си нет деления на процедуры, подпрограммы и функции.
В языке Си программа строится только из функций.
Функция -это независимая совокупность объявлений и операторов, ь обычно предназначенная для выполнения определенной задачи. Каждая функция должна иметь имя, которое используется для вызова функции. Имя одной из функций, main , которая должна присутствовать, в каждой Си программе зарезервировано. В программе могут содержатся и другие функции, причем функция main необязательна должен быть первой, хотя с нее всегда начинается выполнение Си-программы.
При вызове функции ей могут быть переданы данные посредством аргументов функции. Функция может возвращать значение. Это возвращаемое значение и есть основной результат выполнения функции, который при выполнении программы подставляется на место вызова функции, где бы этот вызов ни встретился в программе. Однако могут быть определены функции, которые не имеют никаких параметров и не возвращают никакого значения. Тем не менее действие таких функций может состоять в изменении внешних или статических переменных или выполнении каких-либо других действий, не связанных с данными.
С использованием функций в языке Си связаны три понятия: -Определение функции; -объявлении функции; -и вызов функции;
Do'stlaringiz bilan baham: |