СИ тіліндегі функциялар



Қазақстан Республикасының білім және ғылым министрлігі

КУРСТЫҚ ЖҰМЫС

Тақырыбы:

СИ тіліндегі функциялар

Орындаған:
Тексерген:

Орал, 2014ж.

Мазмұны

Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... ...3
1 БӨЛІМ. СИ бағдарламалау тілі және Си тіліндегі функция
1.1 Си тілінің пайда болу тарихы мен
мүмкіндіктері ... ... ... ... ... .. ... ... ... ... ... 6
1.2 Предикат функциясы және предикаттардың
түрлері ... ... ... ... ... ... ... ... ...12
1.3 Си тіліндегі программалау
технологиялары ... ... ... ... ... . ... ... ... ... ... ... ... 16
2 БӨЛІМ СИ тіліндегі функция ұғымы
2.1 Функция туралы
ұғым ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... .18
2.2 СС++ бағдарламалау тіліндегі
фукнция ... ... ... ... ... ... ... ... ... ... ... ... ... ...25
2.3 СС++ тіліндегі
типтер ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ..29
ҚОРЫТЫНДЫ ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... .31
Қолданылған әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ..33

Кіріспе

Программалау тілін меңгеру дегеніміз оның мүмкіндіктерімен ғана танысу
емес. Шын мәнінде, түрлі тілдердің мумкіндіктерінің ұқсастығы алдамшы елес
сияқты болып келеді. Олар тек сырт қарағанда ғана ұқсас болғанымен, оларды
жеке-жеке зерттеу барысында олардың бағалануы түрліше болып шығуы мүмкін.
Мысалы, қарапайым қосу амалының өзі барлық тілдерде ең негізгі амал ретінде
қарастырылады, бірақ С++ тілдеріндегі оның бағалануы түрліше болып келеді.
70-жылдарда Ada, C, Pascal, Prolog, Smalltalk тілдері, 80-ші жылдары –C++,
ML, Postscrіpt, 90-шы жылдары Java программалау тілі, сондай-ақ
программалау жүйелері – Delphі, Vіsual Basіc, C++ Buіlder т.с.с. дүниеге
келді.
С++ тегі программа – бұл алдын ала анықталған мағынаға иеленген С++
тілінің синтаксистік құрылымының терминдеріндегі деректер өңдеудің кейбір
процестерін сипаттайтын жасанды тілдегі мәтін. С++ тілінің құрылу схемасы
жоғарғы деңгейдегі жасанды тілдер үшін ұқсас: Алфавит → Лексемалар →
Скалярлы типтер және өрнектер → Операторлар → Адрестер, көрсеткіштер,
массивтер, жад → Функциялар, кластар, объекттер.
С++ өзекті сөздері – бұл тілдегі ішкі қолданулар үшін сақталған
идентификаторлар. Барлығы 50 шақты сөз сақталған: char do long for class
const return void while және т.б. Программистке өзекті сөздерді көмекші
сөздер ретінде қолдануға тиым салынады. Бұдан басқа программистке бір
немесе екілік сызылған символдан басталатын идентификаторды таңдау
ұсынылмайды, себебі бұл символдар С++ нақтылануы және стандартты
кітапханалар үшін сақталған.
Си тілінде жазылған программаның архитиктуралары әр түрлі
компьютерлердің бірінен бірін ауыстыруға бір операциялық системаның екінші
операторлық системаға ауыстыруға жеңіл. Сонымен қатар Си тіліндегі
программалардың орындалу жылдамдығы ассемблер тіліндегі программалардан кем
емес. Си тілінің компиляторы қазіргі кездегі барлық операциялық жүйеде
жұмыс істей береді.
Қазіргі электрондық есептеуіш машиналарын программалық жабдықтау
барысында негізгі орын – программалау жүйелеріне тиесілі. Ал, программалау
жүйелері – ақпараттармен жұмыс жасауға арналған универсал құрал.
Олардыңкөмегімен есептеулер жүргізуге, мәтіндерді өңдеу, графикалық
бейнелер тұрғызу, мәліметтерді сақтау және іздеу т.б. әрекеттерді жүзеге
асыруға болады. Өз кезегінде бұл құралдардың өзі – программалау тілдерінде
жазылған программа.
Ал, программалау тілдерінің өзгеру қарқыны өте жылдам, қазіргі таңда
программалау тілдерінің саны көп және жыл сайын жаңа бір тілдер пайда
болуда.
Курстық жұмыстың мақсаты: СИ бағдарламалау тілі және си тіліндегі
функция туралы түсінік алу. Программалау пәнінен алынған білімдерді
қорытындылау.
Курстық жұмыстың міндеттері: СИ тілінің пайда болу тарихы және
мүмкіндіктері мен ерекшеліктері, сонымен қатар фукция ұғымы және си
тіліндегі функция туралы толық мағлұмат беру.
Курстық жұмыстың құрылымы: курстық жұмысы кіріспеден, екі тараудан
және қорытынды мен қолданылған әдебиеттер тізімінен тұрады.
1 БӨЛІМ. СИ бағдарламалау тілі және Си тіліндегі функция

1.1 Си тілінің пайда болу тарихы мен мүмкіндіктері
Ең алдымен 1960 жылы Аlgol тілі пайда болған. Содан кейін CPL-
(біріктірілген програмамлау тілі) 1963 жылы жазылған. Осы тілдер негізінде
іргелендіру арқылы Мартин Ричардс ВCPL(базалық біріккен программалау тілі)
тілін 1967 жылы дүниеге әкелген. Артынша 1970 жылы Кен Томпсон В тілін
ойластырған. Алғашқы Си тілі 1972 жылы Bell laboratiories лабораториясында
жазылған және оның авторы - Деннис М.Ритчи. 1983 жылы АNSI(Америка ұлттық
стандарттау институты) институты Си тілін стандарттау мақсатын қойды.
Себебі, Кен Томпсон В тілін жазып бітіргенде PDP – 11 компьютері пайда
болған. Сондықтан UNIX операциялық жүйесін және В тілінің компиляторын жаңа
машинаға сәйкестендіріп жөндеген. Бұл PDP-11 компьютерінің оперативті
жадысының көлемі -24 Кб, мұның 16 Кб орыны операциялық жүйеге қолданылған.
Сонымен қатар, дискідегі орыны – 512 Кб болған. UNІX–ті В тілінде қайта
жазу идеясы туындаған. Бірақ, В тілі жәй жұмыс жасаған және В сөздермен
жұмыс жасауға бағытталған. Жалпы BCPL және В тілдері – типсіз тілдерге
жатады. Сондықтан В тілінің өзін жетілдіру қажеттілігі туындаған. Ізінше
1971 жылы жаңа версиясын - Си тілін жаза бастаған. Деннис Ритчи тілдің
нақты бір құрылғыдан тәуелсіздігін қарастырады.
Программалау тілдерінің көбісін (C, Рascal, Lisp u APL) жеке авторлар
құрастырғандықтан біртұтастығымен ерекшеленеді, және көпшілік авторлар
жазған (Ada, PL1 u Algol60) тілдеріне қарағанда бір автордың жақсы білетін
сұрақтарын шешеуге мамандандырылған сипатта құрылады.
Деннис Ритчи жүйелік програмалау саласында мойындалған ең ірі маман
саналады.
С\С++ программалау тілдерінің мүмкіндіктері мен ерекшеліктеріне шолу

Деннис Ритчи жазған Си тілінің таралу себебі: салыстырмалы түрде
төмен деңгейлі тіл, сондықтан алгоритм жұмысының әрбір бөлімін бақылау
мүмкіндігі бар және жоғары деңгейлі тілдер принцптері енгізілгендіктен,
нақты бір компьютердің архитиктурасы ерекшелітерінен тәуелсіздігін
қамтамасыз ету мүмкін болды.
Жоғарғы деңгейлі тілдерден Си тілінің ерекшелігі:
- операторлар түрі өзгеше;
- көрсеткіштер жиі қолданылады;
- басқа тілдерге қарағанда синтаксикалық ережелері аз, нәтижесінде
компилятор тиімді жұмыс жасау үшін 256 Кб оперативті жады жеткілікті;
- қызметші сөздерге қарағанда операторлар мен олардың комбинациялары
көп;
- алғашқыда Си тілінде 27 қызметші сөз ғана болған. Кейін ANSI Си
тіліне және Microsoft C тіліне қызметші сөз қосылды, жалпы саны шамамен 50;
- Көп программалау тілдерінде бар функциялар Си тілінде жоқ;
- Си тілінде қосалқы енгізу шығару функциялары, математикалық
функциялары және жолдармен жұмыс жасау функциялары жоқ, бірақ сол
функциялардан және басқа функциялардан тұратын жеке кітапханалардан алу
мүмкіндігі қарастырылған;
- мәліметтер типін бақылау жеңіл, яғни программаның бір жерінде
айнымалыны символ түрінде , екінші бір жерінде осы символдың ASCII коды
ретінде қарастыруға болады;
- Си тілінде қазіргі тілдері секілді барлық басқарушы конструкциялары
бар(For, if else,...);
- Cи тілінде модулдік программалауға болады, яғни программаның әртүрлі
бөлігін жеке копиляциялауға болады;
- Ассемблер тілінде жазылған ішкі программаларды шақыруға болады;
- көрсеткіштер яғни жады аймақтарынан берілген адрес бойынша қарау
программаны орындау жылдамдығын арттырады. Көрсеткіштер көп тілде
қолданылады, ал көрсеткіштерге арифметикалық амалдар тек Си тілінде
қолданылады.
- Си тілінде барлық массивтер бір өлшемді, бірақ Си тілінде бір
өлшемді массивтерден тұратын конструкциялар бар, яғни көп өлшемді массивтер
құрылады;
- тек қажетті кітапханалар шақырылатын болғандықтан жады тиімді
қолданылады;
- басқа тілдердегідей қосалқы функциялар;
- көптеге мамандандырылған функциялар кітапханаларының жинытығы бар.
Кемшілігі:
- Си тілінде мәліметтер типі қатаң қадағаланбайды, сондықтан Си
тілінде тәжірибелі программист байқағанмен жаңа үйренуші байқамайтын
айнымалы мәндеріне өзгерістер болуы мүмкін.
Мысалы, бір өрнекте (=) меншіктеу операторы бірнеше рет қолданылуы
мүмкін. Сондықтан нәтижесінің типі түсініксіз және қиын анықталады. Бірақ
оны қолдану арқылы тілдің қуаты арттырылған.
С++ тілі Си тілінің толықтырылған, яғни объектілі бағытталған
программалау(ОБП) құралдарымен толықтырылған жиыны деуге болады.
Си және С++ тілдерінің айырмашылығы:
-құрылымдар мен класстар аттары мәләметтер типтерінің аттары болып
табылады. С- де класс түсінігі жоқ.
СС++ тіліндегі программаның жалпы құрылысы
Си тіліндегі кез-келген программа main функциясынан тұрады. Мұның
орындалу барысында басқа функциялар шақырылады. Функциялар арасындағы
байланыс параметрлер арқылы беріліп функция мәнін қайтарып алу арқылы
жүзеге асады.
Сонымен қатар, Си тілінің компиляторында мәселені бірнеше бөлікке
-файлдарға бөліп, әрқайсысын жеке-жеке трансляциялап, сосын оларды жеке бір
орындалатын файлға, жинау мүмкіндігі бар. Жинақтау байланыс редакторының
көмегімен жүзеге асырылады.
Кез-келген программа комментарийден басталады. Комментарийді Си
тілінде * , * белгілеріне алынып жазылған блок түрінде беруге болады.
Содан кейін препроцессор дерективасы орналасады. Препроцессор
директивасы берілгенде кітапханалық файлда –тақырыптық файлда орналасқан
кодты программаға қою нұсқауын береді. Мұндағы .h кеңеймелі файлдар
тақырыптық файлдар деп аталады. Тақырыптық файлдарда әртүрлі тұрақты мен
таулар сипатталады. Функциялар прототиптері сақталады.
Препроцессор дерективасынан кейін main функциясы сипатталған бөлігі
орналасады.
Main функциясы барлық программада міндетті түрде болуы тиіс, одан
программа орындалуы басталып, Return инструкциясы шақырылғанда аяқталады.
Main функциясының денесі фигуралық жақшада орналасады.
Си тілінде барлық айнымалы оған программаның қандайда бір бөлігінен
сілтеме жасалғанға дейін сипатталуы тиіс.
Си тілінде жазылған программа текстінде кездесетін инструкциялар
(нұсқаулар) препроцессор директивасы (ПД) деп аталады. Олар программа
трансляцияланғанға дейін орындалады және программаның текстін өзгертуге
мүмкіндік береді. Мысалы текстегі кейбір лексемдерді өзгерту, басқа файлдан
мәтінді қосу, мәтіннің қандай да бір бөлігін орындауға, трансляциялауға
шектеу қою т.б. Барлық препроцессор директивасы # таңбасымен басталады
және соңынан нүктелі үтір (;) қойылмайды.
Түрлері:
1) #include директивасы.
Бұл программаға көрсетілген файлдағы мәліметтерді қосады. Бұл
директиваның екі формасы бар:
#include “файл аты“
# include файл аты
Мұндағы, Файл аты операциялық жүйелер талабына сай көрсетіледі, яғни
тек файл атынан немесе оның маршрутымен алынған атауынан тұруы мүмкін. Егер
файл аты тырнақшада берілсе, онда файл сәйкес көрсетілген маршрутпен
анықталатын орыннан, ал ол көрсетілмесе жұмысшы каталогтан ізделеді. Егер
файл аты бұрыштама жақшада () берілсе, онда файл операциялық жүйенің PATH
командасы арқылы берілген, стандартты директориясынан ізделеді.
#include директивасы іштестірілген болуы мүмкін, яғни қосылатын файлда
тағы кездесуі мүмкін. Көбінесе бұл программаға тақырыптық файлдарды қосу
үшін қолданады, яғни стандартты кітапханалық функциялар прототиптерінен
тұратын файлдарды қосуға мүмкіндік береді. Сондықтан С тіліндегі программа
осы директивадан басталады.
2) #define директивасы.
#define – директивасы жиі қолданылатын тұрақтыларды, қызметші
сөздерді, операторларды және өрнектерді кейбір идентификаторлармен
ауыстыруға мүмкіндік береді. Сандық немесе текстік тұрақтыларды ауыстыратын
идентификаторларды атаулы тұрақтылар (именованные константы) деп атайды.
Программа фрагменттерін алмастыратын идентификаторларды
(макроопределения) макроанықтамалар деп атайды.
#define екі формасы бар:
#define идентификатортекст
#define идентификатор (программалар тізімі тексті)
Мысалы, #define WIDTH 80
#define LENGTH (WIDTH+10)
бұл директивалар программа текстіндегі әрбір WIDTH сөзін 80 санына, ал
LENGTH сөзін (80+10) өрісіне ауыстырады.
Макроанықтамалардағы жақшалар олардағы алмастырудың орындалу ретін
анықтауға мүмкіндік береді. Мысалы, жақша болмаса мына өрнек: t=length+7
мынадай t=80+10*7 өрнекке ауыстырылады, ал қажетісі t=(80+10)*7 болатын,
сондықтан жақша қойған дұрыс.
2-ші формасында формалды параметрлер тізімі көрсетіледі, мұнда тізім
үтір арқылы ажыратылып көрсетіледі, және макроанықтама текстіндегі алатын
позициясын анықтайды.
Шақырғанда идентификатордан кейін формалды параметрлер санына сәйкес
нақты аргументтер көрсетілуі тиіс.
Мысалы,
#define MAX(x,y) ((x)(y))?(x):(y)
Бұл директива t=MAX(i,s[i]); фрагментін t=((i)(s[i])?(i):(s[i]);
фрагментіне ауыстырады.
3) #undef – директивасы
Бұл директива #define директивасы қызметін қайтаруға қолданылады.
Яғни, көрсетілген идентификаторларға қолданылатын #define анықтамасы
қызметін болдыдырмайды.
Мысалы,
#undef WIDTH
#undef MAX
Бұл директивалар WIDTH атаулы тұрақтысымен MAX макроанықтамасын
болдырмайды.
Тақырыптық файлдар атаулары төмендегідей:
assert.h, float.h, math.h, ctype.h,
limits.h, setjmp.h, errno.h, locale.h,
signal.h, stdarg.h, stddef.h, stdio.h,
stdlib.h, string.h, time.h.
1.2 Предикат функциясы және предикаттардың түрлері
Көптеген STL алгоритмдеріне міндетті түрде шарт қою керек, сол арқылы
алгоритм осы немесе басқа жиын мүшесімен не істеу керек екенін анықтайды.
Анықтама бойынша, предикат - бұл функция, бір немесе көп параметрді
қабылдайтын және ақиқат немесе жалған деген мәндерді қайтаратын функция.
Предикат бұл функция немесе функтор болуы мүмкін. Тағы да стандарт
предикаттар да кездеседі.
Бірінші көзқарасқа, бұл мысал өте күрделі көрінуі мүмкін, бірақ шын
мәнінде өте қарапайым. Біріншіден, біз не істейміз, Man кластағы
хабарландыруды іске қосамыз, ол бізге қажет, себебі мөлшерден тыс жүктелу
операторының хабарландыруында қолдану үшін. Енді біз мұны Man класының
ішінде қолдана аламыз. Man класының ешқандай ерекшеліктері жоқ, бұл
қарапайым адамды сипаттайтын бизнес-класс.
Келесі сипатталатын предикат- функтор LessMan, біздің векторымыздың
мүшесін іріктеуге қажет. Ол Man типінен екі параметрді қабылдайды. Ол
программистердің жасының кему реті бойынша орналасуын орындайды.
ManOlderThan23- бұл предикат-функция, ол 23 жастан үлкен программистерді
іріктеп алады. Бұдан кейін біз тура осындай ManOlder предикат-функторың
анықтаймыз. Бұл функтор арқылы адамның ең төмен жасын анықтай аламыз.Осы
жол алғашқы жолға қарағанда ыңғайлы.
Main() функциясына кіргеннен кейін біз вектор құрып, оны
программистердің атымен толтырамыз: Дима, Саша және Сергей. Ары қарай біз
екі әдіспен 23 жастан үлкен программистердің тізімін тауып және шығарып
береміз. Бұдан кейін іріктеп аламыз да программистердің жастарын кему реті
бойынша орналастырамыз.
Бұл кодтың тағы бір ерекшелігі, біз mem_fun_ref кластық функцияға
нұсқауыш ала аламыз. Көріп отырғандай, мұның да пайдасы көп. Осы
мүмкіншілікті пайдаланып қалу үшін, бізге #include functional
кітапханасын ашу керек.
Салыстыру предикаты:
Салыстыру предикаты келесі ережелер бойынша анықталады:
comparison predicate ::=
value expression comp op
{value expression subquery}
comp op ::=
= = =
Теңсіздік белгісі “ ” осылай белгіленеді. Оң және сол жақтағы
предикаттардың салыстырылуы арифметикалық өрнектелулердің жалпы ережелері
бойынша құралады.
Between предикаты:
Between предикаты келесі ережелер бойынша анықталады:
between predicate ::=
value expression
[NOT] BETWEEN value expression AND value expression
Анықтама бойынша "x BETWEEN y AND z" предикатының қорытындысы, "x =
y AND x = z" предикатының қорытындысымен логикалық жағынан бірдей. "x NOT
BETWEEN y AND z" предикатының қорытындысы, "NOT (x BETWEEN y AND z)"
предикатының қорытындысымен бірдей.
In предикаты:
In предикаты келесі ережелер бойынша анықталады:
in predicate ::=
value expression [NOT] IN
{subquery (in value list)}
in value list ::=
value specification
{,value specification}...
Предикат ақиқат деген мәнді қайтарады,егер сол жақтағы операция ең
болмағанда оң жақтағы бір операциямен сәйкес келу керек. Анықтама бойыншама
"x NOT IN S" предикатының мәні "NOT (x IN S)" предикатының мәніне тең.
Like предикаты:
Like предикаты келесі ережелер бойынша анықталады:
like predicate ::=
column specification [NOT] LIKE pattern
[ESCAPE escape character]
pattern ::= value specification
escape character ::= value specification
Предикаттың мәні ақиқат,егерде pattern жол астындағы қатармен берілсе.
Егер ESCAPE бөлімі бар болса және x символын анықтаса, онда "x_" және "x%"
символдары сәйкесінше "_" және "%" символдарын көрсетеді. "x NOT LIKE y
ESCAPE z" предикатының мәні "NOT x LIKE y ESCAPE z" предикатының мәнімен
сәйкес келеді.
Null предикаты:
Null предикаты келесі ережелер бойынша анықталады:
null predicate ::=
column specification IS [NOT] NULL
Бұл предикат әрқашанда ақиқат немесе жалған мәндерді қабылдап отырады.
"x IS NULL" мәні ақиқат, егер де х-тің мәні анықталмаған болса. "x NOT IS
NULL" предикатының мәні "NOT x IS NULL" предикатының мәніне тең.
Еxists предикаты:
Еxists келесі ережелер бойынша анықталады:
exists predicate ::=
EXISTS subquery
Бұл предикат әрқашанда ақиқат немесе жалған мәндерді қабылдап отырады,
және бұл мән ақиқатқа тең, егер де қорытынды есептеулердің сұранысы бос
болмаса. С++ тің мүмкінділігі деректердің сақталатын типтерінің
көптүрлігімен, әрі деректердің сәйкес келетін типтерге операциялардың
көптүрлігімен анықталады.
Операциялар өздігінен қайтымды мән болып табылатын бір (унарлы)
немесе бірнеше операндылармен (бинарлы) орындалатын кейбір іс-әрекеттерді
көрсетеді.Базалық арифметикалық операцияларға:
(+) қосу операциясын, (-) айырым, (*) көбейту,() бөлу және модуль
бойынша (%), яғни сол операндыны оңға бөлгендегі қалдықтың есебі.
Операциямен қайтымды мәнді тиімді қолдану үшін меншіктеу операторы
және оның модификациясы арналған:
(+=) меншіктеумен қосу, (-=) меншіктеумен айырым, (*=) меншіктеумен
көбейту, (=) бөлу, меншіктеумен модуль және соңынан қарастырылатын басқа
да қатарлар.

1.3 Си тіліндегі программалау технологиялары
Программаларды жобалаудың негізгі екі тәсілі жоғарыдан төмен және
төменнен жоғары бар.
Төменнен жоғары технологиясыныңмағынасы: алдымен етене таныс және
түсінікті (сұрыптау алгоритмдері жүзеге асыру, жолдарды өңдеу, мәліметтерді
енгізу) мәселелер орындалады да сосын барып үлкен, күрделі прорамманы дайын
бөлшектерден құрастыру жасалады.
Жоғарыдан төмен тенологиясының мағынасы: алдымен программа скелеті
дайындалып (процедуралар мен олардың арасындағы байланысы) алынады да содан
кейін жеке бөлшектерін жазуға кіріседі.
Көбінесе программа аталған екі технологияны аралас қолдану арқылы
құрылады. Программалар жиі нашар құрылымдарға ие болады немесе оларда
мәліметтер көрінісі орындалатын жұмысқа сәйкес болмағандықтан, олармен
жұмыс істеу қиын.
Мәліметтердің жақсартылған құрылымын таңдау, үйрене алмайтын өзінің
тегіндегі көркемөнері болып табылады. Шешімдер процесі жеңілірек болу үшін
және мәліметтер құрылымында қандай өзгерістер басқаруды қысқартуға
көмектесетінін анықтау үшін алдын-ала программаның алғашқы жазылған түрін
жиі жазып отыруға тура келеді.
Көптеген программалар, оларды түгелдей қабылдау үшін өте қолайсыз
болып келеді. Жеке-жеке меңгеру үшін, оларды бөліктерге бөлу қажет. Бұл
программаның сеніділігін арттырудың жалғыз жолы, сондай-ақ оқу мен
түсінудің жалғыз тәсілі.
Функция мен процедуралар үлкен программалаудың модульдері немесе
құрылыстық блоктары болып табылады. Көптеген тілдерде ол жеке түрде
трансляциялануы және бір-бірінен тәуелсіз пайдалануы мүмкін. Үлкен
модульдер, егер олар өте көп санды немесе тым әртүрлі функцияларды
орындайтын болса кең түрде қолдану үшін өте мамандандырылған болады және
пайдалану қиын.
Қайда және не орындалу керектігін анықтайтын, программаны ұйымдастыру
жеткіліксіз мәліметтерді енгізу және шығару форматтары мен есепті талдау
салдары болып табылады.
Үлкен көлемдегі есептерді кіші көлемді есептерге бөлу процесі
құрылымдық жобалау деп аталады. Осы пәннің шеңберінде:
- Жазу мен үлкен программаларды сүйемелдеудің жалғыз тәсілі – оларды
модуль түрінде ұйымдасқан біраз функциялардың жиынтығы ретінде көрсету;
- Модульде ақпарат, ол өзінің есебін қалай шешетіндей жұмыс істемеуі
керек;
- Әр модуль өзінің тікелей көршілерінің шағын тобымен ғана өзара
әрекеттесуі қажет;
- Программаның құрамында өнделген мәліметтердің бейнесі табылуы керек.

2 БӨЛІМ СИ тіліндегі функция ұғымы

2.1 Функция туралы ұғым
Программада қолдануға шамаланатын әрбір функция оның ішінде
хабарлануы, анықталуы және шақырылуы керек. Әдетте функцияның
хабарландырулары тақырыпты файлдарда орналастырылады, содан кейін олар
#include директивасының көмегімен программаның бастапқы текстіне
қосылады. Функцияның хабарламасы оның келесі түрде хабарланатын прототипін
мазмұндайды:
Қайтымды тип FuncName (хабарлантын параметрлердің тізімі);
Мұндағы қайтымды тип – функциямен қайтарылатын деректердің типі. Егер
деректердің қайтарылатын типі көрсетілмесе, онда компилятор int-ті
функциямен қайтарылатын тип деп санайды. Хабарланатын параметрлердің тізімі
үтірмен ажыратылған функцияның әрбір параметрлерінің атауы мен типін
көрсетеді. Параметрдің атауын түсіруге рұқсат етіледі. Функцияның
хабарланатын параметрлерінің тізімі бос болуы мүмкін. Функцияның
прототипінің мысалдарын көрсетейік:
int swap(int, int);
double max (double par1, double par2);
void func();
Функцияның анықтамасы оның тақырыбына және мағыналық жүктемені
таситын, фигуралық жақшаға алынған меншікті денесінен тұрады. Егер функция
мән қайтарса, Void типінен жақсы, қайтарылатын мән сияқты функция денесінде
сол типтің параметріндей return операторы қатысуы керек. Егер қайтарылатын
мән келешекте программада (void) қолданылмайтын жағдай болса, яғни return
операторы параметрсіз жалғасады және біржола түсіріледі, онда функциядан
қайту жабылатын жақшаның жетістігі бойынша орындалады.
Функция нақты іс-әрекетті орындауы үшін, ол программада шақырылуы
керек. Функцияға қарау кезінде қойылған тапсырмаларды орындайды, ал жұмыс
аяқталуы кезінде кейбір мәндерді шешімі ретінде қайтарады.
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
СИ тіліндегі файлдар және мәтіндік файлдар
СИ тіліндегі символдық функциялар мен процедуралар
СИ бағдарламалау тілі және жобалануы туралы
СИ бағдарламалау тілі және жобалануы
СИ бағдарламалау тілінде жадыны басқару
С\С++ программалау тілдерінің тарихына қысқаша шолу
Си тілінің пайда болу тарихы мен мүмкіндіктері
СИ тіліндегі динамикалық жады
Препроцессор директивалары
Функциялар туралы негізгі мәліметтер
Пәндер