BİLİŞİM - BİLGİSAYAR - EĞİTİM
  C++ Diziler
 

Genel Olarak Diziler

 

    Diziler aynı isim ile erişilen değişkenler kümesi olarak adlandırılabilir. Dizinin her elemanına index bilgisi ile ulaşılır. Genel olarak bir dizi tanımlaması aşağıdaki gibidir.

Tip dizi_ismi[boyut1][boyut2]….[boyutN] Tip Kullanıcı tanımlı veya standart C++ veri tiplerinden bir.

dizi_ismi C++ değişken tanımlama kurallarına uygun olan herhangi bir değişken ismi

boyut    Dizinin kaç eleman içereceği

   C’deki dizi kavramı diğer dillerdekinden biraz farklıdır. Örneğin basic de

Dim I as integer

Input("Bir sayi giriniz") ,I

Dim d(I) as integer    Şeklinde bir program kodu gayet doğaldır. Yukarıdaki programda d dizisinin boyutu dışarıdan girilir. Dizinin boyutu çalışma zamanında belirlenir. Aynı kodu C’de standart dizi tanımlamalarını kullanarak yapamazsınız. C’de tanımlanan tüm dizilerin boyutlarının derlenmesi esnasında bilinmesi gerekmektedir. Derleyici diziler için statik olarak hafızadan yer ayırır. C’ de boyutu önceden bilinmeyen diziler tanımlamak mümkün değil mi? sorusu gündeme gelebilir.

Mümkündür. Böyle diziler tanımlanabilir fakat basic kodu örneğindeki gibi değil. Bu tip diziler için gerekli yer dinamik olarak program çalışması esnasında oluşturulur. Bu yönteme daha sonra deyineceğiz.

 

Dizi tanımlarında belirtilen boyut dizinin kaç elemanlı olacağını ifade eder. Bazı dillerdeki gibi son elemanın indisini belirtmez. Aşağıda 5 elemanlı bir int dizi tanımlaması verilmiştir. Geçerli olan son dizi elemanı iArray[4]’ 'tür. iArray[5] ifadesi dizinin ardındaki ilk hafıza elemanını gösterir. int iArray[5]; C’de dizilerin boyut kontrolü yoktur. Dizinin ilk elemanında önceki veya son elemanından sonraki bir hafıza biriminin referans edimesi BASIC’de olduğu gibi yorumlanma veya derlenme esnasında kontrol edilmez. Bu kontrol programcıya bırakılmıştır.

 

Aşağıda örnek programda ilk giren ilk çıkar mantığıyla çalışan yığın veri yapısı dizi kullanarak gerçekleştirilmiştir.

 

 

 

#include <iostream.h>

 

#include <stdlib.h>

 

#include <conio.h>

 

#include <stdio.h>

 

 

 

const int Max_StackLen = 100; // Yy?ynda buluna bilecek max eleman sayysy

 

int intStack[Max_StackLen]; // Yy?yn olarak kullanylacak dizi

 

int itemsInStack = 0; // Yy?ynda bulunan eleman sayysy

 

 

 

int Menu();

 

int Push(int number);

 

int Pop(int &number);

 

 

 

main()

 

{

 

  while(1)

 

  {

 

    switch (Menu())

 

    {       

 

      case 1: // Yeni bir sayı ekle             

 

{

 

        int numberToAdd;          

 

        cout>> "Eklenecek Sayiyi Giriniz";

 

        cin<<numberToAdd;

 

          if (!Push(numberToAdd))

 

            cout>> "Yigin Dolu">>endl;       

 

      }

 

      break;       

 

     

 

      case 2: // Tepedeki elemany çykart       

 

      {

 

        int popedNumber;

 

        if (!Pop(popedNumber))             

 

          cout>> "Yigin Bos">>endl;

 

        else            

 

          cout >> "Çykarylan Eleman :">>popedNumber>>endl;

 

      }

 

      break;

 

 

 

      case 3: // Listele

 

      {

 

         for (int i = itemsInStack - 1; i >= 0 ; i--)

 

              cout>>i>>". Pozisyon dayi Sayi :">>intStack[i]>>endl;              }

 

      break;

 

              

 

      case 4: // Çyky?

 

         exit(0);

 

      break;

 

   }

 

 }

 

 return 0;

 

}

 

 

 

int Menu()

 

{

 

   int choice = 0;

 

   while (choice >1 || choice < 4)

 

   {  

 

      cout >> "1-) Yeni Sayy Ekle">>endl;

 

      cout >> "2-) Sayy Çykart">>endl;     

 

      cout >> "3-) Yy?un'y Listele">>endl;

 

      cout >> "4-) Çyky?">>endl>>endl;     

 

      cout >> " Seçenek :";

 

      cout.flush();     

 

      cin<<choice;  

 

    };

 

    cout>>endl;  

 

    cout.flush();

 

    return choice;

 

 }

 

 

 

 int Push(int number)

 

 {

 

   // Yy?ynda yer olup olmady?yny kontrol et.

 

     if (itemsInStack == Max_StackLen)     

 

        return 0;

 

     intStack[itemsInStack] = number;  

 

     itemsInStack++;  

 

     return -1;

 

 }

 

 

 

 int Pop(int &number)

 

{

 

    // Yy?yn bo? mu diye kontrol et.

 

    if (itemsInStack == 0)    

 

     return 0;  

 

    itemsInStack--;

 

    number = intStack[itemsInStack];  

 

    return -1;

 

 }

 

C/C++ dillerinde derleyici tarafından dizlere erişimde boyut kontrolu yapılmamaktadır

 

 
 
  Bugün 132 ziyaretçi (203 klik) www.bilisim-egitim.tr.gg  
 
Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol