42
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ [email protected] Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi YZM 1102

ALGORİTMA VE PROGRAMLAMA II - Dr. Volkan TUNALI...YZM 1102 – Algoritma ve Programlama II •Yapılar int, float, char gibi farklı tipteki değikenleri veya aynı türdeki birden

  • Upload
    others

  • View
    25

  • Download
    0

Embed Size (px)

Citation preview

ALGORİTMA VE PROGRAMLAMA II

Yrd. Doç. Dr. Deniz KILINÇ

[email protected]

Celal Bayar Üniversitesi Hasan Ferdi Turgutlu

Teknoloji Fakültesi YZM 1102

• Yapılar ve Birlikler

• enum Deyimi / Sayma Sabitleri (Enumeration Constants)

• struct Deyimi / Yapı (Structures)

• typedef Deyimi

• union Deyimi / Birlik

Genel Bakış… 2

YZM 1102 – Algoritma ve Programlama II

2. BÖLÜM

Enumeration

3

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

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

enum Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

6

• Hangisi daha anlaşılır?

if (kisi_cinsiyet == 1)

{

}

?

if (kisi_cinsiyet == Erkek)

{

}

enum Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

7

• Genel yazım biçimi:

enum tip_adı

{

değer_1,

değer_2,

...,

değer_n

};

enum Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

enum Deyimi (devam…)

8

• Örnek:

enum eBolumler

{

programcilik,

donanim,

muhasebe,

motor

};

YZM 1102 – Algoritma ve Programlama II

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.

enum Deyimi (devam…)

9

• Örnek: enum eBolumler

{

programcilik,

donanim,

muhasebe,

motor

};

void main ()

{

enum eBolumler bolum_degiskeni;

int bolum_degiskeni2;

}

YZM 1102 – Algoritma ve Programlama II

Proje oluşturalım ve örneği uygulayalım…

10

Örnek: Basit enum Kullanımı

YZM 1102 – Algoritma ve Programlama II

11

Alıştırma: enum Oluşturma

YZM 1102 – Algoritma ve Programlama II

• Aşağıdaki bilgilerin 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

12

Örnek: Girilen Sayının Tek/Çift Olma

Kontrolü (enum Kullanımı)

YZM 1102 – Algoritma ve Programlama II

• Lab uygulamasında yapacağız.

2. BÖLÜM

Yapılar (Struct) ve Birlikler

13

YZM 1102 – Algoritma ve Programlama II

14

struct (Yapı) Deyimi

YZM 1102 – Algoritma ve Programlama II

• 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.

15

YZM 1102 – Algoritma ve Programlama II

• 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.

struct Deyimi (devam…)

16

struct Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

• 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

17

struct Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

• Örnek: Bir üniversitedeki öğrencilerin 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;

18

struct Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

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?

19

struct Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

• Ö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ı

20

struct Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

Ogrenci varlığı (entity) içerisinde

öğrenci ile ilgili bilgileri

kapsüllemiş (encapsulation) olduk.

21

struct Deyimi (devam…)

YZM 1102 – Algoritma ve Programlama II

Öğ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

Okuma

Yaz

ma

23

struct Değişkenlerini Kopyalama

YZM 1102 – Algoritma ve Programlama II

• 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;

24

YZM 1102 – Algoritma ve Programlama II

Örnek: struct Kopyalama

ogrenci_bilgisi2.No = ogrenci_bilgisi1.No;

ogrenci_bilgisi2.Ad = ogrenci_bilgisi1.Ad;

ogrenci_bilgisi2.Soyad = ogrenci_bilgisi1.Soyad;

25

struct Değişkenlerini Karşılaştırma

YZM 1102 – Algoritma ve Programlama II

• 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 üyeler ile karşılaştırma yapılabilir.

• Aşağıdaki karşılaştırma yanlıştır:

if (degisken1 == degisken2) ….

26

Örnek: struct Değişkenlerini Karşılaştırma

YZM 1102 – Algoritma ve Programlama II

27

struct Değişkenleri ve Fonksiyonlar

YZM 1102 – Algoritma ve Programlama II

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.

28

Örnek: struct ve Fonksiyonlar

YZM 1102 – Algoritma ve Programlama II

29

struct Değişkenleri ve Diziler

YZM 1102 – Algoritma ve Programlama II

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….

30

struct Değişkenleri ve Diziler

YZM 1102 – Algoritma ve Programlama II

• 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.

31

Örnek: struct Değişkenleri ve Diziler

YZM 1102 – Algoritma ve Programlama II

32

struct Değişkenleri ve Diziler

YZM 1102 – Algoritma ve Programlama II

• 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.

33

Örnek: struct Değişkenleri ve Diziler

YZM 1102 – Algoritma ve Programlama II

34

typedef Kullanımı

YZM 1102 – Algoritma ve Programlama II

• 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.

35

Örnek: typedef Kullanımı

YZM 1102 – Algoritma ve Programlama II

36

struct içerisinde struct Kullanımı

YZM 1102 – Algoritma ve Programlama II

• 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….

37

YZM 1102 – Algoritma ve Programlama II

• OgrenciNot isimli bir struct oluşturun

• 2 Vize notu, 2 Quiz notu, 1 final notu olsun (Tüm alanlar

int olabilir)

• Iletisim isimli bir struct oluşturun

• Telefon ve Eposta üyeleri olsun (Karakter dizisi)

• Ogrenci isimli bir struct oluşturun

• No, Ad, Soyad, Cinsiyet, Iletisim ve OgrenciNot üyeleri

olsun

Örnek: struct içerisinde struct Kullanımı

38

Örnek: struct içerisinde struct Kullanımı

YZM 1102 – Algoritma ve Programlama II

39

Birlikler (Union)

YZM 1102 – Algoritma ve Programlama II

• 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.

40

Birlikler (Union) (devam…)

YZM 1102 – Algoritma ve Programlama II

Ö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.

41

KAYNAKLAR

• 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

42

İYİ ÇALIŞMALAR…

Yrd. Doç. Dr. Deniz KILINÇ

[email protected]

YZM 1102 – Algoritma ve Programlama II