temelcbolum1

download temelcbolum1

of 20

Transcript of temelcbolum1

  • 8/8/2019 temelcbolum1

    1/20

    C Programlama

    Diline Giri 11.1 Giri1.2 Editrler1.3 C Karakter Seti1.4 C Programnn Genel Yaps

    1.1 GiriC Dnyasna ho geldiniz!

    C, bugn kullandmz birok yazlm teknolojisinin temelini oluturan gl birprogramlama dilidir. Bu kitap ile C Dnyasn birlikte kefedeceiz. Kitap, dahance programlama deneyimi olmayan okuyucular dnlerek hazrland.Deneyimi olmayan okuyucular, basit anlatml ve bol rnekli konular ile C dilinien batan renirken daha deneyimli programclar blm iinde ve sonunda yeralan programlama sorular ile yakndan ilgileneceklerdir.

    Neden C?

    te neden Csorusuna cevap olabilecek birka madde:

    C dili, ona harcadnz her trl emee deecek kadar gzel ve gl birdildir.

    C dili bir klsiktir. Bugn kullandmz birok teknoloji dorudan ya dadolayl olarak C temellidir. zellikle iletim sistemi, src ve derleyicigibi sistem yazlmlar iin C(ve C++) dili vazgeilmezdir.

    Gnmzde kullandmz birok popler programlama dili ve internetzerinde kullanlan betik dillerin(scriptler) szdizilimi(syntax) Ctemellidir. Dier bir deile C renmekle dolayl olarak u dillerin

  • 8/8/2019 temelcbolum1

    2/20

    C Programlama Diline Giri12szdizilimlerini de byk lde renmi olursunuz: C++, C#, Java,Javascript, PHP, ASP(Javascript ile)... Bu liste daha da uzatlabilir.

    C dili ile programlann temellerini ok iyi renebilirsiniz. Programlamademek, sadece bir dilin yazmn, nasl kullanld bilmek demek deildir.Bunun yan sra, bir problem karsnda nasl dnmemiz gerektii, netr bir algoritma seilmesi gerektii, algoritmann uygulanmas, klsiksorunlar karsnda nasl davranlmas gerektii gibi konular da vardr.te C dili tm bu temelleri kavramanz mmkndr.

    C renmekle, C++ renmek iin ok gzel ve ok byk bir admatm oluruz. Zaten C++ renmek iin de nce Cyi renmi olmanzgerekecektir.

    C dilini rendikten sonra dier dilleri kavramanz daha kolay olacaktr.Bir alandaki bilginiz artt

    kca, o alandaki dier konular

    renme h

    z

    n

    z

    nda arttn unutmayn. rnein C bilen birinin Visual Basic renmesi ileC bilmeyen birinin Visual Basic renmesi arasnda ok fark vardr.

    ANSI C ve Turbo C

    ANSI C, 1970li yllarda gelitirilmi olan CninANSIisimli bir enstit tarafndanstandartlatrlm halidir. Turbo C ise, Borlandfirmasnn, standart ANSI Cyi dekapsayacak ekilde Cyi gelitirerek hazrlad daha geni bir C trdr. Bizimbu kitapta gelitirdiimiz programlar her iki tr iin de geerli olacaktr. zelolarak Turbo C derleyicisinin kullanlmasn gerektiren blmlerde bu durumayrca belirtilmitir. rnein standart ANSI C herhangi bir grafik fonksiyonuiermedii iin, kitabmzn Grafikler blmndeki almalar iin Turbo Cderleyicisine ihtiyacnz olacaktr. Bunun dnda okullarmzda da arlkl olarakTurbo C kullanld iin bu blmde C gelitirme ortam olarak Turbo C editrninceleyeceiz.

    zetle kitap boyunca, aksi zel olarak belirtilmedii srece tm programlar hemANSI C derleyicisi ile hem de Turbo C derleyicisi ile alacaktr. Bu durumunistisnas, Grafiklerblmnde olduu gibi blm banda ayrca belirtilecektr.

    Programlama Nedir?

    Programlama ok geni kavramdr. amar makinemizi renklileri farkl, beyazlarfark scaklkta ykamak iin programlarz. Mikrodalga frnmz da 10 dakikasonra kendiliinden durmas iin programlayabiliriz. Hatta bizi sabah 6dauyandrmas iin kurduumuz alar saatimizi bile programlamsaylrz. Elbette

    C dili ile programlama bu kadar basit deil. Yinede, temelde ayn ii yaptmzsyleyebiliriz!

    Programlama, bir problemi zmek adna, bir mekanizmaya gerekli verilerigirerek bu verileri isteimiz dorultusunda ileme almasdr. Bu mekanizma,bu kitap iin bir bilgisayardr. Verileri ileme iini yapan ise C diliolacaktr. Sonuolarak, C programlama dili ile bilgisayarmz programlayacaz. Programagireceimiz veriler kimi zaman klvyeden, kimi zaman da program n iinden

  • 8/8/2019 temelcbolum1

    3/20

    C Programlama Diline Giri 13salanacaktr. Programlama sreci, program yazma amacnn tanmlanmasndanprogramn altrlacak duruma getirilmesine kadar geen sretir. Bu sretemel olarak alt admdan oluur. Salkl bir programlama u admlariermelidir:

    1. Problemin tanmlanmas(Defination).2. Gerekli analizlerin yaplmas(Analysis).3. Programn tasarlanmas(Design).4. Programn Kodlamas(Coding).5. Programn deerlendirilmesi ve test edilmesi (Debugging & Testing).6. Gerekli dkmantasyonun yaplmas(Documentation).

    Bilgisayarlar

    Bizim amzdan bir bilgisayar, mantksal kararlar alarak basit aritmetik ilemleryapan bir makinedir. Tabii bu ilemleri ok byk bir hzla yapar. Bir saniyeierisinde milyonlarca, hatta milyarlarca ilemi yapabildiinizi ve bu milyarlarcasonucu beyninizde saklayabildiinizi dnn, stelik hibir hataya yervermeden(bunlar yapabilseydik bilgisayarlara pek az iimiz derdi!).

    Bilgisayarlar trnden ve tipinden bamsz olarak iki ksmda incelemekmmkndr: Yazlm(software) ve donanm (hardware).

    Yazlm, bilgisayar zerinde alan her trl programa verilen genel isimdir. Birbilgisayarn zerinde kurulu bir yazlm olmadan bir i yapabilmesi dnlemez.Bilgisayarlarn biraz nce bahsettiimiz sperzelliklerini kullanabilmek iin bir

    yazlma ihtiyalar vardr. Donanm ise bilgisayarlarn fiziksel paralarna verilengenel isimdir. rnein bilgisayarnzn monitr veya ses kart birer donanmparasdr.

    Bir bilgisayarn donanmn kendi iinde mantksal blmlere ayrabiliriz. Bunlar:

    1. Giri niteleri (Input Units):sminden de anlalabilecei gibi, bilgisayarmza veri giriinisalayan blmlerdir. En nemli giri nitesi (evet doru tahmin)klvyedir. Dier giri niteleri ise fare(mouse) ve tarayclar(scanner) olarak verilebilir.

    2. k niteleri (Output Units):Benzer ekilde, bilgisayarmzdan veri k yaptmz blmlerdir.

    rnein monitr ve portlar.3. Bellek niteleri (Memory Units - Primary Data Storage Units):Bellekler, verilerin geici olarak sakland(deponland) vebilgisayarn ak olduu srede belli kaynaklara hzl eriim salayanblmlerdir. rnein ok sk kullanlan belgeler gerektiinde hzl birekilde arlabilmek iin bellekte bekletilir. Bellekteki bilgilerbilgisayar kapatldnda kaybolur. Kalc olmasn istediimiz bilgileridisketlere kaydederiz. Ayrca belleklerin geici olarak saklayabileceiveri miktar da hard disklere gre ok azdr.

  • 8/8/2019 temelcbolum1

    4/20

    C Programlama Diline Giri14

    4. Matematiksel ve Mantksal Hesap nitesi (Aritmetic & Logic Unit -ALU):Basit matematik ve mantksal hesaplamalarn yapld birimburasdr. Gerekli toplama - karma ilemleri, mantksalkarlatrma ilemleri bu blmde yaplr.

    5. Merkezi lem nitesi, lemci(Central Processing Unit - CPU):lemciler, bilgisayarlarn beynidir. En nemli mantksal blmburasdr. lemciler, bilgisayarn dier blmleri arasndakikoordinasyonu salar. Bir bilgisayarn kalitesi de byk ldeilemcisinin tr ile belirlenir.

    6. Disketler ve Harddiskler (Secondary Data Storage Units):Bellekler veri saklamak iin ilk tercih edilen blmlerdir demitik.Bunun sebebi, bellee ulama hznn bir harddiskteki veriye ulamahzndan ok daha yksek olmasdr. Ancak ne yazk ki bellekler,harddiskler kadar geni deildir ve harddiskler gibi bilgisayarkapandktan sonra bilgiyi saklamalar da mmkn deildir. Budurumda verilerimizi uzun sre saklayabilmek iin harddisklerikullanrz. Gnmzde kiisel ev bilgisayarlarnda bile 60 - 70 GBlkharddiskler bulmak mmkndr.

    ekil 1.1 Bilgisayar donanmnn mantksal blmleri

  • 8/8/2019 temelcbolum1

    5/20

    C Programlama Diline Giri 15Bilgisayarlarn alfabesi:

    Bizler iletiim kurmak iin yirmi dokuz harf ve on rakamdan oluan bir sistemkullanrz. Tm szl iletiimimiz bu karakterlerin eitli varyasyonlardaoluturduu formlarla olur. Yani harfler kelimeleri, kelimeler de cmlelerioluturur. Ne kadar uzun ve karmak cmleler kurarsak kuralm, sonutaelimizdeki yirmi dokuz harfi kullanrz. Bu yirmi dokuz harf bizim alfabemizdir.Bilgisayarlar da benzer ekilde kendi alfabelerini kullanrlar. Bilgisayarlarnkulland alfabeye, makine dili(machine language) ad verilir. Ancak onlarnalfabeleri bizimki kadar byk deildir. Bilgisayarlar, her trl ilem iin sadece2 karakterden oluan bir alfabe kullanrlar. Bu alfabenin karakterleri bir(1) ve

    sfrdr(0)1

    . Bir bilgisayar iin, bundan daha fazlas yoktur. Sadece bu bir vesfrlar eitli ekillerde biraraya gelerek (rnein, 11001010 eklinde) tm buteknolojileri oluturur. te bu bir ve sfrlar eitli ekillerde biraraya getirmeilemine programclk diyoruz.

    imdi sormamz gereken soru u olmaldr: Eer bilgisayarlar bir ve sfrdanbaka bir sistemden anlamyorsa, nasl oluyor da bizler C gibi bir programla diliile bilgisayarlar programlayabiliyoruz? Sorumuzun cevab yle: Bizler, C veyabenzeri diller ile kendi anlayacamz biimde programlar yazarz. Daha sonra buyazdklarmz, zel birtakm programlarla bilgisayarn anlayabilecei dile evrilir.rnein, biz C dili ile on saysn kullanmak istediimizde, bu say makinediline 00001101 eklinde evrilir. Dier tm karakterler iin de ayn eygeerlidir.

    Programlama Dilleri ve Seviyeleri

    Programlama dillerini ok deiik ekillerde snflandrabiliriz. Ancak biz bir Cprogramcsyz ve bizim iin nemli olan programlama dillerinin seviyelerine gresnflandrlmasdr. Programlama dillerini seviyelerine gre ksma ayrabiliriz:

    Dk seviyeli diller (Makine dili, Assembly dili) Orta seviyeli diller (C) Yksek seviyeli diller (Pascal, Visual Basic, MS Access)

    Her eyden nce seviye kavramna bir aklk getirelim. Bir programlama dilininseviyesi, o programlama dilinin ne kadar iyibir programlama dili olduunun birgstergesi deildir. Bir dilin seviyesi, o dilin makine diline olan yaknlnn birlsdr. Bir dil, makine dilinden ne kadar uzaksa o kadar yksek seviyelibirdildir. Makine diline ne kadar yaknsa o kadar dk seviyelibir dildir. rnein C

    1 Birler(1) ve sfrlar(0), bitolarak adlandrlr. Bu durumda, bilgisayarlar 2 ayr bittenoluan bir sistem kullanr diyebiliriz. Bu sisteme makine dili(machine language) denir.Makine dilinde, bitlerden birin(1) elektronik karl +5 Volt, sfrn(0) karl ise0(sfr) volttur. Dier bir deile, bilgisayar +5 Volt u bir, 0(sfr) voltu ise sfr olarakalglar. Bu iki deer dnda (2 volt, 10 volt vs.) herhangi bir deeri kullanmaz.

  • 8/8/2019 temelcbolum1

    6/20

    C Programlama Diline Giri16

    ile Visual Basic dilini ele alalm. C dili, Visual Basic diline gre daha dkseviyeli bir dildir nk yaps makine diline daha yakndr. Genel olarak, bir dilmakine diline ne kadar yaknsa, ilevsellii o kadar artar diyebiliriz. Dier birdeile makine diline yakn diller programcya bilgisayar zerinde daha fazlakontrol salar. Bu da o dil ile daha detayl iler yaplabilecei anlamna gelir. Burnee gre C dili, Visual Basic diline gre bize daha fazla kontrol salar. Dahafazla kontrolden ne kastettiimizi basit bir rnekle aklayalm. rnein, C dili,programcsna bilgisayarn dorudan belleine ulamak iin gstericiler(pointers)ad verilen bir imkan sunar. Visual Basic iin bu tr bir ey sz konusu deildir.Bu durumda, bir C programcs, bir Visual Basic programcsna gre sistemzerinde daha ok sze sahip olacaktr ve daha ince iler yapabilecektir. Ancaktm bunlardan Cnin Visual Basicten daha iyi bir dil olduu karlmamaldr.Programlama dilleri farkl amalar iin gelitirildikleri iin iyi ve kt gibikavramlarla deerlendirilemezler. Yukardaki rnee geri dnersek, C diliprogramcsna Visual Basic programcsna oranla daha ok kontrol salayabilir.Ancak bir Visual Basic programcsnn birka saatte yazaca bir veritabanuygulamas bir C programcsnn gnlerini alabilir. Grdnz gibi programlamadilleri farkl amalar iin gelitirilmitir ve bu yzden dorudan dz bir mantklakarlatrlmalar doru deildir.

    Seviye kavramn akladktan sonra bu seviyeleri ksaca inceleyelim:

    1. Dk Seviyeli Diller:Makine diline yakn olan dillere dk seviyeli dil adn verdiimizisyledik. Bu durumda, en dk seviyeli dil, makine dilinin kendisi olur.

    Makine dilinde, daha nce de belirttiimiz gibi sadece birler ve sfrlardanoluan bir say sistemi kullanlr. Bu sistem, bilgisayarn kendi alfabesidirve bilgisayarn anlayabildii tek dildir. Ancak biz insanlar iin ayn eygeerli deil. Bizler iin sadece birler ve sfrlardan oluan bir dilleprogram yazmak kolay deildir. Yazabildiimizi bile dnsek, sadece ikisayy toplatmak iin bile ok sre harcamamz gerekirdi. stelik bukadar basit bir i iin bile ok zorlanrdk. Bu sebeple Assembly Dili(assembly language) ad altnda, makine dilinden daha yksek seviyeli,bizim kolaylkla anlayabileceimiz, ingilizce terimlerden oluan bir dilgelitirildi. Aada bu dile ait, Linux iin yazlm ufak bir program

    grlyor. Bu program2 ekranda Merhaba!!ifadesini grntleyecektir.

    2 Kaynak: http://linuxassembly.org/intro/hello.html

  • 8/8/2019 temelcbolum1

    7/20

    C Programlama Diline Giri 17section .text

    global _start ; linker (ld)

    msg db 'Merhaba!!',0xalen equ $ - msg

    _start:

    mov edx,lenmov ecx,msgmov ebx,1mov eax,4int 0x80mov eax,1int 0x80

    Ksa programdan anlald gibi Assembly, makine diline gre dahaanlalr bir yapdadr. Biz programlarmz Assembly ile yazar, dahasonra bu kodlar zel programlar3 ile bilgisayarn anlayp altrabileceiekilde makine diline evirebiliriz.

    2. Orta Seviyeli DillerMakine dili ile almann zorluundan dolay Assembly diliningelitirildiini syledik. Ancak bu gelimeden ksa bir sre sonra,bilgisayarlarn kullanm arttka, insanlar Assembly dilinin de program

    gelitirmek iin ok yava ve zor olduunun fark

    na vararak, dahayksek seviyeli dillere ihtiya duydular. Bylece orta seviyeli dillergndeme geldi. Orta seviyeli dillere en gzel rnek elbette C dilidir.Aada C diline ait basit bir program grlyor:

    #include

    main() {printf(merhaba, ben kucuk bir C programiyim!\n);printf(ustelik bu kitapta geen ilk C kodu benim!\n);

    }

    Assembly dilinden ok daha anlalr deil mi? Orta seviyeli bir baka dil

    olan ADA diline ait benzer bir program da aa

    da grlyor:with Text_To; use Text_Toprocedure merhaba is

    beginput("merhaba, ben bir ADA programiyim!");

    end merhaba

    3 Bu programlaraAssemblerad verilir.

  • 8/8/2019 temelcbolum1

    8/20

    C Programlama Diline Giri18Farkedeceiniz gibi orta seviyeli bir dil, dk seviyeli bir dile gre okdaha anlalr ve daha ksadr.

    3. Yksek Seviyeli DillerOrta seviyeli diller hzl ve etkili program yazabilmek iin gayet yeterliolmasna ramen, gelien yazlm endstrisi son yllarda daha da yksekseviyeli dillere ihtiya duymutur. Windows 3.1 ve Windows 95 ile birliktegrafiksel arabirimli programlar ok popler olmaya balamtr. Bu da okyksek seviyeli dillerin ortaya kmasn salamtr. Yksek seviyeli dillerinortaya kmasnn bir dier sebebi de programlama dillerinin profesyonelprogramclarn dnda, bu ilerle amatrce ilgilenmek isteyen insanlara dasunma gereksinimidir. rnek olarak, ok yksek seviyeli bir dil olan VisualBasici ele alalm. Bu program ile gzel arabirimi olan programlar ok hzlbir ekilde gelitirmek kolaydr4. stelik bunun iin programlama konusundauzman olmanza da gerek yoktur. Pekal amatrce de olsa, birok iyaplabilir.

    te daha hzl uygulama gelitirme gereksinimi, kullanclarn grafikselarabirimlere almaya balamas ve bu tr programlara olan talebi,programlama dillerini konunun uzman olmayan insanlara da sunma istei,yksek seviyeli dillerin ortaya kmasn salamtr.

    Belki C dilini gelitirirken kimsenin aklnda biz bu dili gelitirelim de insanlarbilgisayarlarnda kendi adres defterlerini yazsn diye bir dnce yoktu.

    Ancak yksek seviyeli dillerin ortaya kma sebeplerinin arasnda bu dncede vard.

    C Dilinin Tarihi

    C dili, 1970li yllarn banda Amerikada, Bell laboratuarlarnda (Bell Labs)Dennis Ritchie tarafndan gelitirilmitir.

    C programlama dilinin douu, Unixin douu ile paralellik gsterir. C, Unixsistemlerinin gelitirilmesinden sonra bu sistemlerde programlama yapmakamacyla 1969 - 1973 yllar arasnda gelitirilmitir. C, en hzl geliimini 1972ylnda yaad iin, dilin doum yl birok yaynda 1972 olarak geer. Unixsistemlerinin gelimesi ile birlikte, C dili de 1977 - 1979 yllar arasnda ikinci birdeiime uram ve en son 1980li yllarn ortasnda ANSI(The AmericanNational Standards Institue) isimli organizasyonun dili standartlatrmas ilebugnk eklini almtr.

    C dilinden nce, yine Unix sistemlerini programlama amacyla kullanlan BCPL veB dilleri vard. Bu diller, C dilinin gelitirildii laboratuarlarda Martin Richards ve

    4 Visual Basic birHzl Uygulama Gelitirme (Rapid Application Development - RAD)dilidir. Hzl uygulama gelitirmek Visual Basicin asli iidir.

  • 8/8/2019 temelcbolum1

    9/20

    C Programlama Diline Giri 19Ken Thompson tarafndan 1960l yllarn sonlarna doru gelitirilmiti. Ancak birsre sonra bu diller yetersiz kald ve bylece C dili dodu. Ksa srede bykgelimeler gsteren C dili, 1980li yllarda standartlatktan sonra tm dnyadabyk ilgi grd. C dili balarda tamamen Unix sistemler iin gelitirilmiolmasna ramen, bugn her trl sistem iin hazrlanm olanderleyiciler(compilers) sayesinde gnmzde tm sistemlerde alabilecekduruma gelmitir. Cnin bu derece ilgi grmesinde, dil hakknda Dennis Ritchieve Brian Kernighann 1978 ylnda birlikte yazd C Programming Language5(C Programlama Dili) isimli kitabn da etkisi byktr. Bu kitap, dil ANSItarafndan standartlatrlana kadar tek referans kayna olarak kullanlmtr.

    Dennis Ritchie 6, [email protected]

    ekil 1.2 C Dilinin gelitiricisi Dennis Ritchie

    1.2

    EditrlerEditr, kodlarmz yazmak iin kullandmz programlara verdiimiz genelisimdir. Gerekte editrler bize kodlarmz yazmaktan daha geni imkanlarsunar. Bir editr ile kodlarmz yazarz, editrn sunduu imkanlar erevesindebu kodlar dzenleriz, kaydederiz, derleriz7 ve altrarak hatalarn ayklarz.Genel olarak editrlerin amac, bize daha hzl, etkili ve gvenlikod yazmamzsalamaktr. Bu amalar dnda editr kullanmak gibi bir zorunluluumuzyoktur. Pekal Windowsun Notepadveya Unixin viprogram ile de C kodlarmzyazabilir, sonra da ayr bir derleyici ile derleyerek altrabiliriz.

    5Bu kitab internette bularak inceleyebilirsiniz.

    6 Dennis Ritchienin resmi web sitesi: http://www.cs.bell-labs.com/who/dmr/7

    Derleyici genel olarak yazdmz kodlar altrlabilmesi iin makine diline evirenprogramlardr. Editrler ile derleyicileri birbirine kartrmaynz. Editrler daha hzl kodyazmamz salayan ortamlardr. Notepad ve Microsoft Word dahil, yaz yazabildiimiz herprogram ile C kodlarmz yazabiliriz. Derleyiciler ise programlarmz derlemek iinkullandmz baka programlardr. Baz istisnalar dnda her C program derlenir.Editrler, daha hzl ve etkili kod yazmamz salamak amacyla kendi ilerinde birderleyici bulundururlar. Yani programlarmzaltran editrlerin yapt i de kendiilerinde yine programmz derleyerek sonucu bize iletmektir. Tm bu anlattklarmzlailgili rnekleri bu blmde yapacaz.

  • 8/8/2019 temelcbolum1

    10/20

    C Programlama Diline Giri20Editrler ok deiik ekillerde olabilir. Tm programlama dilleri iin birokdeiik editr bulmak mmkndr. rnein internette, sadece C dili iingelitirilmi birok editr ve derleyici bulabilirsiniz. Aadaki ekilde Borlandfirmasnn gelitirdii Turbo C editr grlyor:

    ekil 1.3 Borland Turbo C Editr

    Aadaki ekilde de Microsoft firmasnn benzer bir editr grlyor:

    ekil 1.4 Microsoftun gemi yllarda gelitirdii C editr

    Blm banda da belirttiimiz gibi bu blmde Borland firmasnn Turbo Ceditrn kullanmay greceiz. Ancak kitap ierisindeki programlarmz hem

  • 8/8/2019 temelcbolum1

    11/20

    C Programlama Diline Giri 21Turbo Cde, hem de ANSI Cde alabilecek ekilde gelitireceiz. imdieditrmz incelemeye balayalm.

    Turbo C Editr

    Turbo C editr amak iin tc.exe dosyasn altrmanz yeterlidir. Bu dosyayaltrdnzda karmza kodlarmz yazmak iin geni bir alan ve bu kodlarzerinde birok ii yapabilmemizi salayan menlerin yer ald Turbo C editrgelecektir(ekil 1.2). Editrde grlen geni bo alan, programlarmz yazmakiin kullanacamz ksmdr. Program kodlar bu alan zerine yazlr. Daha sonraeditrn ba tarafnda bulunan menleri kullanarak program kodlar zerindeeitli ilemler yaparz.

    ekil 1.5Turbo C editr

    Henz bir C program yazmak iin deyim bilmiyoruz ancak yine de editrn nas lkullanlacan grmek iin imdi ok basit rnek bir program yazacaz.

    Men ubuu

    Programnyazlaca genialan, kodpenceresi

    Durum ubuuve ksayollar

  • 8/8/2019 temelcbolum1

    12/20

    C Programlama Diline Giri22Programn ismi merhaba.c olacak ve program ekrana merhaba, ben bir C

    programiyim!! ifadesini yazdracak. Aada, ilk C programmz8 grlyor:

    Program 1.1

    1 // merhaba.c2 // 25.02.200334 #include 56 int main() {7 printf("merhaba, ben bir C programiyim!!");8 return 0;9 }

    rnek Program 1.1: lk C programmz, merhaba.c

    Programn Yazm(Edit)

    imdi, bu program Turbo C editr ile nasl yazp altrabileceimizi greceiz.lk i olarak Turbo C editrn aalm ve ilk programmzn kodlarn editreyazalm. Kodlar editre yazmak iin, fare ile kod penceresini seiniz ve alkolduunuz biimde klvye ile rnek Program 1.1de grlen kodlar editreyaznz. Yazma ilemi bittiinde aadaki grnty elde etmi olmalsnz:

    ekil 1.6 Programn editre yazm

    8 Kodlarn sol tarafndaki 1den 9a kadar olan rakamlarn programmzla bir ilgisi yoktur.Bu saylar kitapta programlarmz daha iyi anlatabilmek iin kullanacaz. Bu saylarprograma dahil deildir.

  • 8/8/2019 temelcbolum1

    13/20

    C Programlama Diline Giri 23imdi, nce programmz kaydedelim(save) daha sonra da derleyerekaltralm.

    Programn Kaydedilmesi(Save)

    Turbo Cde program kaydetmek normal bir metin editrnde yazdklarmzkaydetmekten daha farkl deildir. Turbo Cde program kaydetmek iin Filemensnden Save komutu seilir:

    ekil 1.7Programn kaydedilmesi

    Save komutu seildiinde, alan pencereye program iin bir isim vererek OKbutonu tklanr ve bylece program kaydedilmi olur. Siz de programnzamerhaba.c ismini vererek kaydediniz. Daha sonra bu program editrde amakiin yine File mensnde bulunan Open komutu kullanlr(ekil 1.7). Mendeyer alan New komutu ile yeni bir kod penceresi oluturabilirsiniz. Son menkomutu olan Quit komutu ise Turbo C editrn kapatarak iletim sistemine geridnmek iin kullanlr.

    Programmz kaydettiimize gre artk kodlarmz derleyerek altrabiliriz.

    Programn Derlenmesi(Compile)

    Yazdmz programlar derlemek iin Compile mensnden Compile komutunukullanrz. imdi merhaba.c isimli programmz derlemek iin menden Compilekomutunu seelim:

  • 8/8/2019 temelcbolum1

    14/20

    C Programlama Diline Giri24

    ekil 1.8 Programn derlenmesi

    Program derlediimizde, program kodlarnn baaryla derlendiini belirten birpencere grntlenecektir:

    ekil 1.9 Derleme ileminin sonucu

    Bu pencere zerinde derleme ilemine ilikin eitli bilgiler bulunur. Son satrdayazan Success ifadesi, programn baaryla derlendiini belirtir.

    Derleme ilemini de tamamladmza gre, artk programmz altrabiliriz.

    Programn altrlmas(Run)

    Program altrmak iin editrn Run mensnden Run komutunu kullanrz.Run komutu ile birlikte, editre yazdmz c uzantl dosya, altrlabilir exeuzantl dosya haline getirilir. imdi Run mensnden Run komutunu seerekprogram altrnz:

  • 8/8/2019 temelcbolum1

    15/20

    C Programlama Diline Giri 25

    ekil 1.10 Program altryoruz

    Run komutundan sonra artk hem exe uzantl dosyamz olumu olacaktr, hem

    de programmz altrlm olacaktr. Programn exe uzantlmerhaba.exe isimli

    dosyasn, program kaydetmi olduunuz dizin ierisinde bulabilirsiniz.

    Bu noktada hatrlatmak istediimiz bir nokta var. Derleme ilemi, editre

    yazdmz program kodlarnn makina koduna evirme ilemidir. Run komutu ise

    ise derlenmi bu kodlar gerekli dier dosyalar ile balayarak exe uzantl

    dosyay oluturur. Eer program derlenmeden Run komutu altrrsa, program

    nce derlenecek, daha sonra da exe uzantl altrlabilir dosya oluturulacaktr.

    Buna gre programlarmz yazdmzda Compile komutunu kullanmadan

    dorudan Run komutu ile programlarmz altrabiliriz.

    imdi altrdmz programn ekran ktsn grelim.

    Programn Ekran ktsn Grntlemek

    Programn ekran ktsn grmek iin Windows mensnden Output komutunu

    semeniz yeterli olacaktr:

  • 8/8/2019 temelcbolum1

    16/20

    C Programlama Diline Giri26

    ekil 1.11 Programn ekran kts, Output penceresi

    Artk Turbo Cde bir program yazarak altrmay biliyoruz. Kitap boyuncayazacamz dier programlarn altrlmas da farkl olmayacaktr. Artk Cdekullanlan karakter setlerine geebiliriz.

    1.3 C Karakter SetiHer programlama dilinin kendine zel bir takm karakterleri vardr. Bukarakterler ve ne anlama geldikleri nceden tanmlanmtr. rnein *(yldz)karakteri Basic dillerinde sadece arpma anlamna gelirken Cde arpmaileminin yansra ok daha farkl anlamlara da gelir. Bu rnek dier karakterleriin de geerli olabilir. rnein ^ iareti yine Basic dillerinde s alma anlamnagelirken C iin bu karakterin byle bir anlam yoktur.

    nce Cde kullanlan karakterleri grelim daha sonra bu karakterleri ne ekildesnflandrabileceimizi inceleyelim. Aadaki tablolarda Cde kullanlabilecekkarakterler gsterilmektedir:

    Rakamlar(Digits)

    0 1 2 3 4 5 6 7 8 9

    Tablo 1.1 C karakter seti: Rakamlar

    Kk Alfabetik Karakterler (Low Case Letters)

    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

    Tablo 1.2 C karakter seti: Kk alfabetik karakterler

  • 8/8/2019 temelcbolum1

    17/20

    C Programlama Diline Giri 27Byk Alfabetik Karakterler (Upper Case Letters)

    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

    Tablo 1.3 C karakter seti: Byk alfabetik karakterler

    zel Karakterler(Special Characters)

    ! # % & $ \ + - * / = ^ < > ( ) . , ; : ? { } [ ] @ _ | ~

    Tablo 1.4 C karakter seti: zel karakterler

    Boluk Karakterleri (Whitespaces)9

    \n \t \v \r

    Tablo 1.5C karakter seti: Boluk karakterleri

    ekil 1.12 Cde kullanlan karakterler

    Bu karakterlerin tmne ait saysal karlklar kitabnzn ekler blmndekiASCII tablosundan grebilirsiniz.

    1.4 C Programnn Genel YapsBu blmde yer alan rnek Program 1.1 ile ilk C program

    m

    z

    grdk. imdibu program satr satr inceleyerek bir C programnn genel yapsn greceiz.imdi program tekrar hatrlayalm:

    9Whitespacein tam Trke karl beyaz boluk tur. Etkisiz boluklar anlamna

    gelir. Yani bu boluklarn kullanl p kullanlmamas derleyici iin farketmez. Ancak bizprogramclar iin ayney geerli deildir. Bizim iin bu boluk karakterleri ok enmlidir.Boluk karakterlerini programn okunabilirliini artrmak iin kullanrz.

    Rakamlar(nmerikkarakterler)

    Alfabetik karakterler(kk ve byk harfler)

    zel karakterler veWhitespaceler

    Cde kullanlan karakterler

  • 8/8/2019 temelcbolum1

    18/20

    C Programlama Diline Giri281 // merhaba.c2 // 25.02.200334 #include 56 int main() {7 printf("merhaba, ben bir C programiyim!!");8 return 0;9 }

    Grdnz gibi programmz dokuz satrdan oluuyor. ncelikle programmznyaptn ii hatrlayalm: Programmz, ekrana merhaba, ben bir C programiyim!!

    ifadesini yaz

    yor. imdilik yapabildii tek i bu.

    imdi satr satr programmz inceleyelim. Burada kodlarmz hakknda detaylbir aklama yapmayacaz. Sadece ksa aklamalar ile yetineceiz.

    lk iki satrdan balayalm:

    1 // ilk C programimiz2 // 25.02.2003

    Bu satrlarda grlen kodlar programmza ait yorumlardr(comments). Cde birprogram altrlrken, // karakterleri ile balayan satrlar atlanr, altrlmaz.// karakterleri ile balayan satrlar yorum satrlardr. Bu satrlarda programaait aklamalar bulunur. Buna gre bizim rneimizde // ilk C programimiz

    ve // 25.02.2003 satrlar birer yorum satrdr ve grevleri program hakkndabilgi vermektir.

    Yorumlar genellikle belli kod paralarnn ne i yaptn aklamak amac ilekullanlr. rnein bir kod parasnn ba tarafna o kodlarn ne i yaptnyorumlarla belirtiriz:

    // bu satirdaki kodlar verilen saynn kp kkn bulur

    Bir dier rnek:

    // bu satr, verilen bir ifadenin tersini ekrana yazar

    Cde birden fazla satr yorum olarak belirtmek iin /* ve */ karakterlerikullanlr. /* karakterleri yorumun balad yeri, */ karakterleri ise yorumunbittii yeri belirtir:

    /*bu kisimuc satirlikbir yorum icerir

    */

  • 8/8/2019 temelcbolum1

    19/20

    C Programlama Diline Giri 29zetle tek bir satr yorum iin // karakterleri, birden fazla yorum satr iin/* ve */ karakterleri kullanlr.

    Yorumlar, programlarn olmazsa olmaz paralardr. Programclar tarafndangenelde gzard edilsede yorumlar bir programn anlalabilmes ve ilerdezerinde deiiklik yaplabilmesi iin ok nemlidir. Yorum satrlar eklenmemibir program zerinde sonradan deiiklik yapmak ok zordur. Kodlar kendimizbile yazm olsak, hangi satrn ne i yaptn ok abuk unuturuz. Bu yzdenprogramlarmzda mutlaka yorum yazmalyz.

    34 #include

    Programmzn 3. satrnda herhangi bir kod grnmyor. Bu satr,programmzn okunabilirliini(readability) artrmak iin bilinli olarak bobraktk. Bir programn okunabilirlii, o programn yazar veya bakaprogramclar tarafndan ne kadar kolay anlalabildiinin bir lsdr. Birprogramn okunabilirlii ne kadar yksekse o kadar iyidir. Bu yzden, programnokunabilirliini artrmak iin eitli yntemlere bavururuz. Bunlardan biride,gerekli yerlerde bir satr boluk brakmaktr. Braktmz bu boluklarnprogrammzn performans zerinde herhangi bir etksi yoktur. Okunabilirlikkonusu ciddi bir konudur. Bu yzden kitap ierisinde bu konuya eitli ekillerdedeineceiz.

    4. satrda, stdio.h isminde bir dosyay programmza ekliyoruz(include).

    #include komutu, kendisinden sonra gelecek dosyay programa ekler. Budurumda #include satr, stdio.h adl dosyay bul ve programaekleanlamna gelir. Birtakm dosyalar neden programlarmza eklemek zorundaolduumuzu ilerde daha detayl bir ekilde aklayacaz.

    5. satr da 3. satr gibi okunabilirlii artrmak iin eklenmi bo bir satrdr.

    6 int main() {7 printf("merhaba, ben bir C programiyim!!");8 return 0;9 }

    6. satr, programmzn ilemeye balad satrdr. Her C program, mainisminde bir fonksiyon ierir. Fonksiyonlar, program ierisinde ararak

    kullandmz, belli bir ii yaparak sonucu bize geri dndren kod paralardr.main() fonksiyonu, bir programn almaya balad zel bir fonksiyondur.Bizim programmz da almaya bu 6. satrdan balayacaktr. Ayn satrdagrlen main ifadesi fonksiyonun ismidir. main ifadesinin banda yer alan intifadesi, fonksiyonun iini yaptktan sonra kendisini aran sisteme ne trbir veridndreceini gsteren bir ifadedir. Bu konuyu da ilerleyen blmlerde detaylbir ekilde inceleyeceiz. u an iin bu ifadenin anlamn bilmemiz yeterli.

  • 8/8/2019 temelcbolum1

    20/20

    C Programlama Diline Giri306. satrn sonunda grlen { karakteri, main() fonksiyonunun balangcngstermektedir. Ayn ekilde 9. satdaki } karakteri de fonksiyonun bittiinigsterir. Bu durumda fonksiyonumuz sadece 7. ve 8. satrlar ieren 2 satrlkbir fonksiyondur. 6. satrda balar, 9. satrda biter.

    Cde { ve } karakterleri arasnda kalan ksmlara blok ad verilir. Cde birokdeyim kendi blounu ierir. Kitap ierisinde ilgili blmlerde blok kullanmnatekrar dneceiz.

    6. ve 7. satrlarn sonunda grnen noktal virgl(;) karakteri sonlandrc isminitar ve Cde bir ifadenin son bulduunu belirtmek iin kullanlr.

    7. sat

    r, program

    m

    zda as

    l ii yapan sat

    rd

    r. Bu sat

    rda, printf isimli birfonksiyonu kendisine verilen deeri ekranda grntlemesi iin kullanyoruz.printf fonksiyonuna ekrana yazmas iin verdiimiz deer merhaba, ben bir Cprogramiyim!! ifadesidir. Bir fonksiyona ilemesi iin verilen ifadelere ofonksiyonun parametreleri(parameters) denir. Bu parametreler, fonksiyonisminden hemen sonra alan parantez ierisine yazlararak fonksiyonagnderilir. Bu durumda bizim printf fonksiyonuna ekrana yazmas iingnderdiimiz merhaba, ben bir C programiyim!! ifadesi, bu fonksiyonunparametresidir. printf fonksiyonu bu parametreyi alr ve kullanr, yani ekranayazar.

    8. satrda kullanlan return 0 ifadesi, main fonksiyonunun iinin bittiinigsterir ve program aknn bu fonksiyondan karak kendisini aran satrageri dnmesinisalar. Program herhangi bir yerde return ifadesini grdnde,o fonksiyondan karak fonksiyonu aran kod satrna geri dner. Bizim main()fonksiyonumuz herhangi bir kod ile arlmad iin (nk main() fonksiyonu zaten programn almaya balad yerdir) program sisteme geri dner, yanisonlanr. lerleyen blmlerde daha detayl bir ekilde greceiz, return ifadesi,kendisini aran koda bir deer dndrebilir. Bizim rneimizde bu deer,return ifadesinin yannda da grld gibi, sfrdr: return 0

    9. satr, yukarda da bahsettiimiz gibi fonksiyonumuzun sonunu belirtir.

    te programmzn tamam bu ekilde! Elbette burada anlattmz hereyi bu veilerleyen blmlerde batan, detayl bir ekilde tekrar inceleyeceiz. Buradasadece basit bir giri yapm olduk.