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;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.006 сек.