You are on page 1of 13

Bilgisayar Programlamaya Giri I

ST 105 DERS NOTLARI


Abdullah YALINKAYA

2012

Bilgisayar Programlamaya Giri I 2012


ST 105 Bilgisayar Programlamaya Giri Ama: 1. Bilgisayar donanm ve bilgisayar yazlmlarnn tantlmas 2. Programlama dilleri ve program gelitirme tekniklerinin tantlmas 3. Temel problem zme tekniklerinden olan yukardan aa tasarm tekniinin tantlmas ve bu teknikle algoritmalarn yazlmas. Bilgisayar Nedir? Bilgisayar, mantksal ve aritmetik ilemleri ok hzl biimde yapan bir aratr. Gnmzn bilgisayarlar, saniyede milyonlarca aritmetik ilem yapabilecek kapasitededir. lk retilen bilgisayarlar, olduka byk ve yavat. Ama gn getike kldler ve gleri de hzla artt. rnein, yirmi-otuz yl nce bir odaya sabilecek bir bilgisayarn yapt ilerden ok daha fazlasn, bugnk kiisel bilgisayarlar, daha hzl bir ekilde yapabilmektedir. Bu yzden, bilgisayarlar gnmzde ok deiik alanlarda ve ortamlarda kullanlmaktadr. Hemen-hemen her evde ve iyerinde artk bilgisayar grmek mmkndr. Bir bilgisayar sisteminin fiziksel yapsn oluturan fare, klavye, ekran, ilemci, disk, bellek gibi paralarn hepsi birden bilgisayar donanm olarak adlandrlmaktadr. Bilgisayarn almasn denetleyen birer komutlar kmesi olan programlar da bilgisayar yazlm olarak adlandrlr. Bir bilgisayar sisteminin, bu iki paraya da ihtiyac vardr. Her biri, dieri olmadan hibir ie yaramaz. Gnmzde, donanm fiyatlar hzla dmekte, ama yazlm maliyetleri tam tersine artmaktadr. Bu dersteki amacmz bilgisayar yazlm gelitirmek olduundan, biz yalnzca bilgisayar yazlm ile ilgileneceiz. Ancak ksaca bilgisayar donanmndan da sz etmek yararl olacaktr.

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


Bilgisayar Donanm Grdmz ve dokunabildiimiz btn paralar bilgisayar donanmn oluturur. Modern bir bilgisayar donanm, aadaki be ana paradan oluur.

CPU (Central Processing Unit - Merkezi lem Birimi): Bu birim, bilgisayarn almasn dzenleyen ve programlardaki komutlar tek tek ileyen birimdir. lem hzna gre eitli modelleri vardr. rnein, Pentium ilemci, 486 ilemci ya da Sparc ilemci dediimizde, bilgisayarn Merkezi lem Birimi (MB - lemci) anlalmaldr. RAM (Random Access Memory Rastgele Eriimli Bellek veya Ana Bellek): RAM, bir giri cihazndan veya bir ikincil depolama cihazndan okunan veri ve programlarn, altrlan programlardan elde edilen sonularn ve bir ikincil depolama cihazna veya bir k cihazna gnderilmeye hazr olan ktlarn tutulduu yerdir. Ksaca, programlarn ve verilerin kullanld zaman depoland yerdir. MB ilemlerini, ana bellekte saklanan bu verilere ulaarak yapar. Buradaki rastgele eriim ifadesi bilgisayarn bellek ierisindeki herhangi bir adrese dorudan gidip bilgileri okuyabilecei veya yazabilecei anlamnda kullanlmaktadr. Ana bellekte veriler geici olarak tutulur; baka bir deyile bilgisayar kapatldnda bu veriler silinir. ok kullancl sistemlerde bilgisayar bir kullanc iin herhangi bir ii yapmay bitirdiinde, ana bellekteki ayn ksma dier kullanclar iin ilenmesi gereken veri ve programlar yerleir. Ana bellek dier bilgi saklama aralarna oranla biraz daha pahaldr. Ana bellein temel grevleri yle zetlenebilir. 1. Hali hazrda alan programlarn program deyimleri ve bu programlarn ihtiya duyduu verileri tutmak. 2. letim sistemi yklendikten sonra ana bellekte srekli olarak kalmas gereken iletim sistemi bileenlerini tutmak.

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012

3. Programlar tarafndan retilen sonular tutmak. 4. Sabit disklere veya harici bir cihaza gnderilmeye hazr olan k bilgilerini tutmak. Bellekte yerleik olan veri ve programlara ihtiya halinde tekrar ulaabilmek iin ana bellekteki her blgenin bir adresi vardr. Ana bellein bykl; ayn anda alabilecek program saysn ve programlarn alma hzn etkiler. D Bellek Birimleri (Secondary Memory Devices): Ana bellekteki bilgiler (elektrik gcne bal olarak), geici sre saklanabildii iin, uzun sre kalc olarak saklamak istediimiz bilgileri d bellek birimlerinde depolarz. Bu aralardan bazlar: CD (Compact Disc Youn Disk), DVD (Digital Versatile Disk ok Ynl Saysal Disk), Harici diskler ve sabit disklerdir. Burada saklanan bilgiler, elektrik kesilmesinden etkilenmez. Tipik bir kiisel bilgisayarn sabit diski, gigabyte (GB) cinsinden llen milyarlarca harfe denk gelen verileri saklayabilir. Girdi Birimleri (Input Devices): Kullanc, bu birimler araclyla, bilgisayara verileri girer. Girdi birimlerinden bazlar, klavye, fare ve oyun konsoludur. kt Birimleri (Output Devices): Bilgisayarn kullancya iletecei sonular gstermek iin kulland birimlerdir. Bunlardan bazlar ekran ve yazcdr.

Bilgisayar Yazlm Bilgisayar yazlm (program), bilgisayara bir ii yaptrmak iin verdiimiz komutlar kmesidir. Yazlmlar genel olarak iki kategoride snflandrabiliriz:

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


letim sistemleri: Kullanc ile bilgisayar arasndaki iletiimi salayan programlardr. Bilgisayar sisteminin btn hareketlerini denetler ve sistemdeki MB ve ana bellek gibi kaynaklarn ynetimi ile ilgilenirler. rnein, sizin kullandnz Windows XP ya da Windows 7 birer iletim sistemidir. Dier baz iletim sistemleri unlardr: PARDUS, UNIX, DOS, SOLARIS, MACINTOS. Uygulama Programlar: letim sistemi dnda kalan dier programlara verilen genel bir addr. rnein, Word, havayollar rezervasyon sistemi, bilgisayar oyunlar, programlama dillerinin derleyicileri, birer uygulama programdr. Programlama Dilleri Bir problemi zmek iin gerekli olan komutlar ok deiik programlama dilleri kullanlarak yazlabilir. Baz programlama dillerinde yazlan programlar, dorudan bilgisayarda MB tarafndan anlalabilir. Dier baz dillerde yazlan programlar ise o dilin derleyicisi tarafndan ilemcinin anlayaca dile evrilir. Programlama dillerini genel kategoriye ayrabiliriz: Makine dilleri Assembly dilleri Yksek seviyeli programlama dilleri

Makine dili: Her bilgisayarn ilemcisinin anlayaca kendi makine dili vardr. rnein, Pentium ilemcinin makine dili, Sparc ilemciden farkldr. Makine dilindeki bir komut, bit (0 ya da 1) gruplarndan oluur. rnein, makine dilinin bir komutu iki deerin toplanmas ya da bir deerin ana bellein bir blgesinde saklanmas gibi basit ilemleri ierir. nsanlarn makine dilinde program yazmas hemen hemen olanakszdr. rnein, makine dilinde iki saynn toplanmas, 01000110011101000111101010000010010101101000010 biiminde ifade edilir. 5 Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012

Assembly dili: Bir assembly dili, makine dilindeki komutlar ingilizce benzeri bir dille ifade eder. Genelde assembly dilindeki her komut makine dilindeki bir komuta denk der. Assembly dilindeki bir program ASSEMBLER diye bilinen bir yazlm tarafndan makine diline evrilir. Assembly dilinde program yazmak da makine dilinde olduu gibi zor ve zaman alcdr. Assembly dilinde iki saynn toplanmas, LOAD A ADD B STORE C biiminde ifade edilir.

Yksek Seviyeli Programlama Dilleri ( YSPD ): Makine dilinde ok sayda komutla yaplabilecek bir i, yksek seviyeli programlama dilinin bir komutu ile yaplabilir. Bu yksek seviyeli diller, ngilizce ya da Trke gibi doal bir dil deil, kendi yaps ve dilbilgisi kurallar olan, insanlar iin anlalmas kolay olan dillerdir. Yksek seviyeli programlama dilinde yazlan bir program, derleyici (Compiler) dediimiz yazlmlar tarafndan, makine dilindeki denk bir programa dntrlr. Bilgisayar tarafndan altrlacak olan program, makine dilindeki programdr. Baz yksek seviyeli programlama dilleri arasnda PASCAL, DELPHI, FORTRAN, BASIC, C, C++, COBOL, LISP ve PROLOG saylabilir. Bu dillerin birkanda, iki saynn toplanmas yle ifade edilir: C:=A+B; (PASCAL) C=A+B; (C) C=A+B (FORTRAN)

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


Bazen yksek seviyeli programlama dilinde yazlm bir program, makine diline evrilmek yerine baka bir ara dile evrilebilir. Bu ara dildeki komutlar, hibir makineye baml deildir. Bu ara dildeki programlar, o dilin yorumlaycs (interpreter) olarak bilinen yazlmlar tarafndan altrlr. Bunun amac, ara dildeki programlarn deiik bilgisayarlarda hibir deiiklie uramadan kullanlabilmesidir. Yazlm Gelitirme Bir program, bir problemi zmek iin yazlan komutlar kmesidir. Bu komutlar, ngilizce ya da Trke gibi dillerde deil, bilgisayar sisteminin anlayaca bir dildedir. Bir program yazmadan nce, ilk yapacamz i, o problemi nasl zeceimize karar vermek ve zmn admlarn belirlemek olmaldr. Bu ite bize yardmc olabilecek eitli problem yarattmz zme teknikleri bir vardr. Bu tekniklerden kolay yararlandmzda, zm programa dntrmek

olacaktr. En temel problem zme teknii, yukardan-aa tasarm yntemidir. Bu yntemde ilk verilen problem, kk alt problemlere blnr. Bu alt problemler, gerekirse, daha kk (basit) alt problemlere blnrler. En sonunda elde edilen alt problemler, ayr ayr zlrler ve bu zmler ana problemin zmn elde etmek iin birletirilirler. Bu yntem, algoritma yazmndan sz ederken rneklerle aklanacaktr. Bir problemi zmek iin yazacamz program olutururken, genelde, aadaki yazlm gelitirme aamalarndan gemek zorundayz: 1. Problemin Anlalmas ve zmlenmesi: lk yapacamz i, problemin tam olarak ne olduunu anlamaktr. Bu nedenle, problemin zmnden neler beklediimizi ve yaratacamz zmn girdi ve ktlarnn neler olacan kesin olarak belirlemeliyiz.

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


2. Tasarm (Design): Bu aamada, problemi zmek iin kullanlacak zm admlarn gsteren bir liste yapmamz gerekir. Bir problemin zm admlarn gsteren bu listeye algoritma denir. Byle bir liste tasarlarken, yukardan-aa tasarm tekniini kullanrz: nce problemin ana admlar karlr; daha sonra, her adm iin, gerekiyorsa, daha detayl bir zm tasarlanr. Bylece bir problem iin bir algoritma gelitirmi oluruz. Bir programlama diline evirmeden nce, bu algoritmann doru bir zm olduu kansnda olmalyz. Bu aamay atlayarak dorudan programlamaya gemek, byk programlar yazarken iimizi ok zorlatracaktr. 3. Kodlama (Coding): Bu safhada kt zerinde gelitirdiimiz algoritmay bir programlama diline eviririz. Bizim durumumuzda bu dil xxx olacaktr. Bu yzden, xxx programlama dilinin yapsn bilmemiz gerekecektir. Algoritmamzn her adm, ona karlk gelen xxx program parasna evrilecektir. 4. Snama ve Kantlama (Testing and Verifying): Gelitirdiimiz programn doruluunu snayarak istediimiz gibi alp almadn grmek zorundayz. Bu amala, program zerinde eitli testler yaparak, programn o testlere nasl karlk verdiine bakarz: Bunu salamak iin program deiik girdilerle altrlr ve rettii sonulara baklr. Sonular beklendii gibiyse, programn doru alt kantlanm olur; deilse doru almayan paralar bularak dzeltmemiz gerekir. 5. Algoritmalar Algoritma, bir problemin zmnn admlarn gsteren formal bir dilde yazlm tasarmdr. Kullanlan dil Trke ve ngilizce gibi doal bir dildir ama snrl bir yaps vardr. Bir algoritmada bulunmas gereken temel eler unlardr: sra, karar verme yaplar ve yineleme. Sra: zm admlar bir sraya dizilmi olarak verilmelidir. Bu sra zm admlarnn hangi srayla uygulanacan gsterir. Bir admn ierdii alt admlar numaralama dzeniyle aka belirlenir.

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


Karar Verme Yaplar: Baz zm admlar seenee bal olarak uygulanr. Her admn hangi koulla uygulanaca aka belli olmaldr. Adm numaralarndan seenee bal olarak uygulanacak admn konulan koulun salanmas ya da salanmamas durumunda m uygulanaca belli olmaldr. Yineleme: Baz admlarn birka kez yinelenmesi gerekebilir. Bu amala yinelenecek admlar yineleme admnn alt admlar olmak zorundadr. Yineleme adm alt admlarn hangi koullarda yineleneceini gsteren bir mantksal ifade kullanmaldr. Yineleme admnn yapsndan yinelenecek admlarn hangi koullarda yinelenecei ve yineleme ileminin ne zaman duraca belli olmaldr. Algoritmalarn Numaralanmas: Yukardaki temel eler aadaki gibi algoritma admlarn numaralama yntemi ile baarlabilir: Srayla zlecek admlara, birbirini izleyen sra numaralar verilebilir. rnein, a, b ve c admlarnn srayla uygulanacan gsterir. Eer bir adm, alt admlar kapsayacaksa, alt admlar, o admn numarasn da kapsayacak ekilde numaralanr. rnein, a, b, b1,b2 ve c admlarnn srayla uygulanacan gsterir. Seenee bal uygulanacak admlar aadaki gibi numaralanabilir. Bu yap, seenee bal olarak, N admnn alt admlarnn uygulanacan gsteren bir yapdr. Bu adm uygulamak iin, N admndaki mantksal-ifade'nin doru olup olmad bulunur. Eer mantksal-ifade doruysa N.T. adm uygulanr; doru deilse N.F. adm uygulanr. Baz karar verme yaplarnda N.F. adm bulunmayabilir, bu durumda N admndaki mantksal-ifade yanl ise uygulamak iin Nden sonraki (N+1) admna gidilir ve admlarn uygulanmas oradan devam eder. Bazen N.T. (veya N.F.) birden fazla adm ierebilir, bu durumda bu admlar N.T.1, N.T.2, ... gibi numaralandrrz.

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


Yineleme: Yineleme adm iin aadaki gibi bir yap kullanabiliriz. Bu yapda mantksalifade doru olduu srece N.1, N.2, ..., N.m admlar srayla yinelenir. Her yinelemeden sonra mantksal-ifade kontrol edilir ve eer doru ise yineleme ilemi devam eder; doru deilse bir sonraki (N+1) adma gidilir. imdi, akladmz yazlm gelitirme aamalarnn en nemlileri olan ilk adm birka rnekle gstereceiz. Verilen bir problemi nasl zmlediimizi, tasarm aamasn ve en sonunda algoritma yazlmn anlatacaz. rnek 1: Problem: Verilen saynn ortalamasnn bulunmas. Problemin Anlalmas ve zmlenmesi: Bu problemde bize doal say verilecek ve biz saynn ortalamasn bulacaz. Bulduumuz sayy kullancya bildireceiz. Girdiler: doal say S1, S2 ve S3 ktlar: bu doal saynn ortalamas Tasarm: Bu problemi yukardan-aa tasarm yntemini kullanarak zeceiz. zm admlarn bir algoritma gibi gstereceiz. lk nce problemimizi aadaki ana adma ayracaz. 1. doal saylar oku 2. ortalamay bul 3. ortalamay kullancya bildir Birinci adm biraz daha ayrntl vermemiz gerekir. Yani bu durumda alt problemimiz doal saynn okunmas olmutur. Bu admdaki problemi aadaki gibi zebiliriz:

10

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


1. doal saylar oku 1.1. ilk doal say S1i oku 1.2. ikinci doal say S2 yi oku 1.3. nc doal say S3 oku kinci admda ortalamay nasl bulacamz belirterek aadaki gibi detaylandrabiliriz: 2. ortalamay bul 2.1. ortalamay ortalama = (S1 + S2 + S3) / 3 forml ile hesapla Eer nc admnn yeterince basit olduunu kabul edersek, sonu

algoritmamz aadaki gibi olacaktr: 1. doal saylar oku 1.1. ilk doal say S1i oku 1.2. ikinci doal say S2yi oku 1.3. nc doal say S3 oku 2. ortalamay bul 2.1. ortalamay ortalama = (S1 + S2 + S3) / 3 forml ile hesapla 3. ortalamay kullancya bildir rnek 2: Problem: Verilen saynn en bynn bulunmas Problemin Anlalmas ve zmlenmesi: Bu problemde doal say okuyacaz ve bu saynn en byn bulacaz. Bulduumuz en byk deeri kullancya bildireceiz. Girdiler: doal say S1, S2 ve S3 ktlar: bu doal saynn en by Tasarm: lk nce aadaki algoritmann ana admn yazar ve sonra birinci adm ve ikinci adm onlarn alt admlarndaki gibi zeriz. zm olarak aadaki algoritmay elde ederiz. 11 Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012

1. doal saylar oku 2. en byk sayy bul 3. en byk sayy kullancya bildir Alt admlarla birlikte aadaki gibi algoritma geniletilir.

1. doal saylar oku 1.1. ilk doal say S1i oku 1.2. ikinci doal say S2yi oku 1.3. nc doal say S3 oku 2. en byk sayy bul 2.1. eer S1 < S2 2.1.T. eer S2 < S3 2.1.T.T. en byk say S3tr 2.1.T.F. en byk say S2dir 2.1.F. eer S1 < S3 2.1.F.T. en byk say S3tr 2.1.F.F. en byk say S1dir 3. en byk sayy kullancya bildir rnek 3: Problem: Verilen bir pozitif doal saynn faktriyelinin bulunmas Problemin Anlalmas ve zmlenmesi: Bu problemde bir pozitif doal say okuyacaz ve bu saynn faktriyelini kullancya bildireceiz. Girdiler: bir pozitif doal say S ktlar: S!

12

Abdullah YALINKAYA

Bilgisayar Programlamaya Giri I 2012


Tasarm: Bir saynn faktriyeli (S!), birden o sayya kadar olan btn doal saylarn arpmna eittir. Yani, S! = 1 x 2 x .... x (S-1) x S Bu ksa anmsatmadan sonra algoritmamz tasarlamaya balayalm. lk ana admlar: 1. Sayy oku, S 2. S! hesapla 3. S! kullancya bildir Birinci ve nc admlar yeterince basit, ancak ikinci admn detaylandrlmas gerekiyor. Yukardaki forml, yineleme yapsn kullanarak hesaplayabiliriz. Buna gre, ikinci adm aadaki alt admlara blnebilir. Bu zm iin, iki deiken kullanyoruz. lki S! deerini tutacak (SFakt), dieri ise (Saya), 1den Sye kadar saylarn deerini tek tek alacak. 2. S! hesapla 2.1. SFakti 1e eitle 2.2. Sayac 2ye eitle 2.3. Saya <= S olduu srece 2.3.1. SFakt Saya ile arp ve sonucu SFaktn yeni deeri yap 2.3.2. Sayac bir arttr Burada, 2.3.1 ve 2.3.2 admlar, 2den Se kadar tekrarlanacaktr. Sonunda, saya Sden bir byk olaca iin tekrar kontrol eden mantksal ifade yanl olacaktr ve bu admlar bir daha yinelenmeyecektir.

13

Abdullah YALINKAYA

You might also like