enum Deyimi (devam…)

Download Report

Transcript enum Deyimi (devam…)

ALGORİTMA VE PROGRAMLAMA II
Yrd. Doç. Dr. Emin BORANDAĞ
[email protected]
YZM 1102
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu
Teknoloji Fakültesi
Genel Bakış…
2
• Yapılar ve Birlikler
•
•
•
•
enum Deyimi / Sayma Sabitleri (Enumeration Constants)
struct Deyimi / Yapı (Structures)
typedef Deyimi
union Deyimi / Birlik
YZM 1102 – Algoritma ve Programlama II
2. BÖLÜM
3
Enumeration
YZM 1102 – Algoritma ve Programlama II
enum Deyimi
4
• Sayma tipi/sabiti olarak adlandırılırlar.
• Bir sayma tipi, enum anahtar kelimesiyle tanıtılır ve
tanıtıcılar ile temsil edilen tamsayı sabitlerinin
kümesidir.
• Bu sayma sabitleri, değerleri otomatik olarak
belirlenen sembolik sabitlerdir.
• enum içindeki değerler aksi belirtilmedikçe 0 ile başlar
ve 1 arttırılır.
• Bu tip, değişkenin alabileceği değerlerin sabit olduğu
durumlarda programı daha okunabilir hale getirmek
için kullanılır.
YZM 1102 – Algoritma ve Programlama II
enum Deyimi (devam…)
5
• Mantıksal örnekler:
•
•
•
•
Cinsiyet: Kadın, Erkek
Calisma_Durumu: İssiz, Calisan, Ögrenci, Emekli
Evlilik_Durumu: Evli, Bekar
Egitim_Durumu: İlkokul, Lise, OnLisans, Lisans,
LisansUstu
• Menu_Turu: Topla, Cikart, Bol, Carp
YZM 1102 – Algoritma ve Programlama II
enum Deyimi (devam…)
6
• Hangisi daha anlaşılır?
if (kisi_cinsiyet == 1)
{
}
?
if (kisi_cinsiyet == Erkek)
{
}
YZM 1102 – Algoritma ve Programlama II
enum Deyimi (devam…)
7
• Genel yazım biçimi:
enum tip_adı
{
değer_1,
değer_2,
...,
değer_n
};
YZM 1102 – Algoritma ve Programlama II
enum Deyimi (devam…)
8
• Örnek:
enum eBolumler
{
programcilik,
donanim,
muhasebe,
motor
};
Tanımı ile alınan değerler:
programcilik için 0,
donanim için 1,
muhasebe için 2 ve
motor için 3 değerini
Değerler, aksi belirtilmedikçe 0 ile başlar ve 1 arttırılır.
YZM 1102 – Algoritma ve Programlama II
enum Deyimi (devam…)
9
• Örnek:
Proje oluşturalım ve örneği uygulayalım…
enum eBolumler
{
programcilik,
donanim,
muhasebe,
motor
};
void main ()
{
enum eBolumler
int
bolum_degiskeni;
bolum_degiskeni2;
}
YZM 1102 – Algoritma ve Programlama II
Örnek: Basit enum Kullanımı
10
YZM 1102 – Algoritma ve Programlama II
Alıştırma: enum Oluşturma
11
• Aşağıdaki bilgileirn enum tiplerini oluşturunuz:
• Cinsiyet: Kadın, Erkek
• Calisma_Durumu: İssiz, Calisan, Ögrenci, Emekli
• Evlilik_Durumu: Evli, Bekar
• Egitim_Durumu: İlkokul, Lise, OnLisans, Lisans,
LisansUstu
YZM 1102 – Algoritma ve Programlama II
Örnek: Girilen Sayının Tek/Çift Olma
Kontrolü (enum Kullanımı)
12
• Lab uygulamasında yapacağız.
YZM 1102 – Algoritma ve Programlama II
2. BÖLÜM
13
Yapılar ve Birlikler
YZM 1102 – Algoritma ve Programlama II
struct (Yapı) Deyimi
14
• Yapılar, farklı veri türlerine sahip değişkenlerin bir
grup olarak değerlendirilmesi ve bu grubun bir isimle
kullanılması amacıyla tercih edilen kullanıcı tanımlı
bir veri türüdür.
• Yapılar diziler gibi bellekte sürekli kalır.
• Bir yapı içerisindeki elemanlara üye (member) denir.
• Üyelerin her biri farklı veri tipine sahip olabilir.
• Yapılar sayesinde kendi veri tipinizi üretmeniz
mümkündür.
• Yapılar farklı programlama dillerinde Record (Kayıt)
olarak da geçerler.
YZM 1102 – Algoritma ve Programlama II
struct Deyimi (devam…)
15
• Yapılar int, float, char gibi farklı tipteki
değişkenleri veya aynı türdeki birden çok
değişkeni bir araya getirmeyi sağlar.
• Nesne tabanlı programlamanın da temelini
oluşturan bir yaklaşımdır.
• İlerleyen zamanlarda C# ve Java gibi tamamen
nesneye dayalı programlamayı benimsemiş
gelişmiş dilleri öğrenmeye de yardımcı olacaktır.
YZM 1102 – Algoritma ve Programlama II
struct Deyimi (devam…)
16
• Yapı gösterimi aşağıdaki gibidir:
struct yapı_adı
{
veri_tipi değişken_ismi1;
veri_tipi değişken_ismi2;
...
};
Mantıksal Gruplama
YZM 1102 – Algoritma ve Programlama II
struct Deyimi (devam…)
17
• Örnek: Bir üniversitedeki öğrencilerin aşağıdaki bilgilerini
programda kullanalım.Kullanılacak bilgiler aşağıdaki gibi
olsun, nasıl tanımlarız?
•
•
•
•
•
•
Öğrenci Numarası
Öğrenci Adı
Öğrenci Soyadı
Öğrenci Cinsiyeti
Öğrenci Fakültesi/Bölümü
Öğrenci Genel Not Ortalaması
•
•
•
•
•
•
int No;
char Ad[50];
char Soyad[50];
int Cinsiyet;
int FakulteBolum;
float GenelOrtalama;
YZM 1102 – Algoritma ve Programlama II
struct Deyimi (devam…)
18
Değişkenleri tek tek tanımlamak zorundayız.
Değişkenler arasında bir bütünlük olmaz.
Bu bilgiler aynı öğrenciye mi ait yoksa başka bir
öğrenciye mi ayırt edemeyiz.
Birden fazla öğrenci için nasıl bir tanım
yapacağız?
YZM 1102 – Algoritma ve Programlama II
struct Deyimi (devam…)
19
• Örnek: Bu öğrencilerin bilgilerini struct kullanarak ifade
edelim.
• Kullanılacak bilgiler aşağıdaki gibi olsun:
•
•
•
•
•
•
Öğrenci Numarası
Öğrenci Adı
Öğrenci Soyadı
Öğrenci Cinsiyeti
Öğrenci Fakültesi/Bölümü
Öğrenci Genel Not Ortalaması
YZM 1102 – Algoritma ve Programlama II
struct Deyimi (devam…)
20
Öğrenci tanımlama ve
değer atama
Proje oluşturalım ve örneği uygulayalım…
YZM 1102 – Algoritma ve Programlama II
Örnek: struct Okuma ve Yazma
Yazma
Okuma
YZM 1102 – Algoritma ve Programlama II
struct Değişkenlerini Kopyalama
22
• struct tipindeki bir değişkenin değeri aynı tipteki bir
başka struct değişkenine atanabilir.
• Üyeleri tek tek atmaya gerek yoktur.
• Atama aşağıdaki şekilde yapılır:
degisken1 = degisken2;
YZM 1102 – Algoritma ve Programlama II
Örnek: struct Kopyalama
23
ogrenci_bilgisi2.No = ogrenci_bilgisi1.No;
ogrenci_bilgisi2.Ad = ogrenci_bilgisi1.Ad;
ogrenci_bilgisi2.Soyad = ogrenci_bilgisi1.Soyad;
…
YZM 1102 – Algoritma ve Programlama II
struct Değişkenlerini Karşılaştırma
24
• struct tipindeki bir değişken aynı tipteki bir başka
struct değişkeni ile direk karşılaştırılamaz. Ancak
sahip olduğu üyelerinin tamamı diğeri ile
karşılaştırılır.
• Aşağıdaki karşılaştırma yanlıştır:
if (degisken1 == degisken2) ….
YZM 1102 – Algoritma ve Programlama II
Örnek: struct Değişkenlerini Karşılaştırma
25
YZM 1102 – Algoritma ve Programlama II
struct Değişkenleri ve Fonksiyonlar
26
1. struct tipindeki bir değişken herhangi bir fonksiyona
parametre olarak aktarılabilir.
2. Herhangi bir fonksiyon geri dönüş değeri olarak
struct tipinde bir veri türü geriye dönebilir.
YZM 1102 – Algoritma ve Programlama II
Örnek: struct ve Fonksiyonlar
27
YZM 1102 – Algoritma ve Programlama II
struct Değişkenleri ve Diziler
28
1. struct tipi içerisinde;
•
Dizi türünde üyeler tanımlamak mümkündür.
2. Dizileri;
•
struct tipinde tanımlamak mümkündür.
Nesneye dayalı programlama
yaklaşımına önemli bir ADIM….
YZM 1102 – Algoritma ve Programlama II
struct Değişkenleri ve Diziler
29
• OgrenciNot isimli bir struct oluşturalım.
• Öğrenci Numarasını,
• 2 tane Vize Notunu,
• 2 tane Quiz Notunu ve
• 1 tane Final Notunu içersin.
YZM 1102 – Algoritma ve Programlama II
Örnek: struct Değişkenleri ve Diziler
30
YZM 1102 – Algoritma ve Programlama II
struct Değişkenleri ve Diziler
31
• OgrenciNot isimli bir structtan
• Öğrenci Numarasını,
• 2 tane Vize Notunu,
• 2 tane Quiz Notunu ve
• 1 tane Final Notunu içersin.
• 100 tane öğrenciyi tanımlayalım.
YZM 1102 – Algoritma ve Programlama II
Örnek: struct Değişkenleri ve Diziler
32
YZM 1102 – Algoritma ve Programlama II
typedef Kullanımı
33
• typedef deyimi C dilinde değişken tanımlama
yaparken kullanılan int, float, char gibi değişken
isimlerini değiştirmeye yarar.
• Bu sayede kodlar programcının anadiline daha fazla
yaklaşmış olur.
• struct
deyimi
ile
beraber
kullanıldığında
oluşturduğunuz yapıyı bir değişken türü olarak
tanımlayıp o yapının çoğaltılmasını sağlar. Bu yapıdan
değişken tanımlamak için tekrar struct deyiminin
kullanılmasına gerek kalmaz.
YZM 1102 – Algoritma ve Programlama II
Örnek: typedef Kullanımı
34
YZM 1102 – Algoritma ve Programlama II
struct içerisinde struct Kullanımı
35
• C programlama dili struct içerisindeki bir üyenin yine
bir struct tipinde olmasına izin verir. Bunu
yapmaktaki temel amaç:
• Kaynak kodun tekrar kullanılabilirliğini arttırmak
• Kaynak kodun okunabilirliğini arttırmak
• Kaynak kodu sadeleştirmek
Nesneye dayalı programlama
yaklaşımına önemli bir ADIM….
YZM 1102 – Algoritma ve Programlama II
Örnek: struct içerisinde struct Kullanımı
36
YZM 1102 – Algoritma ve Programlama II
Birlikler (Union)
37
• Birlikler de yapılar gibi sürekli belleğe yerleşen
nesnelerdir.
• Birlikler yapılara göre daha az kullanılırlar. Bir
programda veya fonksiyonda değişkenlerin aynı bellek
alanını paylaşması için ortaklık bildirimi union deyimi
ile yapılır. Bu yer, birliğin en büyük alanı kadardır.
• Bu da belleğin daha verimli kullanılmasına imkan
verir.
• Bu tipte bildirim yapılırken struct yerine union yazılır.
YZM 1102 – Algoritma ve Programlama II
Birlikler (Union) (devam…)
38
Örnek:
union test
{
int x;
char y[10];
}p
• Bu tanıma göre x tamsayısı için
bellekte 4 baytlık yer
ayrılmaktadır.
• Birlik içinde yer alan y değişkeni
için 10 baytlık yer ayrılmıştır.
• Bu durumda, birlik için en fazla
10 baytlık bir yer ayrılmıştır.
Ayrılan bu alan, birliğin her bir
alanı tarafından ortak kullanılır.
YZM 1102 – Algoritma ve Programlama II
KAYNAKLAR
39
• N. Ercil Çağıltay ve ark., C DERSİ PROGRAMLAMAYA
GİRİŞ, Ada Matbaacılık, ANKARA; 2009.
• Milli Eğitim Bakanlığı "Programlamaya Giriş ve
Algoritmalar Ders Notları", 2007
• Problem Solving and Program Design in C, Hanly, Koffman
• http://www.AlgoritmaveProgramlama.com
YZM 1102 – Algoritma ve Programlama II
40
İYİ ÇALIŞMALAR…
Yrd. Doç. Dr. Emin BORANDAĞ
[email protected]
YZM 1102 – Algoritma ve Programlama II