Cоздание и использование пользовательских функций
Весь принцип программирования на Си основан на понятии функции. Выполнение программы начинается с команд, содержащихся в функции main(), затем из неё вызываются другие функции: printf, scanf(), getchar(), putchar(). Это библиотечные функции языка Си.
Как же создать свои функции?
void main (void){
float list[50];
read list (list); // ввод набора чисел
sort list (list); // сортировка
average (list); // поиск среднего
bargaph (list); // печать графика
}
Созданные функции можно использовать и в других программах.
До определенного момента функция рассматривается как "чёрный ящик", пока не нужно писать программу, реализующую данную функцию.
Нужно знать, как определить функцию и как к ней обратиться. Различают 3 основных момента работы с функцией:
1. Объявление функции или декларация. Если функция вызывается до своего определения, её необходимо объявить. Объявление функции представляет собой заголовок функции после которого ставится “;”. Объявить функцию можно вне main( ) или внутри какой-либо другой функции, но обязательно до вызова объявляемой функции. При объявлении функции вне {…}, они доступны везде, при объявлении внутри какой-либо другой функции, они доступны тошько в этой функции. Можно создавать свои собственные заголовочные файлы и подключать их директивой include.
2. Вызов функции – это обращение к функции для выполнения действий, описанных в ней.
3. Определение функции или дифиниция – запись тела функции. Определять функцию можно в любом месте программы и поэтому, если функция уже определена до вызова, то объявлять её не надо.
Тип функции определяется типом возвращаемого ею значения, а не типом аргументов! По умолчанию тип функции int. Функцию необходимо описать: а) в её определении; б) в вызывающей программе (то есть где она используется). Типичное определение функции:
Имя(список аргументов)
Описание аргументов
Тело функции
//Задача. Напечатать титульный бланк организации.
#inсlude <stdio.h>
void starbar (void); //объявление функции
void main (void) {
starbar (); // вызов функции
printf ("ПГУ");
printf ("им.Т.Г.Шевченко");
printf ("25 октября, 200");
starbar(); - вызов функции
}
void starbar (void) { //определение функции
int count;
for (count=1; count<=65; count++)
putchar ('*');
putchar ('\n');
}
При написании функции starbar() используются те же правила, что и при создании main(): имя, фигурные скобки.
Объявление функции должно быть обязательно, если функция определена ниже ее вызова. Объявлять можно в начале модуля в заголовке программы, тогда функция доступна в любой другой функции, или в функции, где она вызывается, тогда область ее видимости ограничена этой функцией.
Определять функцию можно в любом месте программы. Единственное ограничение – нельзя определить функцию внутри определения другой функции.
Аргументы функции
Вернёмся к рассмотренной задаче. Пусть функция starbar() печатает любой символ, указанный в вызывающей программе. Он передается в функцию как аргумент.
#inсlude <stdio.h>
void starbar (char);
void main (void) {
starbar ('_'); - вызов функции
printf ("ПГУ");
printf ("им.Т.Г.Шевченко");
printf ("25 октября, 200");
starbar('#'); - вызов функции
}
void starbar (char x) { - определение функции
int count;
for (count=1; count<=65; count++)
putchar (x);
putchar ('\n');
}
Определение функции начинается с void starbar (char x) {
Переменная x - является формальным параметром. Это новая переменная и под нее должна быть выделена отдельная ячейка памяти. При вызове функции мы присваиваем формальному аргументу значение фактического аргумента.
starbar (‘-‘); x = '-';
Фактический аргумент – это конкретное значение, которое присваивается переменной, называемой формальным аргументом. Фактический аргумент может быть константой, переменной или сложным выражением. Независимо от типа фактического аргумента он вначале вычисляется, а затем его величина передается в функцию.
Можно передавать в функцию несколько фактических аргументов, для этого фактические аргументы разделяют запятыми.
printnum (int i, int j) {
printf ("Первый аргумент %d, второй аргумент %d\n", i, j);
}
Короче говоря: ФОРМАЛЬНЫЙ аргумент – это переменная в вызываемой программе, а ФАКТИЧЕСКИЙ аргумент – конкретное значение этой переменной вызываемой программой.
Дата добавления: 2016-02-02; просмотров: 2673;