Algoritmalar ve Programlama I Ders 2: Ak** Diyagramlar

advertisement
Doç. Dr. Cemil Öz
Algoritmalar ve
Programlama II
Ders 5: C++ programlama dilinde
Yapılar
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Yapılar(Structures)
Her programlama dilinde tanımlı temel veri tipleri
bulunmaktadır.
Tanımlı olmayan veri türleri , kullanıcı bazlı tanımlama ile
sağlanır. Topluluk ve birleşme gibi iki farklı şekilde
yapılabilmektedir.
Yapılar topluluk tipine giren veri tanımlama biçimidir.
Yani, bir yapı temel değişkenlerin bir araya getirilmesidir.
Yapı içerisindeki değişkenler farklı tiplerde olabilir.
Diziler ile karıştırılmamalı diziler aynı tür değişkenlerden
oluşur.
// Yapı örneği
#include <iostream>
using namespace std;
struct urun
//yapı tanımla
{
int modelno;
int parcano;
float ucret;
};
int main()
{
urun urun1; //yapı değişkeni tanımlanır
//Yapı üyesine değer atama
urun1.modelno = 54325;
urun1.parcano = 89;
urun1.ucret = 100.20F;
//Yapı üyelerini ekrana yazdırma
cout << “Model ” << urun1.modelno;
cout << “, Parca ” << urun1.parcano;
cout << “, Ucret $” << urun1.ucret << endl;
return 0;
}
Struct anahtar kelimesi
Yapı ismi
struct
Yapı üyeleri
Küme parantezi
içine yazılır
urun
{
int modelno;
int parcano;
float ucret;
};
Yapı üyeleri
Yapı tanımlama (;) ile biter
Yapı tanımı, topluluk tipindeki değişkenleri tanımlamada sadece bir
taslak görevi görür.
Yapı tanımı ile yapı değişkeni tanımlanmış olmaz; yani bu tanımlama
bellekte yer ayırmaz.
Yapı tanımı basit bir değişken tanımından farklıdır. Basit bir değişken
tanımlandığında bellekte yer ayrılır. Yapı tanımı ise sadece, yapı
değişkenlerinin tanımlandıkları zaman nasıl görüneceklerini gösteren bir
modeldir.
Yapı değişkeninin Tanımlanması
main() içindeki
urun urun1;
urun yapısı tipine urun1 isimli bir değişken tanımlanır. Bu tanımla birlikte
bellekte urun1 için bellekte yer ayrılır.
urun
{
int modelno;
int parcano;
float ucret;
};
urun urun1;
54325
89
100.20
urun1
struct
Yapı üyelerine değer atama
Bir yapı değişkeni tanımlandığı andan itibaren, bu değişkenin
üyeleri nokta operatörü denilen bir operatör kullanılarak erişilebilir.
urun1.modelno=54325;
Yani yapı üyesinin yazımı üç kısımdan oluşur: yapı değişkeninin
adı (urun1), nokta(.) operatörü ve üyenin ismi (modelno)
Nokta operatörünün ismi üye erişim operatörüdür.
Şu unutulmamalıdır ki ilk bileşen yapı adı değil yapı değişkenidir.
Burada yapı adı(urun), yapı değişkeninin adı (urun1) dir.
Değişken ismi bir değişkeni diğerinden ayırmak için kullanılır.
urun1
54325
89
100.20
modelno
parcano
ucret
urun2
modelno
parcano
ucret
urun3
modelno
parcano
ucret
urun2.parcano
Yapıların diğer özellikleri
Yapı üyelerine ilk değer atanması
Önceki örneğimizde tanımladığımız urun yapısı olarak tanımlanan urun1
değişkenine ilk değer ataması aşağıdaki şekilde de yapılabilir.
urun urun1={5235, 98, 153.15f};
urun urun2;
// urun2 yapı değişkeni tanımlanır.
urun2= urun1;
//ilk yapı değişkenindeki değerleri ikinci değişkene ata
// Yapı örneği
#include <iostream>
using namespace std;
struct urun
//yapı tanımla
{
int modelno;
int parcano;
float ucret;
};
int main()
{
urun urun1={54325,89,100.20F}; //yapı değişkenine ilk değer ata
urun urun2;
// değişken tanımla
cout << “Model ” << urun1.modelno;
cout << “, Parca ” << urun1.parcano;
cout << “, Ucret ” << urun1.ucret << “TL “<<endl;
urun2=urun1;
// ilk değişken değerlerini ikinciye ata
cout << “Model ” << urun2.modelno;
cout << “, Parca ” << urun2.parcano;
cout << “, Ucret ” << urun2.ucret << “TL “<<endl;
return 0;
}
İç içe Yapılar
Yapıları başka yapıların içerisinde kümelemek mümkündür. Aşağıdaki örnekte odanın
eni ve boyunun tutulacağı bir topluluk veri yapısını oluşturalım. Normalde oda diye bir
veri tipi yoktur.
#include <iostream>
using namespace std;
struct mesafe
//yapı tanımla
{
int metre;
float cm;
};
struct oda
//yapı tanımla
{
mesafe en;
mesafe boy;
};
int main()
{
oda salon; //değişken tanımla
salon.en.metre=6;
salon.en.cm=20;
salon.boy.metre=5;
salon.boy.cm=27;
float u=salon.en.metre + salon.en.cm/100;
float g=salon.boy.metre + salon.boy.cm/100;
cout << “ Salon Alanı ..: ” << u*g
<< “ metre kare dir. “<<endl;
return 0;
}
en
boy
salon
6
20
5
27
metre
cm
metre
cm
salon.boy.cm = 27;
Kümelenmiş yapılara ilk değer atamak
oda salon = { { 6 , 20 } , { 5 , 27 } } ;
Oda içerisinde tanımlanan her mesafe tipindeki yapıya yarı ayrı değer atanır.
Bunun için değerleri küme parantezleri içine almak ve virgül ile ayırmak gerekir.
Yapılarda iç içeliğin derinliği ne olabilir?
Teorik olarak yapıların iç içelik derinliği(kümeleme) sınırlama yoktur. Kişi
karmaşıklığı önleyecek şekilde dizayn edebilir.
apartman1.daire1.salon.en.cm
Gibi bir yapı kümelemesi olabilir.
Enumerations (Birleştirme veri tipi)
Her programlama dilinde tanımlı temel veri tipleri
bulunmaktadır.
Tanımlı olmayan veri türleri , kullanıcı bazlı tanımlama
ile sağlanır. Topluluk ve birleşme gibi iki farklı şekilde
yapılabilmektedir.
Yapılar kadar kritik öneme sahip değillerdir.
Kendi veri tipinizi tanımlama imkanı sunar.
Döngü içerisindeki İf yapısı
#include <iostream>
using namespace std;
enum days_of_week { Sun, Mon, Tue, Wed, Thu, Fri, Sat };
int main()
{
days_of_week day1, day2;
//days_of_week tipinde
//değişkenleri t anımla
day1 = Mon;
//değişkenlere değer ata
day2 = Thu;
int diff = day2 - day1;
//cebirsel işlem yapılabilir
cout << “Günler arasında= “ << diff << endl;
if(day1 < day2)
//karşılaştırma yapılabilir
cout << “day1 ,day2 den önce gelir\n”;
return 0;
}
Download