SlideShare a Scribd company logo
1 of 44
Download to read offline
T.C.
      Mİ EĞİ M BAKANLIĞI
       LLÎ Tİ




     MEGEP
(MESLEKİ İ M VE ÖĞ
        EĞ Tİ     RETİ Sİ
                      M STEMİ N
                            Nİ
      GÜÇLENDİ LMESİ
              Rİ    PROJESİ
                          )




Bİ ŞM TEKNOLOJİ
 Lİİ          LERİ



      VERİYAPILARI




           ANKARA 2007
Milli Eğ Bakanlıı
                           ğ tarafı geliş
                    itim          ndan  tirilen modüller;
 Talim ve Terbiye Kurulu Baş ğnı 02.06.2006 tarih ve 269 sayı Kararı
                                     ı
                               kanlı n                           lı     ile
  onaylanan, Mesleki ve Teknik Eğ Okul ve Kurumları kademeli olarak
                                    itim               nda
  yaygı tılan 42 alan ve 192 dala ait çerçeve öğ
       nlaşrı                                         retim programlarında
  amaçlanan mesleki yeterlikleri kazandı rmaya yönelik geliş
                                                           tirilmişöğretim
  materyalleridir (Ders Notları r).
                              dı

 Modüller, bireylere mesleki yeterlik kazandı
                                             rmak ve bireysel öğrenmeye
                                                          ş
  rehberlik etmek amacı öğ
                       yla renme materyali olarak hazı
                                                     rlanmı denenmek ve
                                                           ,
  geliş
      tirilmek üzere Mesleki ve Teknik Eğ    itim Okul ve Kurumları nda
                       ş
  uygulanmaya baş  lanmı r.
                        tı

 Modüller teknolojik geliş     melere paralel olarak, amaçlanan yeterliğ       i
  kazandı rmak koş ile eğ
                   ulu       itim öğ retim sı nda geliş
                                            rası          tirilebilir ve yapı
                                                                            lması
  önerilen değ iklikler Bakanlı ilgili birime bildirilir.
              iş                kta

 Örgün ve yaygı eğ kurumları letmeler ve kendi kendine mesleki yeterlik
                n itim            , iş
                                                            ı
  kazanmak isteyen bireyler modüllere internet üzerinden ulaşlabilirler.

 Bası ş                                                      ılı
     lmımodüller, eğ kurumları öğ
                    itim     nda rencilere ücretsiz olarak dağtır.

 Modüller hiçbir ş                          lamaz ve ücret karş ğ
                                                               ıı
                  ekilde ticari amaçla kullanı                  lı nda
  satı
     lamaz.
İ NDEKİ
                                             Çİ    LER

AÇIKLAMALAR ....................................................................................................................ii
Gİ Ş.......................................................................................................................................1
   Rİ
ÖĞ  RENME FAALİ          YETİ 1 ...................................................................................................3
                                   -
1. Dİ LER .............................................................................................................................. 3
     Zİ
    1.1. Dizi Değ kenini Tanı
                     iş                  mlama ......................................................................................4
    1.2. Dizi Değ keni ile Veri Saklama................................................................................. 5
                     iş
    1.3. Çok Boyutlu Diziler....................................................................................................5
    1.4. Dinamik Diziler ..........................................................................................................7
    1.5. Yapı ........................................................................................................................8
              lar
    1.6. Yapı Dizi Olarak Kullanmak................................................................................. 9
              ları
    UYGULAMA FAALİ                 YETİ      ............................................................................................ 10
    ÖLÇME VE DEĞ             ERLENDİ          RME .................................................................................. 11
ÖĞ  RENME FAALİ          YETİ 2 ................................................................................................. 12
                                   -
2. İARETÇİ .................................................................................................................. 12
    Ş          LER
    2.1. İş
          aretçi Nedir?........................................................................................................... 12
    2.2. Bağ Liste Tanı
             lı                 mlama.............................................................................................. 14
    2.3. Bağ Listeyi Kullanma .............................................................................................15
             lı
    2.4. Çift Bağ Listeler ..................................................................................................... 16
                    lı
    2.5. Dairesel Bağ Listeler .............................................................................................. 16
                           lı
           ğ ı
    2.6. Yın .........................................................................................................................17
    2.7. Kuyruk ...................................................................................................................... 17
    2.8. Ağ .......................................................................................................................... 18
            aç
    2.9. Grafik ........................................................................................................................ 19
    UYGULAMA FAALİ                 YETİ      ............................................................................................ 21
    ÖLÇME VE DEĞ             ERLENDİ          RME .................................................................................. 22
ÖĞ  RENME FAALİ          YETİ 3 ................................................................................................. 23
                                   -
3. NESNE TABANLI PROGRAMLAMA ............................................................................23
    3.1. Kolay Programlama Yöntemi ................................................................................... 23
    3.2. Nesne Kullanı ....................................................................................................... 25
                             mı
    3.3. Dil Seçimi ................................................................................................................. 27
    UYGULAMA FAALİ                 YETİ      ............................................................................................ 29
    ÖLÇME VE DEĞ             ERLENDİ          RME .................................................................................. 30
MODÜL DEĞ       ERLENDİ          RME .............................................................................................. 31
CEVAP ANAHTARLARI ..................................................................................................... 32
SÖZLÜK ................................................................................................................................ 33
KOD ÖRNEKLERİ            ................................................................................................................34
ÖNERİ   LEN KAYNAKLAR.................................................................................................. 39
KAYNAKÇA .........................................................................................................................40




                                                                     i
AÇIKLAMALAR

                 AÇIKLAMALAR
KOD               481BB0027
ALAN              Biliş Teknolojileri
                      im
DAL/MESLEK        Alan Ortak
MODÜLÜN ADI       Veri Yapı  ları
                  Dizi, işaretçiler ve nesneye yönelik program yazma ile
MODÜLÜN TANIMI
                  ilgili öğ
                          renme materyalidir.
SÜRE              40/24
ÖN KOŞUL                                                 ş
                  Yapı Programlama Temelleri modülünü almıolmak.
                     sal
YETERLİ
      K           Veri yapı yla program yazmaya hazı k yapmak
                          ları                     rlı
                  Genel Amaç
                                               ğı
                        Gerekli ortam sağ  landında, dizi ve iş
                                                              aretçileri
                  tanı p nesneye yönelik program yazabileceksiniz.
                     yı
                  Amaçlar
MODÜLÜN AMACI
                  1. Dizi mantıı anlayacak ve dizi değ kenleri
                                 ğnı                      iş
                     kullanabileceksiniz
                  2. İşaretçiler ile program yazabileceksiniz
                  3. Nesneye yönelik program yazabileceksiniz

                          Bilgisayar laboratuvarı bu ortamda bulunan;
                                                 ve
EĞİ M ÖĞRETİ
  Tİ         M
                  bilgisayar, yazı, bilgisayar masaları ı kalem, lisanslı
                                  cı                  , kâğt,
ORTAMLARI VE
                                                  ş
                  işletim sistemi programı akıdiyagramı
                                            ve              sembolleri ile
DONANIMLARI
                  ilgili panolar.

                         Her faaliyet sonrası o faaliyetle ilgili
                                               nda
                  değ erlendirme soruları kendi kendinizi
                                           ile
                  değ erlendireceksiniz. Modül içinde ve sonunda verilen
                  öğ retici sorularla edindiğ bilgileri pekiş
                                             iniz               tirecek,
ÖLÇME VE
                  uygulama örneklerini ve testleri gerekli süre içinde
DEĞERLENDİ
         RME
                  tamamlayarak etkili öğ   renmeyi gerçekleş tireceksiniz.
                                                         ş
                  Sı yla araşrma yaparak, grup çalı
                    rası         tı                       maları katı
                                                                  na     larak ve
                                                             ş ölçme ve
                  en son aş  amada alan öğ  retmenlerine danı  arak
                  değ erlendirme uygulamaları gerçekleş
                                                 nı         tireceksiniz..




                                ii
Gİ Ş
                                          Rİ

                                        Gİ Ş
                                         Rİ
      Sevgili Öğ
               renci,

       Bu modül ile sizlere diziler, iş
                                      aretçiler ve nesne tabanlıprogramlama konuları ilgili
                                                                                    ile
yeterlik kazandıracaktı Öncelikle bu modülü daha iyi anlamanı için, daha önceki
                        r.                                              z
                                                       ğz
                                                        ı
programlama temelleri modüllerinde kavrayamadını yerler varsa onlarıpekiş             tiriniz.
Değ kenler, döngüler ve dosyalama konuları tekrar gözden geçirmeniz tavsiye edilir.
    iş                                          nı

       Önceki modülleri anlayarak buraya gelmişiseniz, daha ileri seviye programlama
konuları geçebilirsiniz. “Veri Yapı ” modülü ile bir program yazı nda gerekli olan
                                       ları
        na                                                          mı
bazı eksikliklerimizi gidereceksiniz. Bilgisayarı belleğ ve programı zdaki verileri daha
                                                n      ini         nı
etkin kullanacaksı z.
                  nı

      Programlamada veri yapı      larıen önemli unsurlardan birisidir. Program yazarken
       lacak veri yapını en ideal ş
kullanı                 sın                ekilde belirlenmesi, programcıkta biraz daha
                                                                             lı
ustalaşman anlamı gelmektedir. Program içerisinde iş
                     na                                         lenecek veriler diziler ile
            ş
tanımlanmıbir veri bloğ içerisinden seçilebileceğ gibi, iş
                          u                         i        aretçiler kullanılarak daha etkin
şekilde hafı zada saklanabilir. Veri yapı , dizi ve iş
                                          ları           aretçiler ile yapı nı yanı
                                                                            lması n       nda,
nesneler ile de gerçekleş
                        tirilebilir.




                                              1
2
ÖĞRENME FAALİ
                               YETİ
                                  –1

                  ÖĞRENME FAALİ
                              YETİ 1
                                  -
 AMAÇ
 Mehmet
    Dizi mantıı anlayacak, dizi ve yapı iş
             ğnı                       değ kenleri kullanabileceksiniz.

 ARAŞ
    TIRMA
                                          aş ı
       Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma
                                rlı                           tı
faaliyetlerini yapmalını
                      sı z.

           Banka ve hastane gibi yerlerde kuyrukta bekleyenlerin iş kolaylaşran
                                                                            ini       tı
                                                                                        ş
            “Sıramatik” isimli programı   inceleyiniz. Sizce bu program nasıdaha kullanı
                                                                             l          lı
            hâle getirilebilir?
           Kargo firmaları n (Aras, Fedex ve DHL gibi) kargo takip programı
                               nı                                                       nı
            inceleyiniz. Paketlerin internet üzerinden nasıtakip edildiğ inceleyiniz.
                                                           l            ini


                                  1. Dİ LER
                                      Zİ




      Birkaç tane değ ken ile küçük programları
                       iş                          idare edebilirsiniz. Programlamada uzun
                                                       “dizi - array” ile yapı
ve benzer bilgilerle dolu değ listelerin oluş
                             er             turulması                         lmaktadı Veri
                                                                                     r.
    sı aş ı
yapını ağdaki gibi ayrı iş yapabileceğ gibi:
                            değ ken             iniz

      Ad1 = quot;Aliquot;
      Ad2 = quot;Veliquot;
      Ad3 = quot;Mehmetquot;

      Bunun yerine dizi kullanarak, tek değ ken ile ş ş
                                          iş        u ekilde yapabilirsiniz:

      Ad(1) = quot;Aliquot;
      Ad(2) = quot;Veliquot;
      Ad(3) = quot;Mehmetquot;
                                            3
Dikkat ederseniz, önceki örnekte 3 ayrıdeğ kenimiz varken, sonrakinde ise tek
                                                iş
değ ken olan “Ad” kullanı şr. Dizi sayesinde tek değ ken ismi ile birden fazla değ
   iş                     lmı tı                     iş                          er
saklanabilmektedir.

                                   3 elemanlı dizi; Ad
                                             bir

                                     Ad(2)
           Ad(1)                                                  Ad(3)

           Ali                       Veli                         Mehmet




1.1. Dizi Değ kenini Tanı
            iş          mlama
        Normalde bir değ kenin bir adı bir değ olabilir. Dizi değ kenlerinin de bir adı
                       iş             ve        eri                   iş
vardı ama içinde aynı
      r,                türde çok sayı veri saklanabilir. Tanı
                                       da                         mlarken dizinin boyutunu
belirtmemiz mecburidir. Dizi boyutu tam sayıolarak belirtilmeli, negatif girilmemelidir.

Not: Programlama dillerinde genellikle ilk dizi elemanı n indis numarası
                                                      nı                 “0”dı QBasic dilinde
                                                                                r.
“Option Base – Taban Seçeneğ ile varsayı alt limiti 0 veya 1 olarak değ tirebilirsiniz.
                            i”            lan                           iş
Dizi elemanları tanı
               nı mlanmadan önce “Option Base 1” olarak seçilmiş      ise, 0. elemandan değ 1.
                                                                                           il
elemandan baş r.
              lanı

      1.   Baş la
      2.   Metin Dizi Ad(3)
      3.   Ad(1) = “Ali”
      4.   Ad(2) = “Veli”
      5.   Ad(3) = “Mehmet”
      6.   Yaz; Ad(1)
      7.   Yaz; Ad(2)
      8.   Yaz; Ad(3)
      9.   Bitir




                            Resim 1.1: Dizi örneğ ve ekran çı sı
                                                 i          ktı




                                              4
1.2. Dizi Değ keni ile Veri Saklama
            iş
                                          mlandı satı çalı rı ğnda, ana bellekte
                                                             ş ldı
                                                             tı ı
       Programdaki dizi değ kenlerinin tanı
                           iş                   kları rlar
dizi boyutunca yer ayrır. Değ ken ile olan iş bitince ayrı bellek bölgesi silinir. Belli
                       lı    iş             lem          lan
                                                           nı ş  ı
bir bellek alanıayrı ndan dolayıdizinin maksimum sırıdındaki diğ bellek
                      lması                                                  er
bölgesine eriş
             emeyiz.

      Dizilere değ aktarma veya okuma iş
                  er                    lemlerinde döngü komutlarıkullanı
                                                                        lmaktadı
                                                                               r.
Hangi döngüyü kullanı z kullanı baş ç ve bitiş erlerini iyi belirleyiniz, yoksa
                     rsanı      n,   langı          değ
programız hata verip kapanı Sı rıaltı veya üstünde indis vermemek gerekir.
        nı                r. nın    nda

      1.    Baş la
      2.    Metin Dizi Ad(3)
      3.    Sayı i, j
                 sal
      4.    Döngü i = 1, 3, 1
      5.    Yaz; i & “. ismi giriniz”
      6.    Oku; Ad(i)
      7.    Döngü Bitti
      8.    Yaz; “Girilen isim listesi”
      9.    Döngü i = 1, 3, 1
      10.   Yaz; Ad(i)
      11.   Döngü Bitti
      12.   Bitir




                               Resim 1.2: Döngü ile dizi kullanı
                                                               mı

1.3. Çok Boyutlu Diziler
       Şimdiye kadar verdiğ
                          imiz örnekler tek boyutlu dizi örnekleridir. Bu tip diziler aynen
tren vagonları bellekte peş e değ
              gibi           peş     erlere sahip olan değ kenlerdir.
                                                          iş




                                              5
ndaki gibi satı ve sütunlu hücrelerden oluş dizilere; iki
       Tablolama programları                 r                              an
boyutlu dizi denir. Resim 1.3’te görüldüğ gibi herhangi bir hücrenin değ
                                          ü                              erine satıve sütun
                                                                                   r
                        ilebilmektedir. Matematikteki matrisler de çok boyutlu dizilerdir.
bilgisini kullanarak eriş


                                                                         1. boyut

           2. boyut


                 Resim 1.3: Excel’de bir sayfa 2 boyutlu diziye benzetilebilir

                                 inde küp ş
                                          ekline benzeyen 3 boyutlu dizi elde edilir. Bu
       Bir boyut daha eklendiğ
dizilerde satıve sütun bilgisinin yanı derinlik bilgisi de eklenir.
             r                        nda

                                                      2. boyut
                      1. boyut




                                                                  3. boyut




                                  Resim 1.4: 3 boyutlu dizi



                                                                                    TextBox5


                                                                                    TextBox6




         Resim 1.5: Çok boyutlu dizi örneğ burada dizi 0 indis numarası başyor
                                          i,                           ile lı

                               mlanması boyutlu diziye benzer ş
      Çok boyutlu dizilerin tanı       tek                    ekilde yapı
                                                                        lmaktadı
                                                                               r:

                                              6
Başla
             Metin Dizi bilgi(2, 6)
             Sayısal i, j, satı sütun
                               r,
             Döngü i = 1, 2, 1
                        Döngü j = 1, 6, 1
                                  Oku; bilgi(i, j)
                        Döngü Bitti
             Döngü Bitti
             Oku; quot;Satı ve sütun bilgisini girinizquot;, satı sütun
                       r                                 r,
             Yaz; quot;Aranan bilgi: quot;, bilgi(satı sütun)
                                              r,
Bitir

        Bu örnekte 2 satı ve 6 sütun olduğ için, 2 * 6 yani 12 adet metin bilgisi
                          r                    u
bulunmaktadı İ boyut olduğ    undan iç içe iki döngü hazı k. İ döngünün “i” değ keni
              r. ki                                     rladı lk                  iş
                                                                        şı
satıseçicisi, ikinci iç döngünün “j” değ keni de sütun seçici olarak çalıyor. Bilgi(i, j)
    r                                    iş
üzerine veri aktarı döngü sonunda hangi satı ve sütun isteniyor ise ekrana değ
                    p,                            r                                   eri
getiriliyor.

1.4. Dinamik Diziler
                                                                  ş
      Çoğ dil sadece statik sırlıdizi imkânı
           u                     nı                sunar, yani çalı zamanı dizilerin
                                                                   ma       nda
eleman sayını sı rı değ tiremezsiniz. Eğ dizi büyük gelmiş dizi kı lamaz, ya
             sı n nını iş                       er                 ise     saltı
da tam tersi uzatı
                 lamaz. Statik dizi içi boş olsa hafı yer kaplamaktadı
                                           bile       zada              r.




                            Resim 1.6 : C dilinde dinamik dizi yoktur

         zayıetkin kullanmak için “dinamik dizi” kullanabilirsiniz. İ
      Hafı                                                          sterseniz diziyi
boyutlandı
         rabilirsiniz, ya da silebilirsiniz.

Not: Basic dilinde dinamik diziler için “Redim - Boyutlandı komutu kullanır. Bu komut ile eski dizi
                                                            r”           lı
bilgileri silinir. Dizinin değ ken türünü değ tiremezsiniz.
                              iş             iş

     Dizilerde dizi sı rı
                     nınıdeğ tirebilirsiniz, ama 2 boyutlu bir diziyi 3 boyutlu dizi
                            iş
yapamazsı z.
         nı


 TextBox8                                                                         TextBox7




                                 Resim 1.7: Dinamik dizi örneği

                                                7
1.    Baş la
      2.    Metin Dizi dinamikDizi()
      3.    Sayı i, sı r, eleman
                 sal   nı
      4.    Oku; “Dizi sı rı giriniz”, sı r
                         nını           nı
      5.    BoyutlandıdinamikDizi(sı r)
                      r               nı
      6.    Döngü i = 1, sır, 1
                          nı
      7.    Oku; dinamikDizi(i)
      8.    Döngü Bitti
      9.    Oku; “Eleman numarası giriniz”, eleman
                                  nı
      10.   Yaz; dinamikDizi(eleman)
      11.   Bitir

       Dizilerde farklıveri türlerini saklama imkânı   yoktur. Yani öğ
                                                                     renci listesinde öğrenci
isimleri metin, öğ renci numaraları   sayı türünde olsun diyemezsiniz. Tüm elemanları türü
                                                                                       n
aynı r. Bu eksiklik “yapı kullanı
     dı                      ”          mıile giderilmektedir. Bir yapı istediğ
                                                                        da         iniz türde
değ kenleri beraber tanı
    iş                   mlayarak tek isim altı kullanabilirsiniz.
                                                nda

1.5. Yapı
        lar
       “Yapı Programlama Temelleri” modüldeki dosyalama kı nda, yapı ve kayı
             sal                                            smı          lar        tlar
                                                                     şı
hakkı az da olsa giriş
      nda                 bilgisi verilmiş Sayı metin değ kenleri karık olarak bir yapı
                                         ti.   ve        iş
(structure) içine kaydedebiliyoruz.

      Ad1      =   quot;Aliquot;
      Notu1    =   45
      Ad2      =   quot;Veliquot;
      Notu2    =   55
      Ad3      =   quot;Mehmetquot;
      Notu3    =   75

      Bunun yerine artış ş
                      k u ekilde yapabiliriz:

      Ogrenci1.Ad         =   quot;Aliquot;
      Ogrenci1.Notu       =   45
      Ogrenci2.Ad         =   quot;Veliquot;
      Ogrenci2.Notu       =   55
      Ogrenci3.Ad         =   quot;Mehmetquot;
      Ogrenci3.Notu       =   75

     Görüldüğ gibi farklıtürlerde birbiri ile iliş yapıelemanları“Ad ve Notu”
               ü                                     kili
değ kenleri beraber, tek bir isim olan “Ogrenci” yapında toplanı
  iş                                                sı         yor.

Yapı Kisi
     Metin Ad
     Sayı sal Yas
Yapı Bitti
birKisi Kisi

      Dosyalama konusunda “Kisi” değ ken isminde yapıhazı şk. Programcın
                                     iş                     rlamı tı              nı
kendi yaptı değ kenlere “kullanı tanı veri türü – user defined variable” de denir.
          ğ iş
           ı                   cı mlı
                                             8
Yapı n Genel Kullanı
                                nı              mı
               KayitDegiskeni.Degisken = quot;Veriquot;

               Degisken = KayitDegiskeni.Degisken




1.6. Yapı Dizi Olarak Kullanmak
        ları
      Dizi olarak kullanı sadece yapı kullanacak değ kenin yazı değ mektedir.
                        mda          yı             iş        mı iş
Yani yapı smı ş
         kı aynıekilde tanı mlanı değ ken kı değ ir.
                                rken   iş     smı iş

Başla
          Yapı birÖğrenci
                     Metin Ad
                     Sayısal Notu
          Yapı Bitti

          birÖğrenci Dizi Öğrenci(3)
          Sayısal i

          Döngü i = 1, 3,   1
                     Oku;   quot;Öğrenci adı giriniz quot;, Öğ
                                        nı              renci(i).Ad
                     Oku;   quot;Öğrenci notunu giriniz quot;, Öğrenci(i).Notu
          Döngü Bitti
          Döngü i = 1, 3,   1
                     Yaz;   quot;Öğrenci adı quot;, Öğrenci(i).Ad
                     Yaz;   quot;Öğrenci notu quot;, Öğrenci(i).Notu
          Döngü Bitti
Bitir




                                       9
UYGULAMA FAALİ
             YETİ
UYGULAMA FAALİYETİ

            İlem Basamakları
             ş                                               Öneriler
                                         İ
1. Bir dizi oluş
               turunuz.                   simlendirmede       değ ken
                                                                iş               isimlendirme
                                         kuralları uyunuz.
                                                    na
2. Dizi elemanı değ aktarı z.
              na   er    nı              Dizilerin ilk indis numarası   genellikle 0 veya 1
                                         ile baş Değ aktardı sonra ekranda
                                                  lar.    er        ktan
                                         değ erlerini listeleyiniz.
3. Döngü içinde diziye veri giriniz ve   Genellikle “Döngü – For” döngüsü ile veri giriş
                                         çı şyapı
                                               ı labilir. Döngünün değ keni dizinin
gösteriniz.                                kı                                iş
                                         ilerlemesi için kullanır.
                                                                 lı
4. Bir yapı turunuz.
          oluş                           Çeş veri türlerine sahip değ kenleri yapı
                                              itli                        iş
                                         içine tanı   mlayı z. Program içinde
                                                          nı
                                                      ğz
                                                       ı
                                         tanı mladınıyapı kullanı z.
                                                               yı        nı
5. Yapı iş ile verileri kontrol
        değ keni                         Yapı olarak tanı
                                                 dizi           mlanı döngü içinde veri
                                                                      p,
ediniz.                                  girişve ekrana listeleme yapı
                                               i                          labilir.




                                           10
ÖLÇME VE DEĞ ERLENDİ
            ERLENDİRME
ÖLÇME VE DEĞ       RME
 Ad(1)
A- OBJEKTİ TESTLER (ÖLÇME SORULARI)
         F

       Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı    şsoruları r. Verilen
          ağ daki                                        ru             dı
ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı
                                             ş            nı ı sorularda uygun şı
                              ru                                                 kkı
işaretleyiniz.

1.                       mlamak, diziden daha az bellek alanı gal eder.
     ( ) Ayrı değ ken tanı
             ayrı iş                                         iş

2.   ( ) Dizi değ kenlerinin indis numaraları
                 iş                          sadece tam sayıolabilir.

3.   ( ) Dizi içinde ondalı değ
                          klı erler saklayabiliriz.

4.   ( ) Dizi içindeki veriler otomatik olarak sı
                                                ralanı
                                                     r.

5.   ( ) Hangisini dizi olarak tanı
                                  mlayamayı
                                          z?
     A) Yapı
     B) Metin
     C) Karakter
     D) Döngü

6.   ( ) Genellikle dizi indisi hangi karakterler arası yazır?
                                                      na   lı
     A) ( )
     B) [ ]
     C) { }
     D) { ( ) }




                                           11
ÖĞRENME FAALİ
                              YETİ
                                 –2

                   ÖĞRENME FAALİ
                               YETİ 2
                                   -
 AMAÇ

      Bu öğ
          renme faaliyetinde iş
                              aretçiler ve iş
                                            aretçi yapı ile program yazabileceksiniz.
                                                      ları


   ARAŞTIRMA
                                          aş ı
       Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma
                                rlı                           tı
faaliyetlerini yapmalını
                      sı z.

                                                                     mıvardı İ
                                                                            r? ş
             Hangi dillerde bağ lıliste veya işaretçi (pointer) kullanı        aretçi
             kullanı nıavantajları dezavantajları araşrı z.
                    mı n            ve               nı tını
            Posta görevlisi mektuplarıadresine nasıulaşrı Bir mektup gönderenden
                                                    l    tıyor?
             alıya giderken hangi aş
               cı                    amalardan geçer, araşrı z.
                                                         tını


                              2. İARETÇİ
                                 Ş     LER
                     ğ zda
                      ı
        Bir dizi yaptını boyutunu belirtmek zorunda kalı nı Eğ dizi çok küçük ise,
                                                              rsı z. er
bilgilerinizi saklamak için yeterli olmaz, ya da diziniz çok büyükse bilgisayarı değ ana
                                                                                n    erli
belleğ boş meş edersiniz. Dizilerde baş bir problem de içeriğ kolayca tekrar
       ini     una    gul                          ka                       in
düzenlenememesidir. Yani dizi içeriğ alfabetik olarak sı
                                       ini                   ralamak isterseniz, tüm bilgileri
  ş
dı alı düzenleyip, içine tekrar atmak zorunda kalı nı
   arı p,                                              rsı z.

      İşaretçiler ve     bağ listeler
                            lı            sayesinde    dizinizin   uzunluğunu esnek        olarak
kullanabilirsiniz.

2.1. İ
     şaretçi Nedir?
       Dizilerdeki bilgiler peşpeş kutulara benzetilebilir. Bağ
                                     e                                    lılisteler ise birbirine
           ş                       ünebiliriz. İ
                                               ş
bağ lanmıayrı     kutular olarak düş            aretçiler birbiri ile ilgili olan, düğ halindeki
                                                                                     üm
bilgileri birbirine bağ lar.

      Tupol dilinde iş
                      aretçi, yapı dizi örneklerini inceleyiniz.
                                  ve

      İşaretçi değ kenler sadece “bellek adresi” bilgisini saklayan değ kenlerdir. Diğ
                   iş                                                  iş             er
                               olabilirler. İ                         ı
değ kenler ise metin veya sayı
    iş                                      stenilen değ hafı
                                                       eri   zadan çağrmak için adresini
bilmeniz yeterlidir.

       İ
       ş                                                                  ş
        aretçiler C ve C++ programlama dillerinin temel bölümüdür. Yanlıbellek bölgesine
    mak, kötü bir ş
ulaş                 ekilde programı çökmesi ile sonuçlanabilir. Bunu beyninize rastgele
                                    n
                                   ünebilirsiniz. İ
                                                  ş
batılan sivri bir iğ gibi düş
    rı                 ne                          aretçileri hatalıkullanmak bilgisayarı
                                                                                        n
belleğ rastgele kurcalamak anlamı gelir.
      ini                           na


                                               12
C dilinde işaretçi örneği
 #include <stdio.h>
 main(){
 int i;       /* quot;iquot; tamsayı değ kenlerdir */
                                iş
 int *iptr; /* quot;*quot; iş  aretçi olduğunu belirtir */
 iptr = &i;
      aretçiye muhakkak bir de ğ ken adresi atanı quot;&quot; adres simgesidir */
 /* iş                          iş                 r,
 *iptr = 55;
                           aret etti ğ değ kene 55 değ
 /* aslı nda işaretçinin iş          i    iş          eri atandı */

 clrscr();
 printf(quot;%dnquot;,i);        /*   ekrana 55 yazar */
 printf(quot;%dnquot;,*iptr);    /*   55 quot;iquot; değ keninin değ
                                         iş           eri*/
 printf(quot;%Xnquot;,iptr);     /*   FFC8 quot;iquot; değ keninin hafı
                                           iş            zadaki adresi*/
 printf(quot;%Xnquot;,&iptr);    /*   FFCA işaretçinin adresi*/
 printf(quot;%Xnquot;,&i);       /*   FFC8 quot;iquot; değ keninin hafı
                                           iş            zadaki adresi*/
 getch();
 }




Resim 2.1a: İaretçi değ keni tanı
             ş         iş       mlanan programı çalı
                                              n    şmadan önceki bellek görüntüsü




       Resim 2.1b: İaretçi değ keni ve normal bir değ kenin bellek görüntüsü
                    ş         iş                     iş

                                        13
2.2. Bağ Liste Tanı
       lı         mlama
      Bağ listelerde (linked list) Ş 2.1’de görüldüğ gibi her eleman birbirine iş
           lı                       ekil              ü                         aretçiler
ile bağdı İ
       lı r. ş aretçinin en son gösterdiğ ise “nil veya null” adı
                                         i                       verilen boş değ
                                                                            bir    erdir.
“Nil” liste sonunu belirtir.

      Asıverileri yer değ tirerek düzenlemek yerine, iş
        l                iş                           aretçiler tekrar düzenlenerek yer
değ tirme iş hı bir ş
  iş       lemi zlı ekilde yapır.  lı

                                 3 elemanlı dizi; Ad
                                           bir

                                   Ad(2)
         Ad(1)                                                 Ad(3)

         Ali                       Veli                        Mehmet



                             3 elemanlı lı (linked list)
                                       bağ liste

         Düğ (node)
           üm                         Düğüm                         Düğüm

   Ali                         Veli                       Mehmet
                                                                               Boş(nil)



   İ
   ş                           İ
                               ş                           İ
                                                           ş
    aretçi (pointer)            aretçi                      aretçi

                             Ş 2.1: Diziler ve bağ listeler
                              ekil                lı

      Pascal dilinde bağ listeleri aş ı ş
                        lı          ağdaki ekilde kullanabiliriz.

       Yeni bir iş
                  aretçi tanı
                            mlayalı
                                  m:

     TYPE
            isaretciAdi= ^KayitTuru;

       Hemen tanı
                 mlamanıaltı da yapı zı
                       n   nda     mı “KayitTuru” tanı
                                                     mlayalı
                                                           m:

            KayitTuru=   RECORD
            Adi:         String[15];
            Notu:        integer;
            Sonraki:     isaretciAdi;
            END;




                                           14
Alt alta yazı bu satı ile yeni bir yapı onun adresini saklayacak bir iş
                   lan     rlar               ve                             aretçimiz
oldu. “Sonraki” değ keni diğ düğ
                    iş      er  ümün adresini saklayacaktı
                                                         r.

          Son olarak bu kayıyapını
                            t   sı belirten bir değ ken tanı
                                                   iş      mlayalı
                                                                 m:

      VAR
         Dugum: isaretciAdi;

          Kodları araya getirelim:
                  bir

                      Pascal dilinde bağ liste örneğ
                                        lı          i
      PROGRAM bagliListeler;

      TYPE
          isaretciAdi= ^KayitTuru;       {quot;KayitTuruquot; yapı nı iş
                                                          sı n  aretcisi}

          KayitTuru= RECORD              {yapı veya veri kümesi}

          Adi:        String [15];
          Notu:       integer;
          Sonraki:    isaretciAdi;       {sonraki kayıt}

          END;

      VAR
         Dugum: isaretciAdi;

                                            ş
      Artıprogramı zı “kurulum” kı tamamlanmı r.
         k       mın             smı         tı

              ğz
                ı
           Yaptımıdeğ kenlerden sonra, ana programıkod yazı nda ise:
                    iş                            n       mı

                Bir düğ oluş m.
                        üm    turalı
                Düğ veri aktaralı
                     üme             m
                Düğ ümün iş
                           aretçisini düzenleyelim (baş ç, orta, bitiş
                                                      langı           olarak)

      BEGIN
          New(Dugum);                          {Yeni düğ oluş
                                                        üm     turduk}
          Dugum^.Adi := 'Ali Can';             {Veri aktardık}
          Dugum^.Notu:= 45;
          Dugum^.Sonraki:= nil;                {Bağ Listeyi sonlandı yoruz}
                                                   lı               rı

          writeln('Adı ',
                      :            Dugum^.Adi);
          writeln('Notu: ',        Dugum^.Notu);
          readln;
          Release(Dugum);                      {düğümü sildik}
      END.


2.3. Bağ Listeyi Kullanma
       lı
     Bir dizi içindeki bir elemanısildiğinizde, hala bellekte yer kaplayan bir boşalan
oluş Ayrı iş yaramayan bir “boş
   ur.    ca e                    luk”, programda istenmeyen hatalara neden olabilir.

                                         15
Bağ listelerde ise düğ silmek çok kolaydı
        lı                 üm                 r:

           Düğ
              ümlerdeki iş
                         aretçileri düzenleyin
           Düğ silin
              ümü

   Ali                         Veli                         Mehmet                Boş(nil)




   Ali                         Veli                         Mehmet                Boş




   Ali                         Veli                         Mehmet                Boş




       Tek bağ listelerin dezavantajı kaydı
               lı                    ilk       bulmanı mümkün olmaması r. Yani siz
                                                       n                  dı
                                                ı sakladıı z için bu mümkün değ
                                                         ğmı
geri yönde gidemezsiniz. Hep sonraki kaydı bağnı
                                           n                                    ildir.
“Ali” düğ ümü, “Veli” düğ ümünü gösteriyor, ama “Veli” düğümünün önceki düğ ile ilgili
                                                                           üm
hiçbir ipucu yoktur.

2.4. Çift Bağ Listeler
            lı
      İ iş
      ki aretçi kullanarak önceki ve sonraki düğ
                                               ümlerin adres bilgilerini tutabilirsiniz.

                  Ali                   Veli                   Mehmet


     Boş(nil)                                                                Boş(nil)


2.5. Dairesel Bağ Listeler
                lı
      İ ve son düğ
      lk         ümün iş
                       aretçileri birbirini gösterebilir.

                  Ali                   Veli                   Mehmet



                                            16
2.6. Yı n
      ğı
        ğ (stack), özel tek yönlü bağ listelere benzetebiliriz. Ekleme ve silme iş
          ı
      Yını                            lı                                         lemlerini
                          ı
sadece listenin en baş     ndakiler üzerinde yapabilirsiniz. Üst üste tabaklar gibi
düşünebilirsiniz. Alttaki tabaklara ulaş
                                       mak için mecburen üstteki tabaklarıkaldı     rmak
zorundası zdı Yeni bir tabak gelince de yıın üstüne koyarsı z.
                                          ğnı
         nı r.                                                 nı

       “Ters Polonyalı mı Reverse Polish Notation RPN” yöntemi bunu kullanı
                      Yazı –                                              r:

      Formül:
      (1 + 2) * 4

      Aynı
         formülün RPN hali:
      12+4*

     Normalde 1 ve 2 toplar, sonucu 4 ile çarparı Sonuç 12 olur. RPN yönteminde ise
                                                z.
adı olarak ş yapır:
  m        öyle    lı

            1 rakamı ğnıen üstüne konur.
                       yıın
            2 rakamı ğnıüstüne konur, 1 alta iner.
                       yıın
            2 ve 1 rakamı ğndan çekilerek toplama iş yapır, sonuç olan 3 yıı n en
                           yıı                                             ğnı
                                                      lemi  lı
             üstüne konur.
            4 rakamı ğnı en üstüne konur, 3 alta iner.
                       yıın
            4 ve 3 rakamı ğ
                           yıı çekilerek çarpma iş yapır, sonuç olan 12 yınıen
                                                                           ğn
                                                                            ı
                             ndan                    lemi  lı
             üstüne konur.




                                  Resim 2.2: RPN yöntemi

      Yınlar genellikle LIFO (Last in First out – Son giren İ çı yöntemini temel alı
       ğı                                                   lk kar)                r.

2.7. Kuyruk
      Kuyruk (queue) listelerinin iki kuralıvardı Birincisi yeni eklenen bilgiler sadece
                                                      r.
sona eklenebilir, ikincisi de silinecek bilgi sadece baş silinebilir. FIFO (First in First out
                                                         tan
– İ giren ilk çı yöntemi de denilmektedir.
  lk            kar),

      Sinema kuyruğ undaki insanları ünün, ilk giren ilk kuyruktan çı Son gelen ise
                                    düş                             kar.
son çı Kuyruğ girmek isterseniz en sona gitmeniz gerekir, biletini alan müş ise en
      kar.       a                                                        teri
baş olduğ
   ta      undan kuyruktan ayrır.
                              lı

                                             17
Resim 2.3: Kuyruk yöntemi
2.8. Ağ
      aç
      “Ağ – Tree” listeleri doğrusal veya dairesel ş
         aç                                        ekilde gitmezler. Kök düğ üzerinde
                                                                           üm
dallarıbulunduğ bir listedir.
      n       u

         programcı bu yönteme “ikilik ağ – binary tree” demektedir. Bir düğ
                                        aç
    Bazı         lar                                                      üm;
boş a, baş bir düğ veya iki düğ iş edebilir.
  luğ     ka      üme          üme aret

       Genellikle yapay zekâ programları kullanır. Mesela bir satranç oyunu olabilir. İ
                                        nda      lı                                   lk
                                                                                       ı
hamle en üstteki köktür. Yapı   labilecek her hamlenin ihtimalleri dallara ayrır. Karş
                                                                              lı
oyuncunun hareketine göre de ihtimaller değ erek dallar oluş En son dal “ş – mat” ile
                                            iş             ur.             ah
biter.




                                          18
Resim 2.4: Ağ listesi ve satranç oyunundaki dallanma*
                               aç
2.9. Grafik
       Belli bir ş olmayan bağ listelerdir. Bir düğ bir veya daha fazla düğ iş
                 ekli         lı                   üm                     üme aret
edebilir.




                                 Resim 2.5: Grafik yöntemi

                          ları– neural network” kurulumunda kullanır. Beyin de bu
       Genellikle “sinir ağ                                       lı
yöntemle iş yapmaktadı Her düğ (neuron), siniri (synapses) temsil eder. Programı z
            lem           r.      üm                                           nı
       ı kça bu geliş
karmaş tı
        klaş                 miş yöntemleri keş  federek algoritmaları zı yeniden
                                                                     nı
şekillendireceksiniz.




*
 Toplam 10 ^ 120 ihtimal vardı Evrendeki tahmini atom sayı 10 ^ 75 olduğ göre bu rakam ile
                              r.                         sı             una
                         ı rız.
satranç ihtimallerini karş tını
                          laş
                                            19
20
UYGULAMA FAALİ
             YETİ
UYGULAMA FAALİYETİ

            İlem Basamakları
            ş                                                     Öneriler
1. Yapı veri tanı
        sal          mlanabilen bir dilde   Her dil iş  aretçi imkânısağ    lamaz. Uygun dili
“işaretçi” oluş turunuz.                    bulmanıgereklidir.
                                                     z
2. İ
   ş aretçiyi bir değ kene bağ nı
                     iş        layız.       Bir değ ken tanı
                                                    iş         mlayı ona ait iş
                                                                     p,         aretçi
                                            değ ken tanı
                                                iş         mlayız.
                                                                 nı
                                            İşaretçiyi değ kenin adresine bağ nı
                                                            iş                  layı z.
                                            Doğ  rudan iş aretçiyi kullanarak değ atamaları
                                                                                 er
                                            yapı z.
                                                 nı
3. Kayıyapında bir değ ken
       t    sı       iş                     Bir yapı mlayı iş
                                                      tanı      p, aretçi ile yapı n adresini
                                                                                  nı
tanımlayı z.
         nı                                 saklayı z.
                                                    nı
                                            Değ atayı ekrana değ listeleyiniz.
                                                 er      p,             eri




                                              21
ÖLÇME VE DEĞ ERLENDİ
            ERLENDİRME
ÖLÇME VE DEĞ       RME
 2. boyut
OBJEKTİ TESTLER (ÖLÇME SORULARI)
      F

       Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı    şsoruları r. Verilen
          ağ daki                                        ru             dı
ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı
                                             ş            nı ı sorularda uygun şı
                              ru                                                 kkı
işaretleyiniz.

1.    İ
      ş               ğı
       aretçi tanı
                 mlandı nda muhakkak bir değ kene bağ
                                            iş      lanmalı r. ( )
                                                          dı

2.    Düğ (record) içinde sadece sayı
         üm                          bilgisi saklayabiliriz. ( )

3.    Kayıve yapı
         t       aynıkavramlardı ( )
                               r.

4.                rusal bir ş
      Listeler doğ          ekilde birbirine bağ olarak yapırlar. ( )
                                               lı          lı

5.    Her listenin sonu “nil - null” ile belirtilmelidir. ( )

6.    Hangisi bir veri listesi değ
                                 ildir?
      A) Bağ lı
      B) Çift bağlı
      C) Grafiksel
      D) Yıı
           ğn




                                               22
ÖĞRENME FAALİ
                              YETİ
                                 –3

                  ÖĞRENME FAALİ
                              YETİ 3
                                  -
 AMAÇ

      Nesneye yönelik programlama yapabileceksiniz.

   ARAŞTIRMA

                                          aş ı
       Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma
                                rlı                           tı
faaliyetlerini yapmalını
                      sı z.

            Klasik programlama dilleri ile nesne tabanlıprogramlama dillerinin farkları
             nelerdir?
            Yapay zekâ ile ilgili programlarıinceleyiniz. Mesela bilgisayar ile sohbet
             programları oyunlar gibi.
                        ve


      3. NESNE TABANLI PROGRAMLAMA




                                         ı zlı
        Yapı programları
             lan              rahat anlaş r, hı ve görsel nitelikleri zenginleş
                                         lı                                    tirilmişduruma
getirmek için nesne tabanlı     programlama dilleri kullanı labilir. Nesne tabalı programlama
                                                       labilir. Yine de OOP (Object Oriented
dilleri ile güvenilir ve hatadan uzak programlama yapı
Programming – nesne tabanlı                             ı
                                   programlama) tek baş bir programı
                                                         na                daha okunaklı  hale
getiremez.

       QBasic ve Visual Basic 6 nesne tabanlı programlama dilleri değ
                                                                    ildir. C#, C++ ve Java
              dillere örnektir. Hangi dilin OOP olduğ tartıladursun, biz ş
                                                          şı                imdilik C++ ile
nesne tabanlı                                        u
                            ı
ilk denemelerimizi yapacağ   z.

3.1. Kolay Programlama Yöntemi
      Bilgisayarı zı ne kadar güçlü olduğ önemli değ
                nın                         u          ildir, onun sırları
                                                                    nı nıyazımlı
kontrol eder. Yazımları en büyük problemi “güvenilirlik” konusudur. Program sı sı
                 lı n                                                        kk
göçmemeli, hata vermemeli ve garip davranmamalı r. Daha önceki derslerde bunun
                                                dı
öneminden yaş ş
              anmıörnekler ile bahsetmiş
                                       tik.
                                             23
Güvenilir bir program planlanan zamanda bitmelidir. Tam test etmeden piyasaya
sürmek kötü sonuçlar verebilir.

      Eski zamanlarda programlar küçük olduğ için pek plan ve organizasyon yapmaya
                                                u
                       ş
gerek duyulmazdıÇalı
                  .     mayan programı   programcı tekrar yazı
                                                             yordu. Küçük programlarda
“dene ve hata bul” iş  lemi pek zor değ ildir. Büyük programlarda böceklerin daha fazla
saklanacak yerleri vardı Milyonlarca satıprogramda “dene ve hata bul” pek iş yaramaz.
                       r.                r                                   e
Bu nedenle örneğ bir mimar gökdeleni plansıolarak inş edemez.
                 in                           z         a

      Önceki derslerde de anlatı ğ gibi, büyük programları programlara bölerek kolay
                                     ı
                                  ldı                        alt
programlanı hâle getirmiş Ana program yayı
           r                tik.                    mlanmadan önce alt program kodları
             ş            tirilir ve derlenir. Burada siz de bir ş
kopyala yapı r ile birleş
             tı                                                  üphe duyuyor musunuz?
          ş
Mesela çalı zamanı alt programlar diğ alt programlardan etkileniyor olabilir mi?
           ma         nda                     er

      OOP’de temel olan konu da alt modüllerin diğ modüllere müdahale etmemesidir.
                                                 er
Yani araları yalım vardı Modüllere “object – nesne” de denir.
           nda   tı      r.

      Bir nesnenin iki temel özelliğ vardı
                                    i    r:
           Veri: Özellikler de denir.
           Komutlar: Metod da denir. Veriyi kontrol eden kodlardı
                                                                 r.

      Nesne diğ kodlara müdahale etmeyeceğ için kazancı z ş
               er                             i           mı unlar olur:
          Güvenilirlik: Program çalı  şğ     ı
                                        madında, böcekli nesne alır ve düzeltilir, tüm
                                                                   nı
           programıelden geçirilmesine gerek kalmaz.
                      n
          Tekrar kullanı    labilme: Teorik olarak nesneleri alı baş program içinde
                                                                p   ka
           rahatlı kullanabilirsiniz. Böylece yeni program yazarken daha hı iş
                  kla                                                     zlı lerinizi
           bitirebilirsiniz.

                     “inheritance – miras alma, kalı alma, devralma” sayesinde elde
                                                      t
       Bu kazançları
ederiz. Var olan kodu tekrar kullanabilmek, programcı n daha fazla ilerlemesini sağ
                                                    nı                            lar.




               Resim 3.1: Klasik programlama ve nesne tabalıprogramlama

                                          24
Klasik programlamada alt program diğ alt programı verisine ulaş
                                            er            n            abilir. Nesne
tabanlıprogramlamada ise nesneler verilerini korurlar. Bu korumaya “encapsulation –
kuş atma” denir.
3.2. Nesne Kullanı
                 mı
      Programlamada en büyük sorun, var olan kodu güncellemektir. Programcıbuna
                        ş
yı nı
  lları verir. Zaten çalı bir programı
                         an            güncellemek
yepyeni program yazmaktan kolaydı Nesne tabanlı
                                    r.
programlamada, sadece güncellenmesi gerekli nesne
             çalıldıı
                ş ğndan
                 ı
üzerine                         programcın
                                         nı      iş
                                                  i
        ı
kolaylaşr.Nesne tabanlı  programlama bu sebeple çok
tutulmuştur.

       Uzaylı larıvurduğ bir oyunda, ekrana gelen
                          uz
uzaylı n görünümünü değ tirmek için yapmanı
      ları                     iş                    z
                 nesnesini alı değ tirip, yeniden eski yerine koymaktı Sadece ş değ
gereken; uzaylı              p,     iş                               r.       ekil il,
hareketlerini de bu şekilde güncelleyebilirsiniz.

Nesnedeki Veriyi Saklama veya Gösterme
                                         ş inde bulunabilir. “private, public ve protected”
      Nesneler de birbirleri ile veri alı veriş
bu iş için yapı şr.
    lem          lmı tı
          Private (özel): Nesne verisini ve kodunu paylaş açmaz.
                                                               ıma
          Public (paylaş açı Herkes nesnenin verisini ve kodunu kullanabilir.
                            ıma k):
          Protected (korumalı Eğ varolan bir nesne miras alma yöntemiyle
                                    ): er
                                                                                ı
           kopyalanı yeni bir nesne oluş
                      p                      turulursa, yeni nesne sadece paylaş açı
                                                                                 ma k
           (public), korumalı    (protected) veri ve komutları  miras alı Özel (Private) veri
                                                                        r.
           ve komutlar eski nesnede kalı yeni nesneye aktarı
                                            r,                    lmaz.

                        turmanı ilk adı “class – sı f” oluş
                                                   nı
      Yeni bir nesne oluş      n      mı                   turmaktı Sıf daha önceki
                                                                  r. nı
derste gördüğ ümüz yapı benzer. Bir sı f, veriyi kullanmak için veri ve kod
                         ya               nı
tanımlamaları tanı
             nı mlar. Bir sıf nesne değ
                              nı          ildir. Nesneyi bir değ ken gibi tanı
                                                                iş           mlayı
                                                                                 p,
sıftan oluş
  nı       turursunuz.

           Bir sı ftan nesneler türetebilirsiniz:
                 nı

  class canavar
  {
  public:
  int x_koordinati;
  int y_koordinati;
  void hareketEt(int, int);
  void ilklendirme(int, int);
  };

      İ ilk sı fı zı
       şte    nımı yazdı Gördüğ
                           k.         ünüz gibi sı fı zı“x_koordinati ve y_koordinati”
                                                 nımın
olarak tam sayıtüründe 2 özelliğ var. “hareketEt ve ilklendirme” olarak da 2 metodumuz
                               i
var.

                                              25
     Bu hazı ktan sonra, yapmamıgereken metotlarıkodları hazı
                 rlı                 z                n      nı rlamaktı
                                                                       r:

 void canavar::hareketEt(int yeni_x, int yeni_y)
 {
 x_koordinati = x_koordinati + yeni_x;
 y_koordinati = y_koordinati + yeni_y;
 }
 void canavar::ilklendirme(int ilk_x, int ilk_y)
 {
 x_koordinati = ilk_x;
 y_koordinati = ilk_y;
 }

          Son olarak da ana programı zı yoruz:
                                    mı yazı

 int main(int argc, char *argv[])
 {
 canavar zombi; //‘canavar’ sı fı
                              nı ndan ‘zombi’ nesnesi üretiyoruz
 zombi.ilklendirme(12, 15);

 printf(quot;Ilk C++ Programimiznquot;);
 cout << quot;Zombimizin X olarak yeri quot; << zombi.x_koordinati << quot;nquot;;
 cout << quot;Zombimizin Y olarak yeri quot; << zombi.y_koordinati << quot;nquot;;

 zombi.hareketEt (34, 9);

 cout << quot;X olarak zombinin yeni yeri quot; << zombi.x_koordinati << quot;nquot;;
 cout << quot;Y olarak zombinin yeni yeri quot; << zombi.y_koordinati << quot;nquot;;

 system(quot;PAUSEquot;);
 return 0;
 }




                           Resim 3.2: C++ örneğimizin çı sı
                                                       ktı

Genel Olarak OOP Deyimleri

                                                                                 ş
     Bu özet sizi profesyonel OOP’ci yapmasa da, bu temel kelimeleri anlamaya çalı m:
                                                                                  alı
         Encapsulation (kuş   atma): İ veri ve kodları bir yerde toplamak
                                        lgili             tek
         Inheritance (miras alma): Bir nesneden diğ  erine veri ve kod geçirmek
         Method (olay, komut): Nesnenin verilerini manipüle eder
         Object (nesne): Bir ünitede gruplanmıveri ve komut koleksiyonudur
                                                 ş
     Nesnenin genellikle “initialize – ilkleme” olayıolmalır. Varsayı olarak ilk kez
                                                            dı          lan
                  ı
nasıoluş
   l   turulacağ belirtiriz.
                  nı


                                         26
lanlar klasik programlamadaki alt programlara benziyor. Ama ş
      Aslı bu yapı
         nda                                                                   imdiye
kadar hiç bir yapı olay eklememiş ve bu kadar geliş
                 ya                   tik                   mişdeğ ken tanı
                                                                     iş       mlaması
gerekmemişti.




                         Resim 3.3: Sı f (class) ve nesne (object)
                                     nı




                          Resim 3.4: Nesnelerin mesajlaş
                                                       ması
3.3. Dil Seçimi
                  programlama dilleri ana olarak ş ş
     Nesne tabanlı                               u ekilde gruplandılı
                                                                  rırlar:

          Karma (hybrid) nesne tabanlı     programlama dili: Eski bir dil üzerine OOP
           özellikleri eklenmiş dil karma olur. Mesela Pascal üzerine yapı ş
                               ise                                         lmıDelphi,
           C üzerinde C++ gibi…
          Saf (pure) nesne tabanlı programlama dili: SmallTalk, Eiffel, C# ve Java gibi
               rudan OOP özelliklerine sahip olarak yazı ş
           doğ                                         lmıdiller.

      Karma bir dil eski dili bilen birinin, nesne tabanlıdile geçiş kolaylaşrmak için
                                                                   ini      tı
yapı şr. En az eğ ve deneyim ile OOP’ye geçişsağ Programı küçük bir kı nı
    lmı tı           itim                             i   lar.         n        smı
nesne tabanlı
            , kalan büyük kı nı klasik programlama yöntemleri ile yazabilirsiniz.
                            smı eski
                                           27
Aslı en iyisi doğ
          nda           rudan saf bir OOP dili ile programlamaya baş
                                                                   lamaktı Böylece
                                                                         r.
                     ı                                   ı
programları z karmaş ve düzensiz olmaz. Tabii tek baş OOP ile düzenli ve kolay
            mı        k                                   na
okunur program yazamazsı z. Yazım tekniğ
                           nı        lı         inizi, problem çözüm yöntemlerinizi
geliş
    tirmelisiniz.

      Yazımıkullanacak olanlar, sizin gece geç saatlere kadar çalı ğnı , hangi
                                                                     ş ı zı
          lı                                                          tı
                            ğ zı
                              ı                                 şı
programlama dilini kullandını umursamaz. Zamanı biten, çalır halde olan program
                                                  nda
satır, rağ görür. Ondan sonra da artı siz patron olursunuz, kravatızı
   lı bet                               k                         nı takar, rakibinizi
geçmek için politikalar geliş
                            tirirsiniz.




                                                 Resim 3.6: Öğrenme grafiği




 Resim 3.5: Program yapı aş
                       m amaları




                                         28
UYGULAMA FAALİ
             YETİ
UYGULAMA FAALİYETİ

           İlem Basamakları
            ş                                                 Öneriler
1. Sı f tanı
     nı mlamak için uygun bir dil      Karma veya saf nesne tabanlıprogramlama
                                                     ı rı z.
seçiniz                                dillerini karş tını
                                                      laş
2. Bir sı f tanı
        nı mlayı z    nı               “canavar” örneğ   indeki gibi siz de sıf
                                                                             nı
                                                                      ı
                                       oluş turabilirsiniz. Mesela taş için “tasit”
                                                                       tlar
3. Sı fa ait olaylar oluş
     nı                  turunuz
                                       sıfı
                                         nı gibi.
4. Sı ftan nesne oluş
     nı                turunuz
                                       “canavar” örneğ   indeki gibi sı fa “hareketEt”
                                                                       nı
                                       gibi metod ekleyiniz.
                                       “tasit” nesnesinden de örneğ araba, kamyon
                                                                      in
                                       nesneleri yapı  labilir.
5. Nesnenin ilklenme (initialize) ve   Program içinde nesnenin olayları kontrol
                                                                      nı
diğ olayları yazı z
   er        nı nı                     ediniz.




                                        29
ÖLÇME VE DEĞ ERLENDİ
            ERLENDİRME
ÖLÇME VE DEĞ       RME
 1. boyut
A- OBJEKTİ TESTLER (ÖLÇME SORULARI)
         F

       Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı    şsoruları r. Verilen
          ağ daki                                        ru             dı
ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı
                                             ş            nı ı sorularda uygun şı
                              ru                                                 kkı
işaretleyiniz.

1.    Nesne tabanlıprogramlamada, klasik programlamadaki döngü ve dallanma gibi
      komutlar yoktur. ( )

2.    Her nesne oluş
                   turulur oluş
                              turulmaz, hemen ilklendirilmelidir. ( )

3.    Programı zı
             mı nesnelere böldüğ  ümüzde, dünyadaki tüm programcı bizim
                                                                lar
      programı zı
             mı anlayabilirler. ( )

4.    “Encapsulation –kuş
                        atma” nesnenin diğ nesnelerin komutları eriş
                                          er                  na   ememesidir.( )

5.    Aş ı
        ağ  dakilerden hangisi ile nesnenin değ ken değ
                                               iş     erlerini korumayı
                                                                      z?
      A) private - özel
      B) void - boş
      C) protected - korumalı
                        ı
      D) public – paylaş açı
                         ma k

6.    Nesne tabanlıprogramlamada hangisi nesne ile ilgili değildir?
      A) Miras alma
      B) Kuş atma
      C) Alt program
      D) Metod




                                            30
MODÜL DEĞERLENDİ
                              RME

               MODÜL DEĞERLENDİ
                              RME
PERFORMANS TESTİ(YETERLİ ÖLÇME)
                       K

     Modül ile kazandıız yeterliğ öğ
                      ğnı         i, retmeniniz iş basamakları göre 0 ile 10 puan
                                                 lem         na
arası olacak ş
    nda        eklinde değ
                         erlendirecektir.


                   DEĞERLENDİ
                            RME KRİ
                                  TERLERİ                                     Puan
Tek isim vererek, birçok veriye dizi kullarak ulaş
                                                 ma
Bir dizi elemanı değ aktarma
               na   er
Döngü içinde diziye veri girme ve gösterme
Çeş veri türlerine sahip değ kenleri yapı kontrol etme
  itli                     iş           ile
Yapı veri tanı
   sal       mlanabilen bir dilde iş
                                   aretçi oluş
                                             turma
Kayıyapında bir değ ken tanı
   t   sı          iş      mlama
İ
şaretçiyi bir değ kene bağ
                iş       lama
Sı f tanı
 nı mlamak için uygun bir dil seçme
Bir sı fı mlayan nesne yazma
     nı tanı
Nesnenin ilklenme olayı yazma
                      nı
                                        Toplam (en fazla 100 puan olabilir)

DEĞERLENDİ
         RME

       Yaptıız değ
           ğnı   erlendirme sonucunda eksikleriniz varsa öğ
                                                          renme faaliyetlerini
tekrarlayız.
         nı

      Modülü tamamladı z, tebrik ederiz. Öğ
                      nı                    retmeniniz size çeş ölçme araçları
                                                              itli
uygulayacaktı Öğ
            r. retmeninizle iletiş geçiniz.
                                 ime




                                             31
CEVAP ANAHTARLARI

            CEVAP ANAHTARLARI
           ÖĞRENME FAALİ
                       YETİ CEVAP ANAHTARI
                           1

                           1            D
                           2            D
                           3            D
                           4            Y
                           5            D
                           6            A

           ÖĞRENME FAALİ
                       YETİ CEVAP ANAHTARI
                          -2

                           1            D
                           2            Y
                           3            D
                           4            Y
                           5            Y
                           6            C

           ÖĞRENME FAALİ
                       YETİ CEVAP ANAHTARI
                          -3

                           1            Y
                           2            D
                           3            Y
                           4            D
                           5            D
                           6            C


                                ı rarak kendinizi değ
Cevapları zı
        nı cevap anahtarları karş tı
                            ile  laş                erlendiriniz.




                                 32
SÖZLÜK
                             SÖZLÜK
       İ sim       Okunuş                            Anlam
priority       prayoriti    iş
                             lemciye yaptılan iş
                                         rı lemlerin öncelik değ
                                                               erleri
procedure      pir ı r
                   siicı    yordam, prosedür
project        pricekt      proje, tasarı
prompt         prompt       uyarı
                                , MS-DOS sistem hazısimgesi c:> gibi
                                                   r
protect        prı
                 tekt       korumak, protection – koruma
queue          kyu          kuyruk
real           riı
                 l          ondalı sayı
                                 klı lar
recognize      rikı
                  gnayz     tanı
                               mak
record         rikı
                  rd        rekor, kayı
                                      t
recover        rikavı
                    r       bilgileri kurtarmak
recursive                              ı
               rikörsiv     kendini çağ fonksiyon
                                       ran
register       recı r
                  stı       yazmaç, kayı kullanı olmak
                                       tlı     cı
registry       recı
                  stri      Windows kayı
                                       t bilgileri
reserve        rizörv       ayı
                              rmak, rezervasyon
revert         rivört       geri dönüş
                                     türmek, kurtarmak
root           ruut         kök, ana dizin
scene          sin          sahne
script         sı
                kript       yardı programlama dili, el yazı
                                mcı                       sı
scroll         skrol        kaydı
                                rmak
sector         sektı
                   r        bölge, disk iz parçası
sequence       sikuins      sı
                             ra
server         sörvı
                   r        ana bilgisayar, sunucu
set            set          küme, takı ayarlamak (setting)
                                     m,




                                       33
KOD ÖRNEKLERİ

                        KOD ÖRNEKLERİ




     Her iki örnekte de 3 isim bilgisi saklanı Ekran görüntüleri aynı r. Acaba neden
                                              r.                     dı
                      ğıyer olan DIM kı nda birinci örnekte 3, ikinci örnekte 2
değ kenlerin tanı
   iş           mlandı                      smı
yazmaktadır?




                                         34
TextBox1                                                               TextBox4



 TextBox2



 TextBox3




            Dizinin sı rları ş
                     nı     dında bir değ çağ lması
                              ı          er  rı    hatası“Index Out Of Range”
                                                        ;




      Visual Basic çok boyutlu dizi örneğ eğ “DataGridView1”de yeterli veri
                                           inde er
girilmemiş nasıbir hata meydana gelebilir? Nasıbir önlem alı nı
          ise  l                               l           rsı z?




                                           35
Visual Basic dilinde çok boyutlu dizi örneği
    Private Sub Button4_Click
          Dim bilgi(1, 5) As String 'İ boyutlu dizi tanı
                                       ki                  mlama kısmı
          Dim i, j As Integer
          For i = 0 To 1
              For j = 0 To 5
                   bilgi(i, j) = DataGridView1.Item(i, j).Value
              Next
          Next
          MsgBox(quot;Arama sonucu quot; & bilgi(TextBox5.Text,      _
    TextBox6.Text))
     End Sub

      Dinamik dizi örnek programı dizi hazı
                                   nda,    rlanmadan arama yapırsa nasıbir hata
                                                              lı      l
meydana gelebilir? Nasıbir önlem alı nı
                      l            rsı z?


                Visual Basic dilinde dinamik dizi örneği
     Dim DinamikDizi() As String 'dizi boyutu belli değil

     Private Sub Button6_Click
           ReDim DinamikDizi(TextBox8.Text) 'kullanı boyutu girdi
                                                     cı
           Dim i As Integer
           For i = 0 To TextBox8.Text 'kullanı değ
                                               cı    erleri giriyor
                DinamikDizi(i) = InputBox(quot;Eleman değeriquot;)
           Next
     End Sub

     Private Sub Button5_Click 'aranan eleman ekrana gelir
           MsgBox(DinamikDizi(TextBox7.Text))
     End Sub
                           C dilinde yapı örneği
              struct birOgrenci{
                         char *Ad;
                         int Notu;
              }Ogrenciler;

              main()
              {
              Ogrenciler.Ad = quot;Ali Canquot;;
              Ogrenciler.Notu = 34;
              printf(quot;Bir öğrencinin adı ve notu: %s %dquot;,
                      Ogrenciler.Ad, Ogrenciler.Notu);
              }




                                      36
Yapıdizisi kullanı
                                                 mı

                        C dilinde yapı dizisi örneği
       #include <stdio.h>

       struct birOgrenci{
                  char *Ad[15];
                  int Notu;
       }Ogrenciler[2];       //Dizi olarak yapı tanımlanması

       main()
       {
       int i;
       clrscr();            //Yapı içine veri aktarma
       for (i=0; i<3; i++) {
                 fflush(stdin);
                 gets(Ogrenciler[i].Ad);
                 scanf(quot;%dquot;,&Ogrenciler[i].Notu);
                 printf(quot;nquot;);
                 }
       for (i=0; i<3; i++){//Veri çı sı alma
                                     ktı
                 printf(quot;n%d öğ rencinin adı ve notu: %s %dquot;, i,
                 Ogrenciler[i].Ad, Ogrenciler[i].Notu);
                 }
       }

     ağ iş
     Aş ı
        daki aretçiler ile ilgili C dilinde olan satı nı
                                                    rları inceleyiniz.

char *hata = quot;Dosya yok!quot; //metin işaretçilere ilk değ atanabilir
                                                      er


int *iptr;
iptr = (int *) 0x1b64;
//Belli bir adres işaretçiye atanabilir, ama tehlikelidir, neden?
*iptr = 2001;           //işaretçiye değ aktarı
                                        er       mı
printf (quot;n%pquot;, iptr); //ekrana 1B64 yazar
printf (quot;n%dquot;, *iptr); //ekrana 2001 yazar
printf (quot;n%Xquot;, &iptr); //ekrana FFF2 benzeri işaretçinin adresini yazar


char far *cptr;     //1 MB (0-FFFFF) içinde tanımlanabilen işaretçi
p = (char far *) 0x124532bc   //1245 segment, 32bc offset adresidir


char far *ekran = (char far *) 0xb8000000;
//B800 DOS’un ekran bilgilerinin tutulduğ yerdir
                                         u
*(ekran+20) = '#';
*(ekran+21) = 10;
//metin ekranı ilk satı nı 11. sütununa # karakterini basar
              n         rı n
//Neden 20 deyince 11. sütun oldu?
//Not: Çift adresler veri, tek adresler renk bilgisi olarak kullanı r
                                                                   lı


int a[3] = {12, 55, 88};          //üç elemanlı dizi ve ilk değ atamaları
                                                               er
int *iptr;                        //int *iptr = a; da olabilirdi
iptr = a;

                                         37
//dizi başlangı adresi & ile gösterilemez
                ç
 printf (quot;n%dquot;,*(iptr+1));
 //ekrana 55 yazar
 printf (quot;n%dquot;, iptr[2]);
 //ekrana 88 yazar; *(iptr+2) ile iptr[2] aynı anlamdadır


 void deneme (int *iptr) //fonksiyona bir değ kenin adresi gelecek
                                              iş
 {
 *iptr=100;          //işaretçinin gösterdiğ yere değ aktarı r
                                            i        er       lı
 }
 void main(void)     //void ne anlama gelir?
 {
 int x;
 deneme (&x);        //x değ keninin adresi fonksiyona yollanı
                            iş                                r
 printf (quot;%dquot;, x);   //ekrana 100 yazar
 }


 char *ad_oku (void) //değ döndüren fonksiyon
                          er
 {
  char s[50];
  printf (quot;Adı z=quot;);
              nı
  gets(s);
  return s;          //okunan metnin değeri gönderilir
 }
 main()
 {
  char *cptr;
  cptr= ad_oku();
 //dönecek değ ancak bir char tipi iş
              er                       aretçiye aktarı labilir
  printf(quot;%squot;, cptr);
 }


      Üstte ekran belleğ ulaş ile ilgili bir örnek vardı Sizce belleğ istediğ
                         ine     ma                     r.             in     iniz
          ı
yerine ulaşlmasıprogramcı özgürlük mü sağ yor, yoksa tam tersine, hazıekrana yazı
                          ya              lı                          r
yazma komutlarıdururken böyle iş yapmak, daha da kıtlı ortam mı lı
                               lem                 sı bir          sağ yor?




                                       38
ÖNERİ
               LEN KAYNAKLAR

         ÖNERİ
             LEN KAYNAKLAR
   computer.howstuffworks.com

   en.wikipedia.org/wiki/Pointer

   java.sun.com/docs/books/tutorial/java

   www.bloodshed.net/devcpp.html

   www.robsite.de/programme.php?prog=ccompiler

   www.seslisozluk.com

   www.yunus.projesi.com




                                    39
KAYNAKÇA

                   KAYNAKÇA
       RIYANIK Tarı Programlama Ders Notlarıve UygulamalıGenel
    BAĞ              k,
    Programlama Kitabı(www.yunus.projesi.com)

   WALLACE Wang, Beginning Programming for Dummies, Wiley Bası
                                                              mevi,
    Indianapolis, 2004




                             40

More Related Content

What's hot (15)

7-Post(İlk Açılış)
7-Post(İlk Açılış)7-Post(İlk Açılış)
7-Post(İlk Açılış)
 
SDÜ EHM Bitirme Projesi Tez
SDÜ EHM Bitirme Projesi TezSDÜ EHM Bitirme Projesi Tez
SDÜ EHM Bitirme Projesi Tez
 
Designing A Smart Solar Car
Designing A Smart Solar CarDesigning A Smart Solar Car
Designing A Smart Solar Car
 
Teknik resim ve çizim teknolojileri 520 tc0005 (2)
Teknik resim ve çizim teknolojileri 520 tc0005 (2)Teknik resim ve çizim teknolojileri 520 tc0005 (2)
Teknik resim ve çizim teknolojileri 520 tc0005 (2)
 
8-Monitorler
8-Monitorler8-Monitorler
8-Monitorler
 
213 gim191
213 gim191213 gim191
213 gim191
 
Web tasarım editörüne giriş
Web tasarım editörüne girişWeb tasarım editörüne giriş
Web tasarım editörüne giriş
 
Dış donanım birimleri
Dış donanım birimleriDış donanım birimleri
Dış donanım birimleri
 
Portlar
PortlarPortlar
Portlar
 
6-Portlar
6-Portlar6-Portlar
6-Portlar
 
213 gim082
213 gim082213 gim082
213 gim082
 
Öncel Akademi: Uzmanlık Alan
Öncel Akademi: Uzmanlık AlanÖncel Akademi: Uzmanlık Alan
Öncel Akademi: Uzmanlık Alan
 
Dış donanım birimleri
Dış donanım birimleriDış donanım birimleri
Dış donanım birimleri
 
481 bb0091
481 bb0091481 bb0091
481 bb0091
 
Stratejik Planlama Lisans Tezi
Stratejik Planlama Lisans TeziStratejik Planlama Lisans Tezi
Stratejik Planlama Lisans Tezi
 

Similar to BTT. Modül 18. Veri Yapıları

Similar to BTT. Modül 18. Veri Yapıları (20)

BTT. Modül 17. Yapısal Programlama Temelleri
BTT. Modül 17. Yapısal Programlama TemelleriBTT. Modül 17. Yapısal Programlama Temelleri
BTT. Modül 17. Yapısal Programlama Temelleri
 
14-İşletim Sistemleri Gelismis Özellikleri
14-İşletim Sistemleri Gelismis Özellikleri14-İşletim Sistemleri Gelismis Özellikleri
14-İşletim Sistemleri Gelismis Özellikleri
 
10-Görüntü İşleme Cihazları
10-Görüntü İşleme Cihazları10-Görüntü İşleme Cihazları
10-Görüntü İşleme Cihazları
 
12.İşletim Sistemleri Kurulum
12.İşletim Sistemleri Kurulum12.İşletim Sistemleri Kurulum
12.İşletim Sistemleri Kurulum
 
BTT.Modül 9. Yazicilar
BTT.Modül 9. YazicilarBTT.Modül 9. Yazicilar
BTT.Modül 9. Yazicilar
 
11-İşletim Sistemleri Temeller
11-İşletim Sistemleri Temeller11-İşletim Sistemleri Temeller
11-İşletim Sistemleri Temeller
 
11 isletimsistemleritemeller-090313144650-phpapp01
11 isletimsistemleritemeller-090313144650-phpapp0111 isletimsistemleritemeller-090313144650-phpapp01
11 isletimsistemleritemeller-090313144650-phpapp01
 
Fireworks 2
Fireworks 2Fireworks 2
Fireworks 2
 
Nesne tabanlı programlama 4
Nesne tabanlı programlama 4Nesne tabanlı programlama 4
Nesne tabanlı programlama 4
 
Coreldraw
CoreldrawCoreldraw
Coreldraw
 
Vektorel coreldraw
Vektorel coreldrawVektorel coreldraw
Vektorel coreldraw
 
Nesne tabanlı programlama 3
Nesne tabanlı programlama 3Nesne tabanlı programlama 3
Nesne tabanlı programlama 3
 
Nesne tabanlı programlama 2
Nesne tabanlı programlama 2Nesne tabanlı programlama 2
Nesne tabanlı programlama 2
 
Teknik resim 520 tc0014
Teknik resim 520 tc0014Teknik resim 520 tc0014
Teknik resim 520 tc0014
 
Teknik resim ve çizim teknolojileri 520 tc0029 (1)
Teknik resim ve çizim teknolojileri 520 tc0029 (1)Teknik resim ve çizim teknolojileri 520 tc0029 (1)
Teknik resim ve çizim teknolojileri 520 tc0029 (1)
 
482 bk0082
482 bk0082482 bk0082
482 bk0082
 
Flash 1
Flash 1Flash 1
Flash 1
 
347 ch0013
347 ch0013347 ch0013
347 ch0013
 
Tasarımın temel ilkeleri
Tasarımın temel ilkeleriTasarımın temel ilkeleri
Tasarımın temel ilkeleri
 
9-Yazıcılar
9-Yazıcılar9-Yazıcılar
9-Yazıcılar
 

More from deniz armutlu

Dijital olcme ve egitim araclari deniz 2014 v1
Dijital olcme ve egitim araclari deniz 2014 v1Dijital olcme ve egitim araclari deniz 2014 v1
Dijital olcme ve egitim araclari deniz 2014 v1deniz armutlu
 
Dönem sonu işlemleri
Dönem sonu işlemleriDönem sonu işlemleri
Dönem sonu işlemlerideniz armutlu
 
Adobe Photoshop cs5 ı kullanma
Adobe Photoshop cs5 ı kullanma Adobe Photoshop cs5 ı kullanma
Adobe Photoshop cs5 ı kullanma deniz armutlu
 
Flashplatform optimizing content türkçe
Flashplatform optimizing content türkçeFlashplatform optimizing content türkçe
Flashplatform optimizing content türkçedeniz armutlu
 
Adobe Flash cs4 türkçe
Adobe Flash cs4 türkçeAdobe Flash cs4 türkçe
Adobe Flash cs4 türkçedeniz armutlu
 
Adobe Flash ActionScript 3 Programlama Türkçe
Adobe Flash ActionScript 3 Programlama TürkçeAdobe Flash ActionScript 3 Programlama Türkçe
Adobe Flash ActionScript 3 Programlama Türkçedeniz armutlu
 
Adobe Flash ActionScript 3 components help Türkçe
Adobe Flash ActionScript 3 components help TürkçeAdobe Flash ActionScript 3 components help Türkçe
Adobe Flash ActionScript 3 components help Türkçedeniz armutlu
 
Flash as3 bileşenlerini kullanma
Flash as3 bileşenlerini kullanmaFlash as3 bileşenlerini kullanma
Flash as3 bileşenlerini kullanmadeniz armutlu
 
Adobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçeAdobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçedeniz armutlu
 
Adobe Flash cs4 türkçe
Adobe Flash cs4 türkçeAdobe Flash cs4 türkçe
Adobe Flash cs4 türkçedeniz armutlu
 
Adobe flash cs3 yardımcı el kitabı türkçe
Adobe flash cs3 yardımcı el kitabı türkçeAdobe flash cs3 yardımcı el kitabı türkçe
Adobe flash cs3 yardımcı el kitabı türkçedeniz armutlu
 
Adobe flash cs4 pro uygulamasını kullanma
Adobe flash cs4 pro uygulamasını kullanmaAdobe flash cs4 pro uygulamasını kullanma
Adobe flash cs4 pro uygulamasını kullanmadeniz armutlu
 
Adobe action script 3.0 Türkçe Kitapçık
Adobe action script 3.0 Türkçe KitapçıkAdobe action script 3.0 Türkçe Kitapçık
Adobe action script 3.0 Türkçe Kitapçıkdeniz armutlu
 
Adobe actionscript 3.0 programlama türkçe
Adobe actionscript 3.0 programlama türkçeAdobe actionscript 3.0 programlama türkçe
Adobe actionscript 3.0 programlama türkçedeniz armutlu
 
Adobe Fireworks CS3 Türkçe Yardım Kitapçığı
Adobe Fireworks CS3 Türkçe Yardım KitapçığıAdobe Fireworks CS3 Türkçe Yardım Kitapçığı
Adobe Fireworks CS3 Türkçe Yardım Kitapçığıdeniz armutlu
 
Adobe Fireworks CS5 Türkçe Yardım Kitapçığı
Adobe Fireworks CS5 Türkçe Yardım KitapçığıAdobe Fireworks CS5 Türkçe Yardım Kitapçığı
Adobe Fireworks CS5 Türkçe Yardım Kitapçığıdeniz armutlu
 
Adobe Fireworks CS4 Kullanım Kitapçığı Türkçe
Adobe Fireworks CS4 Kullanım Kitapçığı TürkçeAdobe Fireworks CS4 Kullanım Kitapçığı Türkçe
Adobe Fireworks CS4 Kullanım Kitapçığı Türkçedeniz armutlu
 
Fireworks CS4 Türkçe Kullanım Kitapçığı
Fireworks CS4 Türkçe Kullanım KitapçığıFireworks CS4 Türkçe Kullanım Kitapçığı
Fireworks CS4 Türkçe Kullanım Kitapçığıdeniz armutlu
 
Adobe photoshop cs3 tr
Adobe photoshop cs3 trAdobe photoshop cs3 tr
Adobe photoshop cs3 trdeniz armutlu
 
Adobe photoshop CS4 Türkçe Açıklamalı Kitap
Adobe photoshop CS4 Türkçe Açıklamalı KitapAdobe photoshop CS4 Türkçe Açıklamalı Kitap
Adobe photoshop CS4 Türkçe Açıklamalı Kitapdeniz armutlu
 

More from deniz armutlu (20)

Dijital olcme ve egitim araclari deniz 2014 v1
Dijital olcme ve egitim araclari deniz 2014 v1Dijital olcme ve egitim araclari deniz 2014 v1
Dijital olcme ve egitim araclari deniz 2014 v1
 
Dönem sonu işlemleri
Dönem sonu işlemleriDönem sonu işlemleri
Dönem sonu işlemleri
 
Adobe Photoshop cs5 ı kullanma
Adobe Photoshop cs5 ı kullanma Adobe Photoshop cs5 ı kullanma
Adobe Photoshop cs5 ı kullanma
 
Flashplatform optimizing content türkçe
Flashplatform optimizing content türkçeFlashplatform optimizing content türkçe
Flashplatform optimizing content türkçe
 
Adobe Flash cs4 türkçe
Adobe Flash cs4 türkçeAdobe Flash cs4 türkçe
Adobe Flash cs4 türkçe
 
Adobe Flash ActionScript 3 Programlama Türkçe
Adobe Flash ActionScript 3 Programlama TürkçeAdobe Flash ActionScript 3 Programlama Türkçe
Adobe Flash ActionScript 3 Programlama Türkçe
 
Adobe Flash ActionScript 3 components help Türkçe
Adobe Flash ActionScript 3 components help TürkçeAdobe Flash ActionScript 3 components help Türkçe
Adobe Flash ActionScript 3 components help Türkçe
 
Flash as3 bileşenlerini kullanma
Flash as3 bileşenlerini kullanmaFlash as3 bileşenlerini kullanma
Flash as3 bileşenlerini kullanma
 
Adobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçeAdobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçe
 
Adobe Flash cs4 türkçe
Adobe Flash cs4 türkçeAdobe Flash cs4 türkçe
Adobe Flash cs4 türkçe
 
Adobe flash cs3 yardımcı el kitabı türkçe
Adobe flash cs3 yardımcı el kitabı türkçeAdobe flash cs3 yardımcı el kitabı türkçe
Adobe flash cs3 yardımcı el kitabı türkçe
 
Adobe flash cs4 pro uygulamasını kullanma
Adobe flash cs4 pro uygulamasını kullanmaAdobe flash cs4 pro uygulamasını kullanma
Adobe flash cs4 pro uygulamasını kullanma
 
Adobe action script 3.0 Türkçe Kitapçık
Adobe action script 3.0 Türkçe KitapçıkAdobe action script 3.0 Türkçe Kitapçık
Adobe action script 3.0 Türkçe Kitapçık
 
Adobe actionscript 3.0 programlama türkçe
Adobe actionscript 3.0 programlama türkçeAdobe actionscript 3.0 programlama türkçe
Adobe actionscript 3.0 programlama türkçe
 
Adobe Fireworks CS3 Türkçe Yardım Kitapçığı
Adobe Fireworks CS3 Türkçe Yardım KitapçığıAdobe Fireworks CS3 Türkçe Yardım Kitapçığı
Adobe Fireworks CS3 Türkçe Yardım Kitapçığı
 
Adobe Fireworks CS5 Türkçe Yardım Kitapçığı
Adobe Fireworks CS5 Türkçe Yardım KitapçığıAdobe Fireworks CS5 Türkçe Yardım Kitapçığı
Adobe Fireworks CS5 Türkçe Yardım Kitapçığı
 
Adobe Fireworks CS4 Kullanım Kitapçığı Türkçe
Adobe Fireworks CS4 Kullanım Kitapçığı TürkçeAdobe Fireworks CS4 Kullanım Kitapçığı Türkçe
Adobe Fireworks CS4 Kullanım Kitapçığı Türkçe
 
Fireworks CS4 Türkçe Kullanım Kitapçığı
Fireworks CS4 Türkçe Kullanım KitapçığıFireworks CS4 Türkçe Kullanım Kitapçığı
Fireworks CS4 Türkçe Kullanım Kitapçığı
 
Adobe photoshop cs3 tr
Adobe photoshop cs3 trAdobe photoshop cs3 tr
Adobe photoshop cs3 tr
 
Adobe photoshop CS4 Türkçe Açıklamalı Kitap
Adobe photoshop CS4 Türkçe Açıklamalı KitapAdobe photoshop CS4 Türkçe Açıklamalı Kitap
Adobe photoshop CS4 Türkçe Açıklamalı Kitap
 

BTT. Modül 18. Veri Yapıları

  • 1. T.C. Mİ EĞİ M BAKANLIĞI LLÎ Tİ MEGEP (MESLEKİ İ M VE ÖĞ EĞ Tİ RETİ Sİ M STEMİ N Nİ GÜÇLENDİ LMESİ Rİ PROJESİ ) Bİ ŞM TEKNOLOJİ Lİİ LERİ VERİYAPILARI ANKARA 2007
  • 2. Milli Eğ Bakanlıı ğ tarafı geliş itim ndan tirilen modüller;  Talim ve Terbiye Kurulu Baş ğnı 02.06.2006 tarih ve 269 sayı Kararı ı kanlı n lı ile onaylanan, Mesleki ve Teknik Eğ Okul ve Kurumları kademeli olarak itim nda yaygı tılan 42 alan ve 192 dala ait çerçeve öğ nlaşrı retim programlarında amaçlanan mesleki yeterlikleri kazandı rmaya yönelik geliş tirilmişöğretim materyalleridir (Ders Notları r). dı  Modüller, bireylere mesleki yeterlik kazandı rmak ve bireysel öğrenmeye ş rehberlik etmek amacı öğ yla renme materyali olarak hazı rlanmı denenmek ve , geliş tirilmek üzere Mesleki ve Teknik Eğ itim Okul ve Kurumları nda ş uygulanmaya baş lanmı r. tı  Modüller teknolojik geliş melere paralel olarak, amaçlanan yeterliğ i kazandı rmak koş ile eğ ulu itim öğ retim sı nda geliş rası tirilebilir ve yapı lması önerilen değ iklikler Bakanlı ilgili birime bildirilir. iş kta  Örgün ve yaygı eğ kurumları letmeler ve kendi kendine mesleki yeterlik n itim , iş ı kazanmak isteyen bireyler modüllere internet üzerinden ulaşlabilirler.  Bası ş ılı lmımodüller, eğ kurumları öğ itim nda rencilere ücretsiz olarak dağtır.  Modüller hiçbir ş lamaz ve ücret karş ğ ıı ekilde ticari amaçla kullanı lı nda satı lamaz.
  • 3. İ NDEKİ Çİ LER AÇIKLAMALAR ....................................................................................................................ii Gİ Ş.......................................................................................................................................1 Rİ ÖĞ RENME FAALİ YETİ 1 ...................................................................................................3 - 1. Dİ LER .............................................................................................................................. 3 Zİ 1.1. Dizi Değ kenini Tanı iş mlama ......................................................................................4 1.2. Dizi Değ keni ile Veri Saklama................................................................................. 5 iş 1.3. Çok Boyutlu Diziler....................................................................................................5 1.4. Dinamik Diziler ..........................................................................................................7 1.5. Yapı ........................................................................................................................8 lar 1.6. Yapı Dizi Olarak Kullanmak................................................................................. 9 ları UYGULAMA FAALİ YETİ ............................................................................................ 10 ÖLÇME VE DEĞ ERLENDİ RME .................................................................................. 11 ÖĞ RENME FAALİ YETİ 2 ................................................................................................. 12 - 2. İARETÇİ .................................................................................................................. 12 Ş LER 2.1. İş aretçi Nedir?........................................................................................................... 12 2.2. Bağ Liste Tanı lı mlama.............................................................................................. 14 2.3. Bağ Listeyi Kullanma .............................................................................................15 lı 2.4. Çift Bağ Listeler ..................................................................................................... 16 lı 2.5. Dairesel Bağ Listeler .............................................................................................. 16 lı ğ ı 2.6. Yın .........................................................................................................................17 2.7. Kuyruk ...................................................................................................................... 17 2.8. Ağ .......................................................................................................................... 18 aç 2.9. Grafik ........................................................................................................................ 19 UYGULAMA FAALİ YETİ ............................................................................................ 21 ÖLÇME VE DEĞ ERLENDİ RME .................................................................................. 22 ÖĞ RENME FAALİ YETİ 3 ................................................................................................. 23 - 3. NESNE TABANLI PROGRAMLAMA ............................................................................23 3.1. Kolay Programlama Yöntemi ................................................................................... 23 3.2. Nesne Kullanı ....................................................................................................... 25 mı 3.3. Dil Seçimi ................................................................................................................. 27 UYGULAMA FAALİ YETİ ............................................................................................ 29 ÖLÇME VE DEĞ ERLENDİ RME .................................................................................. 30 MODÜL DEĞ ERLENDİ RME .............................................................................................. 31 CEVAP ANAHTARLARI ..................................................................................................... 32 SÖZLÜK ................................................................................................................................ 33 KOD ÖRNEKLERİ ................................................................................................................34 ÖNERİ LEN KAYNAKLAR.................................................................................................. 39 KAYNAKÇA .........................................................................................................................40 i
  • 4. AÇIKLAMALAR AÇIKLAMALAR KOD 481BB0027 ALAN Biliş Teknolojileri im DAL/MESLEK Alan Ortak MODÜLÜN ADI Veri Yapı ları Dizi, işaretçiler ve nesneye yönelik program yazma ile MODÜLÜN TANIMI ilgili öğ renme materyalidir. SÜRE 40/24 ÖN KOŞUL ş Yapı Programlama Temelleri modülünü almıolmak. sal YETERLİ K Veri yapı yla program yazmaya hazı k yapmak ları rlı Genel Amaç ğı Gerekli ortam sağ landında, dizi ve iş aretçileri tanı p nesneye yönelik program yazabileceksiniz. yı Amaçlar MODÜLÜN AMACI 1. Dizi mantıı anlayacak ve dizi değ kenleri ğnı iş kullanabileceksiniz 2. İşaretçiler ile program yazabileceksiniz 3. Nesneye yönelik program yazabileceksiniz Bilgisayar laboratuvarı bu ortamda bulunan; ve EĞİ M ÖĞRETİ Tİ M bilgisayar, yazı, bilgisayar masaları ı kalem, lisanslı cı , kâğt, ORTAMLARI VE ş işletim sistemi programı akıdiyagramı ve sembolleri ile DONANIMLARI ilgili panolar. Her faaliyet sonrası o faaliyetle ilgili nda değ erlendirme soruları kendi kendinizi ile değ erlendireceksiniz. Modül içinde ve sonunda verilen öğ retici sorularla edindiğ bilgileri pekiş iniz tirecek, ÖLÇME VE uygulama örneklerini ve testleri gerekli süre içinde DEĞERLENDİ RME tamamlayarak etkili öğ renmeyi gerçekleş tireceksiniz. ş Sı yla araşrma yaparak, grup çalı rası tı maları katı na larak ve ş ölçme ve en son aş amada alan öğ retmenlerine danı arak değ erlendirme uygulamaları gerçekleş nı tireceksiniz.. ii
  • 5. Gİ Ş Rİ Gİ Ş Rİ Sevgili Öğ renci, Bu modül ile sizlere diziler, iş aretçiler ve nesne tabanlıprogramlama konuları ilgili ile yeterlik kazandıracaktı Öncelikle bu modülü daha iyi anlamanı için, daha önceki r. z ğz ı programlama temelleri modüllerinde kavrayamadını yerler varsa onlarıpekiş tiriniz. Değ kenler, döngüler ve dosyalama konuları tekrar gözden geçirmeniz tavsiye edilir. iş nı Önceki modülleri anlayarak buraya gelmişiseniz, daha ileri seviye programlama konuları geçebilirsiniz. “Veri Yapı ” modülü ile bir program yazı nda gerekli olan ları na mı bazı eksikliklerimizi gidereceksiniz. Bilgisayarı belleğ ve programı zdaki verileri daha n ini nı etkin kullanacaksı z. nı Programlamada veri yapı larıen önemli unsurlardan birisidir. Program yazarken lacak veri yapını en ideal ş kullanı sın ekilde belirlenmesi, programcıkta biraz daha lı ustalaşman anlamı gelmektedir. Program içerisinde iş na lenecek veriler diziler ile ş tanımlanmıbir veri bloğ içerisinden seçilebileceğ gibi, iş u i aretçiler kullanılarak daha etkin şekilde hafı zada saklanabilir. Veri yapı , dizi ve iş ları aretçiler ile yapı nı yanı lması n nda, nesneler ile de gerçekleş tirilebilir. 1
  • 6. 2
  • 7. ÖĞRENME FAALİ YETİ –1 ÖĞRENME FAALİ YETİ 1 - AMAÇ Mehmet Dizi mantıı anlayacak, dizi ve yapı iş ğnı değ kenleri kullanabileceksiniz. ARAŞ TIRMA aş ı Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma rlı tı faaliyetlerini yapmalını sı z.  Banka ve hastane gibi yerlerde kuyrukta bekleyenlerin iş kolaylaşran ini tı ş “Sıramatik” isimli programı inceleyiniz. Sizce bu program nasıdaha kullanı l lı hâle getirilebilir?  Kargo firmaları n (Aras, Fedex ve DHL gibi) kargo takip programı nı nı inceleyiniz. Paketlerin internet üzerinden nasıtakip edildiğ inceleyiniz. l ini 1. Dİ LER Zİ Birkaç tane değ ken ile küçük programları iş idare edebilirsiniz. Programlamada uzun “dizi - array” ile yapı ve benzer bilgilerle dolu değ listelerin oluş er turulması lmaktadı Veri r. sı aş ı yapını ağdaki gibi ayrı iş yapabileceğ gibi: değ ken iniz Ad1 = quot;Aliquot; Ad2 = quot;Veliquot; Ad3 = quot;Mehmetquot; Bunun yerine dizi kullanarak, tek değ ken ile ş ş iş u ekilde yapabilirsiniz: Ad(1) = quot;Aliquot; Ad(2) = quot;Veliquot; Ad(3) = quot;Mehmetquot; 3
  • 8. Dikkat ederseniz, önceki örnekte 3 ayrıdeğ kenimiz varken, sonrakinde ise tek iş değ ken olan “Ad” kullanı şr. Dizi sayesinde tek değ ken ismi ile birden fazla değ iş lmı tı iş er saklanabilmektedir. 3 elemanlı dizi; Ad bir Ad(2) Ad(1) Ad(3) Ali Veli Mehmet 1.1. Dizi Değ kenini Tanı iş mlama Normalde bir değ kenin bir adı bir değ olabilir. Dizi değ kenlerinin de bir adı iş ve eri iş vardı ama içinde aynı r, türde çok sayı veri saklanabilir. Tanı da mlarken dizinin boyutunu belirtmemiz mecburidir. Dizi boyutu tam sayıolarak belirtilmeli, negatif girilmemelidir. Not: Programlama dillerinde genellikle ilk dizi elemanı n indis numarası nı “0”dı QBasic dilinde r. “Option Base – Taban Seçeneğ ile varsayı alt limiti 0 veya 1 olarak değ tirebilirsiniz. i” lan iş Dizi elemanları tanı nı mlanmadan önce “Option Base 1” olarak seçilmiş ise, 0. elemandan değ 1. il elemandan baş r. lanı 1. Baş la 2. Metin Dizi Ad(3) 3. Ad(1) = “Ali” 4. Ad(2) = “Veli” 5. Ad(3) = “Mehmet” 6. Yaz; Ad(1) 7. Yaz; Ad(2) 8. Yaz; Ad(3) 9. Bitir Resim 1.1: Dizi örneğ ve ekran çı sı i ktı 4
  • 9. 1.2. Dizi Değ keni ile Veri Saklama iş mlandı satı çalı rı ğnda, ana bellekte ş ldı tı ı Programdaki dizi değ kenlerinin tanı iş kları rlar dizi boyutunca yer ayrır. Değ ken ile olan iş bitince ayrı bellek bölgesi silinir. Belli lı iş lem lan nı ş ı bir bellek alanıayrı ndan dolayıdizinin maksimum sırıdındaki diğ bellek lması er bölgesine eriş emeyiz. Dizilere değ aktarma veya okuma iş er lemlerinde döngü komutlarıkullanı lmaktadı r. Hangi döngüyü kullanı z kullanı baş ç ve bitiş erlerini iyi belirleyiniz, yoksa rsanı n, langı değ programız hata verip kapanı Sı rıaltı veya üstünde indis vermemek gerekir. nı r. nın nda 1. Baş la 2. Metin Dizi Ad(3) 3. Sayı i, j sal 4. Döngü i = 1, 3, 1 5. Yaz; i & “. ismi giriniz” 6. Oku; Ad(i) 7. Döngü Bitti 8. Yaz; “Girilen isim listesi” 9. Döngü i = 1, 3, 1 10. Yaz; Ad(i) 11. Döngü Bitti 12. Bitir Resim 1.2: Döngü ile dizi kullanı mı 1.3. Çok Boyutlu Diziler Şimdiye kadar verdiğ imiz örnekler tek boyutlu dizi örnekleridir. Bu tip diziler aynen tren vagonları bellekte peş e değ gibi peş erlere sahip olan değ kenlerdir. iş 5
  • 10. ndaki gibi satı ve sütunlu hücrelerden oluş dizilere; iki Tablolama programları r an boyutlu dizi denir. Resim 1.3’te görüldüğ gibi herhangi bir hücrenin değ ü erine satıve sütun r ilebilmektedir. Matematikteki matrisler de çok boyutlu dizilerdir. bilgisini kullanarak eriş 1. boyut 2. boyut Resim 1.3: Excel’de bir sayfa 2 boyutlu diziye benzetilebilir inde küp ş ekline benzeyen 3 boyutlu dizi elde edilir. Bu Bir boyut daha eklendiğ dizilerde satıve sütun bilgisinin yanı derinlik bilgisi de eklenir. r nda 2. boyut 1. boyut 3. boyut Resim 1.4: 3 boyutlu dizi TextBox5 TextBox6 Resim 1.5: Çok boyutlu dizi örneğ burada dizi 0 indis numarası başyor i, ile lı mlanması boyutlu diziye benzer ş Çok boyutlu dizilerin tanı tek ekilde yapı lmaktadı r: 6
  • 11. Başla Metin Dizi bilgi(2, 6) Sayısal i, j, satı sütun r, Döngü i = 1, 2, 1 Döngü j = 1, 6, 1 Oku; bilgi(i, j) Döngü Bitti Döngü Bitti Oku; quot;Satı ve sütun bilgisini girinizquot;, satı sütun r r, Yaz; quot;Aranan bilgi: quot;, bilgi(satı sütun) r, Bitir Bu örnekte 2 satı ve 6 sütun olduğ için, 2 * 6 yani 12 adet metin bilgisi r u bulunmaktadı İ boyut olduğ undan iç içe iki döngü hazı k. İ döngünün “i” değ keni r. ki rladı lk iş şı satıseçicisi, ikinci iç döngünün “j” değ keni de sütun seçici olarak çalıyor. Bilgi(i, j) r iş üzerine veri aktarı döngü sonunda hangi satı ve sütun isteniyor ise ekrana değ p, r eri getiriliyor. 1.4. Dinamik Diziler ş Çoğ dil sadece statik sırlıdizi imkânı u nı sunar, yani çalı zamanı dizilerin ma nda eleman sayını sı rı değ tiremezsiniz. Eğ dizi büyük gelmiş dizi kı lamaz, ya sı n nını iş er ise saltı da tam tersi uzatı lamaz. Statik dizi içi boş olsa hafı yer kaplamaktadı bile zada r. Resim 1.6 : C dilinde dinamik dizi yoktur zayıetkin kullanmak için “dinamik dizi” kullanabilirsiniz. İ Hafı sterseniz diziyi boyutlandı rabilirsiniz, ya da silebilirsiniz. Not: Basic dilinde dinamik diziler için “Redim - Boyutlandı komutu kullanır. Bu komut ile eski dizi r” lı bilgileri silinir. Dizinin değ ken türünü değ tiremezsiniz. iş iş Dizilerde dizi sı rı nınıdeğ tirebilirsiniz, ama 2 boyutlu bir diziyi 3 boyutlu dizi iş yapamazsı z. nı TextBox8 TextBox7 Resim 1.7: Dinamik dizi örneği 7
  • 12. 1. Baş la 2. Metin Dizi dinamikDizi() 3. Sayı i, sı r, eleman sal nı 4. Oku; “Dizi sı rı giriniz”, sı r nını nı 5. BoyutlandıdinamikDizi(sı r) r nı 6. Döngü i = 1, sır, 1 nı 7. Oku; dinamikDizi(i) 8. Döngü Bitti 9. Oku; “Eleman numarası giriniz”, eleman nı 10. Yaz; dinamikDizi(eleman) 11. Bitir Dizilerde farklıveri türlerini saklama imkânı yoktur. Yani öğ renci listesinde öğrenci isimleri metin, öğ renci numaraları sayı türünde olsun diyemezsiniz. Tüm elemanları türü n aynı r. Bu eksiklik “yapı kullanı dı ” mıile giderilmektedir. Bir yapı istediğ da iniz türde değ kenleri beraber tanı iş mlayarak tek isim altı kullanabilirsiniz. nda 1.5. Yapı lar “Yapı Programlama Temelleri” modüldeki dosyalama kı nda, yapı ve kayı sal smı lar tlar şı hakkı az da olsa giriş nda bilgisi verilmiş Sayı metin değ kenleri karık olarak bir yapı ti. ve iş (structure) içine kaydedebiliyoruz. Ad1 = quot;Aliquot; Notu1 = 45 Ad2 = quot;Veliquot; Notu2 = 55 Ad3 = quot;Mehmetquot; Notu3 = 75 Bunun yerine artış ş k u ekilde yapabiliriz: Ogrenci1.Ad = quot;Aliquot; Ogrenci1.Notu = 45 Ogrenci2.Ad = quot;Veliquot; Ogrenci2.Notu = 55 Ogrenci3.Ad = quot;Mehmetquot; Ogrenci3.Notu = 75 Görüldüğ gibi farklıtürlerde birbiri ile iliş yapıelemanları“Ad ve Notu” ü kili değ kenleri beraber, tek bir isim olan “Ogrenci” yapında toplanı iş sı yor. Yapı Kisi Metin Ad Sayı sal Yas Yapı Bitti birKisi Kisi Dosyalama konusunda “Kisi” değ ken isminde yapıhazı şk. Programcın iş rlamı tı nı kendi yaptı değ kenlere “kullanı tanı veri türü – user defined variable” de denir. ğ iş ı cı mlı 8
  • 13. Yapı n Genel Kullanı nı mı KayitDegiskeni.Degisken = quot;Veriquot; Degisken = KayitDegiskeni.Degisken 1.6. Yapı Dizi Olarak Kullanmak ları Dizi olarak kullanı sadece yapı kullanacak değ kenin yazı değ mektedir. mda yı iş mı iş Yani yapı smı ş kı aynıekilde tanı mlanı değ ken kı değ ir. rken iş smı iş Başla Yapı birÖğrenci Metin Ad Sayısal Notu Yapı Bitti birÖğrenci Dizi Öğrenci(3) Sayısal i Döngü i = 1, 3, 1 Oku; quot;Öğrenci adı giriniz quot;, Öğ nı renci(i).Ad Oku; quot;Öğrenci notunu giriniz quot;, Öğrenci(i).Notu Döngü Bitti Döngü i = 1, 3, 1 Yaz; quot;Öğrenci adı quot;, Öğrenci(i).Ad Yaz; quot;Öğrenci notu quot;, Öğrenci(i).Notu Döngü Bitti Bitir 9
  • 14. UYGULAMA FAALİ YETİ UYGULAMA FAALİYETİ İlem Basamakları ş Öneriler İ 1. Bir dizi oluş turunuz. simlendirmede değ ken iş isimlendirme kuralları uyunuz. na 2. Dizi elemanı değ aktarı z. na er nı Dizilerin ilk indis numarası genellikle 0 veya 1 ile baş Değ aktardı sonra ekranda lar. er ktan değ erlerini listeleyiniz. 3. Döngü içinde diziye veri giriniz ve Genellikle “Döngü – For” döngüsü ile veri giriş çı şyapı ı labilir. Döngünün değ keni dizinin gösteriniz. kı iş ilerlemesi için kullanır. lı 4. Bir yapı turunuz. oluş Çeş veri türlerine sahip değ kenleri yapı itli iş içine tanı mlayı z. Program içinde nı ğz ı tanı mladınıyapı kullanı z. yı nı 5. Yapı iş ile verileri kontrol değ keni Yapı olarak tanı dizi mlanı döngü içinde veri p, ediniz. girişve ekrana listeleme yapı i labilir. 10
  • 15. ÖLÇME VE DEĞ ERLENDİ ERLENDİRME ÖLÇME VE DEĞ RME Ad(1) A- OBJEKTİ TESTLER (ÖLÇME SORULARI) F Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı şsoruları r. Verilen ağ daki ru dı ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı ş nı ı sorularda uygun şı ru kkı işaretleyiniz. 1. mlamak, diziden daha az bellek alanı gal eder. ( ) Ayrı değ ken tanı ayrı iş iş 2. ( ) Dizi değ kenlerinin indis numaraları iş sadece tam sayıolabilir. 3. ( ) Dizi içinde ondalı değ klı erler saklayabiliriz. 4. ( ) Dizi içindeki veriler otomatik olarak sı ralanı r. 5. ( ) Hangisini dizi olarak tanı mlayamayı z? A) Yapı B) Metin C) Karakter D) Döngü 6. ( ) Genellikle dizi indisi hangi karakterler arası yazır? na lı A) ( ) B) [ ] C) { } D) { ( ) } 11
  • 16. ÖĞRENME FAALİ YETİ –2 ÖĞRENME FAALİ YETİ 2 - AMAÇ Bu öğ renme faaliyetinde iş aretçiler ve iş aretçi yapı ile program yazabileceksiniz. ları ARAŞTIRMA aş ı Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma rlı tı faaliyetlerini yapmalını sı z.  mıvardı İ r? ş Hangi dillerde bağ lıliste veya işaretçi (pointer) kullanı aretçi kullanı nıavantajları dezavantajları araşrı z. mı n ve nı tını  Posta görevlisi mektuplarıadresine nasıulaşrı Bir mektup gönderenden l tıyor? alıya giderken hangi aş cı amalardan geçer, araşrı z. tını 2. İARETÇİ Ş LER ğ zda ı Bir dizi yaptını boyutunu belirtmek zorunda kalı nı Eğ dizi çok küçük ise, rsı z. er bilgilerinizi saklamak için yeterli olmaz, ya da diziniz çok büyükse bilgisayarı değ ana n erli belleğ boş meş edersiniz. Dizilerde baş bir problem de içeriğ kolayca tekrar ini una gul ka in düzenlenememesidir. Yani dizi içeriğ alfabetik olarak sı ini ralamak isterseniz, tüm bilgileri ş dı alı düzenleyip, içine tekrar atmak zorunda kalı nı arı p, rsı z. İşaretçiler ve bağ listeler lı sayesinde dizinizin uzunluğunu esnek olarak kullanabilirsiniz. 2.1. İ şaretçi Nedir? Dizilerdeki bilgiler peşpeş kutulara benzetilebilir. Bağ e lılisteler ise birbirine ş ünebiliriz. İ ş bağ lanmıayrı kutular olarak düş aretçiler birbiri ile ilgili olan, düğ halindeki üm bilgileri birbirine bağ lar. Tupol dilinde iş aretçi, yapı dizi örneklerini inceleyiniz. ve İşaretçi değ kenler sadece “bellek adresi” bilgisini saklayan değ kenlerdir. Diğ iş iş er olabilirler. İ ı değ kenler ise metin veya sayı iş stenilen değ hafı eri zadan çağrmak için adresini bilmeniz yeterlidir. İ ş ş aretçiler C ve C++ programlama dillerinin temel bölümüdür. Yanlıbellek bölgesine mak, kötü bir ş ulaş ekilde programı çökmesi ile sonuçlanabilir. Bunu beyninize rastgele n ünebilirsiniz. İ ş batılan sivri bir iğ gibi düş rı ne aretçileri hatalıkullanmak bilgisayarı n belleğ rastgele kurcalamak anlamı gelir. ini na 12
  • 17. C dilinde işaretçi örneği #include <stdio.h> main(){ int i; /* quot;iquot; tamsayı değ kenlerdir */ iş int *iptr; /* quot;*quot; iş aretçi olduğunu belirtir */ iptr = &i; aretçiye muhakkak bir de ğ ken adresi atanı quot;&quot; adres simgesidir */ /* iş iş r, *iptr = 55; aret etti ğ değ kene 55 değ /* aslı nda işaretçinin iş i iş eri atandı */ clrscr(); printf(quot;%dnquot;,i); /* ekrana 55 yazar */ printf(quot;%dnquot;,*iptr); /* 55 quot;iquot; değ keninin değ iş eri*/ printf(quot;%Xnquot;,iptr); /* FFC8 quot;iquot; değ keninin hafı iş zadaki adresi*/ printf(quot;%Xnquot;,&iptr); /* FFCA işaretçinin adresi*/ printf(quot;%Xnquot;,&i); /* FFC8 quot;iquot; değ keninin hafı iş zadaki adresi*/ getch(); } Resim 2.1a: İaretçi değ keni tanı ş iş mlanan programı çalı n şmadan önceki bellek görüntüsü Resim 2.1b: İaretçi değ keni ve normal bir değ kenin bellek görüntüsü ş iş iş 13
  • 18. 2.2. Bağ Liste Tanı lı mlama Bağ listelerde (linked list) Ş 2.1’de görüldüğ gibi her eleman birbirine iş lı ekil ü aretçiler ile bağdı İ lı r. ş aretçinin en son gösterdiğ ise “nil veya null” adı i verilen boş değ bir erdir. “Nil” liste sonunu belirtir. Asıverileri yer değ tirerek düzenlemek yerine, iş l iş aretçiler tekrar düzenlenerek yer değ tirme iş hı bir ş iş lemi zlı ekilde yapır. lı 3 elemanlı dizi; Ad bir Ad(2) Ad(1) Ad(3) Ali Veli Mehmet 3 elemanlı lı (linked list) bağ liste Düğ (node) üm Düğüm Düğüm Ali Veli Mehmet Boş(nil) İ ş İ ş İ ş aretçi (pointer) aretçi aretçi Ş 2.1: Diziler ve bağ listeler ekil lı Pascal dilinde bağ listeleri aş ı ş lı ağdaki ekilde kullanabiliriz.  Yeni bir iş aretçi tanı mlayalı m: TYPE isaretciAdi= ^KayitTuru;  Hemen tanı mlamanıaltı da yapı zı n nda mı “KayitTuru” tanı mlayalı m: KayitTuru= RECORD Adi: String[15]; Notu: integer; Sonraki: isaretciAdi; END; 14
  • 19. Alt alta yazı bu satı ile yeni bir yapı onun adresini saklayacak bir iş lan rlar ve aretçimiz oldu. “Sonraki” değ keni diğ düğ iş er ümün adresini saklayacaktı r.  Son olarak bu kayıyapını t sı belirten bir değ ken tanı iş mlayalı m: VAR Dugum: isaretciAdi;  Kodları araya getirelim: bir Pascal dilinde bağ liste örneğ lı i PROGRAM bagliListeler; TYPE isaretciAdi= ^KayitTuru; {quot;KayitTuruquot; yapı nı iş sı n aretcisi} KayitTuru= RECORD {yapı veya veri kümesi} Adi: String [15]; Notu: integer; Sonraki: isaretciAdi; {sonraki kayıt} END; VAR Dugum: isaretciAdi; ş Artıprogramı zı “kurulum” kı tamamlanmı r. k mın smı tı  ğz ı Yaptımıdeğ kenlerden sonra, ana programıkod yazı nda ise: iş n mı  Bir düğ oluş m. üm turalı  Düğ veri aktaralı üme m  Düğ ümün iş aretçisini düzenleyelim (baş ç, orta, bitiş langı olarak) BEGIN New(Dugum); {Yeni düğ oluş üm turduk} Dugum^.Adi := 'Ali Can'; {Veri aktardık} Dugum^.Notu:= 45; Dugum^.Sonraki:= nil; {Bağ Listeyi sonlandı yoruz} lı rı writeln('Adı ', : Dugum^.Adi); writeln('Notu: ', Dugum^.Notu); readln; Release(Dugum); {düğümü sildik} END. 2.3. Bağ Listeyi Kullanma lı Bir dizi içindeki bir elemanısildiğinizde, hala bellekte yer kaplayan bir boşalan oluş Ayrı iş yaramayan bir “boş ur. ca e luk”, programda istenmeyen hatalara neden olabilir. 15
  • 20. Bağ listelerde ise düğ silmek çok kolaydı lı üm r:  Düğ ümlerdeki iş aretçileri düzenleyin  Düğ silin ümü Ali Veli Mehmet Boş(nil) Ali Veli Mehmet Boş Ali Veli Mehmet Boş Tek bağ listelerin dezavantajı kaydı lı ilk bulmanı mümkün olmaması r. Yani siz n dı ı sakladıı z için bu mümkün değ ğmı geri yönde gidemezsiniz. Hep sonraki kaydı bağnı n ildir. “Ali” düğ ümü, “Veli” düğ ümünü gösteriyor, ama “Veli” düğümünün önceki düğ ile ilgili üm hiçbir ipucu yoktur. 2.4. Çift Bağ Listeler lı İ iş ki aretçi kullanarak önceki ve sonraki düğ ümlerin adres bilgilerini tutabilirsiniz. Ali Veli Mehmet Boş(nil) Boş(nil) 2.5. Dairesel Bağ Listeler lı İ ve son düğ lk ümün iş aretçileri birbirini gösterebilir. Ali Veli Mehmet 16
  • 21. 2.6. Yı n ğı ğ (stack), özel tek yönlü bağ listelere benzetebiliriz. Ekleme ve silme iş ı Yını lı lemlerini ı sadece listenin en baş ndakiler üzerinde yapabilirsiniz. Üst üste tabaklar gibi düşünebilirsiniz. Alttaki tabaklara ulaş mak için mecburen üstteki tabaklarıkaldı rmak zorundası zdı Yeni bir tabak gelince de yıın üstüne koyarsı z. ğnı nı r. nı “Ters Polonyalı mı Reverse Polish Notation RPN” yöntemi bunu kullanı Yazı – r: Formül: (1 + 2) * 4 Aynı formülün RPN hali: 12+4* Normalde 1 ve 2 toplar, sonucu 4 ile çarparı Sonuç 12 olur. RPN yönteminde ise z. adı olarak ş yapır: m öyle lı  1 rakamı ğnıen üstüne konur. yıın  2 rakamı ğnıüstüne konur, 1 alta iner. yıın  2 ve 1 rakamı ğndan çekilerek toplama iş yapır, sonuç olan 3 yıı n en yıı ğnı lemi lı üstüne konur.  4 rakamı ğnı en üstüne konur, 3 alta iner. yıın  4 ve 3 rakamı ğ yıı çekilerek çarpma iş yapır, sonuç olan 12 yınıen ğn ı ndan lemi lı üstüne konur. Resim 2.2: RPN yöntemi Yınlar genellikle LIFO (Last in First out – Son giren İ çı yöntemini temel alı ğı lk kar) r. 2.7. Kuyruk Kuyruk (queue) listelerinin iki kuralıvardı Birincisi yeni eklenen bilgiler sadece r. sona eklenebilir, ikincisi de silinecek bilgi sadece baş silinebilir. FIFO (First in First out tan – İ giren ilk çı yöntemi de denilmektedir. lk kar), Sinema kuyruğ undaki insanları ünün, ilk giren ilk kuyruktan çı Son gelen ise düş kar. son çı Kuyruğ girmek isterseniz en sona gitmeniz gerekir, biletini alan müş ise en kar. a teri baş olduğ ta undan kuyruktan ayrır. lı 17
  • 22. Resim 2.3: Kuyruk yöntemi 2.8. Ağ aç “Ağ – Tree” listeleri doğrusal veya dairesel ş aç ekilde gitmezler. Kök düğ üzerinde üm dallarıbulunduğ bir listedir. n u programcı bu yönteme “ikilik ağ – binary tree” demektedir. Bir düğ aç Bazı lar üm; boş a, baş bir düğ veya iki düğ iş edebilir. luğ ka üme üme aret Genellikle yapay zekâ programları kullanır. Mesela bir satranç oyunu olabilir. İ nda lı lk ı hamle en üstteki köktür. Yapı labilecek her hamlenin ihtimalleri dallara ayrır. Karş lı oyuncunun hareketine göre de ihtimaller değ erek dallar oluş En son dal “ş – mat” ile iş ur. ah biter. 18
  • 23. Resim 2.4: Ağ listesi ve satranç oyunundaki dallanma* aç 2.9. Grafik Belli bir ş olmayan bağ listelerdir. Bir düğ bir veya daha fazla düğ iş ekli lı üm üme aret edebilir. Resim 2.5: Grafik yöntemi ları– neural network” kurulumunda kullanır. Beyin de bu Genellikle “sinir ağ lı yöntemle iş yapmaktadı Her düğ (neuron), siniri (synapses) temsil eder. Programı z lem r. üm nı ı kça bu geliş karmaş tı klaş miş yöntemleri keş federek algoritmaları zı yeniden nı şekillendireceksiniz. * Toplam 10 ^ 120 ihtimal vardı Evrendeki tahmini atom sayı 10 ^ 75 olduğ göre bu rakam ile r. sı una ı rız. satranç ihtimallerini karş tını laş 19
  • 24. 20
  • 25. UYGULAMA FAALİ YETİ UYGULAMA FAALİYETİ İlem Basamakları ş Öneriler 1. Yapı veri tanı sal mlanabilen bir dilde Her dil iş aretçi imkânısağ lamaz. Uygun dili “işaretçi” oluş turunuz. bulmanıgereklidir. z 2. İ ş aretçiyi bir değ kene bağ nı iş layız. Bir değ ken tanı iş mlayı ona ait iş p, aretçi değ ken tanı iş mlayız. nı İşaretçiyi değ kenin adresine bağ nı iş layı z. Doğ rudan iş aretçiyi kullanarak değ atamaları er yapı z. nı 3. Kayıyapında bir değ ken t sı iş Bir yapı mlayı iş tanı p, aretçi ile yapı n adresini nı tanımlayı z. nı saklayı z. nı Değ atayı ekrana değ listeleyiniz. er p, eri 21
  • 26. ÖLÇME VE DEĞ ERLENDİ ERLENDİRME ÖLÇME VE DEĞ RME 2. boyut OBJEKTİ TESTLER (ÖLÇME SORULARI) F Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı şsoruları r. Verilen ağ daki ru dı ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı ş nı ı sorularda uygun şı ru kkı işaretleyiniz. 1. İ ş ğı aretçi tanı mlandı nda muhakkak bir değ kene bağ iş lanmalı r. ( ) dı 2. Düğ (record) içinde sadece sayı üm bilgisi saklayabiliriz. ( ) 3. Kayıve yapı t aynıkavramlardı ( ) r. 4. rusal bir ş Listeler doğ ekilde birbirine bağ olarak yapırlar. ( ) lı lı 5. Her listenin sonu “nil - null” ile belirtilmelidir. ( ) 6. Hangisi bir veri listesi değ ildir? A) Bağ lı B) Çift bağlı C) Grafiksel D) Yıı ğn 22
  • 27. ÖĞRENME FAALİ YETİ –3 ÖĞRENME FAALİ YETİ 3 - AMAÇ Nesneye yönelik programlama yapabileceksiniz. ARAŞTIRMA aş ı Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma rlı tı faaliyetlerini yapmalını sı z.  Klasik programlama dilleri ile nesne tabanlıprogramlama dillerinin farkları nelerdir?  Yapay zekâ ile ilgili programlarıinceleyiniz. Mesela bilgisayar ile sohbet programları oyunlar gibi. ve 3. NESNE TABANLI PROGRAMLAMA ı zlı Yapı programları lan rahat anlaş r, hı ve görsel nitelikleri zenginleş lı tirilmişduruma getirmek için nesne tabanlı programlama dilleri kullanı labilir. Nesne tabalı programlama labilir. Yine de OOP (Object Oriented dilleri ile güvenilir ve hatadan uzak programlama yapı Programming – nesne tabanlı ı programlama) tek baş bir programı na daha okunaklı hale getiremez. QBasic ve Visual Basic 6 nesne tabanlı programlama dilleri değ ildir. C#, C++ ve Java dillere örnektir. Hangi dilin OOP olduğ tartıladursun, biz ş şı imdilik C++ ile nesne tabanlı u ı ilk denemelerimizi yapacağ z. 3.1. Kolay Programlama Yöntemi Bilgisayarı zı ne kadar güçlü olduğ önemli değ nın u ildir, onun sırları nı nıyazımlı kontrol eder. Yazımları en büyük problemi “güvenilirlik” konusudur. Program sı sı lı n kk göçmemeli, hata vermemeli ve garip davranmamalı r. Daha önceki derslerde bunun dı öneminden yaş ş anmıörnekler ile bahsetmiş tik. 23
  • 28. Güvenilir bir program planlanan zamanda bitmelidir. Tam test etmeden piyasaya sürmek kötü sonuçlar verebilir. Eski zamanlarda programlar küçük olduğ için pek plan ve organizasyon yapmaya u ş gerek duyulmazdıÇalı . mayan programı programcı tekrar yazı yordu. Küçük programlarda “dene ve hata bul” iş lemi pek zor değ ildir. Büyük programlarda böceklerin daha fazla saklanacak yerleri vardı Milyonlarca satıprogramda “dene ve hata bul” pek iş yaramaz. r. r e Bu nedenle örneğ bir mimar gökdeleni plansıolarak inş edemez. in z a Önceki derslerde de anlatı ğ gibi, büyük programları programlara bölerek kolay ı ldı alt programlanı hâle getirmiş Ana program yayı r tik. mlanmadan önce alt program kodları ş tirilir ve derlenir. Burada siz de bir ş kopyala yapı r ile birleş tı üphe duyuyor musunuz? ş Mesela çalı zamanı alt programlar diğ alt programlardan etkileniyor olabilir mi? ma nda er OOP’de temel olan konu da alt modüllerin diğ modüllere müdahale etmemesidir. er Yani araları yalım vardı Modüllere “object – nesne” de denir. nda tı r. Bir nesnenin iki temel özelliğ vardı i r:  Veri: Özellikler de denir.  Komutlar: Metod da denir. Veriyi kontrol eden kodlardı r. Nesne diğ kodlara müdahale etmeyeceğ için kazancı z ş er i mı unlar olur:  Güvenilirlik: Program çalı şğ ı madında, böcekli nesne alır ve düzeltilir, tüm nı programıelden geçirilmesine gerek kalmaz. n  Tekrar kullanı labilme: Teorik olarak nesneleri alı baş program içinde p ka rahatlı kullanabilirsiniz. Böylece yeni program yazarken daha hı iş kla zlı lerinizi bitirebilirsiniz. “inheritance – miras alma, kalı alma, devralma” sayesinde elde t Bu kazançları ederiz. Var olan kodu tekrar kullanabilmek, programcı n daha fazla ilerlemesini sağ nı lar. Resim 3.1: Klasik programlama ve nesne tabalıprogramlama 24
  • 29. Klasik programlamada alt program diğ alt programı verisine ulaş er n abilir. Nesne tabanlıprogramlamada ise nesneler verilerini korurlar. Bu korumaya “encapsulation – kuş atma” denir. 3.2. Nesne Kullanı mı Programlamada en büyük sorun, var olan kodu güncellemektir. Programcıbuna ş yı nı lları verir. Zaten çalı bir programı an güncellemek yepyeni program yazmaktan kolaydı Nesne tabanlı r. programlamada, sadece güncellenmesi gerekli nesne çalıldıı ş ğndan ı üzerine programcın nı iş i ı kolaylaşr.Nesne tabanlı programlama bu sebeple çok tutulmuştur. Uzaylı larıvurduğ bir oyunda, ekrana gelen uz uzaylı n görünümünü değ tirmek için yapmanı ları iş z nesnesini alı değ tirip, yeniden eski yerine koymaktı Sadece ş değ gereken; uzaylı p, iş r. ekil il, hareketlerini de bu şekilde güncelleyebilirsiniz. Nesnedeki Veriyi Saklama veya Gösterme ş inde bulunabilir. “private, public ve protected” Nesneler de birbirleri ile veri alı veriş bu iş için yapı şr. lem lmı tı  Private (özel): Nesne verisini ve kodunu paylaş açmaz. ıma  Public (paylaş açı Herkes nesnenin verisini ve kodunu kullanabilir. ıma k):  Protected (korumalı Eğ varolan bir nesne miras alma yöntemiyle ): er ı kopyalanı yeni bir nesne oluş p turulursa, yeni nesne sadece paylaş açı ma k (public), korumalı (protected) veri ve komutları miras alı Özel (Private) veri r. ve komutlar eski nesnede kalı yeni nesneye aktarı r, lmaz. turmanı ilk adı “class – sı f” oluş nı Yeni bir nesne oluş n mı turmaktı Sıf daha önceki r. nı derste gördüğ ümüz yapı benzer. Bir sı f, veriyi kullanmak için veri ve kod ya nı tanımlamaları tanı nı mlar. Bir sıf nesne değ nı ildir. Nesneyi bir değ ken gibi tanı iş mlayı p, sıftan oluş nı turursunuz.  Bir sı ftan nesneler türetebilirsiniz: nı class canavar { public: int x_koordinati; int y_koordinati; void hareketEt(int, int); void ilklendirme(int, int); }; İ ilk sı fı zı şte nımı yazdı Gördüğ k. ünüz gibi sı fı zı“x_koordinati ve y_koordinati” nımın olarak tam sayıtüründe 2 özelliğ var. “hareketEt ve ilklendirme” olarak da 2 metodumuz i var. 25
  • 30. Bu hazı ktan sonra, yapmamıgereken metotlarıkodları hazı rlı z n nı rlamaktı r: void canavar::hareketEt(int yeni_x, int yeni_y) { x_koordinati = x_koordinati + yeni_x; y_koordinati = y_koordinati + yeni_y; } void canavar::ilklendirme(int ilk_x, int ilk_y) { x_koordinati = ilk_x; y_koordinati = ilk_y; }  Son olarak da ana programı zı yoruz: mı yazı int main(int argc, char *argv[]) { canavar zombi; //‘canavar’ sı fı nı ndan ‘zombi’ nesnesi üretiyoruz zombi.ilklendirme(12, 15); printf(quot;Ilk C++ Programimiznquot;); cout << quot;Zombimizin X olarak yeri quot; << zombi.x_koordinati << quot;nquot;; cout << quot;Zombimizin Y olarak yeri quot; << zombi.y_koordinati << quot;nquot;; zombi.hareketEt (34, 9); cout << quot;X olarak zombinin yeni yeri quot; << zombi.x_koordinati << quot;nquot;; cout << quot;Y olarak zombinin yeni yeri quot; << zombi.y_koordinati << quot;nquot;; system(quot;PAUSEquot;); return 0; } Resim 3.2: C++ örneğimizin çı sı ktı Genel Olarak OOP Deyimleri ş Bu özet sizi profesyonel OOP’ci yapmasa da, bu temel kelimeleri anlamaya çalı m: alı  Encapsulation (kuş atma): İ veri ve kodları bir yerde toplamak lgili tek  Inheritance (miras alma): Bir nesneden diğ erine veri ve kod geçirmek  Method (olay, komut): Nesnenin verilerini manipüle eder  Object (nesne): Bir ünitede gruplanmıveri ve komut koleksiyonudur ş Nesnenin genellikle “initialize – ilkleme” olayıolmalır. Varsayı olarak ilk kez dı lan ı nasıoluş l turulacağ belirtiriz. nı 26
  • 31. lanlar klasik programlamadaki alt programlara benziyor. Ama ş Aslı bu yapı nda imdiye kadar hiç bir yapı olay eklememiş ve bu kadar geliş ya tik mişdeğ ken tanı iş mlaması gerekmemişti. Resim 3.3: Sı f (class) ve nesne (object) nı Resim 3.4: Nesnelerin mesajlaş ması 3.3. Dil Seçimi programlama dilleri ana olarak ş ş Nesne tabanlı u ekilde gruplandılı rırlar:  Karma (hybrid) nesne tabanlı programlama dili: Eski bir dil üzerine OOP özellikleri eklenmiş dil karma olur. Mesela Pascal üzerine yapı ş ise lmıDelphi, C üzerinde C++ gibi…  Saf (pure) nesne tabanlı programlama dili: SmallTalk, Eiffel, C# ve Java gibi rudan OOP özelliklerine sahip olarak yazı ş doğ lmıdiller. Karma bir dil eski dili bilen birinin, nesne tabanlıdile geçiş kolaylaşrmak için ini tı yapı şr. En az eğ ve deneyim ile OOP’ye geçişsağ Programı küçük bir kı nı lmı tı itim i lar. n smı nesne tabanlı , kalan büyük kı nı klasik programlama yöntemleri ile yazabilirsiniz. smı eski 27
  • 32. Aslı en iyisi doğ nda rudan saf bir OOP dili ile programlamaya baş lamaktı Böylece r. ı ı programları z karmaş ve düzensiz olmaz. Tabii tek baş OOP ile düzenli ve kolay mı k na okunur program yazamazsı z. Yazım tekniğ nı lı inizi, problem çözüm yöntemlerinizi geliş tirmelisiniz. Yazımıkullanacak olanlar, sizin gece geç saatlere kadar çalı ğnı , hangi ş ı zı lı tı ğ zı ı şı programlama dilini kullandını umursamaz. Zamanı biten, çalır halde olan program nda satır, rağ görür. Ondan sonra da artı siz patron olursunuz, kravatızı lı bet k nı takar, rakibinizi geçmek için politikalar geliş tirirsiniz. Resim 3.6: Öğrenme grafiği Resim 3.5: Program yapı aş m amaları 28
  • 33. UYGULAMA FAALİ YETİ UYGULAMA FAALİYETİ İlem Basamakları ş Öneriler 1. Sı f tanı nı mlamak için uygun bir dil Karma veya saf nesne tabanlıprogramlama ı rı z. seçiniz dillerini karş tını laş 2. Bir sı f tanı nı mlayı z nı “canavar” örneğ indeki gibi siz de sıf nı ı oluş turabilirsiniz. Mesela taş için “tasit” tlar 3. Sı fa ait olaylar oluş nı turunuz sıfı nı gibi. 4. Sı ftan nesne oluş nı turunuz “canavar” örneğ indeki gibi sı fa “hareketEt” nı gibi metod ekleyiniz. “tasit” nesnesinden de örneğ araba, kamyon in nesneleri yapı labilir. 5. Nesnenin ilklenme (initialize) ve Program içinde nesnenin olayları kontrol nı diğ olayları yazı z er nı nı ediniz. 29
  • 34. ÖLÇME VE DEĞ ERLENDİ ERLENDİRME ÖLÇME VE DEĞ RME 1. boyut A- OBJEKTİ TESTLER (ÖLÇME SORULARI) F Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı şsoruları r. Verilen ağ daki ru dı ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı ş nı ı sorularda uygun şı ru kkı işaretleyiniz. 1. Nesne tabanlıprogramlamada, klasik programlamadaki döngü ve dallanma gibi komutlar yoktur. ( ) 2. Her nesne oluş turulur oluş turulmaz, hemen ilklendirilmelidir. ( ) 3. Programı zı mı nesnelere böldüğ ümüzde, dünyadaki tüm programcı bizim lar programı zı mı anlayabilirler. ( ) 4. “Encapsulation –kuş atma” nesnenin diğ nesnelerin komutları eriş er na ememesidir.( ) 5. Aş ı ağ dakilerden hangisi ile nesnenin değ ken değ iş erlerini korumayı z? A) private - özel B) void - boş C) protected - korumalı ı D) public – paylaş açı ma k 6. Nesne tabanlıprogramlamada hangisi nesne ile ilgili değildir? A) Miras alma B) Kuş atma C) Alt program D) Metod 30
  • 35. MODÜL DEĞERLENDİ RME MODÜL DEĞERLENDİ RME PERFORMANS TESTİ(YETERLİ ÖLÇME) K Modül ile kazandıız yeterliğ öğ ğnı i, retmeniniz iş basamakları göre 0 ile 10 puan lem na arası olacak ş nda eklinde değ erlendirecektir. DEĞERLENDİ RME KRİ TERLERİ Puan Tek isim vererek, birçok veriye dizi kullarak ulaş ma Bir dizi elemanı değ aktarma na er Döngü içinde diziye veri girme ve gösterme Çeş veri türlerine sahip değ kenleri yapı kontrol etme itli iş ile Yapı veri tanı sal mlanabilen bir dilde iş aretçi oluş turma Kayıyapında bir değ ken tanı t sı iş mlama İ şaretçiyi bir değ kene bağ iş lama Sı f tanı nı mlamak için uygun bir dil seçme Bir sı fı mlayan nesne yazma nı tanı Nesnenin ilklenme olayı yazma nı Toplam (en fazla 100 puan olabilir) DEĞERLENDİ RME Yaptıız değ ğnı erlendirme sonucunda eksikleriniz varsa öğ renme faaliyetlerini tekrarlayız. nı Modülü tamamladı z, tebrik ederiz. Öğ nı retmeniniz size çeş ölçme araçları itli uygulayacaktı Öğ r. retmeninizle iletiş geçiniz. ime 31
  • 36. CEVAP ANAHTARLARI CEVAP ANAHTARLARI ÖĞRENME FAALİ YETİ CEVAP ANAHTARI 1 1 D 2 D 3 D 4 Y 5 D 6 A ÖĞRENME FAALİ YETİ CEVAP ANAHTARI -2 1 D 2 Y 3 D 4 Y 5 Y 6 C ÖĞRENME FAALİ YETİ CEVAP ANAHTARI -3 1 Y 2 D 3 Y 4 D 5 D 6 C ı rarak kendinizi değ Cevapları zı nı cevap anahtarları karş tı ile laş erlendiriniz. 32
  • 37. SÖZLÜK SÖZLÜK İ sim Okunuş Anlam priority prayoriti iş lemciye yaptılan iş rı lemlerin öncelik değ erleri procedure pir ı r siicı yordam, prosedür project pricekt proje, tasarı prompt prompt uyarı , MS-DOS sistem hazısimgesi c:> gibi r protect prı tekt korumak, protection – koruma queue kyu kuyruk real riı l ondalı sayı klı lar recognize rikı gnayz tanı mak record rikı rd rekor, kayı t recover rikavı r bilgileri kurtarmak recursive ı rikörsiv kendini çağ fonksiyon ran register recı r stı yazmaç, kayı kullanı olmak tlı cı registry recı stri Windows kayı t bilgileri reserve rizörv ayı rmak, rezervasyon revert rivört geri dönüş türmek, kurtarmak root ruut kök, ana dizin scene sin sahne script sı kript yardı programlama dili, el yazı mcı sı scroll skrol kaydı rmak sector sektı r bölge, disk iz parçası sequence sikuins sı ra server sörvı r ana bilgisayar, sunucu set set küme, takı ayarlamak (setting) m, 33
  • 38. KOD ÖRNEKLERİ KOD ÖRNEKLERİ Her iki örnekte de 3 isim bilgisi saklanı Ekran görüntüleri aynı r. Acaba neden r. dı ğıyer olan DIM kı nda birinci örnekte 3, ikinci örnekte 2 değ kenlerin tanı iş mlandı smı yazmaktadır? 34
  • 39. TextBox1 TextBox4 TextBox2 TextBox3 Dizinin sı rları ş nı dında bir değ çağ lması ı er rı hatası“Index Out Of Range” ; Visual Basic çok boyutlu dizi örneğ eğ “DataGridView1”de yeterli veri inde er girilmemiş nasıbir hata meydana gelebilir? Nasıbir önlem alı nı ise l l rsı z? 35
  • 40. Visual Basic dilinde çok boyutlu dizi örneği Private Sub Button4_Click Dim bilgi(1, 5) As String 'İ boyutlu dizi tanı ki mlama kısmı Dim i, j As Integer For i = 0 To 1 For j = 0 To 5 bilgi(i, j) = DataGridView1.Item(i, j).Value Next Next MsgBox(quot;Arama sonucu quot; & bilgi(TextBox5.Text, _ TextBox6.Text)) End Sub  Dinamik dizi örnek programı dizi hazı nda, rlanmadan arama yapırsa nasıbir hata lı l meydana gelebilir? Nasıbir önlem alı nı l rsı z? Visual Basic dilinde dinamik dizi örneği Dim DinamikDizi() As String 'dizi boyutu belli değil Private Sub Button6_Click ReDim DinamikDizi(TextBox8.Text) 'kullanı boyutu girdi cı Dim i As Integer For i = 0 To TextBox8.Text 'kullanı değ cı erleri giriyor DinamikDizi(i) = InputBox(quot;Eleman değeriquot;) Next End Sub Private Sub Button5_Click 'aranan eleman ekrana gelir MsgBox(DinamikDizi(TextBox7.Text)) End Sub C dilinde yapı örneği struct birOgrenci{ char *Ad; int Notu; }Ogrenciler; main() { Ogrenciler.Ad = quot;Ali Canquot;; Ogrenciler.Notu = 34; printf(quot;Bir öğrencinin adı ve notu: %s %dquot;, Ogrenciler.Ad, Ogrenciler.Notu); } 36
  • 41. Yapıdizisi kullanı mı C dilinde yapı dizisi örneği #include <stdio.h> struct birOgrenci{ char *Ad[15]; int Notu; }Ogrenciler[2]; //Dizi olarak yapı tanımlanması main() { int i; clrscr(); //Yapı içine veri aktarma for (i=0; i<3; i++) { fflush(stdin); gets(Ogrenciler[i].Ad); scanf(quot;%dquot;,&Ogrenciler[i].Notu); printf(quot;nquot;); } for (i=0; i<3; i++){//Veri çı sı alma ktı printf(quot;n%d öğ rencinin adı ve notu: %s %dquot;, i, Ogrenciler[i].Ad, Ogrenciler[i].Notu); } }  ağ iş Aş ı daki aretçiler ile ilgili C dilinde olan satı nı rları inceleyiniz. char *hata = quot;Dosya yok!quot; //metin işaretçilere ilk değ atanabilir er int *iptr; iptr = (int *) 0x1b64; //Belli bir adres işaretçiye atanabilir, ama tehlikelidir, neden? *iptr = 2001; //işaretçiye değ aktarı er mı printf (quot;n%pquot;, iptr); //ekrana 1B64 yazar printf (quot;n%dquot;, *iptr); //ekrana 2001 yazar printf (quot;n%Xquot;, &iptr); //ekrana FFF2 benzeri işaretçinin adresini yazar char far *cptr; //1 MB (0-FFFFF) içinde tanımlanabilen işaretçi p = (char far *) 0x124532bc //1245 segment, 32bc offset adresidir char far *ekran = (char far *) 0xb8000000; //B800 DOS’un ekran bilgilerinin tutulduğ yerdir u *(ekran+20) = '#'; *(ekran+21) = 10; //metin ekranı ilk satı nı 11. sütununa # karakterini basar n rı n //Neden 20 deyince 11. sütun oldu? //Not: Çift adresler veri, tek adresler renk bilgisi olarak kullanı r lı int a[3] = {12, 55, 88}; //üç elemanlı dizi ve ilk değ atamaları er int *iptr; //int *iptr = a; da olabilirdi iptr = a; 37
  • 42. //dizi başlangı adresi & ile gösterilemez ç printf (quot;n%dquot;,*(iptr+1)); //ekrana 55 yazar printf (quot;n%dquot;, iptr[2]); //ekrana 88 yazar; *(iptr+2) ile iptr[2] aynı anlamdadır void deneme (int *iptr) //fonksiyona bir değ kenin adresi gelecek iş { *iptr=100; //işaretçinin gösterdiğ yere değ aktarı r i er lı } void main(void) //void ne anlama gelir? { int x; deneme (&x); //x değ keninin adresi fonksiyona yollanı iş r printf (quot;%dquot;, x); //ekrana 100 yazar } char *ad_oku (void) //değ döndüren fonksiyon er { char s[50]; printf (quot;Adı z=quot;); nı gets(s); return s; //okunan metnin değeri gönderilir } main() { char *cptr; cptr= ad_oku(); //dönecek değ ancak bir char tipi iş er aretçiye aktarı labilir printf(quot;%squot;, cptr); } Üstte ekran belleğ ulaş ile ilgili bir örnek vardı Sizce belleğ istediğ ine ma r. in iniz ı yerine ulaşlmasıprogramcı özgürlük mü sağ yor, yoksa tam tersine, hazıekrana yazı ya lı r yazma komutlarıdururken böyle iş yapmak, daha da kıtlı ortam mı lı lem sı bir sağ yor? 38
  • 43. ÖNERİ LEN KAYNAKLAR ÖNERİ LEN KAYNAKLAR  computer.howstuffworks.com  en.wikipedia.org/wiki/Pointer  java.sun.com/docs/books/tutorial/java  www.bloodshed.net/devcpp.html  www.robsite.de/programme.php?prog=ccompiler  www.seslisozluk.com  www.yunus.projesi.com 39
  • 44. KAYNAKÇA KAYNAKÇA  RIYANIK Tarı Programlama Ders Notlarıve UygulamalıGenel BAĞ k, Programlama Kitabı(www.yunus.projesi.com)  WALLACE Wang, Beginning Programming for Dummies, Wiley Bası mevi, Indianapolis, 2004 40