Читайте также:
|
|
Томск 2011 г
СОДЕРЖАНИЕ
ВВЕДЕНИЕ 3
1 Общие понятия 4
2 Правила вызова библиотечных функций 4
ВВЕДЕНИЕ
Данные учебно-методические указания содержат теоретический материал необходимый для выполнения лабораторной работы №1 «Использование стандартных функций языка Си» по курсу Информатика для бакалавров направления 140800 «Ядерные физика и технологии». В частности, рассматриваются понятие функции СИ, некоторые библиотечные функции и правила их вызова.
1 Общие понятия
Как уже известно, любая программа, написанная на языке Си, состоит из одной или более функций, являющихся основными модулями, из которых она собирается. Визуально вызов функции можно определить по наличию круглых скобок сразу после имени:
имя (список аргументов);
где список аргументов – необязательный элемент, но имя и скобки должны быть обязательно.
Стандартные функции printf(), scanf(), fopen() и др. уже применялись ранее. А функция main() (для DOS-приложений) в принципе выполняется первой, поэтому присутствует во всех программах.
Функция – самостоятельная единица программы, спроектированная для реализации конкретной задачи. Функцию можно вызывать из других функций. Функции в языке Си играют ту же роль, какую играют функции, подпрограммы и процедуры в других языках. Вызов функции приводит к выполнению некоторых действий. Например, при обращении к функции printf() осуществляется вывод данных на экран. Другие же функции позволяют получать некоторую величину, используемую затем при выполнении программы. В общем, функции могут выполнять действия и получать значения величин, используемых в программе, а также возвращать вычисленные значения.
Функции можно разделить на стандартные (встроенные) и пользовательские (разработанные собственно в ходе создания программы).
2 Правила вызова библиотечных функций
До сих пор Вы пользовались только стандартными функциями, осуществляющими ввод с клавиатуры или из файла, вывод на монитор или в файл, открытие и закрытие файлов. Для того, чтобы организовать доступ к указанным функциям, в начале программного файла с помощью директивы препроцессора include включается файл stdio.h. На самом деле в указанном файле содержится описание следующих функций:
clearerr fclose fcloseall fdopen feof ferror
fflush fgetc fgetchar fgetpos fgets fileno
flushall fopen fprintf fputc fputchar fputs
fread freopen fscanf fseek fsetpos ftell
fwrite getc getchar gets getw perror
printf putc putchar puts putw remove
rename rewind rmtmp scanf setbuf setvbuf
sprintf sscanf strerror _strerror tempnam tmpfile
tmpnam ungetc unlink vfprintf vfscanf vprintf
vscanf vsprintf vsscanf
Аналогично, в файле math.h описаны функции, предназначенные для математических вычислений:
abs... acos acosl asin asinl
atan atanl atan2 atan2l atof _atold
cabs cabsl ceil ceill cos cosl
cosh coshl exp expl fabs fabsl
floor floorl fmod fmodl frexp frexpl
hypot hypotl labs... ldexp ldexpl
log logl log10 log101 matherr _matherrl
modf modfl poly polyl pow powl
pow10 pow10l sin sinl sinh sinhl
sqrt sqrtl tan tanl tanh tanhl
Как правило, стандартные функции возвращают какую-либо величину, которую соответствующим образом можно использовать для дальнейшей обработки.
Например, функция fopen() на самом деле при успешном завершении возвращает указатель на вновь открытый поток (например, файл, имя которого указано в качестве первого аргумента), а в случае ошибки возвращает значение NULL – константу, описанную в stdio.h. Поэтому легко можно проверить, например, открылся ли удачно файл, из которого должны считываться данные:
FILE *in;
in = fopen("AUTO.DAT", "r");
if (in == NULL)
{
printf("Невозможно открыть входной файл.\n");
}
При обращении к функциям надо не забывать о том, что типы, порядок и количество фактических параметров (перечисляемых при конкретном обращении) должны совпадать с описанием формальных параметров (данных в описании функции). Например, функция вычисления синуса описана в math.h следующим образом:
double sin(double x);
Это означает, что при обращении к этой функции ей необходимо передать 1 аргумент вещественного типа двойной точности, результат будет иметь также вещественный тип двойной точности. При этом надо не забыть, что для стандартных тригонометрических функций единица измерения угла – радианы.
Например, надо вычислить значение синуса 30о:
int xgr;
double ss;
xgr = 30; // градусы
ss = sin (xgr*M _ PI/180);
Здесь перед вызовом функции sin() градусы переводим в радианы, используя константу M _ PI (вещественного типа), описанную также в math.h, а затем уже результат (вещественного типа!) будет передан для вычисления функции sin().
Функции, предназначенные для математических вычислений, можно разбить на группы:
тригонометрические функции | sin(double x), cos(double x), tan(double x) |
обратные тригонометрические функции | asin(double x), acos(double x), atan(double x) |
арктангенс от (y/x) | atan2(double x) |
гиперболические тригонометрич. функции | sinh(double x), cosh(double x), tanh(double x) |
экспоненты и логарифмы | exp(double x), log(double x), log10(double x) |
экспоненты и логарифмы (по основанию 2) | ldexp(double x, int n), ldexpl(double x, int n) |
деление и остаток от деления | modf(double x, double *ip), fmod(double x, double y) |
возведение в степень | pow(double x, double y) [xy], sqrt(double x) [ ] |
округление | ceil(double x) [округление вверх], floor(double x) [округление вниз] |
вычисление модуля | abs(int n) [для целых], fabs(double x) [для вещественных] |
Как правило, они имеют аргумент вещественного типа и возвращают результат также вещественного типа. Не забудьте, что для тригонометрических функций аргумент передается в радианах. Единицы измерения результатов обратных тригонометрических функций – также радианы.
В math.h описаны следующие полезные константы:
Название константы | Значение константы | Название константы | Значение константы | Название константы | Значение константы |
M_PI | p | M_1_SQRTPI | 1/ | M_LN2 | ln(2) |
M_PI_2 | p/2 | M_2_SQRTPI | 2/ | M_LN10 | ln(10) |
M_PI_4 | p/4 | M_E | e | M_SQRT2 | |
M_1_PI | 1/p | M_LOG2E | log(e) | M_SQRT_2 | |
M_2_PI | 2/p | M_LOG10E | log10(e) |
Таким образом, после включения файла math.h можно использовать эти константы в выражениях – их значения не надо определять дополнительно.
Дата добавления: 2015-09-05; просмотров: 174 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Літаратура па курсу | | | Зонирование библиотечных помещений |