ist105ders1

Upload: ismail-yesilyurt

Post on 03-Apr-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/29/2019 ist105ders1

    1/13

    2012

    Bilgisayar Programlamaya

    Giri IST 105 DERS NOTLARI

    Abdullah YALINKAYA

  • 7/29/2019 ist105ders1

    2/13

    Bilgisayar Programlamaya Giri I 2012

    2 Abdullah YALINKAYA

    ST 105 Bilgisayar Programlamaya Giri

    Ama:

    1. Bilgisayar donanm ve bilgisayar yazlmlarnn tantlmas2. Programlama dilleri ve program gelitirme tekniklerinin tantlmas3. 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.

  • 7/29/2019 ist105ders1

    3/13

    Bilgisayar Programlamaya Giri I 2012

    3 Abdullah YALINKAYA

    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, anabellekteki 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.

  • 7/29/2019 ist105ders1

    4/13

    Bilgisayar Programlamaya Giri I 2012

    4 Abdullah YALINKAYA

    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 bilgilerid 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 verilerisaklayabilir.

    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 ikikategoride snflandrabiliriz:

  • 7/29/2019 ist105ders1

    5/13

    Bilgisayar Programlamaya Giri I 2012

    5 Abdullah YALINKAYA

    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 MBtarafndan anlalabilir. Dier baz dillerde yazlan programlar ise

    o dilin derleyicisi tarafndan ilemcininanlayaca 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) grup larndan 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.

  • 7/29/2019 ist105ders1

    6/13

    Bilgisayar Programlamaya Giri I 2012

    6 Abdullah YALINKAYA

    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)

  • 7/29/2019 ist105ders1

    7/13

    Bilgisayar Programlamaya Giri I 2012

    7 Abdullah YALINKAYA

    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 zme teknikleri vardr. Bu tekniklerden

    yararlandmzda, yarattmz zm bir programa dntrmek kolay

    olacaktr. En temel problem zme teknii, yukardan-aa tasarm yntemidir.

    Bu yntemde ilk verilen problem, kk alt problemlere blnr. Bu altproblemler, 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.

  • 7/29/2019 ist105ders1

    8/13

    Bilgisayar Programlamaya Giri I 2012

    8 Abdullah YALINKAYA

    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 alpalmadn 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.

  • 7/29/2019 ist105ders1

    9/13

    Bilgisayar Programlamaya Giri I 2012

    9 Abdullah YALINKAYA

    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

    numaralarverilebilir. rnein, a, b ve c admlarnn srayla uygulanacan

    gsterir. Eer bir adm, alt admlar kapsayacaksa, alt admlar, o admnnumarasn 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 admlarnuygulanmas 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.

  • 7/29/2019 ist105ders1

    10/13

    Bilgisayar Programlamaya Giri I 2012

    10 Abdullah YALINKAYA

    Yineleme:

    Yineleme adm iin aadaki gibi bir yap kullanabiliriz. Bu yapda mantksal-

    ifade 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:

  • 7/29/2019 ist105ders1

    11/13

    Bilgisayar Programlamaya Giri I 2012

    11 Abdullah YALINKAYA

    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 olarakaadakialgoritmay elde ederiz.

  • 7/29/2019 ist105ders1

    12/13

    Bilgisayar Programlamaya Giri I 2012

    12 Abdullah YALINKAYA

    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!

  • 7/29/2019 ist105ders1

    13/13

    Bilgisayar Programlamaya Giri I 2012

    13 Abdullah YALINKAYA

    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! hesapla2.1. SFakti 1e eitle

    2.2. Sayac 2ye eitle

    2.3. Saya