Değişkenler

Değişkenlerin Bildirimi

Değişkenler kullanılmadan önce bildirilmelidir. Tanımlama için benzersiz isimler kullanılır. Bir değişkeni bildirmek için tipini ve benzersiz ismini belirtmelisiniz. Değişken bildirimi bir işlemci değildir.

Bildirimde kullanılabilecek basit tipler şunlardır:

  • char, short, int, long, uchar, ushort, uint, ulong – tamsayılar;
  • color – RGB renklerinin tamsayı temsili;
  • datetime – tarih ve zaman, 1 Ocak 1970 tarihinin sıfır anından beri geçen saniyeleri içeren işaretsiz bir tamsayı;
  • bool – mantıksal değerler true (doğru) ve false (yanlış);
  • double – kayan noktalı çift duyarlık sayısı;
  • float – tek duyarlık kayan noktalı sayı;
  • string – karakter dizgileri.

Örnekler:

string szInfoBox;
int    nOrders;
double dSymbolPrice;
bool   bLog;
datetime tBegin_Data   = D'2004.01.01 00:00';
color    cModify_Color = C'0x44,0xB9,0xE6';

Karmaşık yada bileşik tipler:

Yapılar kompozit veri tipleridir, diğer tipler kullanılarak inşa edilirler.

struct MyTime
  {
   int hour;    // 0-23
   int minute;  // 0-59
   int second;  // 0-59
  };
... 
MyTime strTime; // Daha önce bildirilen yapının değişkeni MyTime

Yapıyı bildirmeden yapının değişkenlerini bildiremezsiniz.

Diziler

Dizi, aynı tipli verilerin indislenmiş dizilimidir:

int    a[50];       // 50 tamsayıdan oluşan tek boyutlu dizi.
double m[7][50];    // Yedi diziden oluşan iki boyutlu dizi,
                    // her biri 50 sayı içeriyor.
MyTime t[100];      // MyTime gibi elemanlar içeren dizi

Dizi indisleri tamsayı olmak zorundadır. Dört boyuttan yüksek dizilere izin verilmez. Dizi elemanları 0 'dan başlanarak indislenir. Tek boyutlu bir dizinin son elemanının indisi, dizinin toplam eleman sayısından bir küçüktür. Yani, 50 elemanlı bir dizinin son elemanının çağrısı a[49] şeklinde olacaktır. Aynı durum çok boyutlu dizilerde de geçerlidir: Her boyut, 0'dan 'boyut sayısı - 1' değerine kadar indislenir. Örnekteki iki boyutlu dizinin son elemanı m[6][49] şeklinde olacaktır.

Statik diziler zaman serisi şeklinde ifade edilemezler. Yani dizi elemanlarına erişimi sondan başa doğru ayarlayan ArraySetAsSeries() bunlara uygulanamaz. Eğer bir diziye zaman serilerinde olduğu gibi erişim sağlamak istiyorsanız, bir dinamik dizi nesnesi kullanın.

Dizi kapsamının dışına bir erişim denemesi olduğunda, çalıştırma alt sistemi bir kritik hata oluşturacaktır ve program duracaktır.

Dizilerle çalışmak için yerleşik metotlar #

Dizilerle çalışmak için yerleşik metotların yanı sıra dizi fonksiyonları bölümündeki fonksiyonları da kullanabilirsiniz.

Metot

Analog

Açıklama

void array.Fill(const scalar value, const int start_pos=0, const int count=-1);

ArrayFill, ArrayInitialize

Diziyi belirtilen değerle doldurur

void array.Free();

ArrayFree

Dinamik dizi arabelleğini serbest bırakır ve sıfır boyutunun büyüklüğünü 0 (sıfır) olarak ayarlar

int array.Resize(const int range0_size, const int reserve);

int array.Resize(const int range_sizes[], const int reserve);

ArrayResize

Dizinin birinci boyutu için yeni büyüklük ayarlar

int array.Print();

ArrayPrint

Basit türde dizinin değerlerini günlükte görüntüler

int array.Size(const int range=-1);

ArraySize, ArrayRange

Tüm dizideki (range=-1) veya belirtilen dizi boyutundaki öğelerin sayısını geri döndürür

bool array.IsDynamic();

ArrayIsDynamic

Dizinin dinamik olup olmadığını kontrol eder

bool array.IsIndicatorBuffer();

 

Dizinin bir gösterge arabelleği olup olmadığını kontrol eder

bool array.IsSeries();

ArrayIsSeries

Dizinin bir zaman serisi olup olmadığını kontrol eder

bool array.AsSeries();

ArrayGetAsSeries

Dizinin indeksleme yönünü kontrol eder

bool array.AsSeries(const bool as_series);

ArraySetAsSeries

Dizinin indeksleme yönünü ayarlar

int array.Copy(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayCopy

Dizi değerlerini başka bir diziye kopyalar

int array.Compare(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayCompare

İki basit türde dizinin veya özel yapının karşılaştırılmasının sonucunu geri döndürür

int array.Insert(const src_array[], const int dst_start, const int src_start, const int cnt);

ArrayInsert

Belirtilen indeksten başlayarak, kaynak diziden belirtilen sayıda öğeyi alıcı diziye ekler

int array.Remove(const int start_pos, const int count);

ArrayRemove

Belirtilen indeksten başlayarak, belirtilen sayıda öğeyi diziden kaldırır

int array.Reverse(const int start_pos, const int count);

ArrayReverse

Belirtilen indeksten başlayarak, belirtilen sayıda öğeyi dizide tersine çevirir

bool array.Swap(array& arr[]);

ArraySwap

İçeriği aynı türden başka bir dinamik diziyle değiştirir

void array.Sort(sort_function);

ArraySort

Sayısal dizileri birinci boyuta göre sıralar

int array.Search(scalar value, search_function);

ArrayBsearch

Dizinin birinci boyutunda bulunan ilk öğenin indeksini geri döndürür

int array.Find((scalar value, search_function);

 

İletilen fonksiyonu kullanarak dizide arama yapar ve bulunan ilk öğenin indeksini geri döndürür

array array.Select(scalar value, search_function);

 

İletilen fonksiyonu kullanarak dizide arama yapar ve bulunan tüm öğeleri içeren diziyi geri döndürür

 

Erişim Belirteçleri

Erişim belirteçleri derleyicinin değişkenlere, yapı veya sınıf üyelerine nasıl erişebileceğini tanımlar.

const belirteci bir değişkeni sabit olarak bildirir ve çalışma zamanı boyunca değişmesine izin vermez. Bildirildiği zaman değişkenin sadece bir sefer başlatılmasına izin verir.

Örnek:

int OnCalculate (const int rates_total,      // price[] dizisinin büyüklüğü
                 const int prev_calculated,  // önceki çağrıda işlenmiş çubuklar
                 const int begin,            // anlamlı verilerin başladığı yer
                 const double& price[]       // hesaplanacak dizi
   );

Yapı ve sınıf üyelerine erişim için şu erişim belirteçlerini kullanabilirsiniz:

  • public – değişkene veya sınıf yöntemine sınırsız erişim sağlar
  • protected – bu sınıfın yöntemlerinden ve genele açık olarak kalıtımlanmış sınıfların yöntemlerinden yapılan erişime izin verir. Başka türlü erişim imkansızdır;
  • private – sınıf değişkenlerine ve yöntemlerine dışarıdan erişimi engeller.
  • virtual – sadece sınıf yöntemlerine uygulanır (yapı yöntemlerine değil) ve derleyiciye bu yöntemin, sınıfın sanal fonksiyonlar tablosunda yer alması gerektiğini anlatır.

Bellek Sınıfları

Üç adet bellek sınıfı bulunmaktadır: static, input ve extern. Bu şekillendiriciler, karşılık gelen değişkenlerin global havuz denilen, önceden tahsis edilmiş bellek alanında dağıtıldığını derleyiciye açık olarak gösterirler. Ayrıca, değişken verilerinin özel işleniş şekillerini de belirtirler. Yerel düzeyde bildirilmiş bir değişken statik değilse, gereken bellek program yığınında otomatik olarak tahsis edilir. Statik olmayan bir dizi için ayrılmış bellek, dizinin bildirildiği bloğun görünürlük alanı dışına çıkıldığında otomatik olarak serbest bırakılır.

Ayrıca Bakınız

Veri Tipleri, Tiplerin Kapsüllenmesi ve Genişletilebilirliği, Değişkenlerin Başlatılması, Değişkenlerin Görünürlük Alanları ve Ömürleri, Nesnelerin Oluşturulması ve Silinmesi, Bir Sınıfın Statik Elemanları