У ц-у можемо поделити велики програм на основне грађевне блокове познате као функција. Функција садржи скуп програмских израза затворених са {}. Функција се може позвати више пута како би се омогућила поновна употреба и модуларност Ц програму. Другим речима, можемо рећи да збирка функција ствара програм. Функција је такође позната као процедура или потпрограм у другим програмским језицима.
Предност функција у Ц
Постоје следеће предности Ц функција.
- Коришћењем функција можемо избећи поновно и изнова поновно писање исте логике/кода у програму.
- Ц функције можемо позвати било који број пута у програму и са било ког места у програму.
- Можемо лако пратити велики Ц програм када је подељен на више функција.
- Поновна употреба је главно достигнуће Ц функција.
- Међутим, позивање функције је увек прекомерно у Ц програму.
Функционални аспекти
Постоје три аспекта функције Ц.
СН | Аспекти Ц функције | Синтакса |
---|---|---|
1 | Декларација функције | ретурн_типе фунцтион_наме (лист аргумената); |
2 | Позив функције | фунцтион_наме (аргумент_лист) |
3 | Дефиниција функције | ретурн_типе фунцтион_наме (листа аргумената) {тело функције;} |
Синтакса креирања функције у ц језику је дата у наставку:
return_type function_name(data_type parameter...){ //code to be executed }
Врсте функција
Постоје две врсте функција у Ц програмирању:
Повратна вредност
Ц функција може или не мора да врати вредност из функције. Ако не морате да враћате ниједну вредност из функције, користите воид за тип враћања.
Хајде да видимо једноставан пример функције Ц која не враћа никакву вредност из функције.
Пример без повратне вредности:
void hello(){ printf('hello c'); }
Ако желите да вратите било коју вредност из функције, потребно је да користите било који тип података као што су инт, лонг, цхар, итд. Тип враћања зависи од вредности која ће бити враћена из функције.
орацле скл није једнак
Хајде да видимо једноставан пример функције Ц која враћа инт вредност из функције.
Пример са повратном вредношћу:
int get(){ return 10; }
У горњем примеру морамо да вратимо 10 као вредност, тако да је тип враћања инт. Ако желите да вратите вредност са покретним зарезом (нпр. 10.2, 3.1, 54.5, итд.), потребно је да користите флоат као тип враћања методе.
float get(){ return 10.2; }
Сада морате позвати функцију да бисте добили вредност функције.
Различити аспекти позивања функција
Функција може или не мора прихватити било који аргумент. Може или не мора да врати било коју вредност. На основу ових чињеница, постоје четири различита аспекта позива функција.
поштар
- функција без аргумената и без повратне вредности
- функција без аргумената и са повратном вредношћу
- функција са аргументима и без повратне вредности
- функција са аргументима и са повратном вредношћу
Пример за функцију без аргумента и повратне вредности
Пример 1
#include void printName(); void main () { printf('Hello '); printName(); } void printName() { printf('Javatpoint'); }
Излаз
Hello Javatpoint
Пример 2
#include void sum(); void main() { printf(' Going to calculate the sum of two numbers:'); sum(); } void sum() { int a,b; printf(' Enter two numbers'); scanf('%d %d',&a,&b); printf('The sum is %d',a+b); }
Излаз
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
Пример за функцију без аргумента и са повратном вредношћу
Пример 1
#include int sum(); void main() { int result; printf(' Going to calculate the sum of two numbers:'); result = sum(); printf('%d',result); } int sum() { int a,b; printf(' Enter two numbers'); scanf('%d %d',&a,&b); return a+b; }
Излаз
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
Пример 2: програм за израчунавање површине квадрата
јава карактер у стринг
#include int sum(); void main() { printf('Going to calculate the area of the square '); float area = square(); printf('The area of the square: %f ',area); } int square() { float side; printf('Enter the length of the side in meters: '); scanf('%f',&side); return side * side; }
Излаз
Going to calculate the area of the square Enter the length of the side in meters: 10 The area of the square: 100.000000
Пример за функцију са аргументом и без повратне вредности
Пример 1
#include void sum(int, int); void main() { int a,b,result; printf(' Going to calculate the sum of two numbers:'); printf(' Enter two numbers:'); scanf('%d %d',&a,&b); sum(a,b); } void sum(int a, int b) { printf(' The sum is %d',a+b); }
Излаз
Going to calculate the sum of two numbers: Enter two numbers 10 24 The sum is 34
Пример 2: програм за израчунавање просека пет бројева.
#include void average(int, int, int, int, int); void main() { int a,b,c,d,e; printf(' Going to calculate the average of five numbers:'); printf(' Enter five numbers:'); scanf('%d %d %d %d %d',&a,&b,&c,&d,&e); average(a,b,c,d,e); } void average(int a, int b, int c, int d, int e) { float avg; avg = (a+b+c+d+e)/5; printf('The average of given five numbers : %f',avg); }
Излаз
Going to calculate the average of five numbers: Enter five numbers:10 20 30 40 50 The average of given five numbers : 30.000000
Пример за функцију са аргументом и са повратном вредношћу
Пример 1
#include int sum(int, int); void main() { int a,b,result; printf(' Going to calculate the sum of two numbers:'); printf(' Enter two numbers:'); scanf('%d %d',&a,&b); result = sum(a,b); printf(' The sum is : %d',result); } int sum(int a, int b) { return a+b; }
Излаз
Going to calculate the sum of two numbers: Enter two numbers:10 20 The sum is : 30
Пример 2: Програм за проверу да ли је број паран или непаран
#include int even_odd(int); void main() { int n,flag=0; printf(' Going to check whether a number is even or odd'); printf(' Enter the number: '); scanf('%d',&n); flag = even_odd(n); if(flag == 0) { printf(' The number is odd'); } else { printf(' The number is even'); } } int even_odd(int n) { if(n%2 == 0) { return 1; } else { return 0; } }
Излаз
Going to check whether a number is even or odd Enter the number: 100 The number is even
Функције Ц библиотеке
Функције библиотеке су уграђене функције у Ц које су груписане и смештене на заједничко место које се зове библиотека. Такве функције се користе за обављање неких специфичних операција. На пример, принтф је функција библиотеке која се користи за штампање на конзоли. Функције библиотеке креирају дизајнери компајлера. Све функције стандардне библиотеке Ц дефинисане су унутар различитих датотека заглавља сачуваних са екстензијом .х . Морамо да укључимо ове датотеке заглавља у наш програм да бисмо користили функције библиотеке дефинисане у таквим датотекама заглавља. На пример, да бисмо користили библиотечке функције као што је принтф/сцанф, морамо да укључимо стдио.х у наш програм који је датотека заглавља која садржи све функције библиотеке у вези са стандардним улазом/излазом.
Листа најчешће коришћених датотека заглавља дата је у следећој табели.
СН | Датотека заглавља | Опис |
---|---|---|
1 | стдио.х | Ово је стандардни улазно/излазни фајл заглавља. Садржи све функције библиотеке у вези са стандардним улазом/излазом. |
2 | конијум.х | Ово је улазно/излазна датотека заглавља конзоле. |
3 | стринг.х | Садржи све функције библиотеке повезане са стринговима као што су гетс(), путс(), итд. |
4 | стдлиб.х | Ова датотека заглавља садржи све опште функције библиотеке као што су маллоц(), цаллоц(), екит(), итд. |
5 | матх.х | Ова датотека заглавља садржи све функције везане за математичке операције као што су скрт(), пов() итд. |
6 | време.х | Ова датотека заглавља садржи све функције везане за време. |
7 | цтипе.х | Ова датотека заглавља садржи све функције руковања знаковима. |
8 | стдарг.х | Функције променљивих аргумената су дефинисане у овој датотеци заглавља. |
9 | сигнал.х | Све функције руковања сигналом су дефинисане у овој датотеци заглавља. |
10 | сетјмп.х | Ова датотека садржи све функције скока. |
Једанаест | лоцале.х | Ова датотека садржи функције локализације. |
12 | еррно.х | Ова датотека садржи функције за обраду грешака. |
13 | тврдити.х | Ова датотека садржи дијагностичке функције. |
Додатни детаљи у вези са Ц функцијама су дати у наставку:
Постоји неколико додатних информација у вези са Ц функцијама. Неки од њих су следећи:
Модуларно програмирање: Способност подела а огроман програм у мање модуле којима је лакше управљати је једна од главних предности коришћења функција у Ц-у. Свака функција може да садржи одређени посао или компоненту функционалности, што поједностављује и појашњава целокупну структуру програма. Ова модуларна стратегија побољшава поновну употребу кода и олакшава одржавање и отклањање грешака.
јава енд
Поновна употреба кода: Користећи функције, можете креирати одређени алгоритам или део логике само једном и користити га више пута у свом програму. Можете једноставно позвати функцију кад год треба да покренете код, чиме се штедите од потребе да га дуплирате на другом месту. То не само убрзава развој али такође обезбеђује доследност и смањује могућност прављења грешака.
Енкапсулација и апстракција: Замагљујући специфичности имплементације функционалности, функције нуде ниво апстракције. Интерфејс прототипа функције може се дефинисати у а датотека заглавља , док се стварна имплементација може обезбедити у другој изворној датотеци. Остали делови програма могу да користе функцију без потребе да разумеју како се интерно имплементира због раздвајања интерфејса и имплементације.
Лако одржавање програма: Програм се може лакше разумети и одржавати ако је подељен на мање функције. Могућност додељивања одређене одговорности свакој функцији чини код читљивијим и олакшава решавање проблема и отклањање грешака. Можете се концентрисати на потребну функцију без утицаја на друге делове програма ако се пронађе грешка или је потребна измена.
Побољшана сарадња: Функције омогућавају програмерима који раде на истом пројекту да сарађују. Програм се може поделити на функције тако да више чланова тима може да ради на њему различите функције одмах. Програмери могу глатко да интегришу свој рад у функције ако су интерфејси добро специфицирани, што побољшава продуктивност и промовише ефикасан развој.
Преношење параметра: Можете послати аргументе или податке функцији у Ц-у како би она могла да их обради. Функција може да спроводи акције и генерише резултате користећи ове улазе. Можете повећати флексибилност и прилагодљивост функција преношењем параметара, што ће повећати укупну свестраност вашег програма.
Повратне вредности: Функције могу да шаљу вредности назад у код који их је позвао, омогућавајући комуникацију резултата извршења функције. Можете да користите враћену вредност у другим областима програма након обављања прорачуна или манипулације подацима унутар функције. Повратне вредности су посебно корисни када треба да израчунате резултат или успоставите услов у зависности од излаза функције.
Закључак:
У закључку, функције су неопходне за Ц програмирање јер дају програм организацију, поновну употребу и модуларност . Програмери могу да избегну стално креирање истог кода тако што ће разбити огромне програме на мање функције, чинећи код ефикаснијим и једноставнијим за одржавање. Било где у програму може позвати функцију, пружајући флексибилност и побољшавајући ток контроле.
Тхе декларација, позив , и дефиниција функција су само неке од њихових бројних карактеристика. Преводилац је обавештен декларацијом функције име, аргументи , и тип повратка . Могуће је позвати функцију са или без параметрима и са или без а повратна вредност . Програмери конструишу кориснички дефинисане функције да би побољшали читљивост и оптимизацију свог кода, док Ц библиотека функционише као принтф() и сцанф() пружају унапред постављене могућности.
Све у свему, функције су кључни градивни блокови у Ц програмирању, пружајући предности укључујући повећану организацију, поновну употребу кода и једноставно праћење огромних програма. Позиви функција би могли да додају неке додатне трошкове, али њихове предности надмашују минималне перформансе. Програмери могу писати ефикасне и модуларне Ц програме разумевањем и употребом функција.