54
ALGORİTMA VE PROGRAMLAMA II HAFTA#1 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi YZM 1106

ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

  • Upload
    others

  • View
    27

  • Download
    1

Embed Size (px)

Citation preview

Page 1: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

ALGORİTMA VE PROGRAMLAMA II

HAFTA#1

Celal Bayar Üniversitesi Hasan Ferdi Turgutlu

Teknoloji FakültesiYZM 1106

Page 2: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Algoritma Nedir?2

• Basit tanım: Belirli bir görevi yerine getiren sonlu

sayıdaki işlemler dizisidir.

• Geniş tanım: Verilen herhangi bir sorunun çözümüne

ulaşmak için uygulanması gerekli adımların hiç bir

yoruma yer vermeksizin açık, düzenli ve sıralı bir

şekilde söz ve yazı ile ifadesidir. Algoritmayı

oluşturan adımlar özellikle basit ve açık olarak

sıralandırılmalıdır.

YZM 1102 – Algoritma ve Programlama II

Page 3: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Algoritmaların Sahip Olması Gereken

Genel Özellikler3

• Giriş/çıkış bilgisi,

• Sonluluk,

• Kesinlik,

• Etkinlik,

• Başarım ve performans.

YZM 1102 – Algoritma ve Programlama II

Page 4: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Örnek: Üçgenin Alanını Hesaplayan Algoritma

4

1. BAŞLA

2. Taban değerini gir

3. Yükseklik değerini gir

4. Taban ile yüksekliği çarp ve sonucu ikiye böl

5. Çıkan sonucu yaz

6. BİTİR

YZM 1102 – Algoritma ve Programlama II

Page 5: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

5

1. BAŞLA

2. Taban değerini gir

3. Yükseklik değerini gir

4. Taban ile yüksekliği

çarp ve sonucu ikiye böl

5. Çıkan sonucu yaz

6. BİTİR

Düz Yazı Sözde Kod

Taban için t, yükseklik için

y, alan için A seç

1. BAŞLA

2. t değerini OKU

3. y değerini OKU

4. A = (t * y)/2

5. A değerini YAZ

6. BİTİR

Örnek: Üçgenin Alanını Hesaplayan Algoritma

YZM 1102 – Algoritma ve Programlama II

Page 6: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Akış Şemaları ile Gösterim

6

• Bir algoritmanın görsel şekiller ve sembollerle ifade edilmiş

haline «Akış Şemaları» adı verilir.

• Akış şeması sembolleri ANSI (American National Standards

Institute) standardı olarak belirlenmiş ve tüm dünyada

kullanılmaktadır.

• Algoritma doğal dille yazıldığı için herkes tarafından

anlaşılamayabilir ya da başka anlamlar çıkarılabilir. Ancak

akış çizgelerinde her bir şekil standart bir anlam taşıdığı için

farklı yorumlanması mümkün değildir.

YZM 1102 – Algoritma ve Programlama II

Page 7: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Akış Şeması Şekilleri

7

BAŞLA

BİTİR

Akış şemasının başlangıç ve bitiş yerlerini gösterir.

Başlangıç simgesinden çıkış oku vardır. Bitiş

simgesinde giriş oku vardır.

Aritmetik işlemler ve değişik atama işlemlerinin temsil

edilmesi için kullanılır.

Dışarıdan bilgi giriş çıkışı için kullanılır.

Belgeye, yazıcıya, ekrana çıktı için kullanılır.

YZM 1102 – Algoritma ve Programlama II

Page 8: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Akış Şeması Şekilleri

8

Oklar şemanın akış yönünü belirler.

Bağlantı işlemlerini temsil eder.

Kontrol ve karar verme işlemlerini temsil eder.

YZM 1102 – Algoritma ve Programlama II

Page 9: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Örnek: İki Sayının Toplamı Akış Şeması

9

Sözde Kod

Toplam için T, birinci sayı

için X, ikinci sayı için Y seç

1. BAŞLA

2. X değerini OKU

3. Y değerini OKU

4. T = X + Y

5. T değerini YAZ

6. BİTİR

Başla

T = X + Y

T değerini YAZ

Bitir

X ve Y

değerlerini

OKU

YZM 1102 – Algoritma ve Programlama II

Page 10: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

Mantıksal İşlemler (devam…)

10

• DEĞİL bağlacı; doğruyu yanlış, yanlışı doğru yapar.

Örnek: Yazılım departmanında çalışan erkek personellerden

yaşı 30’un üzerinde olanları ekrana yazdır.

Eğer;

• (perCinsiyet = Erkek) VE (perYas > 30) ise ekrana yazdır.

1. KOŞUL 2. KOŞUL

YZM 1102 – Algoritma ve Programlama II

Page 11: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

• Program çalıştırılması sonucunda ekrana «Hello World!»

yazmaktadır.

İlk C Programı11

YZM 1102 – Algoritma ve Programlama II

Page 12: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

12

YZM 1102 – Algoritma ve Programlama II

1.Satır: Yorumlar /* …. */ Comments

• 1.satır /* ile başlayıp */ ile bitmektedir. Bu işaretler arasına

yorum satırları yazılır.

• Yorumlar, okunabilirliği artırmak amacıyla kullandığımız bir

özelliktir. Programcı notları olarak da düşünülebilirler.

• Yorum satırlarında bilgisayar hiçbir işlem yapmaz çünkü C

derleyicileri bu satırları atlar.

• Dolayısıyla, yorum satırları için makine diline çevrilmiş

kodlar oluşturulmaz.

Page 13: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

13

YZM 1102 – Algoritma ve Programlama II

Yorum Satırı Örnekleri

/* Tek satır yorum */

// Tek satır yorum

/* İki satır yorum

örneği */

/* Birden fazla

satır yorum

örneği */

Toplam = X + Y; // X ve Y toplanarak Toplam değişkenine atanır

Page 14: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

14

YZM 1102 – Algoritma ve Programlama II

2. ve 3. Satır: Ön işlemci Direktifleri (#include)

• # işaretiyle başlayan satırlar, program derlenmeden önce C ön

işlemcisi tarafından işlenirler.

• Bu satır, ön işlemciye standart giriş/çıkış başlık dosyasının

yani «stdio.h» dosya içeriğinin programa eklemesini söyler.

• Bu başlık dosyası, derleyicinin «printf» gibi standart

giriş/çıkış kütüphane fonksiyonlarının (STandarD-Input-

Output) derlerken kullanabileceği bilgi ve bildirimleri içerir.

• Başlık dosyalarının uzantısı .h dir.

Page 15: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

15

YZM 1102 – Algoritma ve Programlama II

2. ve 3. Satır: Ön işlemci Direktifleri (#include) (devam…)

• Başlık dosyaları, derleyicinin kütüphane fonksiyonu

çağrılarının doğru yapılıp yapılmadığını anlamasında

yardımcı olan bilgiler içerir.

• ANSI C'deki standart başlık dosyaları şunlardır:

assert.h

ctype.h

errno.h

float.h

limits.h

locale.h

math.h

setjmp.h

signal.h

stdarg.h

stddef.h

stdio.h

stdlib.h

string.h

time.h

Page 16: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

16

YZM 1102 – Algoritma ve Programlama II

5. Satır: main( ) fonksiyonu

• C programlarının ana fonksiyonu olarak tabir edilir.

• main() kelimesinden sonraki parantezler ( ) main'in

fonksiyon adı verilen program oluşturma bloklarından biri

olduğunu gösterir.

• Programın yürütülmesi ilk olarak bu fonksiyonun

çağrılmasıyla gerçekleşir.

• C programları bir veya birden fazla fonksiyon içerebilir

ancak bunlardan biri mutlaka main() olmalıdır.

Page 17: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

17

YZM 1102 – Algoritma ve Programlama II

7. Satır: printf("Hello World!\n"); fonksiyonu

• printf standart kütüphanede bulunan ekrana formatlı bilgi

yazdırma fonksiyondur. Çift tırnak işareti arasındaki

karakterleri ekrana yazdırır.

• Yazdırılacak karakterlerin tümüne karakter dizesi «string»,

mesaj ya da hazır bilgi «literal» denir.

• printf, parantezler içindeki bağımsız değişkenler (argument)

ve noktalı virgülden oluşan bu satıra «ifade» denir.

• Her ifade ; (noktalı virgül) ile bitmelidir. Noktalı virgüle ifade

sonlandırıcı da denir.

Page 18: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

18

YZM 1102 – Algoritma ve Programlama II

7. Satır: printf("Hello World!\n"); fonksiyonu (devam…)

• printf ifadesindeki tırnak işaretleri arasındaki karakterler

aynen ekrana yazdırılır. Ancak \n karakterlerinin

yazdırılmamaktadır.

• Ters eğik çizgi ( \ ), çıkış karakteri olarak adlandırılır ve

printf'in farklı bir iş yapması gerektiğini belirtir.

• printf, ters çizgi işaretiyle karşılaştığında, bu işaretten sonraki

karaktere bakar ve bu karaktere göre bazı özel işler yapar.

• Ters çizgi işareti ( \ ) ve bu işaretten sonra gelen karaktere

çıkış sırası denir.

• \n çıkış sırası, yeni satır anlamına gelir ve imlecin yeni satıra

geçmesine sebep olur.

Page 19: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

19

YZM 1102 – Algoritma ve Programlama II

C Veri Türleri

• C programlama dilinde 5 tane temel veri tipi bulunmaktadır.

1. char: karakter veriler

2. int: tamsayı veriler

3. float: tek duyarlıklı kayan noktalı sayılar

4. double: Çift duyarlıklı kayan noktalı sayılar

5. void: Değer içermeyen verilerdir.

Page 20: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

20

YZM 1102 – Algoritma ve Programlama II

C Değişkenleri

• Değişken, program içinde kullanılan değerlere bellek

üzerinde açılan alanlardır. Bu alanlar bir değişken ismi ile

anılır.

• Değişken isimlendirilmeleri, tanımlayıcı kurallarına uygun

biçimde yapılmalıdır.

• C’de tüm değişkenler kullanılmadan önce programa

bildirilmelidir.

• Bu bildirim esnasında, değişkenin veri türü belirlenir.

• Örnek:

veri_türü değişken_adı;

int sayac;

Page 21: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

21

YZM 1102 – Algoritma ve Programlama II

C Değişkenleri (devam…)

• Örnekler

int x;

int x1, y1, z1;

long d, d1;

char c;

char c1, c2, c3;

float a;

float a1, a2, a3;

int u[3];

float k[10*20];

• Örnekler

int x = 1;

int x1 = 10, y1 = 20,

z1 = 30;

char c = ‘a’;

float a = 123.45;

Page 22: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

22

YZM 1102 – Algoritma ve Programlama II

C Sabitleri

• Sabit bildirimi, başlangıç değeri verilen değişken bildirimi

gibi yapılır.

• Ancak, veri tipinin önüne const anahtar sözcüğü konmalıdır.

• Sabit içerikleri program boyunca değiştirilemez. Yalnızca

kullanılabilir.

• Genellikle, sabit olarak bildirilen değişken isimleri büyük

harflerle, diğer değişken isimlerinin ise küçük harflerle

yazılması (gösterilmesi) C programcıları tarafından

geleneksel hale gelmiştir.

Page 23: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

23

YZM 1102 – Algoritma ve Programlama II

C Sabitleri (devam…)

• Örnekler:

const float PI = 3.142857;

const double NOT= 12345.8596235489;

const int EOF= -1;

const char[] = "devam etmek için bir tuşa basın...";

Page 24: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

24

YZM 1102 – Algoritma ve Programlama II

C Operatörleri – Atama Operatörleri

Operatör Açıklama Örnek Anlamı

= atama x = 7; x = 7;

+= ekleyerek atama x += 3 x = x + 3

-= eksilterek atama x -= 5 x = x - 5

*= çarparak atama x *= 4 x = x * 4

/= bölerek atama x /= 2 x = x / 2

%= bölüp, kalanını atama x %= 9 x = x % 9

++ bir arttırma x++ veya ++x x = x + 1

-- bir azaltma x-- veya --x x = x - 1

Page 25: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

25

YZM 1102 – Algoritma ve Programlama II

C Operatörleri – Atama Operatörleri (devam…)

Örnek Anlamı

x = y++;

y’nin değeri önce x’e aktarılır sonra bir arttırılır.

x = y;

y = y + 1;

x = ++y;

y’nin değeri önce bir arttırılır sonra x’e aktarılır .

y = y + 1;

x = y;

x = y--;

y’nin değeri önce x’e aktarılır sonra bir azaltılır.

x = y;

y = y - 1;

x = --y;

y’nin değeri önce bir azaltılır sonra x’e aktarılır .

y = y - 1;

x = y;

Page 26: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

26

YZM 1102 – Algoritma ve Programlama II

C Operatörleri – Atama Operatörleri (devam…)

• Örnek: Aşağıdaki işlemlerden sonra a, b ve c’nin son değerleri

ne olur?

a = 5;

b = a++;

c = ++a;

a = 7

b = 5

c = 7

Page 27: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

27

YZM 1102 – Algoritma ve Programlama II

C Operatörleri – Atama Operatörleri (devam…)

• Örnek: Aşağıdaki işlemlerden sonra i’nin son değerlerine olur?

int i = 1;

i++;

++i;

i += 1 + i++;

i = i + 1;

i = 9

Page 28: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

28

YZM 1102 – Algoritma ve Programlama II

scanf() Fonksiyonu

• Birçok programda ekrana verilerin bastırılmasının yanı sıra

klavyeden veri okunması gerekebilir.

• scanf() fonksiyonu klavyeden veri okumak için kullanılan

fonksiyondur.

• Tip belirleyicileri printf fonksiyonu ile aynı mantıkta

kullanılır ve % sembolü ile ifade edilir.

• Örneğin klavyeden bir x tamsayısı okumak için aşağıdaki

ifade kullanılır:

scanf("%d", &x);

Page 29: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

29

YZM 1102 – Algoritma ve Programlama II

if…else Bloğu

• if ve else tek bir karşılaştırma

deyimi olup else kullanımı isteğe

bağlıdır.

• Eğer bu koşul olumlu ise if den

sonraki bölüm yürütülür ve else

den sonraki bölüm atlanır.

• Koşul olumsuz ise if den sonraki

küme atlanır ve eğer varsa, else

den sonraki kümedeki işlemler

gerçekleştirilir.

if (koşul)

{ Doğru ise İşlem1}

else

{ Yanlış ise İşlem2}

Page 30: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

30

YZM 1102 – Algoritma ve Programlama II

if…else Bloğu (devam…)

if (sayi < 0) {

printf("Negatif sayı girdiniz\n");

}

else {

printf("Sıfır veya pozitif bir sayı

girdiniz\n");

}

if (sayi < 0)

printf("Negatif sayı girdiniz\n");

else

printf("Sıfır veya pozitif bir sayı

girdiniz\n");

Örnek 1 Örnek 2

Not: Her iki örnek aynı işlemi gerçekleştirmektedir. Tek fark birinci örnekte { }

sembollerinin kullanılmasıdır. Tek satır deyim içeren bloklarda, { } sembollerinin

kullanılmasına gerek yoktur.

Page 31: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

31

YZM 1102 – Algoritma ve Programlama II

Örnek: Girilen notun harf karşılığını bulma

Page 32: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

32

YZM 1102 – Algoritma ve Programlama II

switch…case Bloğu

switch (değişken) {case sabit1:

deyim1

break;case sabit2:

deyim2

break;…

case sabitn:deyimn

break;default:

deyimd;}

değişken değeri sabit1 değerine eşitse

deyim1 çalıştırılır ve break kullanılarak

bloktan çıkış yapılır.

değişken değeri herhangi bir sabite eşit

değilse default sabitinin deyimi deyimd

çalışır.

Page 33: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

33

YZM 1102 – Algoritma ve Programlama II

Örnek: Girilen il plaka kodlarına göre şehir

isimlerinin yazdırılması (switch-case bloğu)

Page 34: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

34

YZM 1102 – Algoritma ve Programlama II

? Karşılaştırma Operatörü

• Bu operatör, if-else karşılaştırma deyiminin yaptığı işi sınırlı

olarak yapan bir operatördür. Genel yazım biçimi:

(koşul) ? deyim1 : deyim2;

• İlk önce koşul sınanır.

• Eğer koşul olumluysa deyim1, olumsuzsa deyim2

değerlendirilir.

• deyim1 ve deyim2 de atama işlemi yapılamaz.

• Ancak koşul deyiminde atama işlemi yapılabilir.

• deyim1 ve deyim2 yerine fonksiyon da kullanılabilir.

Page 35: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

35

YZM 1102 – Algoritma ve Programlama II

? Karşılaştırma Operatörü (devam…)

• Örnek:

int sayi = 15;

x = ( sayi < 10 ) ? printf("yazi1") : printf("yazi2");

Page 36: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

36

YZM 1102 – Algoritma ve Programlama II

Döngü

• Döngü (loop) deyimleri, bir işlemi yerine getiren kodkümesinin belli bir koşul altında tekrar edilmesi için kullanılır.

• Bir değişken belirli bir değerden başlayıp, son değeri alıncayakadar belirtilen işlemler tekrarlanır.

• Örn: n! değerinin hesaplanması (faktöryel)

• C programlama dilinde:

• for,

• while,

• do...while

olmak üzere üç tip döngü deyimi vardır.

• Diğer programlama dillerinde olduğu gibi, bu deyimlerleistenildiği kadar iç-içe döngü yapısı kullanılabilir.

Page 37: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

37

YZM 1102 – Algoritma ve Programlama II

Örnek: 1-10 arasındaki sayıların yazdırılması

Page 38: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

38

YZM 1102 – Algoritma ve Programlama II

for Döngü Yapısı Örnekleri

• 1’den 100’e kadar birer birer arttırma

for ( i = 1; i <= 100; i++)

• 100’den 1’e kadar birer birer azaltma

for ( i = 100; i <= 1; i--)

• 7’den 77’ye kadar yedişer yedişer arttırma

for ( i = 7; i <= 77 ; i += 7)

• 2, 5, 8, 11, 14, 17, 20 değerlerini alacak biçimde değiştirme

for ( j = 2; j <=20; j += 3)

Page 39: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

39

YZM 1102 – Algoritma ve Programlama II

while Döngüsü

• Bir koşulun gerçekleşmesi durumunda belirli işlemlerintekrarlanması söz konusu ise while döngülerinden yararlanılır.

• while döngüsünün çalışabilmesi için koşulun başlangıçtamutlaka doğru olması gerekir.

• Genel yazım biçimi aşağıdaki gibidir:

while (koşul)

{

...

döngüdeki deyimler;

...

}

Page 40: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

40

YZM 1102 – Algoritma ve Programlama II

Örnek: 0 girilene kadar, girilmiş tüm sayıların

toplanması...

Page 41: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

41

YZM 1102 – Algoritma ve Programlama II

break Deyimi

• Döngü işlemi devam ederken döngünün koşuluna bağlı

olmaksızın döngüden çıkılmasını sağlayan deyimdir.

• Döngü içinde bu deyime sıra geldiğinde, break ardından

döngü sonuna kadar olan tüm deyimler atlanır ve döngüye

bir sonraki adımdan itibaren devam edilir.

• Tüm döngü türlerinde kullanılabilir.

• Kullanım biçimi aşağıdaki gibidir:

break;

Page 42: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

42

YZM 1102 – Algoritma ve Programlama II

İç İçe Geçmiş Döngüler

• Bir program içinde birbiri içine geçmiş birden çok döngü

kullanılabilir. Bu durumda (bütün programlama dillerinde olduğu

gibi) önce içteki döngü, daha sonra dıştaki döngü tamamlanır.

for (i=1; i<n; i++){

//1.dış döngü

for (j=1; j<m; j++) {

//2.iç döngü

}

}

Page 43: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

43

YZM 1102 – Algoritma ve Programlama II

Dizi Nedir?

• Veri yapısı türlerinden bir tanesidir (Array, Struct, Pointer,

Class …).

• İçerisinde birden fazla,

• aynı tip ve

• aynı isimdeki

veriyi bellekte depolayabilen değişkenlere dizi denir.

• Örneğin; bir sınıftaki öğrencilerin notlarını saklamak için

dizileri kullanmak mümkündür.

Page 44: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

44

YZM 1102 – Algoritma ve Programlama II

Dizilerin Bildirimi

• Bir dizi çok sayıda değişken barındırdığından, bunları

birbirinden ayırt etmek için indis adı verilen bilgiler kullanılır.

• C Programlama Dili'nde, bir dizi hangi tipte tanımlanmış

olursa olsun başlangıç indisi her zaman 0'dır.

• Diziler tanımlanırken;

• dizinin adı,

• dizinin boyutu,

• dizi elemanlarının hangi tipte

olacağı belirtilmelidir.

Page 45: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

45

YZM 1102 – Algoritma ve Programlama II

Dizilere Başlangıç Değeri Verme

• Bir dizi, doğal olarak bazı veriler içerecektir.

• Diziye aynı anda birden fazla değer atanabilir. Bunun için söz

konusu değerler { } işaretleri arasında virgül ile ayrılarak

yazılırlar.

• Örnek:

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

• Küme parantezleri sonlandırıcı ; karakteri ile bitmektedir.

Page 46: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

46

YZM 1102 – Algoritma ve Programlama II

Örnek: Dizi elemanlarına değer atama ve

okuma

Page 47: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

47

YZM 1102 – Algoritma ve Programlama II

Karakter Dizileri (Strings)

• Bazı programlama dillerinde karakter dizilerini tutmak için

özel veri türleri (string, vb.) bulunmaktadır.

• Ancak C programlama dilinde böyle bir veri türü olmadığı için

yerine karakterlerden oluşan bir boyutlu diziler kullanılır.

• Karakter dizilerine özel olarak, karakter dizilerinin sonuna

sonlandırıcı karakter olarak adlandırılan bir simge eklenir.

• Sonlandırıcı karakter:

Dizinin bittiği yeri gösterir.

ASCII tablosunun sıfır numaralı ('\0') karakteridir.

Page 48: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

48

YZM 1102 – Algoritma ve Programlama II

Fonksiyonlara Genel Bakış

• Fonksiyonlar karmaşık yapılı programların karmaşıklığını

azaltmak ve bu programları modüler bir yapıya

kavuşturmak için kullanılırlar.

• Fonksiyonlar, programcıların tekrarlanan kodlar

yazmalarını önlerler.

• Fonksiyon belirli bir adı olan program parçasıdır.

• Fonksiyonların çalışabilmesi için bir başka fonksiyondan

adı ile çağrılması gerekmektedir.

Page 49: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

49

YZM 1102 – Algoritma ve Programlama II

C ve Fonksiyonlar

• C programları fonksiyonlardan oluşurlar.

• Şu ana dek kullandığımız main() de bir fonksiyondur. Bu

fonksiyonun bir başka fonksiyon içinden çağrılmasına gerek

yoktur.

• Her C programında bir main() fonksiyonun yer alması

gerekmektedir.

• main() fonksiyonu, program çalıştırıldığında otomatik olarak

çağrılan bir fonksiyondur.

• Bir main() fonksiyonu içinden bir başka fonksiyon çağrılabilir.

Page 50: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

50

YZM 1102 – Algoritma ve Programlama II

Fonksiyon Tanımı

• Fonksiyon, belirli sayıda verileri kullanarak bunları

işleyen ve bir sonuç üreten komut grubudur.

• Her fonksiyonun bir adı ve fonksiyona gelen

değerleri gösteren parametreleri (bağımsız

değişkenleri) vardır.

• Bir fonksiyon bu parametreleri alıp çeşitli işlemlere

tabi tutar ve bir değer hesaplar.

Page 51: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

51

YZM 1102 – Algoritma ve Programlama II

Örnek: İki sayının toplamı

Page 52: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

52

YZM 1102 – Algoritma ve Programlama II

Parametre ve Argüman

• Fonksiyon

çağrılırken

gönderilen değerlere

Argüman denir.

• Fonksiyon

bildiriminde,

fonksiyona girdi

olarak, kullanılan

değişkenlere

Parametre denir.

Page 53: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

53

YZM 1102 – Algoritma ve Programlama II

Örnek: Fonksiyon geri değer dönüşü ve

prototip kullanımı (UYGULA)

Page 54: ALGORİTMA VE PROGRAMLAMA II HAFTA#1 - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/Algoritma/hafta-01/ders_notu01.pdf · 14 YZM 1102 –Algoritma ve Programlama II 2. ve 3. Satır: Ön

54

YZM 1102 – Algoritma ve Programlama II

Örnek: Dizinin Fonksiyonda Kullanılması