- •6. Функции в языке с
- •6.1 Описание функции
- •Void main()
- •6.2 Вызов функции
- •6.3 Варианты описания и использования функций
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •7. Работа со строками
- •7.1 Способы описания строк в программе
- •7.2 Ввод-вывод строк
- •7.3 Функции для работы со строками
- •8. Структуры и объединения в языке с
- •8.1 Описание структур
- •8.2 Инициализация структур
- •8.3 Работа с элементами структур
- •8.4 Структуры и указатели
- •8.5. Битовые поля в структурах
- •Работа с битовыми полями:
- •8.6. Объединения
- •Работа с полями объединения
- •8.7. Отличие объединения от структуры
- •8.8. Применение объединений
- •Void main()
- •9. Файлы в языке c. Функции работы с файлами
- •A) чтение данных из файла
- •Б) запись данных в файл
- •Дополнительные функции для работы с файлами
- •10. Программирование в графическом режиме
- •Функции библиотеки graphics
- •Управление графической системой Управление графическим режимом производится с помощью следующих функций:
- •Черчение и заполнение
- •Управление цветом
- •Обработка ошибок в графическом режиме
- •Функции запроса состояния
- •Void main()
- •11. Директивы препроцессора
- •11.1. Директива #include
- •11.2. Директива #define
- •11.3. Директива #undef
- •12. Побитовые (поразрядные) операции
- •Использование побитовых операций
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
6. Функции в языке с
Функция – это часть программы, которая описывает выполнение заданного набора действий.
В языке С любая программа – это функция с именем main().
Виды функций: 1. Стандартные функции; 2. Функции, разработанные программистом.
Стандартные функции – это готовые к использованию функции, например sin(x), cos(x), scanf(...), printf(...) и другие. Они размещены в библиотеках языка С. Для их использования необходимо: а) подключить соответствующий заголовочный файл с помощью директивы препроцессора #include; б) вызвать требуемую стандартную функцию, указав ее имя и задав значения параметров.
Функции, составленные программистом – новые, дополнительные функции. Эти функции разрабатываются, когда необходимо несколько раз выполнить одинаковый набор действий для разных величин.
Например: заданы три массива А(10), В(15), С(30). Для каждого массива определить среднее значение: sa, sb, sc.
Для использования функций в программе необходимо:
Описать функцию.
Сделать к ней обращение (вызвать функцию) и задать конкретные параметры для вычисления.
6.1 Описание функции
Форма описания функции:
тип имя (тип1 арг1, тип2 арг2, ...) /*заголовок функции*/
{
описание 1; /*описание
... внутренних переменных,
описание M; массивов*/
оператор 1; /*выполняемая
... часть*/
оператор N;
}
Заголовок функции:
тип – это тип возвращаемого функцией значения (результата) через ее имя.
Определенный тип – int, float, char,...
Неопределенный тип – void
Если тип не указан, то по умолчанию – int.
main() int main()
void main()
имя – это идентификатор для обозначения функции
типI аргI,... – описания аргументов функции
типI – тип аргумента
аргI – имя аргумента
Функция может не иметь аргументов: тип имя ()
Примеры:
float my_func1(int k, float c, float d, char q)
{
...
}
void ftc(float a[], float *ptk, int n, long s)
{
...
}
Нельзя написать:
float my_func1(int k, float c,d, char q)
{...}
Описание функции может быть записано до или после функции main(), но не внутри ее:
1. До main():
При этом ничего дополнительно не надо записывать, т. к. компилятор сначала рассматривает f1(), а потом main().
2. Функция – после main()
void f1(int, float, chat, float *); /*прототип функции*/
Void main()
{
/*прототип функции можно поместить здесь*/
...
вызов f1(...);
...
}
/*описание функции f1*/
void f1(int k, float x, char p, float *ptm)
{
...
}
6.2 Вызов функции
При вызове функции, ей задаются конкретные аргументы (фактические параметры), для которых функция выполняет вычисления. Есть 2 формы вызова функций:
1. Функция имеет тип void. Вызов является самостоятельным оператором:
имя (факт_арг1,факт_арг2,...);
Фактические аргументы должны соответствовать списку аргументов в описании функции (по количеству, порядку следования, типам).
float z=1.5;
float *pts;
f1(20,z,’A’,&z);
f1(30,*pts,’N’,pts);
2. Функция имеет определенный тип (не void). Вызов не является самостоятельным оператором. Он записывается внутри другого оператора (присваивания, if, printf, ...):
u=имя(факт_арг1,факт_арг2,...);
if(имя(факт_арг1,факт_арг2,...)...){...}
float fsum(float a, float b)
{
return a+b;
}
/*Вызов float fsum :*/
float x=5.5,y=7.1,z;
z=fsum(x,y); /* z==12.6 */
