DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II
DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe saklanır [1]. Bu yüzden dizilere tek bir isim altında çok sayıda değişken içeren bellek bölgesi de denir. Buna göre, bir diziyi dizi yapan iki temel özellik vardır [2]: dizi elemanların bellekte (program çalıştığı sürece) sürekli biçimde bulunması dizi elemanların aynı türden değişkenler olması
DİZİLERİN BİLDİRİMİ Bir dizinin bildirim işleminin genel biçimi söyledir: veritipi dizi_adı[eleman_sayısı]; Örneğin, 5 elemanlı, kütle verilerini bellekte tutmak için, kutle dizisi şöyle tanımlanabilir: int kutle[5]; veri_tipi dizi_adı eleman_sayısı Bellek Görünümü 0 1 2 3 4 kutle
DİZİLERİN BİLDİRİMİ Bir dizinin bildirim işleminin genel biçimi söyledir: veritipi dizi_adı[eleman_sayısı]; Örneğin, 5 elemanlı, kütle verilerini bellekte tutmak için, kutle dizisi şöyle tanımlanabilir: int kutle[5]; Bu dizinin elemanlarına bir değer atama işlemi şöyle yapılabilir: kutle[0] = 8 kutle[1] = 3 kutle[2] = 9 kutle[3] = 4 kutle[4] = 5 0 1 2 3 4 8 3 9 4 5
DİZİLERİN BİLDİRİMİ
DİZİLERİN BİLDİRİMİ Bildirim sırasında dizilerin eleman sayısı tamsayı türünden bir sabit ifadesiyle belirtilmesi zorunludur. Örneğin: int n = 100; int a[n]; şeklindeki tanımlama, dizi uzunluğunun değişken (n) ile belirtilmesi nedeniyle geçersizdir. Bunun yerine, dizilerin eleman sayısı aşağıdaki gibi sembolik sabitlerle belirtmek mümkündür. #define n 100... int a[n];
DİZİLERİN BİLDİRİMİ Bir dizinin bellekte kapladığı alanın bayt cinsinden karşılığı sizeof operatörü ile öğrenilebilir. int a[5], b, c;... b = sizeof(a); /* bellekte kapladığı alan: b = 4*5 = 20 bayt */ c = sizeof(a) / sizeof(int); /* Dizinin boyutu : c = 20/4 = 5 */
DİZİLERE BAŞLANGIÇ DEĞERİ VERME Bir diziye başlangıç değerleri aşağıdaki gibi kısa formda atanabilir: float kutle[5]= { 8.471, 3.683, 9.107, 4.739, 3.918 }; int maliyet[3] = { 25, 72, 94 }; double a[4] = { 10.0, 5.2, 7.5, 0.0};
DİZİLERE BAŞLANGIÇ DEĞERİ VERME Küme parantezlerinin sonlandırıcı ; karakteri ile bittiğine dikkat ediniz. Bir dizinin uzunluğu belirtilmeden de başlangıç değeri atamak mümkündür. int a[] = { 100, 200, 300, 400 }; float v[] = { 9.8, 11.0, 7.5, 0.0, 12.5}; Derleyici bu şekilde bir atama ile karşılaştığında, küme parantezi içindeki eleman sayısını hesaplar ve dizinin o uzunlukta açıldığını varsayar. Yukarıdaki örnekte, a dizisinin 4, v dizisinin 5 elemanlı olduğu varsayılır.
DİZİLERDE YAZIRMA/OKUMA cout ve cin fonksiyonları bir dizinin okunması ve yazdırılması için de kullanılır. Örneğin bir A dizisinin aşağıdaki gibi bildirildiğini varsayalım: int A[10]; Bu dizinin elemanlarını klavyeden okumak için: for(i=0; i<10; i++) cin>>a[i]; daha sonra bu değerlerini ekrana yazmak için: for(i=0;i<10;i++) cout<<a[i];
DİZİ ELEMALARINA DİREK ULAŞIM int n[10]; cin>>n[3]; cout<<n[3];
ÇOK BOYUTLU DİZİLER Her elemanı bir boyutlu dizi olan yapılara çok boyutlu diziler denir. Bu diziler matris veya tablo olarak da bilinen 2-boyutlu dizilerdir. veri_tipi dizi_ismi[satır_buyuklugu][sütun_buyuklugu]
TANIMLAMA SIRASINDA DEĞER ATAMA satır yönünde atama
TANIMLAMA SONRASINDA DEĞER
ÇOK BOYUTLU DİZİLER VE FONKSİYONLAR Dizi tanımı int a[2][3]={1,2,3,4,5,6}; Fonksiyon Çağırma f1(,a, ); Çağırılan fonksiyon f1(,int b[][3], );
DİZGİLER «Merhaba» «Bu bir dizgi» «B» 7 karakter içeren bir dizgi 12 karakter içeren bir dizgi 1 karakter içeren bir dizgi Boş dizgi
DİZGİ TANIMI char dizi_adi[uzunluk]; char kelime[11]; kelime kelime[0]= A kelime 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 A
DİZGİ TANIMI kelime[1]= l ; kelime[2]= i ; kelime[3]= \0 ; kelime 0 1 2 3 4 5 6 7 8 9 10 A l i \0 Bir dizginin sonu boş karakter (NULL) olan \0 karakteri ile biter.
DİZGİ GİRDİ İŞLEMLERİ cin>> fonksiyonu girilen değerler içinde boşluk veya enter işareti görünceye kadar okuma işlemine devam eder. Bilgisayar Bilge Sor. Bil B İ L G İ S Y A R \0 B İ L G E \0 B İ L \0
DİZGİ GİRDİ İŞLEMLERİ gets() fonksiyonu enter işareti görünceye kadar okuma işlemine devam eder ve okuduğu değerin sonuna boş karakterini \0 otomatik olarak ekler. gets(dizgi_adi) iyi misin? i y i m i s i n? \0
DİZGİ ÇIKTI İŞLEMLERİ puts() fonksiyonu ekranan dizginin bastrılmasını sağlar ve daha sonra yeni satıra otomatik olarak geçer. puts (dizgi_adı); Örnek: char dizgi1[15]= merhaba ; char dizgi1[]="merhaba"; char dizgi2[]="nasilsin?"; puts(dizgi1); puts(dizgi2); Çıktı: merhaba nasilsin?
DİZGİ FONKSİYONLARI strlen() fonksiyonu bir dizginin içindeki karakter sayısını bulmak için kullanılır. strlen (dizgi_adı); Örnek: int uzunluk; char dizgi[10] = Ali uzunluk = strlen(dizgi); 3
DİZGİ FONKSİYONLARI strcpy() fonksiyonu dizgi kopyalama fonksiyonudur. strcpy (dizgi1_adı, dizgi2_adı);
DİZGİ FONKSİYONLARI strncpy() fonksiyonu dizgi1 içindeki ilk n karakteri dizgi2 içerisine kopyalama fonksiyonudur. strncpy (dizgi1_adı, dizgi2_adı, n);
DİZGİ FONKSİYONLARI strncat() fonksiyonu dizgi1 in sonuna dizgi2 nin ilk n karakterinin yapıştırılmasını sağlar. strncat (dizgi1_adı, dizgi2_adı, n); Örnek: char dizgi1[15]="iyi gunler "; char dizgi2[15]= Nasilsiniz? ; strncat (dizgi1, dizgi2, 5); cout<<dizgi1; cout<<dizgi2; Çıktı: dizgi 1: iyi gunler Nasil dizgi 2: Nasilsiniz?
QUİZ
Quiz-1 Soru 1 Soru 2 3 öğrenciye ait 3 adet dersin not bilgisini tutan bir dizi içerisinden derslerin sınıf ortalamalarını hesap eden C++ kodu oluşturunuz. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Şekli oluşturacak C++ kodunu oluşturunuz
CEVAP Cevap-1 Cevap-2
Quiz-1 Soru 3 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Şekli oluşturacak C++ kodunu oluşturunuz
CEVAP Cevap-3