01.03.2013 Views

I. daprogramebis ena (algoriTmis aRweris ena), misi sintaqsi ...

I. daprogramebis ena (algoriTmis aRweris ena), misi sintaqsi ...

I. daprogramebis ena (algoriTmis aRweris ena), misi sintaqsi ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

I. <strong>daprogramebis</strong> <strong>ena</strong> (<strong>algoriTmis</strong> <strong>aRweris</strong> <strong>ena</strong>), <strong>misi</strong> <strong>sintaqsi</strong>, semantika. <strong>ena</strong>Ta<br />

nairsaxeobebi (manqanuri enebi, asembleri, maRali donis enebi).<br />

translatori, kompilatori, interpretatori. <strong>daprogramebis</strong> <strong>ena</strong> C-s<br />

Sesavali. enis Seqmnis istoria, <strong>misi</strong> ganviTareba. C-s ZiriTadi cnebebis<br />

mimoxilva (anbani, identifikatori, rezervirebuli sityvebi, komentari).<br />

nebismieri amocanis gadawyveta gulisxmobs garkveuli moqmedebebis<br />

Sesrulebas. moqmedebaTa sasrul mimdevrobas, romlis zusti Sesruleba<br />

mocemuli sawyisi monacemebis pirobebSi migviyvans winaswar dasaxul Segedamde,<br />

algoriTmi ewodeba. moyvanili winadadeba araa <strong>algoriTmis</strong> mkacri ganmarteba,<br />

is mxolod mcdelobaa <strong>algoriTmis</strong> arsis axsnisa. algoriTmi xasiaTdeba<br />

Semdegi TvisebebiT:<br />

• algoriTmi unda iyos garkveuli, e.i. potenciuri SemsruleblisaTvis <strong>misi</strong><br />

yoveli brZaneba (moqmedeba) unda iyos calsaxad gasagebi da advilad<br />

Sesrulebadi;<br />

• igi unda iyos sasruli, e.i. dasaSvebi drois Semdeg (sasruli raodenoba<br />

bijebis Semdeg) <strong>misi</strong> Sesruleba unda damTavrdes;<br />

• algoriTmi unda iyos Sedegiani, e.i. <strong>misi</strong> Sesruleba unda iZleodes<br />

garkveul Sedegs;<br />

• igi unda iyos masobrivi, e.i. <strong>misi</strong> Sesruleba unda iyos SesaZlebeli ara<br />

mxolod erTi konkretuli amocanisaTvis, aramed amocanaTa mTeli<br />

klasisaTvis. magaliTad, ori ricxvis jamis dadg<strong>ena</strong> unda xerxdebodes ara<br />

marto ricxvebisTvis 3 da 5, aramed ricxvTa nebismieri wyvilisTvis.<br />

arsebobs <strong>algoriTmis</strong> <strong>aRweris</strong> sxvadasxva xerxebi: sityvieri aRwera, anu<br />

<strong>misi</strong> aRwera nebismier bunebriv <strong>ena</strong>ze; grafikuli arwera, anu geometriuli<br />

figurebis (blokebis) gamoyenebiT, rodesac TiToeul bloks Seesabameba<br />

moqmedeba, xolo moqmedebaTa mimdevroba miTiTebulia mimarTuli isrebis<br />

saSualebiT. Tu ki <strong>algoriTmis</strong> Sesruleba unda xdebodes kompiuterze, maSin<br />

igi unda iyos aRwerili <strong>daprogramebis</strong> romelime <strong>ena</strong>ze. am SemTxvevaSi<br />

algoriTms uwodeben programas.<br />

nebismieri informacia Caiwereba kompiuterSi e.w. orobiTi kodis<br />

saSualebiT: 1-ebisa da 0-ebis erTobliobiT. imisaTvis, rom <strong>algoriTmis</strong><br />

Sesruleba SeiZlebodes kompiuterze, igi unda iyos Cawerili kompiuterisaTvis<br />

gasageb <strong>ena</strong>ze (e.w. manqanur <strong>ena</strong>ze, romelic yoveli tipis kompiuterisTvis<br />

gansxvavebulia da damokidebulia mis aparatul nawilze). pirveli programebi<br />

iqmneboda orobiT kodSi: monacemebi, (ufro sworad, maTi misamarTebi) da<br />

operaciebic (brZanebebi, romlebic sruldeboda monacemebze) warmodgenili iyo<br />

0-ebisa da 1-ebis kombinaciiT. cxadia, rom programistisTvis es iyo rTuli<br />

amocana. <strong>daprogramebis</strong> enebis ganviTarebis Semdeg etapze Seiqmna asembleri. am<br />

<strong>ena</strong>Si programists SeeZlo manqanuri brZanebebis kodebis nacvlad am brZanebebis<br />

dasaxelebis gamoyeneba (inglisuri enis abreviaturebis gamoyeneba, magaliTad<br />

ADD, SUB da sxva), ufro metic, monacemebis damisamarTeba xdeboda ara<br />

mexsierebis ujredis misamarTis miTiTebiT, aramed am monacemebis dasaxelebis<br />

miTiTebiT (Semovida cvladis saxelis - identifikatoris - cneba). asemblerSi<br />

iyo SesaZlebeli agreTve mudmivebis gansazRvrac. cxadia, rom asemblerze<br />

daweril programas kompiuteri uSualod ver Seasrulebda, programa jer unda<br />

yofiliyo gadayvanili manqanur <strong>ena</strong>ze. aseTi mTargmneli – specialuri<br />

programaa, romelsac translatori ewodeba. asembleris translators aseve<br />

asembleri ewodeba.<br />

Semdeg etapze Seiqmna uamravi <strong>daprogramebis</strong> <strong>ena</strong> (algoriTmuli <strong>ena</strong>,<br />

radganac igi gankuTvnili iyo <strong>algoriTmis</strong> Casawerad). es enebi iyenebdnen<br />

inglisuri enis sityvebis garkveul marags da iyvnen ufro gasagebi <strong>algoriTmis</strong><br />

garCevis TvalsazrisiT. yovel <strong>ena</strong>s Tavisi daniSnuleba hqonda. magaliTad,<br />

FORTRAN (FORmula TRANslating), Seqmnili 1956 wels, gankuTvnilia gamoTvliTi<br />

amocanebis <strong>daprogramebis</strong>Tvis; Cobol – biznesis sferoSi programirebisTvis;<br />

1


Lisp – funqcionaluri da Prolog – logikuri programirebisTvis; С, С++ – sistemuri<br />

programuli uzrunvelyofis SeqmnisTvis; DHTML, Perl, ASP, PHP – WebprogramirebisTvis;<br />

zogi enis Seqmnis mizani iyo programirebis swavleba: Pascal,<br />

Basic; cnobilia monacemTa bazebis marTvis enebi – SQL, PL/SQL. mogvianebiT<br />

TiToeuli enis ganviTarebam bevri maTgani ufro farTo daniSnulebis enebad<br />

aqcia, vidre es Tavdapirvelad iyo gaTvaliswinebuli.<br />

algoriTmul <strong>ena</strong>ze dawerili programa agreTve unda iTargmnos manqanur<br />

<strong>ena</strong>ze. amisaTvis ZiriTadad gamoiyeneba kompilatori da interpretatori. orive<br />

SemTxvevaSi am programa-mTargmnelebs gadahyavT maRali donis algoriTmul<br />

<strong>ena</strong>ze dawerili programa – sawyisi moduli – manqanuri brZanebebis sistemaSi.<br />

kompilatori da interpretatori gansxvavdebian Tavisi muSaobis TvalsazrisiT.<br />

kompilatori “kiTxulobs” programas mTlianad da axdens mis gadayvanas<br />

orobiT kodSi, ris Sedegadac iqmneba e.w. obieqturi moduli (es ki ukve<br />

manqanur kodebSi Cawerili programaa, magram <strong>misi</strong> uSualo Sesruleba jer ver<br />

xerxdeba, radganac sawyis modulSi SeiZleba iyos mimarTva sxva modulebze,<br />

magaliTad standartul funqciebze). obieqturi modulis damuSavebis Semdeg<br />

bijze iqmneba CasatvirTi moduli (mas qmnis sistemuri programa kavSirebis<br />

redaqtori). CasatvirTi moduli – es aris programuli moduli, romlis<br />

uSualo Sesruleba kompiuters ukve SeuZlia. kidev erTi sistemuri programa –<br />

CamtvirTveli - uzrunvelyofs CasatvirTi modulis gadatanas operatiul<br />

mexsierebaSi, sadac xdeba programis Sesruleba.<br />

interpretatori ki Targmnis programis TiToeul winadadebas da axdens<br />

mis Sesrulebas. interpretatoris naklia muSaobis SedarebiT dabali siCqare<br />

da isic, rom programis yoveli Sesrulebis dros man unda imuSaos. samagierod,<br />

interpretatoris saSualebiT ufro advilia programis gamarTva – programis<br />

teqstSi Secdomebis Zieba.<br />

kompilatoris dadebiTi mxarea is, rom igi gacilebiT swrafqmedia da<br />

isic, rom erTxel Seqmnili obieqturi moduli (Tu sawyisi moduli ar<br />

Secvlila) SeiZleba gaeSvas bevrjer sxvadasxva monacemebisTvis da<br />

kompilatoris Careva am procesSi ukve saWiro ar aris.<br />

yoveli maRali donis <strong>daprogramebis</strong> <strong>ena</strong> xasiaTdeba Semdegi<br />

komponentebiT: anbani, <strong>sintaqsi</strong> da semantika. anbani aris im da mxolod im<br />

simboloebis erToblioba, romelTa gamoyenebac daSvebelia mocemuli enis<br />

winadadebebis asagebad. <strong>sintaqsi</strong> aris mocemuli enis winadadebebis agebis<br />

wesebis erToblioba. semantika ki niSnavs enis sworad agebuli winadadebebis<br />

aRqmis wesebis erTobliobas.<br />

<strong>daprogramebis</strong> <strong>ena</strong> C Seiqmna 1972 wels amerikuli korporaciis AT&T Bell<br />

Laboratory-is TanamSromlis denis riCis mier. C iRebs Tavis sawyisebs ori enidan:<br />

B da BCPL. BCPL-is avtorma martin riCardsma 1967 wels Seqmna <strong>ena</strong> sistemuri<br />

programebis da kompilatorebis <strong>daprogramebis</strong>Tvis. 1970 wels ken tompsonma<br />

gamoiy<strong>ena</strong> <strong>daprogramebis</strong> <strong>ena</strong> B operaciuli sistema UNIX erT-erTi pirveli<br />

versiis Sesaqmnelad. C iTvleba sistemuri programirebis <strong>ena</strong>d, aRiareba moipova,<br />

rogorc UNIX operaciuli sistemis <strong>ena</strong>m. dReisaTvis praqtikulad yvela<br />

ZiriTadi operaciuli sistema dawerilia C-ze da/an C++-ze. C-s uwodeben<br />

saSualo donis <strong>daprogramebis</strong> <strong>ena</strong>s, radganac masSi ganxorcielebulia maRali<br />

donis algoriTmuli enebis yvela saukeTeso Tviseba da kompiuteris<br />

aparaturasTan uSualo wvdomis SesaZlebloba, magaliTad, TiToeul bitze<br />

wvdoma (rac, Cveulebriv, SesaZlebelia asemblerze <strong>daprogramebis</strong>as). enis<br />

pirveli aRwera – denis riCis da braian kerniganis wigni “The ‘C’ Programming<br />

Language” – gamovida 1978 wels, da didi xnis manZilze es iyo enis erTaderTi<br />

aRwera (standarti). C-s upiratesobaTagan unda aRiniSnos, rom <strong>misi</strong> Sesruleba<br />

SesaZlebelia sxvadasxva arqiteqturis manqanebze, sxvadasxva operaciul<br />

sistemebSi. radganac C-s aqvs maRali donis algoriTmuli enis yvela<br />

damaxasiaTebeli komponenti, igi maleve gaxda popularuli agreTve rogorc<br />

2


gamoyenebiTi programirebis <strong>ena</strong>. C-s gamoyenebam sxvadasxva tipis kompiuterebze<br />

(amboben – sxvadasxva platformaze) gamoiwvia enis versiebis gaC<strong>ena</strong>, rac xSirad<br />

uSlida programebis Tavsebadobas. amitomac, 1983 wels amerikis standartebis<br />

nacionalurma komitetma informaciis damuSavebisa da kompiuterebis dargSi<br />

daawesa teqnikuri ko<strong>misi</strong>a, romelsac daevala calsaxa da manqanurdamoukidebeli<br />

C-enis gansazRvra, anu standartis SemuSaveba. standarti<br />

sabolood damtkicebulia 1989 wels, xolo 1988 wels gamovida kerniganis da<br />

riCis wignis meore gamocema, romelSic aRwerilia C-s bolo versia. es versia<br />

cnobilia rogorc ANSI C da farTod gamoiyeneba msoflioSi.<br />

80-ani wlebis dasawyisSi igive Bell Laboratory-Si bern straustrupis mier<br />

iyo SemoTavazebuli C-enis gafarToeba, romelsac Tavidan ewodeboda “C<br />

klasebiT” da romelic sinamdvileSi iyo axali obieqtze orientirebuli <strong>ena</strong>.<br />

mas mogvianebiT daerqva C++. C++-Si SesaZlebelia programireba C-s stilSic,<br />

obieqtze orientirebul stilSic da orive stilSi erTdroulad. me-20 saukunis<br />

90-iani wlebis dasawyisidan C++ gaxda msoflioSi erT-erTi yvelaze<br />

aRiarebuli <strong>ena</strong>.<br />

C-s anbani:<br />

1. inglisuri enis asoebi (mTavruli da patara asoebi gansxvavdebian)<br />

da qveda xazis simbolo<br />

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z<br />

a b c d e f g h i j k l m n o p q r s t u v w x y z _<br />

2. arabuli cifrebi<br />

0 1 2 3 4 5 6 7 8 9<br />

3. specialuri simboloebi da ariTmetikuli operaciebis aRmniSvneli<br />

simboloebi<br />

, . ; : ? ' ! | / \ ~ * + - ) ( } { < > [ ] # % & ^ "<br />

da sxva<br />

4. gamyofi da mmarTveli simboloebi<br />

esenia: Hhari, tabulaciis simboloebi, axal striqonze gadasvlis<br />

simbolo da sxva<br />

5. amas garda gamoiyeneba e.w. mmarTveli mimdevrobebi, anu simboloebis<br />

specialuri kombinaciebi. zogierTi maTgania:<br />

\a (zari); \b (erTi poziciiT dabruneba); \t (horizontaluri tabulacia);<br />

\n (axal striqonze gadasvla); \0 (nulovani simbolo);<br />

\r (kursoris gadatana striqonis dasawyisSi) da sxva.<br />

identifikatori<br />

identifikatori – programuli obieqtis dasaxelebaa, romelic Sedgeba<br />

asoebis, cifrebisa da qveda xazis simboloebisagan. amasTan, identifikatori<br />

unda iwyebodes asoTi an qveda xazis simboloTi da ar unda iwyebodes cifriT.<br />

rogorc ukve aRiniSna, patara da mTavruli asoebi C-Si gansxvavdebian<br />

(magaliTad, aso a-s da aso A-s sxvadasxva orobiTi warmodg<strong>ena</strong> aqvT<br />

kompiuteris mexsierebaSi). amitom identifikatorebi ab, Ab, aB da AB – 4 sxvadasxva<br />

identifikatoria. swori identifikatorebis magaliTebia: aBC1m2; _asd4; A9nm23L,<br />

xolo 1bn9mFG – identifikatoris araswori Caweraa.<br />

identifikatoris sigrZeze SezRudva ar aris. magram ANSI C standartis<br />

mixedviT ori identifikatori gansxvavebulia, Tu isini gansxvavdebian pirvel 32<br />

simboloSi (anu, Tu ori identifikatoris pirveli 32 simbolo emTxveva, es erTi<br />

identifikatoria). C++-Si es SezRudva moxsnilia.<br />

3


ezervirebuli an momsaxure sityvebi<br />

es aris is sityvebi, romlebic gamoiyeneba C-s programaSi. magaliTad,<br />

while double int struct break else long switch<br />

register char return void case float if sizeof<br />

default for union do continue enum da sxva.<br />

amas garda sxvadasxva kompilatorebi amateben rezervirebuli sityvebis<br />

garkveul raodenobas, rac dakavSirebulia im kompiuteris tipTan,<br />

romlisTvisac kompilatori Seiqmna. zogierTi am sityvebidan iwyeba qveda xazis<br />

simboloTi. magaliTad, _asm, _pascal, _near, _far da sxva. amitomac sjobs, rom<br />

programistis mier SerCeuli identifikatorebi ar iwyebodnen qveda xazis<br />

simboloTi.<br />

programaSi identifikatori ar unda emTxvevodes rezervirebul sityvebs.<br />

komentari C-Si<br />

C-ze daweril programaSi SeiZleba gamoviyenoT komentari. komentari<br />

warmoadgens simboloTa erTobliobas, romelsac kompilatori ar aqcevs<br />

yuradRebas (ugulvebelyofs), anu ar amowmebs Caweris sisworeze da ar<br />

Targmnis. komentari iwyeba simboloebiT /* da mTavrdeba simboloebiT */ .<br />

magaliTad, /* this is the comment */. komentari SeiZleba Sedgebodes erTi an<br />

ramdenime striqonisagan. komentaris SigniT komentaris aRmniSneli simboloebis<br />

/* da */ gamoyeneba akrZalulia. magaliTad, Semdegi komentarebi Seicaven<br />

Secdomas:<br />

/* this is /* the */ comment */;<br />

/* this is */ the */ comment */;<br />

/* this is */ the /* comment */;<br />

II. <strong>daprogramebis</strong> <strong>ena</strong> C-s ZiriTadi cnebebi: cvladi, mudmivi. sabazo tipebi.<br />

tipis modifikatorebi. miniWebis operacia. cvladebis gamocxadeba,<br />

inicializeba. gamosaxuleba, gamosaxulebis gamoTvlis wesebi.<br />

ariTmetikuli operaciebi.<br />

C-s programaSi dasamuSavebuli monacemebi – ricxvebi, simboloebi,<br />

striqonebi, ricxvebis erToblioba da sxva ufro rTuli tipis monacemebi –<br />

warmoadgenen e.w. programul obieqtebs. Tu programuli obieqti programis<br />

bolomde unda inarCunebdes erTi da igive mniSvnelobas, mas mudmivi ewodeba.<br />

Tu ki programuli obieqtis mniSvneloba SeiZleba Seicvalos programis<br />

Sesrulebis dros, mas uwodeben cvlads. programuli obieqtebi programaSi<br />

warmodgenili arian TavianTi dasaxelebis (identifikatoris) meSveobiT.<br />

enis sabazo tipebi<br />

C-enis yoveli cvladi unda iyos gamocxadebuli (aRwerili) mis<br />

gamoyenebamde. aRwera gulisxmobs rogorc imis miTiTebas, Tu rogoria es<br />

cvladi (magaliTad, mTeli ricxvia, namdvili ricxvia, simboloa), anu <strong>misi</strong> tipis<br />

miTiTebas, aseve <strong>misi</strong> identifikatoris miTiTebas. C-Si ganmartebulia 5 sabazo<br />

tipi:<br />

char – simboluri;<br />

int – mTeli;<br />

float – mcocavi wertiliT;<br />

double – mcocavi wertiliT ormagi sizustis;<br />

void – carieli sidide (romelsac ara aqvs mniSvneloba).<br />

tipebi char da int mTeli tipebia. isini gamoiyenebian mTeli ricxvebis<br />

Sesanaxad. marTalia, char-s ewodeba simboluri tipi, magram aq winaaRmdegoba ar<br />

4


aris. cnobilia, rom yoveli simbolo dakavSirebulia mTel ricxvTan – mis<br />

orobiT warmodg<strong>ena</strong>sTan kompiuteris mexsierebaSi (kodTan). simboluri<br />

warmodg<strong>ena</strong> gvWirdeba, rodesac simboluri informacia Segvaqvs klaviaturidan<br />

an gamogvaqvs ekranze (an printerze), xolo kompiuterSi simboloebi S<strong>ena</strong>xulia<br />

kodebSi. simbolos gardaqmna kodSi da piriqiT xdeba avtomaturad. char tipi<br />

ikavebs mexsierebaSi 1 baits (8 bits). TiToeuli simbolos kodi moyvanilia<br />

cxrilSi ASCII, romelic kodebis standartuli cxrilia da moqmedebs mTels<br />

msoflioSi. magaliTad, simbolo-cifri ‘0’ warmodgenilia kompiuterSi orobiTi<br />

ricxviT 00110000, rac Seesabameba aTobiT mniSvnelobas 48, e.i. simbolo ‘0’-is<br />

kodia 48 (ASCII cxrilis mixedviT). tipi char – niSniani tipia, <strong>misi</strong> cvlilebis<br />

diapazonia -128-dan 127-mde.<br />

tipi int ikavebs mexsierebaSi 2 baits (16 bits) an 4 baits (32 bits), rac<br />

damokidebulia kompiuteris manqanuri sityvis sigrZeze (manqanuri sityva aris<br />

bitebis erToblioba, romelsac kompiuteri aRiqvams rogorc informaciis<br />

erTeuls da amuSavebs erTianad): 16-Tanrigian manqanebSi int ikavebs 2 baits,<br />

32-TanrigianSi ki – 4 baits. ase rom, erTi da igive programa, romlis monacemebi<br />

mTeli tipisaa, SeiZleba sworad muSaobdes erT kompiuterze da arasworad<br />

meoreze. imisaTvis, rom moixsnas es uxerxuloba, C-Si SemoRebulia<br />

modifikatorebi long da short. short int yovelTvis ikavebs 2 baits, long int – 4 baits.<br />

amas garda arsebobs kidev ori modifikatori: signed (niSniani) da unsigned<br />

(uniSno), romlebic gamoiyeneba int da char tipebTan. magaliTad, signed short int<br />

aRwers niSnian mokle mTels, da misTvis gamoiyofa mexsierebis 2 baiti. tipebi<br />

char, int, float da double gaCumebis principiT arian niSnianebi. amitomac, wina<br />

magaliTSi moyvanili tipis aRwera SeiZleba SevamokloT: short int. metic, tipi int<br />

imd<strong>ena</strong>d mniSvnelovania, rom bolo aRweraSi SeiZleba gamovtovoT int da vweroT<br />

marto short.<br />

signed long int aris niSniani grZeli mTeli da misTvis gamoiyofa<br />

mexsierebis 4 baiti. eseTi tipis monacemi SegviZlia agreTve aRvweroT rogorc<br />

long int an long.<br />

niSniani da uniSno mTelebs Soris gansxvaveba damokidebulia imaze, Tu<br />

rogori interpretacia aqvs mTeli ricxvis ufros bits. magaliTad, ricxvi +3-is<br />

warmodg<strong>ena</strong> kompiuteris mexsierebaSi Semdegia:<br />

0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1<br />

me-15 ……. . . me-4 me-3 me-2 1li<br />

0-ovani<br />

biti<br />

me-15 (ufrosi) biti - niSanTvisebis bitia, anu igi aCvenebs ricxvis niSans: Tu<br />

me-15 bitSi weria 0 – ricxvi dadebiTia, Tu ki me-15 biti udris 1-s – ricxvi<br />

uaryofiTia. amitom ricxvis sididis Casawerad gamoiyeneba 15 biti (0-vanidan<br />

me-14-mde). rodesac gamocxadebulia uaryofiTi mTeli ricxvi, kompilatori<br />

axdens e.w. damatebiTi kodis generirebas, romelic am uaryofiTi ricxvis kodia.<br />

magaliTad, uaryofiTi ricxvi -3 Caiwereba kompiuteris mexsierebaSi rogorc<br />

1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1<br />

me-15 ……. . . me-4 me-3 me-2 1li<br />

0-ovani<br />

biti<br />

ricxvi -3-is warmodg<strong>ena</strong> miiReba Semdegnairad:<br />

+3-s warmodg<strong>ena</strong>Si 0-ebi icvleba 1-biT da, piriqiT, 1-ebi 0-ebiT (ris<br />

Sedegadac miiReba Sebrunebuli kodi); Semdeg ki umcros bits emateba 1.<br />

miRebuli orobiTi ricxvi (damatebiTi kodi) aris uaryofiTi ricxvi -3-is<br />

warmodg<strong>ena</strong> kompiuteris mexsierebaSi.<br />

rodesac ricxvis aRweraSi gamoiyeneba modifikatori unsigned, am ricxvis<br />

ufrosi biti ukve ar ganixileba rogorc niSnis maCvenebeli. igi ganixileba<br />

rogorc ricxvis sididis Casawerad gamoyofili kidev erTi biti (anu ricxvis<br />

5


sididis Casawerad gamoiyeneba 16-ve biti), da maSin am ricxvis cvlilebis<br />

diapazoni iwyeba 0-dan da izrdeba 2-jer.<br />

tipebi float da double aRweren namdvil ricxvebs, amboben – ricxvebs<br />

“mcocavi wertiliT”. es niSnavs, rom xdeba ricxvis masStabireba wertilis<br />

gadacocebiT marcxniv an marjvniv. am dros ricxvis mniSvneloba rom ar<br />

Seicvalos, mas amravleben 10-is Sesabamis xarisxze (E=10). magaliTad,<br />

123.456789=1.23456789 * E+2= 12345678.9 * E-5. aq +2 da -5 aris 10-is xarisxebi.<br />

float ikavebs mexsierebaSi 4 baits, double ki – 8 baits. amasTan double tipis<br />

cvlads uwodeben “mcocavi wertiliT ormagi sizustis” cvlads, radganac <strong>misi</strong><br />

wiladi nawilis Sesanaxad gamoiyofa 52 biti, xolo float tipis cvladis wilad<br />

nawils eTmoba 23 biti.<br />

double tipTan SeiZleba gamoviyenoT modifikatori long. long double<br />

mexsierebaSi ikavebs 10 baits.<br />

Semdeg cxrilSi moyvanilia yvela SesaZlo tipi modifikatorebis<br />

sxvadasxva kombinaciebiT<br />

tipi<br />

zoma baitebSi<br />

(bitebSi)<br />

mniSvnelobaTa diapazoni<br />

char 1 (8) -128 -dan +127-mde<br />

unsigned char 1 (8) 0 -dan +255-mde<br />

signed char 1 (8) -128 -dan +127-mde<br />

int 2 (16) -32768 -dan +32767-mde<br />

unsigned int 2 (16) 0 -dan +65535-mde<br />

signed int 2 (16) -32768 -dan +32767-mde<br />

short int 2 (16) -32768 -dan +32767-mde<br />

unsigned short int 2 (16) 0 -dan +65535-mde<br />

signed short int 2 (16) -32768 -dan +32767-mde<br />

long int 4 (32) -2147483648-dan +2147483647-mde<br />

signed long int 4 (32) -2147483648-dan +2147483647-mde<br />

unsigned long int 4 (32) 0 -dan +4294967295-mde<br />

float 4 (32) 3.4E-38-dan 3.4E+38-mde<br />

double 8 (64) 1.7 E-308-dan 1.7 E+308-mde<br />

long double 10 (80) 3.4E-4932-dan 3.4E+4932-mde<br />

rezervirebuli sityva void ANSI C standartSi SemoRebulia C++-dan. void<br />

tipis cvladi ar arsebobs. es tipi gamoiyeneba sxva daniSnulebisaTvis, rasac<br />

SevityobT mogvianebiT.<br />

konstantebi C-Si<br />

konstanta (mudmivi) aris fiqsirebuli sidide, romelic programis<br />

bolomde ar icvlis mniSvnelobas. ganvixiloT 4 tipis konstantebi: mTeli<br />

konstantebi,<br />

konstantebi.<br />

konstantebi mcocavi wertiliT, simboluri da striqonuli<br />

mTeli konstanta SeiZleba iyos: aTobiTi, rvaobiTi an 16-obiTi ricxvi,<br />

romelic warmogvidgens mTel sidides Sesabamisad aTobiT, 8-obiT an 16-obiT<br />

formatSi. aTobiTi konstanta Seicavs erTs an ramdenime aTobiT cifrs, ar<br />

iwyeba 0-iT (Tu Tavad 0-is toli ar aris). 8-obiTi konstanta aucileblad iwyeba<br />

0-liT, romlis Semdeg modis erTi an ramdenime 8-obiTi cifri (0-7). 16-obiTi ki<br />

iwyeba 0x an 0X da Seicavs erTs an ramdenime 16-obiT cifrs (0-9, A-F). mTeli<br />

konstantebis magaliTebia:<br />

10-obiTi 8-obiTi 16-obiTi<br />

16 01 0x2BA<br />

127 055 0XFFFF<br />

-346 07657 0x10<br />

6


konstantis tipi ganimarteba <strong>misi</strong> cvlilebis diapazoniT. magaliTad, Tu<br />

mTeli tipis cvladis mniSvneloba ∈ [ − 32 768,<br />

+ 32 767]<br />

, <strong>misi</strong> tipia short int; Tu es<br />

mniSvneloba udris 39 000 – konstanta unsigned short int tipisaa, Tu ki mniSvneloba<br />

> 65 535, konstantis tipia long. C-Si arsebobs SesaZlebloba konstantebis tipis<br />

cxadi mocemisa H, h, L, l, u da U asoebis gamoyenebiT.<br />

Tu konstantas boloSi miwerili aqvs h an H, <strong>misi</strong> tipia short int: 123h, 14H.<br />

mudmivebi: -123L, 78l, 0X2C7L – long int tipisaa; 37Lu, 76ul, 12Ul, 123UL – unsigned long<br />

tipisaa; 53uh –unsigned short tipisaa.<br />

namdvili mudmivebis Canaweri Seicavs mTel da wilad nawilebs da (an)<br />

eqsponentas: 321.21, 7.45E-3, 9e+5. SeiZleba tipis cxadi miTiTebac: -23.4f, 67.9E-2F –<br />

float tipis mudmivebia; 5.932L, -12.0L, 3e+9l – long double tipis konstantebia.<br />

simboluri mudmivi apostrofebSi Cawerili simboloa. magaliTad, 'a' , '\n',<br />

'Z', '7'. simboluri mudmivis mniSvneloba warmoadgens simbolos kods ASCII<br />

cxrilis mixedviT.<br />

striqonuli konstanta – ormag apostrofebSi Casmuli simboloebis<br />

mimdevrobaa. magaliTad, ''Es aris striqoni'', ''Tbilisi – Saqartvelos dedaqalaqia''. C-Si striqoni<br />

bolovdeba nulovani baitiT, romelic miuTiTebs, rom striqoni damTavrda da<br />

romelsac striqonis boloSi amatebs kompilatori. amitom, 'a' da ''a'' –<br />

gansxvavebuli programuli obieqtebia: pirveli niSnavs simbolos da<br />

mexsierebaSi ikavebs 1 baits, xolo meore - striqonia da ikavebs 2 baits (erTs<br />

simbolo 'a'-sTvis, meore ki nulovani baitia).<br />

cvladebis gamocxadeba<br />

rogorc ukve aRiniSna, cvladis gamocxadeba gulisxmobs tipis miTiTebas<br />

da cvladis saxelis miTiTebas. magaliTad,<br />

short x; int a,b,c; long z; unsigned char sym; double ricxvi; float gverdis_sigrdze;<br />

C-Si daSvebulia, rom cvladis gamocxadebis dros mas mieniWos sawyisi<br />

mniSvneloba, romelic Semdeg SeiZleba Seicvalos. magaliTad,<br />

short x=79; int a=375, b=90, c=-123; unsigned char sym='Q'; float gverdis_sigrdze=3.25;<br />

am magaliTebSi gamoyenebulia C-enis miniWebis operacia =. rodesac<br />

cvladi aRwerilia, kompiuteris mexsierebaSi gamoiyofa am cvladis tipisaTvis<br />

damaxasiaTebeli baitebis raodenoba. miniWeba <strong>aRweris</strong> dros niSnavs, rom<br />

cvladisaTvis ganawilebul mexsierebaSi Tavidanve Caiwereba is mniSvneloba,<br />

romelic moTavsebulia miniWebis operaciis marjv<strong>ena</strong> mxares. magaliTad, aRwera<br />

short x=79; niSnavs, rom x cvladisaTvis ganawildeba 2 baiti da am 2 baitSi<br />

Caiwereba ricxvi 79-s orobiTi warmodg<strong>ena</strong>.<br />

Tu Semdgom programaSi Segvxvdeba Canaweri x=7, x-is mexsierebaSi<br />

Caiwereba 7-s orobiTi warmodg<strong>ena</strong>, romelic gaxdeba x cvladis mimdinare<br />

mniSvneloba.<br />

magaliTi: mocemulia ori mTeli ricxvi. gavucvaloT maT mniSvnelobebi.<br />

amocanis amoxsnisTvis jer SemoviRoT aRwera<br />

int a=9, b=3;<br />

<strong>algoriTmis</strong> Sesasruleblad dagvWirdeba kidev erTi damatebiTi cvladi,<br />

vTqvaT, int d;<br />

algoriTmi ki martivia: d=a; a=b; b=d;<br />

C-s ariTmetikuli operaciebi:<br />

– gamokleba an “minus” niSani;<br />

+ Sekreba;<br />

* gamravleba;<br />

/ gayofa;<br />

% naSTis aReba;<br />

++ erTiT gazrda (increment - inkrementi);<br />

7


- - erTiT Semcireba (decrement - dekrementi).<br />

ariTmetikuli operaciebis gamoyenebiT Caiwereba ariTmetikuli<br />

gamosaxuleba. gamosaxuleba aris cvladebis, konstantebisa da operaciebis<br />

garkveuli (<strong>ena</strong>Si daSvebuli) kombinacia. gamosaxulebaSi moqmedebebis<br />

Sesruleba xdeba maTematikaSi dadgenili wesebis mixedviT. operaciaTa<br />

Sesrulebis<br />

gamoyeneba.<br />

Tanmimdevrobis Sesacvlelad saWiroa mrgvali frCxilebis<br />

magaliTi: vTqvaT, mocemulia aRwera: int x=3, y=5, z;<br />

davadginoT z<br />

gamosaxulebisa.<br />

cvladis mniSvneloba, Tu z tolia x*2+(x+y)/4+(y–x)*3–5<br />

amocanis amoxsna mdgomareobs miniWebis operaciis gamoyenebaSi:<br />

z =x*2+(x+y)/4+(y–x)*3–5;<br />

xolo miniWebis operaciis Sesrulebis wesi Semdegia: gamoiTvleba<br />

= operaciis marjv<strong>ena</strong> mxares mocemuli gamosaxuleba da <strong>misi</strong> mniSvneloba<br />

Caiwereba z-isTvis ganawilebul mexsierebaSi:<br />

1. x+y udris 8-s;<br />

2. y–x udris 2-s;<br />

3. x*2 udris 6-s;<br />

4. (x+y)/4 udris 2-s;<br />

5. (y–x)*3 udris 6-s;<br />

6. x*2+(x+y)/4 udris 8-s;<br />

7. x*2+(x+y)/4+(y–x)*3 udris 14-s;<br />

8. x*2+(x+y)/4+(y–x)*3–5 udris 9-s.<br />

amjerad, z-is mniSvneloba udris 9-s.<br />

ganvixiloT zogierTi ariTmetikuli operacia.<br />

a/b – Tu a da b mTeli ricxvebia, maSin sruldeba mTelad gayofa.<br />

magaliTad, 5/2=2, -13/4=-3, 1/2=0. Tu ki erT-erTi operandi (an orive) namdvilia,<br />

sruldeba gayofis Cveulebrivi operacia: 1.2/2=0.6, 5.0/2=2.5.<br />

a%b – naSTis aRebis operaciaa. igi gamoiyeneba mxolod mTel ricxvebTan.<br />

magaliTad, 5%2=1, 18%4=2, 7%8=7, -25%3=-1.<br />

a++ niSnavs a cvladis gazrdas 1 erTeuliT. magaliTad, Tu a-s<br />

mniSvneloba iyo 7, maSin a++ operaciis Sesrulebis Semdeg a-s mniSvneloba<br />

gaxdeba 8. igive moxdeba, Tu ++ operacias gamoviyenebT operandis win: ++a. a++-s<br />

uwodeben ++ operaciis postfiqsur formas, xolo ++a-s – prefiqsul formas.<br />

orive forma niSnavs a=a+1; gansxvaveba am or formas Soris gamoCndeba, Tu<br />

operacias gamoviyenebT miniWebis dros an gamosaxulebaSi. magaliTad,<br />

mocemulia aRwera int a=3, b=7;<br />

a=b++; Sesrulebis Sedegad a-s mniSvneloba gaxdeba 7-is toli, xolo b-s<br />

mniSvneloba gaxdeba 8-s toli, e.i. a-s jer mieniWeba b-s mniSvneloba, xolo<br />

Semdeg b gaizrdeba 1-iT.<br />

a=++b; Sesrulebis Sedegad b-s mniSvneloba gaxdeba 8-s toli, a-s<br />

mniSvnelobac gaxdeba 8-is toli, e.i. jer b gaizrdeba 1-iT, xolo Semdeg a-s<br />

mieniWeba b-s gazrdili mniSvneloba.<br />

igive wesi moqmedebs gamosaxulebis gamoTvlis dros. magaliTad,<br />

++x*(y-z)+x/2 gamosaxulebis mniSvneloba x=7, y=10, z=8 pirobebSi iqneba 20-is<br />

toli: ++x udris 8-s, ++x*(y-z) – 16-s, x/2 ki – 4-s (++ operaciis Sesrulebis<br />

Sedegad x-s mieniWa mniSvneloba 8, da mocemul gamosaxulebaSi igi inarCunebs<br />

8-is tol mniSvnelobas bolomde).<br />

8


igive x=7, y=10, z=8 cvladebisaTvis x+(y-z)%6+y-- gamosaxulebis mniSvneloba<br />

iqneba 19-is toli: (y-z)%6 udris 2-s, x+(y-z)%6 – 9-s, x+(y-z)%6+y-- udris 19-s,<br />

radgan gamosaxulebis gamoTvlaSi monawileobs y-is mniSvneloba 10, da mxolod<br />

Sendeg y-i Semcirdeba 1-iT. amaSi davrwmundebiT, Tu SevamowmebT y-is<br />

mniSvnelobas gamosaxulebis gamoTvlis Semdeg.<br />

III. C_programis struqtura. funqciis cneba, funqcia main(), direqtiva #include<br />

(zogadi mimoxilva). Setana/gamotanis safuZvlebi C–Si (formatirebuli<br />

Setana/gamotana). standartuli funqciebi printf() da scanf(). Setana/gamotanis<br />

zogierTi formati. martivi programis magaliTi.<br />

C-s programa warmoadgens funqciebis erTobliobas. programirebaSi<br />

funqcia ewodeba programis damoukidebel erTeuls, romelic warmoadgens<br />

Sinaarsobrivad dasrulebul algoriTms da garkveuli wesiT gaformebulia<br />

konkretuli amocanis amosaxsnelad. funqciis gamoyeneba programaSi SeiZleba<br />

imdenjer, ramdenjerac es saWiroa da programis im adgilas, sadac es saWiroa.<br />

vTqvaT, amosaxsnelia amocana: vipovoT 4 naturaluri ricxvis (a,b,c,d)<br />

udidesi saerTo gamyofi. amocanis amoxsna SeiZleba davyoT etapebad: pirvelad<br />

vipovoT a da b ricxvebis usg, Semdeg c da d ricxvebis usg, bolos ki pirveli<br />

da meore wyvilis udidesi saerTo gamyofebis usg. am aRweridan Cans, rom mTeli<br />

amocana davida erT konkretul amocanaze – vipovoT 2 naturaluri ricxvis usg.<br />

am konkretuli amocanis amoxsna SeiZleba gamoviyenoT jer a, b wyvilisTvis,<br />

Semdeg c, d wyvilisTvis da bolos am wyvilebis udidesi saerTo gamyofebisTvis.<br />

aseT SemTxvevaSi 2 naturaluri ricxvis usg-s dadg<strong>ena</strong> SegviZlia garkveuli<br />

wesiT gavaformoT calke (es iqneba C-s funqcia) da gamoviyenoT (gamoviZaxoT)<br />

3-jer: a, b wyvilisTvis, c, d wyvilisTvis da am wyvilebis udidesi saerTo<br />

gamyofebisTvis.<br />

funqcias unda hqondes saxeli (identifikatori), romelic saWiroa <strong>misi</strong><br />

gamocxadebisaTvis, gansazRvrebisaTvis da gamoZaxebisaTvis. C-s nebismier<br />

programaSi aucileblad unda iyos funqcia main() (mTavari funqcia). am<br />

funqciiT iwyeba programis Sesruleba.<br />

martivi programa<br />

amocana: mocemulia marTkuTxa samkuTxedis kaTetebi a da b. davadginoT,<br />

rogor Seicvleba samkuTxedis farTobi, Tu erT kaTets gavzrdiT 2-jer, xolo<br />

meores 3-iT.<br />

amocanis algoriTmi Zalzed martivia:<br />

1. davadginoT samkuTxedis Tavdapirveli farTobi,<br />

2. SevcvaloT gverdebis sidideebi pirobis Tanaxmad,<br />

3. gamovTvaloT farTobis axali mniSvneloba,<br />

4. SevadaroT farTobebis mniSvnelobebi (vipovoT sxvaoba farTobebis<br />

axalsa da Tavdapirvel mniSvnelobebs Soris).<br />

moviyvanoT amocanis algoriTmi, Cawerili C-ze:<br />

int a=3, b=4;<br />

float fartobi_1, fartobi_2, sxvaoba;<br />

fartobi_1=0.5*a*b;<br />

a=a*2;<br />

b=b+3;<br />

fartobi_2=0.5*a*b;<br />

sxvaoba=fartobi_2 – fartobi_1;<br />

aq a da b – samkuTxedis kaTetebis aRmniSvneli cvladebia, fartobi_1, fartobi_2,<br />

sxvaoba ki – Tavdapirveli farTobis, miRebuli farTobisa da farTobebis<br />

sxvaobis aRmniSvneli cvladebia Sesabamisad.<br />

9


imisaTvis, rom amocana Sesruldes kompiuterze, aucilebelia <strong>algoriTmis</strong><br />

gaformeba programis saxiT. pirvel rigSi, amocanis algoriTmi unda Caiweros<br />

funqcia main ( )-Si (main ( )-is tanSi).<br />

{<br />

}<br />

main( )<br />

int a=3, b=4;<br />

float fartobi_1, fartobi_2, sxvaoba;<br />

fartobi_1=0.5*a*b;<br />

a=a*2;<br />

b=b+3;<br />

fartobi_2=0.5*a*b;<br />

sxvaoba=fartobi_2 – fartobi_1;<br />

Tu Cven SevecdebiT aseTi saxiT Cawerili programis Sesrulebas, kompiuteri<br />

Caatarebs moqmedebebs, magram pasuxi CvenTvis ucnobi darCeba. saqme isaa, rom<br />

Cven programisgan pasuxi jer ar mogviTxovia, anu programaSi ar aris<br />

gaTvaliswinebuli pasuxis dabeWdva. Sedegis ekranze gamotanisaTvis programa<br />

unda Seicavdes beWdvis standartul funqcias printf( ). funqcias printf( ) gaaCnia<br />

parametrebi: erTi an meti (parametrebis raodenoba fiqsirebuli ar aris)..<br />

pirveli (aucilebeli) parametri striqonuli tipisaa, mas uwodeben mmarTvel<br />

striqons (control string). Cvens SemTxvevaSi funqcia gamoiyureba Semdegnairad:<br />

printf(''shedegi=%f'', sxvaoba); aq brWyalebSi Casmuli fraza shedegi= iqneba gamotanili<br />

ekranze ucvlelad. Semdeg mmarTvel striqonSi dgas simboloebi %f, romlebic<br />

uCveneben, rom am adgilas iqneba gamotanili namdvili ricxvi. es namdvili<br />

ricxvi aris mmarTveli striqonisa da mZimis Sendeg dasaxelebuli cvladis<br />

mniSvneloba (cvladi sxvaoba-s mniSvneloba). %f-s ewodeba formatis<br />

specifikatori. Cveni programa miiRebs saxes:<br />

{<br />

}<br />

main( )<br />

int a=3, b=4; float fartobi_1, fartobi_2, sxvaoba;<br />

fartobi_1=0.5*a*b;<br />

a=a*2;<br />

b=b+3;<br />

fartobi_2=0.5*a*b;<br />

sxvaoba=fartobi_2 – fartobi_1;<br />

printf(''shedegi =%f '', sxvaoba);<br />

isev gauSvaT programa Sesrulebaze. miviRebT kompilaciis Secdomas:<br />

Call to undefined function 'printf', rac niSnavs, rom funqcia 'printf' ar aris ganmartebuli.<br />

saqme isaa, rom C-Si nebismieri funqcia (standartulic) cvladis msgavsad unda<br />

iyos aRwerili mis gamoyenebamde. standartuli funqciebi aRwerilia specialur<br />

failebSi, romlebic moTavsebulia direqtoriaSi include. am failebs aqvT<br />

gafarToeba .h (header). standartuli printf() funqciis aRweras Seicavs faili<br />

stdio.h. failSi stdio.h aRwerilia C-s Setana/gamotanis sxva standartuli<br />

funqciebic. yoveli programa, romelic iyenebs Setana/gamotanis funqciebs<br />

standartuli biblioTekidan, unda iwyebodes striqoniT #include.<br />

striqoni #include warmoadgens programaSi<br />

sxvadasxva standartuli funqciebis aRwerebis CarTvis brZanebas. yovel<br />

konkretul SemTxvevaSi ’failis dasaxeleba’ unda Seicvalos konkretuli<br />

failis saxeliT. magaliTad, brZaneba #include saWiroa striqonebTan<br />

10


momuSave standartuli funqciebis <strong>aRweris</strong>as; #include ki – standartuli<br />

maTematikuri funqciebis aRwerebis CarTvis brZanebaa.<br />

maSasadame, Cveni programa Caiwereba:<br />

# include <br />

main( )<br />

{<br />

int a=3, b=4; float fartobi_1, fartobi_2, sxvaoba;<br />

}<br />

fartobi_1=0.5*a*b;<br />

a=a*2;<br />

b=b+3;<br />

fartobi_2=0.5*a*b;<br />

sxvaoba=fartobi_2 – fartobi_1;<br />

printf(''shedegi =%f '',sxvaoba);<br />

da dagvibeWdavs: shedegi =15.000000<br />

amocanis kiTxvaze sruli pasuxi rom gagveca, unda dagvebeWda, rom farTobi<br />

Seicvleba 15.000000 erTeuliT. amas movaxerxebdiT, Tu printf()-s CavwerdiT ase:<br />

printf(''fartobi sheicvleba %f erteulit'', sxvaoba);<br />

ganxiluli programa, ramdenjerac ar unda SevasruloT igi, yovelTvis<br />

mogvcems erTi da igive pasuxs. es xdeba imitom, rom amocanis sawyisi monacemebi<br />

– samkuTxedis kaTetebis sidideebi – yovelTvis erTi da igive ricxvebia. anu<br />

Cveni algoriTmi ar akmayofilebs <strong>algoriTmis</strong> masobriobis Tvisebas. imisaTvis,<br />

rom programam imuSavos sxvadasxva samkuTxedebis SemTxvevaSi, yoveli<br />

Sesrulebaze gaSvebis dros mas unda miewodebodes kaTetebis axali<br />

mniSvnelobebi (magaliTad, klaviaturidan). es xerxdeba standartuli funqcia<br />

scanf( )-is gamoyenebiT. funqcia scanf( ) agreTve aRwerilia stdio.h failSi. Cvens<br />

programaSi mas eqneba saxe:<br />

scanf(''%d%d'', &a, &b); aq %d – mTeli ricxvis formatis specifikatoria, &a ki<br />

niSnavs moTxovnas, rom klaviaturidan Setanili pirvelive mTeli ricxvis<br />

mniSvneloba Caiweros a cvladis misamarTze (cxadia, rom &b – moTxovnaa<br />

klaviaturidan Setanili meore mTeli ricxvis mniSvnelobis b-s misamarTze<br />

ganTavsebisa). simbolo & aucileblad unda iyos miTiTebuli.<br />

Cveni programa gadaiwereba ase:<br />

# include <br />

main( )<br />

{<br />

int a=3, b=4;<br />

float fartobi_1, fartobi_2, sxvaoba;<br />

printf(''Shemoitanet katetebis mnishvnelobebi – ori mteli ricxvi: '');<br />

scanf(''%d%d'',&a,&b);<br />

fartobi_1=0.5*a*b;<br />

a=a*2;<br />

b=b+3;<br />

fartobi_2=0.5*a*b;<br />

sxvaoba=fartobi_2 – fartobi_1;<br />

printf(''fartobi sheicvleba %f erteulit'',sxvaoba);<br />

}<br />

da <strong>misi</strong> Sesrulebis Sedegi iqneba:<br />

11


Shemoitanet katetebis mnishvnelobebi – ori mteli ricxvi: 3 5<br />

fartobi sheicvleba 16.500000 erteulit<br />

da bolo SeniSvna am programasTan dakavSirebiT. C-s funqciebis <strong>aRweris</strong><br />

wesi Semdegia:<br />

()<br />

{<br />

}<br />

funqciis tani – Sesasrulebeli operatorebis mimdevroba<br />

aq funqciis tipi – funqciis mier gamomuSavebuli mniSvnelobis (<strong>misi</strong><br />

dasabrunebeli mniSvnelobis) tipia; funqciis dasaxeleba – identifikatoria;<br />

operatori ki ewodeba '; ' simboloTi damTavrebul enis winadadebas.<br />

funqciis saTauris magaliTebi:<br />

float sxvaoba(float x, float y), int func_1( ), void func2 ( ),<br />

int jami (int a, int b).<br />

Tu funqcia abrunebs mniSvnelobas int, mis saTaurSi SeiZleba sityva int-is<br />

gamotoveba: gaCumebis principiT iTvleba, rom Tu funqciis saTaurSi <strong>misi</strong> tipi<br />

ar mieTiTeba, maSin funqcia int tipisaa. magaliTad, bolo saTauri SeiZleba<br />

gamoiyurebodes ase: jami (int a, int b).<br />

funqciis tanSi dasabrunebeli mniSvnelobis miTiTebisaTvis gamoiyeneba<br />

operatori return. mis sintaqs Cven gavecnobiT mogvianebiT.<br />

axla ki daubrundeT ganxilul programas, ufro zustad, funqcia main( )-s.<br />

rogorc vxedavT, mis saTaurSi tipi miTiTebuli ar aris. es ki niSnavs, rom<br />

igulisxmeba tipi int, anu SeiZleboda <strong>misi</strong> aRwera tipis cxadi CvenebiTac:<br />

int main( )<br />

{<br />

. . .<br />

}<br />

main( ) funqciis tanSi bolo operatorad unda gamoviyenoT operatori<br />

return 0; es niSnavs, rom main( )-i abrunebs 0-s da aCvenebs imas, rom programa<br />

dasrulda warmatebiT. maSin programis struqtura gamoiyureba:<br />

ase: # include <br />

int main( )<br />

{<br />

. . .<br />

return 0;<br />

}<br />

an ase: # include <br />

main( )<br />

{<br />

. . .<br />

return 0;<br />

}<br />

moviyvanoT Cveni programis saboloo varianti:<br />

# include <br />

#include /* conio.h failSi aRwerilia standartuli funqcia getch() */<br />

main( )<br />

{<br />

int a=3, b=4; float fartobi_1, fartobi_2, sxvaoba;<br />

printf(''Shemoitanet katetebis mnishvnelobebi – ori mteli ricxvi: '');<br />

scanf(''%d%d'',&a,&b);<br />

fartobi_1=0.5*a*b; a=a*2; b=b+3;<br />

fartobi_2=0.5*a*b;<br />

sxvaoba=fartobi_2 – fartobi_1;<br />

printf(''fartobi sheicvleba %f erteulit'',sxvaoba);<br />

12


getch(); /* ekranis gaCereba klaviaturis nebismier Rilakze daWeramde */<br />

return 0;<br />

}<br />

IV. operaciebi C-Si: miniWebis damatebiTi operaciebi, mravaljeradi miniWeba<br />

C–Si, Sedarebis da logikuri operaciebi, operacia “ ? : “, operacia “,”,<br />

operacia sizeof. tipebis gardaqmna ariTmetikul gamosaxulebaSi. tipebis<br />

gardaqmna miniWebisas. cxadi gardaqmna.<br />

rogorc ukve viciT, miniWebis operatori a=a+1; SeiZleba Seicvalos<br />

operatoriT a++; an operatoriT ++a; . samive SemTxvevaSi a cvladis mniSvneloba<br />

gaizrdeba 1 erTeuliT. C-Si igive moqmedebisaTvis arsebobs Caweris kidev erTi<br />

forma: a+=1;<br />

miniWebis damatebiTi operaciebi C-Si: +=, *=, –=, /=, %=. magaliTad,<br />

a+=5 niSnavs igives, ras a=a+5; a*=9 igivea, rac a=a*9; a/=13 ki igivea, rac<br />

a=a/13. amasTan, operacia a%=3 sruldeba ufro swrafad, vidre a=a%3.<br />

C-Si SesaZlebelia mravaljeradi nimiWebis Sesruleba, e.i. mocemuli<br />

aRwerebis pirobebSi<br />

int x, y, z, u, a=3, b=7; daSvebulia Semdegi Canaweri: x=y=z=u=a*b;<br />

mravaljeradi miniWebis operatorSi moqmedebebi sruldeba marjvnidan<br />

marcxniv, anu jer gamoiTvleba mniSvneloba a*b (3*7=21), Semdeg es mniSvneloba<br />

eniWeba cvlads u, Semdeg cvlads z, Semdeg cvlads y da bolos cvlads x.<br />

Sedegad cvladebi x, y, z da u miiReben mniSvnelobas 21.<br />

Sedarebis operaciebi C-Si:<br />

< - naklebia;<br />

- metia;<br />

>= - meti an tolia;<br />

== - udris;<br />

!= - ar udris.<br />

Sedarebis operaciebis magaliTebi: a>100; x100 gamosaxulebis mniSvneloba mcdaria, x 1<br />

logikuri operaciebi:<br />

&& − logikuri gamravleba ( “da” )<br />

|| − logikuri Sekreba ( “an” )<br />

! − logikuri uaryofa<br />

13


C-s logikuri operaciebi Seesabameba klasikur logikur operaciebs da<br />

sruldeba Semdegi wesebis dacviT:<br />

X Y X&&Y X||Y !X<br />

1 1 1 1 0<br />

1 0 0 1 0<br />

0 1 0 1 1<br />

0 0 0 0 1<br />

cxrilidan Cans, rom && operaciis Sedegi iqneba 1 (WeSmariti), Tu<br />

operaciis orive mxares WeSmariti gamosaxulebebia (orive operandi WeSmaritia).<br />

sxva danarCen SemTxvevaSi &&-is pasuxi 0-is tolia (mcdaria).<br />

magaliTad, int a=23, x=56; <strong>aRweris</strong> pirobebSi logikuri operaciis<br />

(a>10)&&(x>40) mniSvneloba iqneba 1; logikuri operaciebis (a40),<br />

(a>10)&&(x10)||(x0) an x>0 && y>0 && z>0<br />

5. x, y da z ricxvebidan erTi mainc dadebiTia:<br />

14


(x>0) | | (y>0) | | (z>0) an x>0 | | y>0 | | z>0<br />

6. weliwads ewodeba nakiani, Tu <strong>misi</strong> rigiTi nomeri 4-is jeradia, magram<br />

100-is jeradi wlebidan nakiania mxolod 400-is jeradebi. magaliTad,<br />

1700, 1800 da 1900 – araa nakiani wlebi, xolo 2000 – nakiani welia.<br />

davweroT gamosaxuleba, romelic WeSmariti iqneba mxolod im<br />

SemTxvevaSi, Tu weliwadi rigiTi nomriT y nakiania<br />

y % 4 == 0&& y % 100 != 0 || y % 400 == 0<br />

operacia ? :<br />

es enis erTaderTi 3-operandiani (anu ternaruli) operaciaa. mas agreTve<br />

pirobiT gamosaxulebas uwodeben. ganxixiloT ? : operaciis magaliTebi<br />

int x=10, y=17, a=32, max, abs; <strong>aRweris</strong> pirobebSi gamoviTvaloT:<br />

max=(x>y) ? x : y; ( aq x>y – pirveli operandia; x – meore, y – mesame operandebia )<br />

abs=(a>=0) ? a : -a;<br />

miniWebis pirvel operatorSi cvlads max mieniWeba x da y cvladebidan<br />

udidesis mniSvneloba. Sesrulebis wesi ki Semdegia: gamoiTvleba x>y<br />

gamosaxuleba, Tu <strong>misi</strong> mniSvneloba 1-is tolia (WeSmaritia), max-s mieniWeba<br />

meore operandis (x-is) mniSvneloba, Tu ki x>y tolia 0-isa, anu mcdaria<br />

(e.i. x=0, maSin abs=a; Tu ax)?a:x=9; vnaxoT, ra moqmedebas<br />

Seasrulebs igi. amisaTvis davweroT programa:<br />

#include <br />

#include <br />

main()<br />

{<br />

int a=23, x=56;<br />

(a>x) ? a : x =9;<br />

printf("a=%d x=%d\n", a, x );<br />

getch();<br />

return 0;<br />

}<br />

programis Sesrulebis Sedegia : a=23 x=9.<br />

programis analizi gviCvenebs, rom ? : operaciis Sesrulebis Sedegad a da<br />

x cvladebs Soris airCeva udidesi (Cvens SemTxvevaSi x) da mas mieniWeba<br />

mniSvneloba 9. e.i. erTi miniWebis operatoris gamoyenebiT Cven amovxseniT<br />

amocana: or cvlads Soris udidess mivaniWoT mniSvneloba 9.<br />

Tumca ki unda aRiniSnos, rom sxva sawyisi mniSvnelobebisTvis, magaliTad,<br />

a=23, x=5; (a>x) ? a : x =9; operatoris Sesrulebis Sedegad daibeWdeba a=23 x=5.<br />

operacia “ , ”<br />

am operacias C-s danarCen operaciebTan SedarebiT yvelaze dabali<br />

prioriteti aqvs. <strong>misi</strong> Sesruleba xdeba marcxnidan marjvniv. , -iT gamoiyofa<br />

gamosaxulebebi, xolo operaciis Sedegi iqneba bolo gamosaxulebis<br />

mniSvneloba.<br />

magaliTad, Semdegi programis<br />

15


#include<br />

#include <br />

main()<br />

{<br />

int x=3, y=7;<br />

x++, x+=y, x*=y;<br />

printf("x=%d", x);<br />

getch();<br />

return 0;<br />

}<br />

Sedegia: x=77.<br />

vnaxoT, rogor miiReba es Sedegi: pirvelad x++-is Sesruleba x-s mianiWebs<br />

mniSvnelobas 4, Semdeg gamoiTvleba x+=y gamosaxuleba da x gaxdeba 4+7=11-is<br />

toli, bolos ki Sesruldeba x*=y da miiReba mniSvneloba 11*7=77.<br />

operacia sizeof<br />

am operacias aqvs 2 formati: sizeof(tipi) da sizeof(gamosaxuleba). pirvel<br />

SemTxvevaSi operacia daabrunebs mrgval frCxilebSi mocemuli tipisTvis<br />

mexsierebaSi gamoyofili baitebis raodenobas. xolo sizeof(gamosaxuleba)<br />

formatSi dgindeba moyvanili gamosaxulebis tipi (gamosaxuleba ar<br />

gamoiTvleba) da gamoimuSaveba am tipisTvis gamoyofili mexsierebis zoma<br />

baitebSi. magaliTad,<br />

#include <br />

#include <br />

main()<br />

{<br />

long x=12, y=8; double z;<br />

printf("%d %d", sizeof(short int), sizeof (x+y) );<br />

printf("\n%d", sizeof(x+z) );<br />

getch();<br />

return 0;<br />

}<br />

programis muSaobis pasuxia: 2 4<br />

8<br />

e.i. tipi short int ikavebs mexsierebaSi 2 baits, x+y gamosaxulebis tipia long da am<br />

tips gamoeyofa 4 baiti. saintereso Sedegi mogvca operatorma<br />

printf("\n%d", sizeof(x+z)); x+z gamosaxulebaSi mocemulia 2 gansxvavebuli tipis<br />

cvladis jami: x – long tipisaa, z – double tipis. programam daadgina mocemuli<br />

jamis tipi, rogorc double da dabeWda 8 (baiti).<br />

tipebis gardaqmna ariTmetikul gamosaxulebaSi<br />

C-Si daSvebulia ariTmetikul gamosaxulebaSi sxvadasxva tipis<br />

cvladebis gamoyeneba. aseTi gamosaxulebis gamoTvlis dros sruldeba tipebis<br />

avtomaturi gardaqmna. moviyvanoT ramdenime wesi, romelic gamoiyeneba tipebis<br />

avtomaturi gardaqmnis (amboben – tipebis dayvanis) dros:<br />

1. float tipis operandebi daiyvaneba double tipze;<br />

2. Tu erTi operandi long double tipisaa, meorec daiyvaneba amave tipze;<br />

3. Tu erTi operandis tipia double, meorec gardaiqmneba double tipad;<br />

4. char da short tipis operandebi daiyvaneba int tipze;<br />

5. yoveli unsigned char da unsigned short operandi daiyvaneba unsigned int tipze;<br />

6. Tu erTi operandi unsigned long tipisaa, meore operandis tipic gaxdeba<br />

unsigned long;<br />

7. Tu erTi operandis tipia long, meore operandis tipic gaxdeba long;<br />

8. Tu erTi operandis tipia unsigned int, meore operandis tipic gaxdeba unsigned int.<br />

wesebi gviCvenebs, rom gamosaxulebis gamoTvlisas operandebi daiyvaneba im<br />

operandis tipze, romelsac udidesi zoma aqvs.<br />

16


vTqvaT, mocemulia aRwera: double f, s; unsigned char ch; unsigned long k; int i;<br />

da unda gamoviTvaloT<br />

s=f*(i+ch/k);<br />

tipebis gardaqmnis Tanmimdevroba Semdegia: operandi ch daiyvaneba unsigned int<br />

tipze (wesi 5), Semdeg igive ch daiyvaneba unsigned long tipze, radganac ch/k<br />

operaciaSi k - unsigned long tipisaa (wesi 6), Semdeg i daiyvaneba unsigned long tipze,<br />

da mrgval frCxilebSi mocemuli gamosaxulebis Sedegi iqneba unsigned long<br />

tipisa. es Sedegi daiyvaneba double tipze (wesi 3), da mTeli gamosaxulebis tipi<br />

iqneba double.<br />

tipebis gardaqmna miniWebisas<br />

miniWebis dros Tu miniWebis operaciis marjv<strong>ena</strong> da marcx<strong>ena</strong><br />

operandebis tipebi gansxvavdeba, moqmedebs tipebis gardaqmnis martivi wesi:<br />

miniWebis operaciis marjv<strong>ena</strong> mxares mdebare mniSvnelobis tipi daiyvaneba im<br />

cvladis tipze, romelsac eniWeba mniSvneloba. magaliTad, programa<br />

#include<br />

#include <br />

main()<br />

{<br />

short x=19; char y=125; float z;<br />

z=x+y;<br />

printf("%d %d %d",sizeof(x), sizeof(y), sizeof(x+y));<br />

printf("\n%d %f", sizeof(z), z);<br />

getch();<br />

return 0;<br />

}<br />

dabeWdavs pasuxs: 2 1 4<br />

4 144.000000<br />

pasuxidan Cans, rom x+y-is mniSvneloba gardaiqmna z-is tipze.<br />

<strong>ena</strong>Si gaTvaliswinebulma mTeli da namdvili tipebis avtomaturma<br />

gardaqmnam SeiZleba gamoiwvios damaxinjebuli Sedegi. magaliTad, Tu<br />

SevasrulebT programas<br />

#include<br />

#include <br />

main()<br />

{<br />

char x=9; long y=7; double z=987;<br />

x=z+y;<br />

printf("%d %d %d", sizeof(z), sizeof(y), sizeof(z+y));<br />

printf("\n%d x=%d", sizeof(x), x);<br />

getch();<br />

return 0;<br />

}<br />

miviRebT Sedegs: 8 4 8<br />

1 x=-30<br />

araswori Sedegi gamoiwvia double tipis z+y-is mniSvnelobis avtomaturma<br />

gardaqmnam char tipze (x-is tipze).<br />

tipebis cxadi gardaqmna<br />

C-Si SeiZleba gamoviyenoT tipis cxadi gardaqmna. vTqvaT, mocemulia<br />

aRwera int x=25, y=8; da gamosaTvlelia x/y gamosaxuleba. radganac orive<br />

operandi int tipisaa, / operaciis Sedegad Sesruldeba mTelad gayofa, anu<br />

x/y => 25/8=3. Tu ki igive x da y-sTvis gvWirdeba Cveulebrivi gayofis Sedegi,<br />

unda davweroT (float)x/y. am dros x, romelsac win mrgval frCxilebSi miwerili<br />

aqvs (float) daiyvaneba float tipze da Sesrulebuli gayofis Sedegi iqneba 3.125000.<br />

C-enis am saSualebas ewodeba cxadi gardaqmna.<br />

17

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!