Görünmeyen Kod Kılavuz İster

Full width home advertisement

Post Page Advertisement [Top]

C++ Structure ve Arraylar

C++ üzerinde Struct ve Array adında birden fazla değeri veya birden fazla veritipini içeren yapılar vardır. Bu yapılar OOP(Object Orianted Programming) yani Nesne Yönelimli Programlama için gereklidir bu yüzden bu kavramları kavramanız gerekir. İsterseniz lafı daha fazla uzatmadan, Struct ve Array kelimeleri ne anlama geliyor anlatayım.

Array


Arraylar veya diziler, bellekte sıralı biçimde bulunan ve aynı türden değişkenlerin olduğu veri yapılarıdır. Daha önceden Python dili ile programlama yaptıysanız, Python'da ki liste yapıları ile aynı mantıktadır fakat tek fark C++'da Arraylar dek bir veritipinden oluşturulabilmektedir mesela 'string'(kelime) veya 'int'(tamsayı) gibi.

Array tanımlarken ilk önce dikkat etmemiz gereken ayrıntı, o dizinin tipini belirtmektir. Ardından ise o diziye vermek istediğimiz ad ve boyutu.

veritipi isim[boyut];

Mesela türü tamsayı olan 3 boyutlu bir dizi oluşturmak ve 3,5,8 sayılarını eleman olarak atamak istiyorum, bunun için aşağıda ki gibi bir yol izlemem gerekir. 

int a[3] = {3,5,8};

Evet, array tanımladık ve istediğimiz şekilde eleman atadık, bu atama işlemini süslü parantezler '{}' arasında yaptık ve noktalı virgül ile satırımızı bitirdik.

Array elemanları daha doğrusu elemanların sırası, index değeri her zaman '0' dan başlar, mesela yukarıda ki örnekte 3 elemanlı bir array oluşturduk. Bu elemanların sırası 1'den değil de 0'dan başlar.

Bu durumu şöyle açıklayayım; mesela elemanları 2,5,1,3,4 olan bir arrayımız var. Bu arrayların elemanlarının sıra değeri 1,2,3,4,5, de 0,1,2,3,4 şeklindedir.

int a[] = {2,5,1,3,4};
cout<<a[0]; // 2
cout<<a[1]; // 5
cout<<a[2]; // 1
cout<<a[3]; // 3
cout<<a[4]; // 4




Yukarıda ki örnekte ve tabloda gördüğünüz üzere arraylarde sıra numaraları 0'dan başlar. Bu çoğu programlama dilinde aynıdır. Genelde sıra numarası olarak değil de index değeri olarak geçer.

Şimdi yukarıda ki örnekte bazı ayrıntıları daha gösterdim, dizi elemanlarına ulaşmak ve eleman sayısı belirtmeden dizi oluşturmak.

Dizi elemanlarına ulaşmak için; ilk önce dizi adı ardından da index değeri yazılır ve formülü aşağıda ki gibidir.
isim[index];
Yukarıda ki formul ile dizi elemanlarına ulaşabilirsiniz. Eğer dizi oluştururken eleman sayısını bilmiyor veya belirtmek istemiyorsanız, köşeli parantezlerin içerisini boş bırakabilirsiniz.

İç İçe Diziler

Bir dizi tanımlarken, dizi içerisine dizi tanımlayabilirsiniz. Biraz karmaşık duruyor gibi olabilir ama örnekler ile kavrayabilirsiniz. Yukarıda anlattığım gibi, dizilere eleman tanımlarken süslü parantezler içerisine tanımlıyoruz. Eğer iç içe dizi tanımlamak istersek süslü parantezlerin içerisine süslü parantezler ile tanımlıyoruz. Formulü aşağıda ki gibidir

int a[] = {{1,2,3},{4,5,6}};

Gördüğünüz gibi, dizi tanımlarken süslü parantez içine süslü parantez kullandım. Bu elemanlara erişebilmek için ilk önce dizi içerisinde ki dizinin index değeri, ardından da içinde ki dizinin elemanlarının index değeri ile ulaşabilirim. Mesela yukarıda ki örnekten devam ederek, elemanlara ulaşmak istersem aşağıda ki gibi bir yol izlemem gerekir.

int a[] = {{1,2,3},{4,5,6}};
cout<< "İlk Dizinin İlk Elemanı: "<<a[0][0] // 1
cout<< "İkinci Dizinin İlk Elemanı: "<<a[1][0] // 4

Dizi içerisinde dizi elemanlarına ulaşabilmek için iki tane köşeli parantezi yan yana yazarak kullanıyorum.

Ekstra Fonksiyonlar

Şimdi array oluşturmayı ve array elemanlarına ulaşmayı anladığımıza göre size arraylar için bazı fonksiyonları anlatmak istiyorum. Bu fonksiyonlar dizideki eleman sayısı, dizi kopyalamak, diziye 'cin' benzeri bir yapı ile eleman almak gibi işlevleri yerine getirir.

Bu fonksiyonları kullanabilmek için 'cstring' kütüphanesini dahil etmemiz gerekir. Kütüphanemizi aşağıda ki gibi dahil ediyoruz.

#include <cstring>

Ardından ise fonksiyonlarımıza geçebiliriz.

Eleman Sayısı - strlen()

Bir dizide ne kadar eleman sayısı olduğunu belirtmemişseniz ve bilmiyorsanız bu fonksiyonu kullanarak dizideki eleman sayısını öğrenebilirsiniz.


int a[] = {1,2,3,4,5,6,7,8,9,};
cout<<"a dizisindeki eleman sayısı: "<<strlen(a);

Yukarıda ki örnekte bir dizi tanımladık ve bu dizinin eleman sayısını yazdırdık.

puts() ve gets()

Diziye 'cin' ifadesine benzer bir yapı ile yani kullanıcının girdiği değeri eleman olarak almak için gets() fonksiyonu kullanılır.

Eğer dizideki tüm elemanları yazdırmak istiyorsak bunun için de puts() fonksiyonu kullanılır.

int isim[20];
cout<<"İsminizi Giriniz: ";
gets(isim);

cout<<"İsminiz: "<<puts(isim);

Bu örnekte kullanıcıdan bir veri aldık ve bu veriyi dizimize eleman olarak atadık, ardından ise bu dizimizin tüm elemanlarını yazdırdık.

Dizi Kopyalamak - strcpy()

strcpy() fonksiyonunun kullanımı çok basittir, içerisine iki tane parametre alır. İlk parametre kopyalanacak olan dizi ve ikinci parametre ise kopyalamak istediğiniz nesne.

char s[] = {"a","b"};
char harf = "c";
strcpy(s,harf);
cout<<s[2]; // c

Evet, C++ içerisinde arraylar için birçok fonksiyon vardır, fakat bu yazımda bunları anlatmak ile yetineceğim. Daha sonradan bu fonksiyonların tamamını bir yazıda anlatırım.

Struct

Birbirleri ile ilişki içinde bulunan veri kümelerine Struct denir. Dizilere çok benzerler, bunun nedeni içerisinde birden fazla eleman bulunur fakat aralarında ki tek fark; diziler aynı türden eleman barındırırken struct'lar farklı türden yapılar bulundurabilirler.

Aslında bu yapı, Python'da ki Listelere daha fazla benzer, çünkü Listelerde de olduğu gibi bu yapı farklı türden veritipleri bulundurabilir ama arraylarda böyle bir şey söz konusu değildir.

struct yapı ismi{
 veri tipi;
}nesne ismi;

Struct tanımlamak için yukarıda ki formül kullanılır. Dikkat etmemiz gereken ayrıntı; structure tanımlarken main fonksiyonunun dışına tnaımlanır. İlk önce struct ifadesini yazarak, cpp'ye bir structure tanımlayacağımızı belirtiriz. Ardından ise o yapıya vermek istediğimiz isimi yazarız ve süslü parantez açarız. Süslü parantezlerin sonuna o yapıya temsili bir isim veririz verilmese de yapı çalışır. Yapıya temsili isim vermemizin sebebi; main fonksiyonunda veya başka bir fonksiyonda yapıyı bu temsili isim ile çağırırız, yapı ismi ile değil. Süslü parantezlerimizin içerisine değişkenler tanımlar ve bitiririz. Şimdi isterseniz bir örnek üzerinden açıklayalım.

#include <iostream>
using namespace std;

struct tarih{
int gun;
int ay;
int yil;
}zaman;

void tarihgetir(){
zaman.gun = 10;
zaman.ay = 11;
zaman.yil = 1938;
cout<<zaman.gun<<"/"<<zaman.ay<<"/"<<zaman.yil<<"- ";
}

int main(){
tarihgetir();
return 0;
}

Örnekte bir tane void fonksiyon içerisine yapı elemanlarını tanımladık. Farkettiğiniz gibi yapının temsili ismini; yapı elemanlarını tanımlarken kullanıyoruz. Eğer temsili isim vermezsek bu temsili ismi yapı elemanlarını tanımlayacağımız yerde de verebiliriz.

struct tarih{
int x;
int y;
};

int main(){
tarih sayi;
sayi.x = 10;
sayi.y=15;

return 0;
}

Kaynak

Muhammed Mastar, Süha Eriş - C++ (syf. 65-82),(syf. 113-122)


Evet arkadaşlar, C++ dili üzerinde Array(dizi) ve Struct(yapı) nesnelerini gördük. Umarım açıklayıcı olabilmişimdir. İyi Günler!.

Hiç yorum yok:

Yorum Gönder

Bottom Ad [Post Page]