217
ALGORİTMA VE PROGRAMLAMA (Bölüm 1) 1 Prof. Dr. Hakan Ündil - Elektronik Teknolojisi - 2017-2018 Güz (Bölüm 1 – 2)

ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

  • Upload
    others

  • View
    9

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

ALGORİTMA VE

PROGRAMLAMA

(Bölüm 1)

1

Prof. Dr. Hakan Ündil - Elektronik Teknolojisi - 2017-2018 Güz

(Bölüm 1 – 2)

Page 2: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR

Bir problemi çözmek için yapılacak işlemler

en genel şekilde iki adımda incelenebilir:

1. Algoritma (Problemi Çözme Yolu)

2. Kodlama (Gerçekleştirme)

2

Page 4: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Her Algoritma Aşağıdaki Kriterleri Sağlamalıdır:

1. Girdi : Dışarıdan Sıfır veya farklı bir değer verilmeli.

2. Çıktı : En azından bir değer üretilmeli.

3. Açıklık : Her işlem (komut) açık olmalı ve farklı

anlamlar içermemeli.

4. Sonluluk : Her türlü ihtimal için algoritma sonlu adımda

bitmeli.

5. Etkinlik : Her işlem (komut), kişinin kalem ve kağıt ile

yürütebileceği kadar basit olmalıdır.

4

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Page 5: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Algoritma yapma Sırasında Dikkat Edilecek Hususlar:

Doğruluğu kesin olarak ispatlanmadıkça, hiçbir şeyi doğru

olarak kabul etmeyin; tahmin ve önyargılardan kaçının.

Karşılaştığınız her güçlüğü mümkün olduğu kadar çok

parçaya bölün.

Anlaşılması en kolay olan (basit) şeylerle başlayıp yavaş

yavaş daha zor ve karmaşık olanlara doğru ilerleyin.

Önce olaya bakışınız çok genel, sonra hazırlayacağınız

Detaylı Algoritma ise hiçbir şeyi dışarıda bırakmayacak

kadar kusursuz ve ayrıntılı olsun. ---------------------------------------------------------------------------------

5

Page 6: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

2. Kodlama

Bir programlama diliyle

bu Algoritma’nın

programa (yazılıma)

dönüştürülmesidir.

6

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Page 7: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Kodlama (Programlama) Dili Seçerken;

Dil yapılacak işe uygun özelliklere sahip mi ?

Diğer dillerle uyumluluğu ve bu dillere dönüştürme

imkanları nedir?

Öğrenmesinin kolay/zor olup olmadığı, çokca örnekler

var mı?

Piyasada, bu dili kullanan, yeteri kadar iş gücü(kişi)

olup olmadığı…

gibi hususlara dikkat edilmelidir. ----------------------------------------------------------------------

7

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Page 8: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Ayrıntılı Çözme Aşamaları

Problem Çözme (Daha Ayrıntılı) Aşamaları:

1. Sistem İhtiyaçları:

Sistem ihtiyaçlarına göre problemin tam olarak ne

olduğunun anlaşılmasıdır.

Problemin çözümünden neler beklendiği bilinmelidir.

Çözümün girdi ve çıktılarının neler olacağı kesin

olarak belirlenmelidir.

8

Page 9: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Ayrıntılı Çözme Aşamaları

2. Analiz:

Sistem ihtiyaçları belirlendikten sonra bunlar

temel parçalara ayrılarak bu parçalar ayrı ayrı

değerlendirilir.

Bu parçalar arasındaki ilişkiler tanımlanır.

Bu suretle sonuca gitmeye çalışılır.

9

Page 10: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

3. Algoritma :

Kullanılacak çözüm adımlarını gösteren

Algoritma adı verilen bir liste yapılır…

Böyle bir algoritma tasarlanırken ilk önce ana

(genel) adımlar çıkarılır.

Daha sonra her adım için daha ayrıntılı bir

algoritmaya geçilir.

10

PROBLEM ÇÖZME ve ALGORİTMALAR(Devam)

Ayrıntılı Çözme Aşamaları

Page 11: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

4. Kodlama (Programlama):

Geliştirilen algoritma bir programlama diline

çevrilir.

Bu dilin, programın yazımını aşırı

zorlaştırmayacak ve karmaşıklaştırmayacak

bir dil olması tercih edilmelidir.

Programı yazacak olanın bilgisi de dikkate alınır.

11

PROBLEM ÇÖZME ve ALGORİTMALAR(Devam)

Ayrıntılı Çözme Aşamaları

Page 12: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

5. Sistem Testi:

Program değişik Girdiler ile çalıştırılır…

Programın ürettiği sonuçlar (Çıktılar) kontrol

edilerek test işlemi gerçekleştirilir.

Sonuçlar (Çıktılar) beklendiği gibi ise programın

doğru çalıştığı ispatlanmış olunur…

Değilse doğru çalışmayan kısımları tespit edilerek

geri adımlara dönülmek suretiyle düzeltilir.

12

PROBLEM ÇÖZME ve ALGORİTMALAR(Devam)

Ayrıntılı Çözme Aşamaları

Page 13: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

6. Bakım:

Programın güncel şartlara göre yeniden

düzenlenmesini (Update) içeren bir

konudur.

Zamanla oluşan hataların giderilmesi …

Yeni iyileştirmeler yapılması…

Ya da programın teknolojisinin

yenilenmesi gibi işlemlerdir.

13

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Ayrıntılı Çözme Aşamaları

Page 14: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

14

• Herhangi bir adımda sorun yaşanırsa (gerektiğinde) bir adım geri

dönülür…

PROBLEM ÇÖZME ve ALGORİTMALAR(Devam)

Çözme Aşamaları (Adımlar)

Page 15: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Problem Çözmede Algoritma ve Programlama

Yukarıda açıklanan

Ayrıntılı Problem Çözme Aşamalarından

ikisi dersimizin konusunu ile

doğrudan ilgilidir :

ALGORİTMA

KODLAMA (Programlama)

Bu başlıkları daha ayrıntılı olarak inceleyelim…

15

Page 16: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Algoritma Türleri

ALGORİTMA :

İki farklı şekilde ifade edilebilirler:

1. Pseudo (Sözde) Kod

2. Akış Diyagramı (Akış Şeması)

16

Page 17: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Pseudo (Sözde) Kod:

Bir algoritmanın;

Hem programlama dili kuralları

hem de konuşma dili kullanılarak

ortaya koyulması/tanımlanmasıdır.

İyi bir biçimde yazılmış, Psedo Kod’dan,

programlama diline kolaylıkla geçilebilir.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Psedo (Sözde) Kod

17

Page 18: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Pseudo (Sözde) Kod…

Doğrudan konuşma dilinde…

Programlama mantığı altında…

Eğer, iken gibi şart kelimeleri ve …

Büyük, Eşit, Küçük ise vb. ifadeler ile

yazılır.

Not: Aynı Problem için çok farklı Psedo Kod Yazılabilir.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Psedo Kod (Devam)

18

Page 19: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

Örnek 1: Verilen iki sayının toplamının bulunarak bu

toplamın yazdırılması algoritmasını psedo (sözde) kod

ile yazınız.

1. Başla

2. Birinci Sayıyı Oku

3. İkinci Sayıyı Oku

4. İki Sayıyı Topla

5. Toplamı yaz

6. Dur

19

Page 20: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 2: Verilen bir sıcaklık derecesine göre suyun

durumunu belirten bir algoritmayı psedo (sözde) kod ile

yazınız. Çalıştırılmasını gösteriniz.

Not 1: Programın, sıcaklığa göre Su, Buz, Buhar

şeklinde Suyun durumunu göstermesi istenmektedir.

Not 2: Önce programın ne yaptığına dâir açıklama

mesajı sonra da sıcaklık değerinin girilmesi için

uyarı mesajı yazılsın.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

20

Page 21: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

1. Başla

2. Programın görevini belirten Açıklama Mesajı yaz

3. Kullanıcının sıcaklığı girmesi için bir Uyarı Mesajı yaz

4. Girilen Sıcaklığı Oku

5. Eğer Sıcaklık sıfırdan Küçük ise

Durum=“Buz”

6. Eğer Sıcaklık 100’e Eşit ya da Büyük ise

Durum= “Buhar”

7. Hiçbiri Değil ise

Durum =“Su”

8. Durum sonucunu (Ekrana) Yaz.

9. Son 21

Page 22: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Programın Çalışması: (140 derece örneği için)

Bu Program, sıcaklığa göre Su, Buz, Buhar

şeklinde suyun durumunu gösterir. (Ekrana Açıklama

Mesajı)

Lütfen derece cinsinden sıcaklığı giriniz: 140

(Ekrana Uyarı Mesajı)

(Klavyeden Girdi)

BUHAR (Ekrana yazılan Çıktı)

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

22

Page 23: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 3: Bir Pseudo (sözde) Kod yazarak bir

öğrencinin dönem sonu not ortalamasını

hesaplayıp öğrencinin dersten geçip

geçmeyeceğini tespit edin.

Not : Not ortalaması eşit ağırlıklı 4 nottan oluşsun ve

Geçme notu 50 olsun.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

23

Page 24: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Başla

2. “Öğrencinin dersten aldığı 4 notu Girin” uyarı

mesajını yaz.

3. Ortalamayı hesaplamak üzere girilen notları

topla ve 4’e böl ve sonucu Ortalama’ya aktar

4. Eğer Ortalama 50 ‘nin altında ise

“Başarısız” yaz.

5. Değilse (Aksi halde)

“Başarılı” yaz.

6. Son

24

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

Page 25: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Aynı Psedo Kodu Programlama Diline daha yakın tarzda farklı şekilde tekrar yazalım:

1. Başla

2. M1,M2,M3,M4 olarak Öğrencinin Notlarını Girin

3. ORTALAMA = (M1+M2+M3+M4)/4

4. Eğer (ORTALAMA < 50) ise

“Başarısız” yaz

5. Değilse (Aksi halde)

“Başarılı” yaz

6. Son

25

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Psedo Kod (Devam)

Page 26: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

2. Akış Diyagramı (Akış Şeması):

Algoritmanın görsel/şekilsel olarak ortaya

koyulmasıdır.

Yapılması gerekenleri geometrik

şekillerden oluşan sembollerle gösterir.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı

26

Page 27: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Akış Diyagramı kullanılması ile

program Görsellik kazanacağından

Programın takip edilmesi

daha da kolaylaşır.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

27

Page 28: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Terminal Sembolü:

Akış Diyagramında Başlangıç ya da Bitiş belirtir.

Giriş İşlemi Sembolü:

Bir Giriş işlemini temsil eder.

İşlem Sembolü:

Algoritmada bir işlemi temsil eder

Karar Sembolü:

İki değerin mukayesesi dahil karar işlemini temsil eder

Ön Tanımlı İşlem Sembolü:

Daha önce tanımlı bir işlemi temsil eder

Çıkış İşlemi Sembolü:

Bir Çıkış işlemini temsil eder.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam) AKIŞ DİYAGRAMI SEMBOLLER (Sık Kullanılanlar) :

28

Page 29: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 4:

Girilen bir uzunluğa ait inch (inç) değerini santimetreye çeviren hem bir Psedo (Sözde) kod yazıp hem de bir Akış Diyagramı çiziniz.

Not: 1 inch = 2.54 cm dir.

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

29

Page 30: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Akış Diyagramı

30

Psedo Kod

1. Başla 2. inch olarak (Linc) uzunluğu

(klavyeden) girin. 3. inch değerini 2,54 ile çarparak santimetreye çevir ve sonucu Lcm ‘ye aktar 4. Uzunluğu santimetre (Lcm) olarak (ekrana) yaz. 5. Son

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

Page 31: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Psedo Kodu ( Örnek 3 de yazılmıştı)

1. Başla

2. M1,M2,M3,M4 değerlerini girin

3. ORTALAMA = (M1+M2+M3+M4)/4

4. Eğer (ORTALAMA <50) ise

“BAŞARISIZ” yaz

5. Değilse(aksi halde)

“BAŞARILI” yaz

6. Son

Öğrencinin Ortalamasını hesaplayıp durumunu belirleyen Örnek 3 için;

31

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

Page 32: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

32

BAŞARILI

BAŞLA

M1,M2,M3,M4

ORTALAMA = (M1+M2+M3+M4)/4

ORTALAMA

<50

Mi?

DUR

E H

BAŞARISIZ

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

Page 33: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 5 :

şeklindeki ikinci derece bir

denklemin köklerini bulmak için bir psedo kod

yazarak akış diyagramı çizin.

Hatırlatma: [d: diskriminant ] olmak üzere

d = sqrt ( ) olmak üzere (sqrt: Karekök)

Denklemin Kökleri;

x1 = (–b + d)/2a ve

x2 = (–b – d)/2a şeklinde hesaplanır.

2 0ax bx c

2 4b ac

33

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

Page 34: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Psedo Kod

1. Başla

2. a, b, c katsayılarını girin

3. d =sqrt ( ) hesapla

4. x1 = (–b + d)/(2 x a) hesapla

5. x2 = (–b – d)/(2 x a) hesapla

6. x1 ve x2 yi yaz

7. Son

Not: sqrt, Karekök anlamındadır.

BAŞLA

a, b, c

d = sqrt (b.b – 4.a.c)

x1 , x2

DUR

x1 = (–b + d) / (2.a)

X2 = (–b – d) / (2.a)

4b b a c

Akış Diyagramı

34

PROBLEM ÇÖZME ve ALGORİTMALAR (Devam)

Akış Diyagramı (Devam)

Page 35: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

ALGORİTMA VE

PROGRAMLAMA

(Bölüm 2)

35

Page 36: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

BİLGİSAYARDA İŞLEMLER

Bilgisayar programları ile gerçekleştirilen

işlemlere genel olarak bir göz atalım:

Bu işlemler temelde 3 Grupta toplanabilir:

1. Matematiksel İşlemler

2. Karşılaştırma(Karar) İşlemleri

3. Mantıksal(Lojik) İşlemler

36

Page 37: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bilgisayarda İşlemler (Devam)

Matematiksel İşlemler (Devam)

1. Matematiksel İşlemler:

Temel Aritmetik İşlemler;

(Toplama,çıkarma,çarpma,bölme)

Matematiksel Fonksiyonlar;

(Üstel,logaritmik,trigonometrik,hiperbolik vb.)

37

Page 38: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

İşlem Matematikte Bilgisayarda

Toplama a+b a+b Çıkarma a-b a-b Çarpma a.b a*b Bölme a:b a/b Üs alma ab a^b

38

Bilgisayarda İşlemler (Devam)

Matematiksel İşlemler (Devam)

Page 39: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Öncelik Sırası İşlem Bilgisayar dili

1 Parantezler ((…………….))

2 Üs alma a^b

3 Çarpma ve bölme a*b ve a/b

4 Toplama ve çıkarma a+b ve a-b

NOT: Bilgisayar diline kodlanmış bir matematiksel ifadede, aynı önceliğe

sahip işlemler mevcut ise bilgisayarın bu işlemleri gerçekleştirme sırası

soldan sağa (baştan sona) doğrudur.

•Mesela ; Y=A*B/C işleminde;

Önce A*B işlemi yapılacak, ardından bulunan sonuç C ye bölünecektir.

39

Bilgisayarda İşlemler (Devam)

Matematiksel İşlemler (Devam)

Page 40: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

40

Bilgisayarda İşlemler (Devam)

Matematiksel İşlemler (Devam)

Page 41: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Karşılaştırma Operatörleri

Operator Tanımı

> Daha büyük

< Daha küçük

= Eşit

Daha büyük veya eşit

Daha küçük veya eşit

Eşit değil

2. Karar (Karşılaştırma)İşlemleri

41

Bilgisayarda İşlemler (Devam)

(Karar) Karşılaştırma İşlemleri (Devam)

Page 42: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

A>B bir karşılaştırma (mukayese) ifadesidir.

Test etmek istediğimiz bir “şartı” tanımlar

Bu şartın sağlanıp sağlanmama durumuna göre farklı işlemler yapılabilir.

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

42

Page 43: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Mesela A>B ise A nın değerini, aksi halde B değerini

yazan Psedo Kod (parçası) yazalım:

Eğer A>B doğru ise

A ‘nın değerini yaz.

Değil ise (Aksi halde)

B ‘nin değerini yaz.

Not: A=B durumu, A<B ile birlikte Değil ise durumuna

dahil olacaktır.

43

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 44: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bu Karar yapısını Akış Diyagramı (parçası)

olarak gösterelim;

A>B

Mi?

B

Değeri

A

Değeri

E H

44

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 45: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bir başka yapıya örnek olarak;

Eğer A>B doğru ise “İŞLEM” i yaparak

tekrar test eden…

A>B doğru değil ise (aksi halde) B ‘nin değerini yazan bir karar yapısına ait bir

Akış Diyagramı (parçasını) gösterelim.

Not: Programın tamamına ait (Başla’dan Son’a kadar)

A. Diyag. gösterilmezse «parçası» ifadesi kullanılır.

45

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 46: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

A>B

Mi?

H E

İŞLEM

B

Değeri

46

Akış Diyagramı (Parçası)

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 47: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bir başka yapıya örnek olarak;

Eğer A>B doğru ise A değerini yazdıktan sonra Devam eden,

A>B doğru değil ise (aksi halde) A değerini yazmadan Devam eden Karar yapısına ait bir Akış Diyagramı (Parçasını) çizelim.

47

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 48: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

A>B

Mi?

E

H

48

Akış Diyagramı (Parçası)

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

A

Değeri

Page 49: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Daha farklı Karar Yapıları bulunmakla birlikte

bunları ilerdeki uygulamalarımıza

bırakarak birkaç örneği (tam program için);

Hem psedo…

hem de Akış Diyagramı olarak inceleyelim:

49

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 50: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 6 :

Girilen iki değeri mukayese ettikten sonra büyük

olanı yazan bir psedo (sözde) kod ve akış

diyagramı veriniz.

1. Başla

2. DEGER1 ve DEGER2 yi Girin

3. Eğer (DEGER1 > DEGER2) ise

MAX’a DEGER1 ’i aktar

4. Değilse (Aksi halde)

MAX’a DEGER2’yi aktar

5. MAX değerini yaz

6. Son 50

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 51: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

MAX = DEGER1

MAX

DUR

E H

BAŞLA

DEGER1,DEGER2

MAX = DEGER2

DEGER1>DEGER2

Mİ?

Akış Diyagramı

51

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 52: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 7 : 3 sayıyı (N1,N2,N3) okuyan

ve en büyük değeri yazan bir program

için bir psedo kod yazarak Akış

Diyagramı çiziniz.

52

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 53: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Başla

2. N1, N2, N3 değerlerini girin

3. Eğer (N1>N2) ise

Eğer (N1>N3) ise

MAX’a N1’i aktar [N1>N2 ve N1>N3] demektir.

Değilse

MAX’a N3’ü aktar [N1>N2 ve N3>N1] demektir.

4. Değilse;

Eğer (N2>N3) ise

MAX’a N2’yi aktar [N2>N1 ve N2>N3] demektir. .

Değilse

MAX’a N3’ü aktar [ N2>N1 ve N3>N2] demektir.

5. MAX değerini yaz.

6. Son

53

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 54: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

MAX = N1

Akış Diyagramı:

MAX

DUR

E H

BAŞLA

N1,N2,N3

N1>N2 Mİ?

N1>N3 Mİ?

N2>N3 Mİ?

E E H H

MAX = N3

MAX = N2

MAX = N3

54

Bilgisayarda İşlemler (Devam)

Karar (Karşılaştırma)İşlemleri (Devam)

Page 55: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bilgisayarda İşlemler (Devam)

Mantıksal İşlemler

Mantıksal işlem Matematiksel sembol Komut/Operatör

VE . AND

VEYA + OR

DEĞİL ‘ NOT

NOT1:

“VE,VEYA,DEĞİL “ operatörleri hem matematiksel işlemlerde hem de karar

ifadelerinde kullanılırlar.

NOT2:

Bütün şartların sağlatılması isteniyorsa şartlar arasına VE (AND)

Herhangi birinin sağlatılması isteniyorsa şartlar arasına VEYA (OR)

Şartı sağlamayanlar isteniyorsa DEĞİL (NOT) mantıksal operatörü

kullanılır.

3. Mantıksal İşlemler

55

Page 56: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 8: Bir sınıfta Bilgisayar dersinden 65 in üzerinde

not alıp, Türk Dili veya Yabancı Dil derslerinin herhangi

birinden 65 in üzerinde not alanların isimleri yazan bir Psedo

Kod ‘un yazılması istensin.

Açıklama:

Burada 2 şart vardır:

Bilgisayar dersinden 65 in üzerinde not almış olmak

temel şarttır.

Diğer iki dersin notlarının herhangi birinin 65 in

üzerinde olması

Bilgisayarda İşlemler (Devam)

Mantıksal İşlemler (Devam)

56

Page 57: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bu durumda Psedo Kod yazılırsa:

1. Başla

2. Bilg. Not, TDili Not , YDil Not değerlerini giriniz.

3. Eğer Bilg. Not>65 VE (TDili Not>65 VEYA YDil Not>65) ise

İsmi Yaz

4. Son

Not : Burada 3. satırdaki komut için VE , VEYA

operatörleri kullanılmıştır.

Bilgisayarda İşlemler (Devam)

Mantıksal İşlemler (Devam)

57

Page 58: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 9 : Bir işyerinde çalışan işçiler

arasından yalnızca yaşı 23 üzerinde

olup Maaş olarak Asgari ücret

alanların isimleri yazılmak istenebilir.

Bu durumda bir Psedo Kod yazarsak :

Bilgisayarda İşlemler (Devam)

Mantıksal İşlemler (Devam)

58

Page 59: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Başla

2. Yaş, Maaş, Asgari ücret ‘ i girin

3. Eğer Yaş>23 VE Maaş=Asgari ücret ise

İsmi Yaz

4. Dur

Not: İsmi Yaz komutu 1. ve 2. şartın her ikisi de sağlanıyorsa

çalışır.

59

Bilgisayarda İşlemler (Devam)

Mantıksal İşlemler (Devam)

Page 60: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

ALGORİTMALARDA SIKÇA KULLANILAN BAZI

TERİMLER

Tanımlayıcı

Değişken

Sabit

Aktarma

Sayaç

Döngü

Ardışık Toplama

Ardışık Çarpma

İçiçe Döngüler

60

Page 61: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Tanımlayıcı:

Programdaki ;

Değişkenleri,

Sabitleri,

Kayıt alanlarını,

Özel bilgi tiplerini vb. adlandırmak için kullanılan

kelimelerdir.

Tanımlayıcılar, yerini tuttukları ifadelere çağrışım

yapacak şekilde seçilmelidir.

( İsim ve Telefon için: adtelef gibi)

61

Page 62: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Tanımlayıcılarda ;

İngiliz alfabesindeki A-Z veya a-z arası 26 harf

ile 0-9 arası rakamlar kullanılabilir.

Tanımlayıcı isimleri harfle veya alt çizgiyle

başlayabilir.

Sembollerden sadece alt çizgi (_) kullanılabilir.

Tanımlayıcı ismi, rakamla başlayamaz veya

sadece rakamlardan oluşamaz.

62

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Page 63: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Değişken:

Genelde programın her çalıştırılmasında, farklı değerler

alırlar.

Değişken isimlendirilmeleri de yukarıda sayılan tanımlayıcı

kurallarına uygun şekilde yapılmalıdır.

Meselâ ;

Bir ismin aktarıldığı değişken; ad

Bir isim ve soy ismin aktarıldığı değişken; adsoyad

Ev telefon no sunun aktarıldığı değişken; evtel

Ev adresinin aktarıldığı değişken; evadres

İş adresinin aktarıldığı değişken; isadres şeklinde

verilebilir.

63

Page 64: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Sabit:

Programdaki değeri değişmeyen ifadelere “sabit” denir.

Yukarda açıklanan “İsimlendirme kuralları”na uygun

olarak oluşturulan sabitlere…

Sayısal veriler doğrudan… (Örn: A=7)

Alfasayısal veriler ise tek yada çift tırnak içinde

aktarılır. (Örn: A=“puan25” veya A=‘puan25’)

Not: Alfasayısal (alfanümerik), Verinin hem harf hem de

rakamlardan oluştuğunu belirtmek için kullanılır.

64

Page 65: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Örnek 10 : Öğrenci adını içeren bir mesajı Psedo Kod

ile yazalım;

1. Başla

2. Bir isim giriniz (A)

3. “Derse Hoş geldin” mesajı (B) yaz

4. B ve A yı Yaz

5. Dur

Not: Burada (A) nın isim bilgisi taşıdığı yani öğrenciye göre

değişeceği için “Değişken” olduğuna…

(B) nin de değişmeyen bir ifade yani “Sabit” olduğuna

dikkat edelim.

65

Page 66: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

A değişkeni B sabiti Ekranda yazılan

Onur Derse Hoş geldin Derse Hoş geldin Onur

Emre Derse Hoş geldin

Derse Hoş geldin Emre

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Yukarıdaki algoritma (psedo kod), dışarıdan girilen bir

A değişkeni ile B sabitini birleştirip aşağıdaki iki

örnekteki gibi ekrana yazar.

66

Page 67: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Aktarma:

Herhangi bir bilgi alanına, veri yazma; herhangi bir

ifadenin sonucunu başka bir değişkende gösterme vb

görevlerde “aktarma” operatörü kullanılır.

değişken=ifade ( Örn: puan=a*65 )

= sembolü, aktarma operatörüdür ve sağdaki

ifadenin/işlemin sonucunu soldaki değişkene aktarır.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

67

Page 68: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Değişken yazan soldaki kısım herhangi bir

değişken ismidir.

(Yukarıdaki örnekte puan kelimesidir.)

İfade yazan sağdaki kısımda ise matematiksel,

mantıksal veya alfasayısal ifade olabilir.

(Yukarıdaki örnekte bir çarpma ifadesi)

Bu durumda değişkenin eğer varsa bir önceki

değeri silinir.

68

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Page 69: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Sayaç :

Programlarda bazı işlemlerin belirli sayıda

yaptırılması veya işlenen/üretilen değerlerin

sayılması gerekebilir.

Örnek: say=say+1 ( say adlı değişken için)

Yukardaki işlemde sağdaki ifadede değişkenin eski

değerine 1 eklenmekte; bulunan sonuç yine kendisine

yeni değer olarak aktarılmaktadır.

Not: Bu ifadeden önce say=7 ise sonra say=8 olur.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

69

Page 70: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Sayacın genel formülü;

Sayaç değişkeni = Sayaç değişkeni + adım

Örnek: X=X+3

(X değişkenini adım kadar (3) arttırır)

Örnek: S=S-5

(S değişkenini adım kadar (5) azaltır)

70

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Page 71: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 11: Aşağıda 1 - 5 arası sayılar yazdırılmaktadır.

(Sayac için S değişkeni kullanılmıştır)

1. Başla

2. S=0 (S değişkenine 0 ilk değerini ver.)

3. Eğer S>4 ise

git 7. (S, 4 den büyükse 7. satıra git)

4. Değilse

S=S+1 (S, 4 den büyük değilse S yi 1 arttır)

5. S ‘yi Yaz (S değerini yaz)

6. Git 3. (3. satıra git)

7. Dur

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

71

Page 72: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Önceki S Değeri Yeni S Değeri Ekrana Yazılan

0 0+1=1 1

1 1+1=2 2

2 2+1=3 3

3 3+1=4 4

4 4+1=5 5

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

72

Page 73: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Döngü:

Bir çok programda bazı işlemler,belirli ardışık

değerlerle gerçekleştirilmekte veya

belirli sayıda yaptırılmaktadır.

Programlardaki belirli işlem bloklarını,

verilen sayıda gerçekleştiren

işlem akış çevrimlerine “Döngü” denir.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

73

Page 74: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 12: 1 ile 10 arası tek sayıların

toplamını hesaplayan ve yazan bir Psedo

Kod yazınız.

Not: T, toplamı;

J, tek sayıları (1,3,5,7,9) temsil

eden değişkenlerdir.

74

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Page 75: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Başla

2. T=0 ( Önce T toplam değişkenini sıfırla)

3. J=1 ( İlk tek sayıyı J değişkenine aktar)

4. Eğer J>10 ise

git 8. (J>10 olduysa 8. adıma git)

5. Değilse

T=T+J (Aksi halde T değişkenini J kadar arttır)

6. J=J+2 ( J yi adım yani 2 kadar arttır)

7. Git 4. ( 4. adıma git)

8. T yi yaz ( Toplamı yani T yi yazdır)

9. Dur

Not: 7. ile 4. satırlar arasında Döngü vardır.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

75

Page 76: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Önceki J Değeri Önceki T Değeri Yeni T Değeri Yeni J Değeri

1 0 0+1=1 3

3 1 1+3=4 5

5 4 4+5=9 7

7 9 9+7=16 9

9 16 16+9=25 11

11 - - -

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

76

Page 77: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Ardışık Toplama:

Programlarda, aynı değerin üzerine yeni değerler

eklemek için kullanılır.

Örnek11: Klavyeden girilen 5 sayının ortalamasını bulan

programın algoritmasını Psedo Kod ile yazalım.

Not: T: (Ardışık) Toplamı;

S: Girilen sayının sırasını göstersin.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

77

Page 78: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Başla

2. T=0 (Toplamı yani T yi sıfırla)

3. S=0 (Girilen sayının sırasını sayan S yi sıfırla)

4. Eğer S>4 ise

git 8 (S>4 yani S=5 olduysa 8. adıma git)

5. Değilse S=S+1 (Aksi halde S yi 1 arttır)

Sayıyı (A) girin (Klavyeden A sayısının girilmesini iste)

6. T=T+A (Girilen sayıyı T ile topla)

7. Git 4. (4. adıma git)

8. Ortalama=T/5 (Ortalama’yı hesapla)

9. Ortalama’yı yaz (Ortalama’yı yaz)

10. Dur

78

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Page 79: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Ardışık Çarpma :

Ardışık çarpma işleminde; aynı değer (çarpım), yeni

değerlerle çarpılarak eskisinin üzerine aktarılmaktadır.

Örnek 14: Klavyeden girilen N sayısının faktöriyelini

hesaplayan programın algoritmasını Psedo Kod ile

yazınız.

Not: 5! (5 faktöriyel); 1.2.3.4.5 sayılarının çarpımıdır.

Faktöriyel değeri Faktor adlı değişkende (ardışık)

çarpma ile hesaplanır.

79

Page 80: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Başla

2. N sayısını girin ( Hangi sayının faktöriyelini hesaplasın)

3. Faktor=1 (İstenen Faktöriyel değeri 1 den başlasın)

4. S=0

5. Eğer S>N-1 ise

git 9. (S, N-1 den büyükse işlem bitecek)

6. S=S+1 (Çarpılacak sayıları elde etmek için arttır)

7. Faktor=Faktor*S (Önceki Faktor değerini yeni S ile çarp)

8. Git 5. (5. adıma git)

9. Faktor’u yaz (Faktor değerini yaz)

10. Dur

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

80

Page 81: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Döngü Yapısı :

Bu yapı kullanılırken;

Döngü sayacı…

Şart bilgisi ve …

Sayacın artım bilgisi gibi değerler verilmelidir.

Not: Döngü sayacı kullanılmıyorsa sadece döngüye

devam edebilmek için gerekli olan şart bilgisi verilmelidir.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

81

Page 82: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Genel olarak pek çok programlama dilinin döngü

deyimleri :

1) While

2) Do-while

3) For gibi yapılar üzerine kurulmuştur.

Not: Farklı dillerde bu yapılara farklı alternatifler olsa da

döngülerin çalışma mantığı genel olarak benzerdir.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

82

Page 83: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1. Durum (While):

Şart daha çevrim içerisine girmeden sınanır.

Şart sağlanmıyorsa İşlem hiç yapılmaz…

Ve döngü içerisindeki İşlem’de yapılması

gerekenler atlanır.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Döngü Yapısı (Devam)

83

Page 84: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

•Döngüye Girildikten

sonra Şart’ın sağlanıp

sağlanmadığına bakılır.

•Sağlanmıyorsa

Döngüden çıkılır.

•Şart sağlandığı sürece

(defa) İşlem

yapıldıktan sonra

döngüden çıkılır.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Döngü Yapısı (Devam)

84

Page 85: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek 15: Bu tür bir döngü için daha önce algoritması

yazılan Örnek 12 ‘e ait bir akış diyagramı çizelim.

Önce Örnek 12’ i hatırlayalım:

Klavyeden girilen N sayısının faktöriyelini

hesaplayan programın algoritmasını Psedo Kod ile

yazınız.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

85

Page 86: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Not:

• Faktor=1 ile Faktöriyele

ilk değeri veriliyor.

•Böylece 1 sayısının

Faktöriyeli baştan yazılmış

oluyor.

• Sayac=2 ile Sayac’a

başlangıç olarak 2 değeri

veriliyor.

•Sayac değeri 2 den

başlayarak girilen

Örn: N=10 değerine eşit

olana kadar (2,3,4….9,10)

Faktor=Faktor*Sayac

işlemi tekrar yapılıyor.

• Sayac++ ile her seferinde

Sayac 1 arttırılıyor.

86

Page 87: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

2. Durum (Do-While):

Bu durumda çevrim en az bir defa

gerçekleşir. Çünkü şart sınaması döngü

sonunda yapılmaktadır.

Eğer şart sağlanmıyorsa bir sonraki çevrime

geçilmeden döngüden çıkılır.

Çevrimin Devam edebilmesi için her döngü

sonunda yapılan şart testinin olumlu

sonuçlanması gerekir.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Döngü Yapısı (Devam)

87

Page 88: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Döngü Yapısı (Devam)

88

Page 89: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

3. Durum (For):

Diğer deyimlerden farklı olarak, döngü sayacı doğrudan şart

parametreleri olarak başta verilir.

Döngüye girmeden önce sayaç değişkenine başlangıç ve

artım değeri atanmakta ve daha sonra şarta bakılmaktadır.

Şart sağlandığı sürece belirtilen «İşlem» yapıldıktan sonra

her seferinde sayaç değişkeni arttırılmaktadır.

Döngü sayısına ulaşınca (şart sağlanamayınca) döngü

sona erer.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

Döngü Yapısı (Devam)

89

Page 90: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

90

Page 91: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

İçiçe Döngüler:

Programlamada yaygın kullanılan bir döngüdür.

İçiçe döngü kurulurken en önemli unsur, içteki döngü

sonlanmadan bir dıştaki döngüye geçilmemesidir.

Diğer bir deyişle döngüler birbirlerini kesmemelidir.

En içteki döngü bir dıştaki döngünün her adımında N

kere tekrarlanır.

İç ve dış döngülerin çarpımı kadar “İşlem” yapılmış olur.

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

İçiçe Döngüler

91

Page 92: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Algoritmalarda Sıkça Kullanılan Terimler (Devam)

92

Page 93: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

ALGORİTMA VE

PROGRAMLAMA

(Bölüm 3)

Vize Kısmı

93

Page 94: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ C Nasıl Bir Programlama Dilidir?

C orta düzey bir programlama dili olarak son

derece esnek kullanımlı bir dildir.

C, bir Assembly dili derleyicisinin sağladığı

esneklik ve gücü sağlarken üst düzey bir

programlama dilinin sağladığı kolay

anlaşılabilirlik özelliğini de sunmaktadır

94

Page 95: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C Dilinin Temel Özellikleri :

C, oldukça fazla sayıda ifade ve denetim

komutları bulunduran bir programlama

dilidir.

Ancak, dikkatli yazılmalıdır.

Zira hatalı veya eksik bir işaret

programımızı doğru çalıştırmayacaktır.

95

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 96: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Program Yazma, Derleme ve Çalıştırma:

Önemli olan, önce basit bir programı yazıp

derleyebilmek, çalıştırabilmek ve elde edilen

sonuçları görebilmektir.

Yazma, Derleme ve Çalıştırma kullandığımız

ortama bağlı olmakla birlikte genellikle kolay bir

şekilde yapılabilir.

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

96

Page 97: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C dilinde yazılan programın uzantısı (.c) dir.

C dilindeki program (derleyici, bağlayıcı ve

Kütüphane fonksiyonları ile) önce (.obj),

sonra (.exe) uzantılı olur…

Böylece (.exe) uzantısı dolayısıyla PC ‘de

yürütülebilir hale gelir.

97

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 98: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

98

Page 99: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C ‘de bulunan pek çok fonksiyonun

kullanılabilmesi için bazı kütüphane başlık

dosyalarının programa eklenmesi gerekir.

Karışıklığı önlemek adına programlarımızda

gösterilmeyecek olan bu dosyalardan en

temel ve önemli olanı:

#include <stdio.h> şeklindedir…

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 100: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bu başlık dosyasından başka ileri matematik işlemlerde kullanılan…

#include <math.h>

Yine rastgele sayı üretmek, sıralama yapmak vb. işlemlerde kullanılan…

#include <stdlib.h>

gibi farklı başlık dosyaları mevcuttur…

İhtiyaca göre bu ifadelerin main()

öncesinde programın başına eklenmesi gerekir.

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 101: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• IDE (Tümleşik Geliştirme Ortamı):

Tümleşik Geliştirme Ortamları, Derleyicileri–

Bağlayıcıları tek bir ortam içinden

kullanabilmeyi sağlarken…

Ayrıca Hata ayıklama (debug), Gözlem

penceresi (watch) gibi bileşenlere sahiptirler.

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

101

Page 102: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

IDE’lerde yazım işlemini kolaylaştıracak

vurgulamalar, uyarılar ve yardım menüleri

mevcuttur.

Derleyici ve Bağlayıcı parametreleri

menülerden ayarlanabilir.

Her yazılım dilinin kendi IDE ‘si mevcuttur…

102

Page 103: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

İlk Program: C ‘de Programlamayı öğrenmeye başlarken

sıkça kullanılan bir ifade olan “Merhaba C ” yi ekrana

yazdıran bir mini örnek programla başlayalım:

main() {

printf(“Merhaba C\n”) ;

}

Not: Daha evvel de belirtildiği gibi yukarıdaki printf() fonksiyonunun

çalışabilmesi için main() den önce #include <stdio.h> kütüphane başlık dosyasının eklenmesi gerekir.

Dersimizdeki örneklerde bu dosya eklenmeyecektir; ancak bilgisayarda

derleme yapmadan önce programda kullanılan fonksiyonlara göre bu

ve benzer dosya/dosyaların ilâve edilmesi şarttır.

103

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 104: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bu programın Ekran Çıktısı;

Merhaba C

şeklinde olur.

Not:

main İngilizcede ana, asıl anlamındadır.

printf() ekrana yazdırmak için kullanılan bir

fonksiyondur.

104

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 105: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Her komuttan (fonksiyondan/deyimden) sonra

; işareti konulması şarttır.

\n Merhaba C ifadesinden sonra satır atlatır.

{ ve } küme parantezleridir. main() fonksiyonu

fonksiyonları/deyimleri bunların içine yazılır.

105

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 106: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bir C programı boyutu ne olursa olsun bir ya da

daha fazla fonksiyon denilen bloktan oluşur.

C Dilinde olmazsa olmaz fonksiyon (blok)

main() fonksiyonudur (bloğudur *).

Program her zaman bu main() adlı

fonksiyondan çalışmaya başlar.

Not: Bundan sonra blok yerine “fonksiyon” ifadesi

kullanılacaktır.

106

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 107: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Genelde fonksiyonun yanındaki parantez içinde

parametreler (argümanlar) yer alır. Örn:

printf(“Merhaba C\n”) ;

ifadesindeki Merhaba C\n gibi…

Not: main() fonksiyonunun herhangi bir parametresi

olmadığından parantezi boştur. Parametre yoksa

parantez içine void ifadesi de yazılabilir. 107

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 108: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Fonksiyonlar arasında haberleşme ve

(varsa)değerlerin aktarımı parametreler

(argümanlar) maharetiyle gerçekleşir.

Fonksiyonlar adı yazılan yerde

çağrılır(çalışır).

(Varsa) elde edilen sonuçlar kendisini

çağıran fonksiyona gönderilir.

108

C PROGRAMLAMA DİLİ (Devam)

Başlarken…

Page 109: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

printf() FONKSİYONU

printf(“Merhaba C \n”);

satırı (deyimi) adı printf olan bir fonksiyon

çağırır.

Not :printf() ekrana bir bilginin yazılmasını

sağlayan bir kütüphane fonksiyonudur ve

standart C arşivinin (kütüphanesinin) bir

parçasıdır.

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu

109

Page 110: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

printf() fonksiyonu asla otomatik

olarak yeni bir satıra geçiş sağlamaz.

Aşağıdaki program önceki örnekteki ile aynı

çıktıyı verecektir :

main() {

printf(“Merhaba ”) ;

printf(“C ”) ;

printf(“\n”) ;

}

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu

110

Page 111: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Benzer şekilde…

\n satır atlattığı gibi…

\t tab için,

\b geriye doğru silme (kürsörü bir karakter öne

alma) işlemi için (Backspace),

\” çift tırnağın kendisini yazdırmak için kullanılır.

Bunlar görünmeyen kontrol karakterlerdir.

Ekrandaki çıktıyı kontrol etmektedirler.

C PROGRAMLAMA DİLİ (Devam)

Bazı Kontrol Karakterleri

111

Page 112: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Mesaj ile birlikte bir değişkenin değerini

ekrana yazdırmak için yine printf() fonksiyonu

kullanılabilir.

İlk örnek “Merhaba C” de olduğu gibi sadece

mesaj ve değişkenin biçimi çift tırnak içine

alınarak belirtilir.

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

112

Page 113: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

printf() fonksiyonu ile hem mesaj

hem de değişken değeri birlikte yazılabilir.

Örnek: Ekranda sonuc adlı desimal bir değişken

yazdırılacaktır. Bunun için önce sonuc= ifadesi,

bu ifadenin hemen yanına bu değişkenin değeri

yazılacaktır. Değişken değerinden sonra dir.

eklenecektir.

Gerekli printf() deyimini (komutunu) yazınız.

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

113

Page 114: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Cevap:

printf(“sonuc= %d dir.”,sonuc);

Not: Yukarıdaki printf() fonksiyonu ile sonuc adlı

değişkenin değeri sonuc= ifadesinin yanına (%d nin

yerine) yazılmakta sonra da dir. eklenmektedir.

114

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

Page 115: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Burada %d , değerin desimal olarak

yazılacağını belirtir.

Ekranda sonuc değişkeninin değeri komuttaki

%d nin yerine yazılır.

Bu durumda Ekran Çıktısı, (sonuc değeri 25

olsun)

sonuc=25 dir. şeklinde olur.

115

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

Page 116: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek: Daha önce hesaplanmış m değişkeni

Sayi= ve n değişkeni Karekoku=

ifadelerinden sonra ekrana yazdırılmak

istenmektedir. m değişkeni desimal

(tam sayı), n değişkeni ondalıklı

(virgüllü) sayı olacaktır. Tek bir printf()

ifadesini ve Ekran Çıktısını yazınız.

Not: Ondalıklı sayı için %f kontrol karakteri kullanılır.

116

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

Page 117: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Cevap:

printf(“Sayi= %d Karekoku=%f “,m,n);

şeklinde olabilir.

Ekran Çıktısı :

( m=5 ve n= 2.236076 değişken değerleri girildiği durumda)

Sayi= 5 Karekoku= 2.236076

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

117

Page 118: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Yukarıda görüldüğü gibi %d , %f vb. gibi yazdırma

kontrol karakterleri dışındaki çift tırnak içindeki

karakterler çıkışta aynen yazılır.

Parantezde kaç değişken varsa o kadar kontrol karakteri

olmalıdır. (Örnekte: m ve n için %d ve %f )

Not : Eğer kesirli olan (n) değişkeni için kontrol karakteri

olarak %f yazılmayıp %d şeklinde yazılsaydı

2.236076 sayısı yerine çıktıda sadece 2 (tam sayı

kısmı) olarak görülecekti.

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

118

Page 119: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

printf() komutu içinde yaygın olarak kullanılan…

bazı yazdırma kontrol karakterleri şöyledir:

%c : tek karakter [ örn: M ]

%d : desimal (tam sayı) [ örn: -326]

%u : işaretsiz desimal [ örn: 476] (Sadece pozitif sayılar)

%f : ondalık kayan nokta [ örn: 314.2857]

%e : bilimsel (üslü) gösterim [ örn: 3.142857e+002]

%x : heksadesimal [ örn: 3F ]

%s : karakter katarı [ örn: ADRES ]

C PROGRAMLAMA DİLİ (Devam)

printf() fonksiyonu…

119

Page 120: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

scanf() fonksiyonu

scanf() FONKSİYONU:

Klavyeden değer okumak için

scanf() adlı yine bir standart kütüphane

fonksiyonu kullanılabilir.

Bu fonksiyonda da benzer kontrol karakterleri

vardır ve okunacak değerin tipini belirler.

printf()‘e benzer şekilde %d tam sayı, %f kesirli

(virgüllü) sayı okunacağını ifade eder.

120

Page 121: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Mesela iki scanf() fonksiyonu ile önce a

değişkenine bir tam , sonra b değişkenine bir

kesirli sayı okunacaksa;

scanf (“%d”, &a);

scanf (“%f”, &b); yazılabilir

.

Not: Burada a veya b adlı değişkenlerin

hafızadaki değerleri (içeriği) anlamında

başlarına & karakteri gelmektedir.

C PROGRAMLAMA DİLİ (Devam)

scanf() fonksiyonu

121

Page 122: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Eğer X ve Y adlı iki desimal değişkeni aynı scanf()

fonksiyonunda okumak istersek, aşağıdaki gibi iki farklı

şekilde yazabiliriz.

İki komut arasındaki fark ilk %d den sonraki virgüldür.

(Kullanıcı tarafından klavyeden girilen sayılar 12 ve 567 olsun)

scanf(“%d,%d”, &X, &Y); /* Sayılar arasına virgül

konarak giriş yapılır. Yani

klavyede 12,567 yazılır */

scanf(“%d %d”, &X, &Y); /* Sayılar arasına boşluk

konarak giriş yapılır. Yani

klavyede 12 567 yazılır */

C PROGRAMLAMA DİLİ (Devam)

scanf() fonksiyonu

122

Page 123: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Şimdiye kadar öğrendiklerimizi uygulamak için…

Örnek : main() fonksiyonu içinde iki tam sayıyı

toplayıp ortalamasını alarak ekrana

yazdıran bir C programı yazınız.

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

123

Page 124: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

main() {

int a,b,top ; /* a ve b toplanacak tam sayilar, top ise toplam degiskeni */

float ort ; /* ortalama degiskeni ort ve tipi kesirli (virgüllü) */

printf(“ iki sayı giriniz:”) ; /* ekrana iki sayı giriniz: mesaji yaziliyor*/

scanf(“%d,%d”,&a,&b); /* a ve b tam sayı olarak klavyeden okuyacak */

top= a+b ; /* a ve b toplanip top degiskenine aktariliyor*/

ort = top/2.0 ; /* ortalama alinip ort degiskenine aktariliyor */

printf (“ ortalama= %f dir.”,ort) ; /* ort degeri yaziliyor */

} /* Bu karakterler arasına açıklama yazılabilir */

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

124

Page 125: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

Ekran Girişi ve Çıktısı ise…

( a= 5 ve b= 4 olduğu kabul edilsin, Giriş sayıların arasına

virgül konarak kullanıcı tarafından klavyeden yapılıyor)

iki sayı giriniz: 5,4 (

ortalama=4.500000

Not: Çıktıda Float tipi sonuç olduğundan noktadan sonra 6

basamak yazıldı.(12 basamak veren derleyiciler de vardır)

125

Page 126: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek: Tamsayı olarak verilen X ve Y nin farkını (X-Y) hesaplayıp

SAYILARIN FARKI= ifadesinden sonra yazdıran main()

fonk. yazınız.

main() { /* Bu main fonksiyonu X ve Y nin farkini hesaplar*/

int X,Y,fark ; /* X , Y, fark tam sayi */

printf (“ iki sayı giriniz:”) ; /* Ekrana iki sayı giriniz: mesaji

yazilsin */

scanf (“%d,%d”,&X,&Y) ; /* X ve Y klavyeden okunacak */

fark= X-Y ; /* X ve Y cikarilip fark degiskenine aktariliyor*/

printf (“ SAYILARIN FARKI= %d”, fark) ; /* cikis yaziliyor */

}

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

126

Page 127: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Ekran Girişi ve çıktısı olarak…

( X=25 ve Y=13 olduğu kabul edilirse )

iki sayı giriniz: 25 , 13

SAYILARIN FARKI= 12

127

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

Page 128: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

Örnek: Klavyeden girilen, kesirli sayı olan

yarıçap (R) ile dairenin alanı ve

çevresini hesaplayarak ekrana

yazdıran bir main() fonk. yazınız.

(¶ = 3.14 alınacaktır)

128

Page 129: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

main () { /* Bu ornek main fonk. Dairenin alani ve Cevresini hesaplar*/

float R,S,C ; /* R: Yaricap S: Alan C: Cevre olsun*/

printf( “Yaricapi Giriniz: “); /* Yaricapi Giriniz: yaz*/

scanf (“%f”, &R); /* Yaricapi R degiskenine oku*/

S= 3.14 * R * R ; /* Alani hesapla*/

C = 2 * 3.14 * R ; /* Cevreyi hesapla*/

printf (“Dairenin Alani= %f\n”, S); /* Alani ekrana yazdir*/

printf (“Dairenin Cevresi= %f”, C); /* Cevreyi yazdir*/

}

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

129

Page 130: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

Programın Ekran Girişi ve Çıktısı:

(Dairenin Yarıçapı = 5.2 kullanıcı tarafından girilmiş olsun)

Yarıcapi Giriniz: 5.2

Dairenin Alani= 84.905600

Dairenin Cevresi= 32.656000

130

Page 131: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek: Tabanı (a) ve yüksekliği (h) olup virgüllü sayı olarak verilen

bir üçgenin alanını hesaplayıp yazdıran main() fonk. yazınız.

main() { /* Bu main fonksiyonu ücgenin alanini hesaplar*/

float a,h,alan; /* a: taban , h: yukseklik ve alan olsun */

printf (“Taban ve yuksekligi giriniz:”) ; /* kenarlari girin

mesaji */

scanf (“%f,%f”,&a,&h); /* a ve h klavyeden okunacak */

alan = a*h/2.0; /* alan hesaplanip alan adli degiskene aktariliyor */

printf (“ Ucgenin Alani= %f ”,alan) ; /* cikis yaziliyor */

}

131

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

Page 132: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Ekran Girişi ve çıktısı:

(Üçgende a=5.5 ve h=4.6 olarak klavyeden girildi ise… )

Taban ve yuksekligi giriniz: 5.5 , 4.6

Ucgenin Alani= 12.650000 dir.

132

C PROGRAMLAMA DİLİ (Devam)

main() fonksiyonu

Page 133: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

SABİTLER:

Programın yürütülmesi sırasında değerleri değişmez.

Sabitler genelde sayısal ve alfasayısal olurlar…

Sabitler üzerlerinde aritmetik işlem yapılarak değiştirilemezler…

Sayısal sabit… örn : 3.45

Alfasayısal sabit… örn: “34MYO”

Alfasayısal sabitler tırnak içerisinde verilir.

Alfasayısal sabit tek karakter ise tek tırnak, birden

fazla karakter ise çift tırnak içinde verilir.

C PROGRAMLAMA DİLİ (Devam)

Sabitler

Page 134: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Sabit tanımlanırken program boyunca değişmeyeceğini belirtmek için sabit tipinin başına const ibaresi konulmalıdır. Meselâ:

const int a= - 45;

/* a adli ve degeri - 45 olan sabit (tam) sayi demektir , bu tanımdan sonra programda a yazılırsa (- 45) anlamına gelir */

const float b= 2.435298; /* b adli kesirli bir sabit sayi */

const char ch = ‘A’; /* ch adli karsiligi A olan sabit karakter */

C PROGRAMLAMA DİLİ (Devam) Sabitler

Page 135: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

DEĞİŞKENLER:

• Değişkenler hafızada saklanan ve program boyunca değeri değişebilen simgesel isimlerdir.

• C'de temel olarak (sabitlere benzer) Sayısal ve Alfasayısal değişken türleri bulunmaktadır.

• Değişkenler içlerine uygun nesneler konan farklı tipte kutular olarak düşünülebilir.

• Her nesne her kutuya konamaz. Mesela ondalık bir sayı, (int) tipi kutuya konmaz. Konursa veri kayıpları oluşabilir.

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 136: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Değişken tipleri uzunluklarına göre de değişir. En yaygın olanlar:

int : Hafızada 2 bayt (16 bit) veya 4 bayt(32 bit) yer tutan tam sayı için kullanılır. … (Derleyiciye göre farklı iki durum vardır !)

short int : int tipinin yarısı uzunlukta 1 ya da 2 bayt sayı

long int : int tipinin iki katı uzunlukta 4 ya da 8 bayt sayı

float : Tek hassasiyetli kesirli sayı (virgülden sonra 6 basamak)

double : Çift hassasiyetli kesirli sayı (virgülden sonra 12 basamak)

char : Tek yada daha fazla karakter saklar.

(Hafızada her karakter 1 bayt yer tutar)

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 137: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Bazı değişken tanımlama örnekleri şöyle olabilir:

int x=69,y,z; /* x ‘in başlangıç degeri 69 olsun */

short int say; /* say adlı değişken 1 bayt (8 bit) */

long int sonuc; /* sonuc adlı değişken 4 bayt (32 bit) */

float pi; /* pi adlı kesirli bir değişken */

double e= 2.711828182845;

/* e adlı çift hassasiyetli kesirli sayı değişkeni başlangıç değeri ile

tanımlanmıştır */

char sehir[15] ; /* sehir adli 15 uzunluklu karakter */

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 138: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Değişkenler tanımlanırken birden fazla olacak ise virgül ile ayrılmalıdırlar.

• Her ifade/deyim gibi değişken tanımının sonuna noktalı virgül konulması zorunludur.

• Değişkenlerin hafızada karşılıkları vardır. Bir Değişkenin hafızadaki karşılığı genellikle…

Tam sayı Kesirli sayı Karakter olabilir…

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 139: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Tam sayı değişkeni tanımlamak için …

• Örn:

int a,b,c ; /* 3 tam sayı değişken tanımlanıyor */

[ Burada a,b,c (78 457 -189 -32 0 gibi )

değerler alabilir, ama kesirli sayı olmaz)]

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 140: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Bu değişkenlere başlangıç değeri de verilebilir.

• Örnek olarak kısa bir main() fonksiyonunda a isimli bir tam sayı değişkeni tanımlayalım ve program içinde bu değişkene 10 başlangıç değeri verip a’nin degeri= ifadesinden sonra çıktı olarak yazdırarak bir satır atlatalım:

main() {

int a=10 ;

printf (“a’nin degeri= %d\n ”,a) ;

}

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 141: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Kesirli (ondalıklı) sayı değişkeni tanımlamak için…

• Mesela

float f=12.345 ; /* Başlangic değeri verilmiş f adli

ondalıklı değişken */

• Float tipinde bir değişken aşağıdaki gibi değerler alabilir:

8.7 0.459 -5.45E9 ( üslü sayıdır : -5,45.109 )

• Bu sayıları bir int değişkenine eşitlersek sadece tam kısmını alırız. (8.7 yerine 8 alınır.)

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 142: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek olarak main() fonksiyonu içinde bir a değişkenine kesirli bir sayı değeri verelim ve bunu a’nin degeri= ifadesinden sonra 2 basamak tam kısmı, 3 basamak kesirli kısmı olacak şekilde çıktı olarak yazalım.

main () {

float a ;

a= 18.909 ;

printf (“a’nin degeri= %2.3f”,a) ;

}

Ekran Çıktısı: a’nin degeri= 18.909 olacaktır.

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 143: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Tam sayı ve Float Değişken Tiplerinin Beraber Kullanımı

• Bir float değişkenine int tipi değişken eşitlenirse , C otomatikman bu değeri float tipine çevirir. Mesela…

main() { float a ; int b=10 ; a=b ; printf (“a’nin degeri= %f”,a); }

• Ekran Çıktısı a’nin degeri=10.000000 şeklinde elde edilir.

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 144: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Karakter Tanımlamak için…

• Aşağıda Ch adlı bir karakter değişkeni tanımlanmıştır…

char Ch ; • Değişken tanımlanırken de başlangıç değeri verilebilir…

char Ch=‘H’ /* Başlangıç değeri H olsun */

• Karakter uzunluğu birden farklıysa değişken adının yanında bu değer de yazılır.

char isim[28]; /* isim adlı uzunluğu 28 olan bir karakter değişkeni tanımladık */

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 145: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Bu defa, a adlı bir karakter değişkenine klavyeden girilen bir harfi yerleştirerek bu değerin karakter tipinde a’nin

degeri= ifadesinden sonra yazdırıp bir satır atlamayı sağlayan programı main() içinde yazalım.

main () { char a ;

printf (“Harfi Girin:“);

scanf(“%c“, &a);

printf (“a’nin degeri= %c\n ”,a);

}

Ekran Çıktısı: (Klavyeden z harfi girildiyse…)

a’nin degeri= z şeklinde elde edilir.

C PROGRAMLAMA DİLİ (Devam)

Değişkenler

Page 146: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Bir başka tip tanımlaması da sayının işaretsiz olduğunu belirtir.

• Bunun için unsigned kelimesi kullanılır. Mesela;

unsigned int sayi ;

sayi adlı değişkenin tam sayı türünde olduğu, sadece pozitif sayı olacağı anlaşılır.

• Böylece çalışma alanı (int 16 bit kabul edilirse) sayı

0 ile 65535 aralığında olur. (216 = 65536 ; sıfır dahil!)

C PROGRAMLAMA DİLİ (Devam)

İşaretsiz Değişkenler

Page 147: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

unsigned int sayi ; /* sayi adlı sadece pozitif 16 bit*/

unsigned long sayi ; /* sayi adlı sadece pozitif 32 bit */

• unsigned (işaretsiz) ifadesi olmasaydı çalışma aralığı…

-32768 ……0…… +32767 olacaktı.

• Yani sayi işaretli olacak ve hem pozitif hem negatif değerler alabilecekti.

NOT: Mikrodenetleyiciler dersindeki pozitif (+) ve negatif (-)

değerler alabilen işaretli sayıları hatırlayınız.

C PROGRAMLAMA DİLİ (Devam) İşaretsiz Değişkenler

Page 148: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Sık kullanılan Değişken Türlerini bir Tablo halinde Özet olarak tekrar verirsek…

C PROGRAMLAMA DİLİ (Devam) Değişkenler

Page 149: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C FONKSİYONLARI

• İyi tasarlanmış bir program, büyük bir programı parçalara (fonksiyonlara) böler.

• Fonksiyon belli bir işi yapan program parçasıdır.

• main() de bir fonksiyondur. Ancak daha önce belirtildiği gibi olmazsa olmazdır ve program her zaman buradan çalışmaya başlar.

C PROGRAMLAMA DİLİ (Devam) Fonksiyonlar

Page 150: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Fonksiyonlar değer (parametre) kullanarak ya da kullanmadan çalışırlar.

• Bir fonksiyon yazılıp hatalardan arındırıldıktan sonra başka programlarda da kullanılabilir.

• Kütüphane fonksiyonları da birer hazır fonksiyondur, daha önce yazılıp yerleştirilmişlerdir ve derleme sırasında kullanılırlar.

C PROGRAMLAMA DİLİ (Devam) Fonksiyonlar

Page 151: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Bir değer alıp işlem yapan ama kendisi bir değer vermeyen (üretmeyen) bir fonksiyon olarak…

printf("Merhaba, Dunya");

örnek olarak verilebilir.

• Burada printf() fonksiyonuna, Merhaba, Dunya değer olarak girmekte ancak kendisi bir değer üretip başka fonksiyona göndermemektedir.

• printf() sadece ekrana çıktı yazmaktadır.

C PROGRAMLAMA DİLİ (Devam) Fonksiyonlar

Page 152: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam) Fonksiyonlar

• Standart C ‘de çok sayıda (farklı başlık dosyalarıyla kullanılan) hazır kütüphane fonksiyonları bulunmakla birlikte şimdilik birkaç örneği inceleyelim.

• Aşağıdaki örnek kütüphane fonksiyonu, büyük harfle yazılmış bir karakteri küçük harfe çevirmektedir.

Page 153: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

tolower() Fonksiyonu

Bu fonksiyona parantez içinde parametre olarak büyük harf girer ve küçük harf şeklinde bir değer üretir.

Örnek:

main() fonk. içinde klavyeden girilenbüyük bir karakteri tolower() fonksiyonu kullanarak küçük karaktere dönüştürüp yazdıran bir main() fonksiyonu yazınız.

C PROGRAMLAMA DİLİ (Devam) tolower() Fonksiyonu

Page 154: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

main() { char a,b; printf("Bir buyuk harf girin:"); scanf("%c",&b); a=tolower(b); printf("%c’nin Kucugu:%c",b,a); }

Ekran Çıktısı: (K harfi girildiği kabul edilirse)

K’nin kucugu:k elde edilecektir.

Not: Tersine küçük karakteri büyük karaktere dönüştürmek için benzer şekilde toupper() fonksiyonu kullanılabilir.

C PROGRAMLAMA DİLİ (Devam)

tolower() Fonksiyonu

Page 155: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

abs() Fonksiyonu

abs() Fonksiyonu (Mutlak değer alır)

Örnek: Klavyeden girilen bir Negatif sayının mutlak değerini main() içinde yazdırınız…

main() { int a,b; printf("Bir negatif tam sayi Girin:"); scanf("%d",&a); b=abs(a); printf("%d sayisinin mutlak degeri:%d dir.",a,b); }

Ekran Çıktısı (( -58 girilirse) • ---58 sayisinin mutlak degeri:58 dir.

Page 156: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

strcpy() Fonksiyonu (Karakter katarını bir değişkene

kopyalar)

Örnek: 18 karakterli bir ifadeyi ch adlı değişkene aktardıktan sonra ekrana yazdıran programı main() fonksiyonu içinde yazınız…

main() {

char ch[19];

strcpy(ch,"MERHABA,NASILSINIZ");

printf("%s\n",ch);

} Ekran Çıktısı:

MERHABA,NASILSINIZ

C PROGRAMLAMA DİLİ (Devam)

strcpy() Fonksiyonu

Page 157: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

floor() Fonksiyonu (Kesirli bir sayıyı bir alt tam sayıya yuvarlar)

Örnek:

Kesirli olarak klavyeden girilen sayıyı bir alt tam sayıya yuvarlayan main() fonksiyonunu yazınız.

main() {

float s;

int a;

scanf(" %f", &s);

a=floor(s);

printf("Asagi Yuvarlanmıs Sayi:%d",a);

}

C PROGRAMLAMA DİLİ (Devam)

floor() Fonksiyonu

Page 158: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

Formatsız Giriş ve Çıkış Komutları

• Komut İşlem getchar() Klavyeden bir karakter okur ve ENTER’e basılmasını

bekler…

getche() Klavyeden bir karakter okur ve ENTER’e basılmaksızın

karakteri değişkene aktarır. Karakter ekrana yazılır.

getch() Klavyeden bir karakter okur ve ENTER’e basılmaksızın

karakteri değişkene aktarır.Karakter ekrana yazılmaz.

gets() Klavyeden girilen karakter katarını bir değişkene aktarır.

putchar() Ekrana bir karakter yazar.

puts() Bir karakter katarını ekrana yazar.

Page 159: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek: Girilen bir cümleyi bir karakter değişkenine aktardıktan sonra bir tuşa basılmasını bekleyen ve ekrana yazan bir main() fonk. yazın.

main() {

char str[80];

printf("Bir cumle yazin:");

gets(str);

printf("Bir tusa basin...\n");

puts(str);

getch(); //Program bir tuşa basınca sonlanır

}

C PROGRAMLAMA DİLİ (Devam)

Formatsız Giriş ve Çıkış Komutları

Page 160: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

Formatsız Giriş ve Çıkış Komutları

Örnek: Girilen bir karakteri bir değişkene aktardıktan sonra bir satır atlayıp ekrana yazan bir main() fonk. yazın.

main() {

char ch;

printf("Bir harf yazin:");

ch=getchar();

printf("\n");

putchar(ch);

}

Page 161: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Fonksiyonlar sadece main() ya da kütüphane fonksiyonlarından ibaret değildir.

• Genellikle pek çok işlem programcı tarafından yazılan çeşitli fonksiyonlarca yapılır…

• …Ve ürettiği değerler main() fonksiyonuna gönderilir.

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 162: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Mesela programcı tarafından ismi top() olan bir toplama fonksiyonu yazılarak toplama işlemini yapılabilir ve sonuc (toplam) main() fonksiyonuna gönderilebilir.

• Aşağıda bir fonksiyonun genel yapısı ve çeşitli örnekler incelenecektir.

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 163: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Genel olarak bir Fonksiyonun Yapısı:

fonksiyonTipi fonksiyonAdi (arguman listesi )

argumanların tip bildirimi;

{ fonksiyona ait (yerel) değişkenlerin bildirimi .

.

fonksiyon içindeki deyimler ve diğer fonksiyonlar…

.

.

}

163

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 164: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Yazacağımız fonksiyona yaptığı işle ilgili bir ad verilir.

topla() , carp() , ara(), gibi…

• Bu ad C dilinde kullanılan anahtar kelimeler (return, printf, scanf vb) olamaz.

• fonksiyonTipi ise fonksiyon görevini yaptıktan sonra çağrıldığı yere göndereceği sonucun (değerin) ne tip (tam sayı [int] , kesirli sayı [float] vb.) olacağını belirtir.

164

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 165: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek: Önce a ve b tam sayı değişkenlerini toplayan

top() adlı bir toplama fonksiyonu yazalım.

Not 1 : Sadece fonk. içinde kullanılan (yerel) toplam değişkeni g dir. Bu değer return g deyimi ile main() fonksiyonuna geri yollanacaktır.

Not 2 : top(a,b) ‘nın başında yer alan int bu geri gönderilen g değerinin tipini belirtir.)

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 166: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

int top(a,b) /* top(a,b) fonksiyonunun main() ‘e gondereceği

toplamın tipi int */

int a,b ; /* top() ‘a ait arguman degiskenleri tam sayı */

{

int g ; /* Sadece bu fonk. icinde tanimli g degiskeni tam sayı */

g=a+b ; /* Toplama islemi yapiliyor, toplam g ‘ye */

return g; /* g degiskeni top() fonksiyonunu cagiran main() ’deki fonksiyona geri yollaniyor */

}

166

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 167: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Yukarıdaki örnekte iki tam sayıyı toplayan bir top() fonksiyonu yazmıştık. Ancak bu fonksiyon tek başına yani main() fonksiyonu olmadan çalışamaz.

• Şimdi toplama yapan bu top() fonksiyonunu

kullanacak bir main() fonk. yazalım. Bu main()

de iki değişkenin ortalaması alınsın ve sonuç

ortalama= ifadesinden sonra ekrana yazdırsın.

Not: Bu main() fonksiyonunda toplanan değişkenlerin x ve y

şeklinde farklı kullanılabildiğine dikkat edelim.

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 168: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

main() {

int x,y,z; /* her üc degisken tam sayi */

float ort; /* ort degiskeni kesirli sayi */

printf (“iki sayı giriniz:”) ; /* sayiların girilmesi mesaji */

scanf(“%d, %d”,&x,&y) ; /* sayilar klavyeden okunuyor */

z=top(x,y) ; /* top() fonksiyonu cagriliyor */

ort = z/2.0 ; /* ortalama hesaplaniyor */

printf (“ ortalama= %f dir.”,ort) ; /*ort degeri yazdiriliyor*/

}

168

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 169: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Ekran çıktısı (Örn: x=64 ve y=65 olarak girilsin.)

64,65

ortalama= 64.500000 şeklinde olur.

NOT: main() deki toplama değişkenleri x ve y iken top() fonksiyonunda a ve b olduğuna dikkat edelim. main() deki x yerine top() fonksiyonunda a ; y yerine b nin karşılık gelmektedir.

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 170: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek : main() tarafından çağrılan carp() adlı bir çarpma

fonksiyonunu main() fonk. ile birlikte yazalım.

• Bu fonksiyonun değişkenleri a ve b ise artık parametreleriyle

birlikte carp(a,b) olarak da fonksiyonu ifade edebiliriz.

• Programda main() içinde her carp() yazdığımızda bu çarpma fonksiyonu çalışır ve çarpma gerçekleşir…

• carp() fonksiyonundaki ‘return’ deyimi ile sonuç kendisini çağıran fonksiyona geri gider.

170

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 171: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Önce main() fonksiyonu:

main() {

int x,y,z ; /* her üc degisken tam sayi */

printf (“iki sayı giriniz:”) ; /* sayiların girilmesi mesaji */

scanf(“%d, %d”,&x,&y) ; /* sayilar klavyeden okunuyor */

z=carp(x,y) ; /* carp() fonksiyonu cagriliyor */

printf (“ carpim= %f dir.”, z) ; /* carpim= ifadesi ve

z degeri ekrana yazdiriliyor.*/

}

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 172: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Şimdi main() tarafından çağrılan carp() adlı Çarpma Fonksiyonumuzu yazalım:

int carp(a,b) /* carp() fonksiyonunun sonucunun tipi tam sayi (int), argumanları a ve b */

int a,b; /* a ve b, carp() fonk. argumanlari tam sayı */

{

int g; /* carpim da tam sayı olacak */

g= a*b; /* carpim yapılıyor, sonuç g değişkenine */

return g; /* bulunan g değeri çağrıldığında, çağıran fonksiyona geri gönderiliyor */

} 172

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 173: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek : main() fonksiyonunu yazmadan değişkenleri a ve

b olan bol() adlı bir bölme fonksiyonu yazınız.

float bol(a,b) /* bol() fonksiyonunun sonucunun tipi kesirli

int a,b; sayı (float), a ve b değişkenleri tam sayı */

{

float g; /* bölüm g kesirli sayı */

g= a/b; /* bölüm yapılıyor, sonuç g değişkenine */

return g; /* bulunan g değeri, bol() fonksiyonunun

cagrildigi yere geri gönderiliyor */

}

173

C PROGRAMLAMA DİLİ (Devam)

Fonksiyonlar

Page 174: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ (Devam)

Operatörler

OPERATÖRLER:

Değişkenler ve sabitler üzerinde çeşitli işlemler yaparlar. 4 Grupta incelenebilirler :

Aritmetik Operatörler

Karşılaştırma Operatörleri

Mantıksal Operatörler

Bit seviyesinde işlem yapan Operatörler

Page 175: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Aritmetik Operatörler:

+ Toplama

- Çıkarma

* Çarpma

/ Bölme

% Modulüs (kalan)

-- Bir azaltma (tam sayı veya karakterlerde)

++ Bir arttırma (tam sayı veya karakterlerde)

Page 176: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Temel Aritmetik Operatörleri, örneklerimizde zaten

büyük oranda kullanmıştık.Örnek olarak (-) yani çıkartma operatörünü hatırlamak için iki tam sayıyı çıkardıktan sonra ekrana yazan main() fonk. yazalım. main() {

int a,b ;

b= 3 ;

a= 2-b ;

printf (“a’nin degeri= %d\n ”,a);

}

Ekran Çıktısı: a’nin degeri= -1 elde edilir.

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Page 177: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Yukarıdaki çıkarma işleminde…

a=2-3; ifadesinde (-) yerine (/) kullansaydık,

yani çıkarma yerine bölme yapmak isteseydik,

a=2/3; yazacaktık.

Bu durumda Ekran Çıktısı:

a’nin degeri= 0 şeklinde olurdu !

• Bunun sebebi a değişkeninin int a,b ; ile tam sayı olarak tanımlanmasıdır.

• Bu yüzden ekranda, 0.666666 olan asıl neticenin tam kısmı olan 0 görülmektedir.

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Page 178: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Modulüs Operatörü :

• Aritmetik Operatörlerden bir diğeri de modulüs

işlemi için kullanılan % operatörüdür.

• Bölme işlemi sonrası kalanı gösteren bir operatördür.

• Mesela, aşağıda 5%2 işlemi ile 5 sayısı 2 ye bölünmekte ve kalan 1 olarak elde edilmektedir.

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Page 179: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

main()

{

int a;

a= 5%2 ;

printf (“a’nin degeri= %d\n ”,a);

}

• Ekran Çıktısı :

a’nin degeri= 1 elde edilir.

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Page 180: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Arttırma Operatörü:

• Aritmetik Operatörlerden bir diğeri de ++ (bir arttırma ) operatörüdür. Mesela…

main() {

int m=7, j=12 ; /* tam sayılar, Baslangic degerleri */

m ++ ; /* m=m+1, m değeri 1 artti */

++ j ; /* j=j+1 üstteki deyimle ayni anlamda */

printf (“%d,%d ”,m,j) ;

}

• Ekrana çıktı olarak 8,13 değerleri yazılır.

Not: Benzer şekilde m-- veya --j ile bir eksiltme işlemi yapılabilir.

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Page 181: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Aşağıdaki örnekte değişken aktarımı olduğundan dikkatli olunmalıdır.

main() {

int m=7, j=12 ,k,z ;

k=m++ ; /* once m=m+1 sonra k=m anlamında */

z= ++j ; /* once z=j dir, sonra j=j+1 */

printf (“k=%d,z=%d”,k,z) ;

}

• Ekran Çıktısı olarak k=8 z=12 yazılır.

C PROGRAMLAMA DİLİ Aritmetik Operatörler (Devam)

Page 182: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Karşılaştırma Operatörleri:

• Sayı değerlerini ve karakterleri karşılaştırmak için kullanılırlar. Ancak karakter katarlarını karşılaştırmazlar. Bunlar;

> büyük mü?

>= büyük veya eşit mi?

< küçük mü?

<= küçük veya eşit mi ?

== eşit mi?

! = farklı mı?

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri

Page 183: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

• Bu operatörler Karşılaştırma ve Döngülerde şartın test edilmesi için kullanılırlar. 3 farklı yapıda incelenebilirler:

1) if yapısı

2) if-else yapısı

3) switch-case yapısı

Page 184: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

1) if yapısı :

• Bir veya birden fazla şartın gerçekleşmesine bağlı olarak bir komut ya da komutlar bloğunun çalışması sağlar.

• Şarta bağlı olarak tek bir komut çalışacaksa, komut if deyiminin altına (ya da sonra) yazılabilir.

• Eğer şart sağlandığında komutlar bloğunun çalışması isteniyorsa o zaman bu komutlar küme parantezine {} alınmalıdır…

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

Page 185: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Örnek olarak aşağıdaki program parçasında ekrana MERHABA yazdırmak için m değişkeninin 30 dan büyük olması gerekir.

….

if (m > 30)

printf(“MERHABA”) ;

….

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

Page 186: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Parantez içine sadece değişken yazılırsa ve bu değişken sıfırdan farklıysa işlem yapılır. Örn;

….

if (k) printf(“SIFIRDAN FARKLI”) ;

….

• k değişkeni sıfırdan farklı ise ekrana SIFIRDAN FARKLI

yazılacaktır.

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

Page 187: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Aşağıdaki örnekte girilen sayıların birincisi 41 den büyük ve ikincisi 51 den küçük ise ifadeyi çıktıya yazar ve satır atlar.

main() {

int t,k;

printf (“iki sayi giriniz :”) ;

scanf (“%d,%d”, &t,&k) ;

if ( t>41)

if ( k < 51)

printf (“Sayilar 42 ile 50 arasinda\n”) ;

}

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

Page 188: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

2) if-else yapısı: • if deyimine benzer şekilde if parantezi içinde verilen

şart sağlanıyorsa (şart doğru ise) if ‘den sonraki komut ya da komutlar çalışır.

• Eğer if parantezi içindeki şart sağlanmıyorsa (şart yanlış ise) else kelimesinden sonraki komut veya komutlar çalıştırılır.

• else ‘den sonra şayet birden fazla komut çalıştırılmak isteniyorsa bu komutlar yine küme parantezine {} alınmalıdır.

Page 189: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

Örnek : Program çalıştığında klavyeden bir karakter girilmesi istenecek bu karakterin küçük ya da büyük olduğu ekrana yazılacaktır.

main() { char ch;

printf(“Bir harf giriniz :”);

ch=getche();

printf(“\n”);

if (‘A’<=ch && ch<=‘Z’)

printf(“Buyuk harf girdiniz :”;

else

printf(“Kucuk harf girdiniz :”;

}

Page 190: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

3) switch-case Yapısı:

• Bu yapıda bir değişken ya da ifade birkaç ayrı değerle karşılaştırılır ve eşitlik durumuna göre program akışı değişir…Yapısı:

switch (değişken veya ifade) {

case 1: Komut…Komut…break;

case 2: Komut…Komut…break;

case 3: Komut…Komut…break;

}

Page 191: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Karşılaştırma Operatörleri (Devam)

Örnek: Klavyeden girilen 1 veya 2 veya 3 sayılarına göre ekranda hangi sayının girildiğini yazdıran bir main() fonksiyonu yazınız.

main() {

int a;

printf (“Bir sayi giriniz (1/2/3) :”) ;

scanf (“%d, &a) ;

switch(a) {

case 1: printf(“BIR sayisi girdiniz…\n”); break;

case 2: printf(“IKI sayisi girdiniz…\n”); break;

case 3: printf(“UC sayisi girdiniz…\n”); break;

}

}

Page 192: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Mantıksal Operatörler:

• Yukardaki örnekteki gibi birden fazla şart varsa bunlar birleştirilip tek bir şart olarak yazılabilir.

• Böyle durumlarda mantıksal operatörler kullanılır.

• Bunlar:

&& (VE işlemi için)

|| (VEYA işlemi için)

! (DEĞİL işlemi için)

C PROGRAMLAMA DİLİ Mantıksal Operatörler

Page 193: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Yukardaki örneği mantıksal operatör kullanarak tekrar yazalım;

main()

{

int t,k ;

printf (“iki sayi giriniz :”) ;

scanf (“%d,%d”, &t,&k) ;

if ( t>41 && k < 51 )

printf (“Sayilar 42 ile 50 arasinda\n”) ;

}

C PROGRAMLAMA DİLİ Mantıksal Operatörler (Devam)

Page 194: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Aşağıdaki örnekte klavyeden girilen sayının tek ya da çift olduğu çıktıda yazılmaktadır: main() {

int sayi,t ; printf (“sayiyi giriniz :”) ; scanf (“%d”, &sayi) ; t= sayi % 2 ; if (t) printf (“Tek Sayi”) ; else printf (“Cift Sayi”) ; }

C PROGRAMLAMA DİLİ Mantıksal Operatörler (Devam)

Page 195: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Bit seviyesinde işlem yapan Operatörler

Bir tam sayı ya da karakter değişkeninin bitleri üzerinde test, değiştirme ve öteleme gibi işlemleri yapan operatörlerdir.

Bu suretle assembly dili seviyesinde çalışmak mümkün olur.

C PROGRAMLAMA DİLİ Bit Seviyesi Operatörleri

Page 196: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• Bu operatörler 6 tanedir:

& Bit seviyesinde VE işlemi

| Bit seviyesinde VEYA işlemi

^ Bit seviyesinde özel VEYA işlemi

~ 1’e tümleme

<< Sola Öteleme

>> Sağa Öteleme

C PROGRAMLAMA DİLİ Bit Seviyesi Operatörleri (Devam)

Page 197: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

• & operatörü istenen bit/bitleri sıfırlamak için kullanılabilir.

• Bunun için örnek olarak 0000 0110 ikili sayısı yani (06) sayısı ile bir a değişkeninin bit seviyesinde VE işlemine tabi tutulmasını ele alalım…

• a değişkeninin önce desimal 12 (heksadesimal 0C) değerinde olduğu durum için…

C PROGRAMLAMA DİLİ Bit Seviyesi Operatörleri (Devam)

Page 198: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Bit Seviyesi Operatörleri (Devam)

Bit No 7 6 5 4 3 2 1 0

a değişkeni : (d’12 ‘) = h’0C’ 0 0 0 0 1 1 0 0

6 ‘nın binary ifadesi 0 0 0 0 0 1 1 0

a & 6 nın değeri : (04) 0 0 0 0 0 1 0 0

Önce a = d’12 ‘ = h’0C’ olsun.

a = a & 6 ifadesi (komutu) yazılırsa a değişkeninin 1. ve 2. bitleri dışındakiler

sıfırlanmış olur.

Bu komuttan sonra a = 4 olur.

Benzer şekilde diğer operatörlerle de belirtilen işlemler yapılabilir.

Page 199: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Program Akışı Kontrol Deyimleri

• C Dilinde Program Akışı Kontrol Deyimleri oldukça güçlü olduğundan çoğu zaman GOTO türü bir deyim kullanma ihtiyacı olmaz.

• Bu deyimler 2 grupta incelenebilir:

– Karşılaştırma Deyimleri

– Döngü Deyimleri

Not: 1. Grupta yer alan deyimler Karşılaştırma Operatörleri incelenirken kısmen incelenmiştir.

Page 200: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Program Akışı Kontrol Deyimleri (Devam)

• C Dilinde Program Akışı Kontrol Deyimleri oldukça güçlü olduğundan çoğu zaman GOTO türü bir deyim kullanma ihtiyacı olmaz.

• Akışı Kontrol Deyimleri 2 grupta incelenebilir:

Karşılaştırma Deyimleri (Daha önce if deyimi ile kısmen incelenmişti)

Döngü Deyimleri

Page 201: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Program Akışı Kontrol Deyimleri (Devam)

Döngü Deyimleri: Bu tip deyimler kümenin (belli komutlar grubunun) belirli bir şart altında tekrarlanması amacıyla kullanılırlar.

3 tip Döngü deyimi vardır:

1. while

2. do…while

3. for

Not: 1 ve 3. grupta şart döngünün başında test edilir.

2. grupta döngünün başında sonunda test edilir.

Page 202: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Program Akışı Kontrol Deyimleri (Devam)

1. while : Şart olumlu olduğu sürece döngü tekrarlanır.

Aşağıda sayac değişkeni 0….49 olarak ekranda yazılıyor.

main() {

int sayac=0;

while(sayac<50) {

printf(“%d”,sayac);

sayac++;

}

}

Page 203: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Program Akışı Kontrol Deyimleri (Devam)

2. do….while: while deyiminden farklı olarak şart döngü

sonunda tekrarlanır. Döngü enaz 1 kere tekrarlanır.

Aşağıda girilen sayının karesi hesaplanarak yazdırılmaktadır.

main() { int sayi;

do { printf(“ BIR SAYI GIRIN:”);

scanf(“%d”,&sayi);

printf(“KARESI=%d\n”,sayi*sayi);

} while(sayi>0);

}

Page 204: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Program Akışı Kontrol Deyimleri (Devam)

3. for : Diğer döngü deyimleri gibi bir grup deyimi belli sayıda tekrarlamak için kullanılır. Şart önceden test edilir. Aşağıda 10’dan başlayarak 5’er arttırımla 50 ye kadar olan sayıların karesi hesaplanıp yazdırılıyor. main() { int a; for (a=10;a<=50;a=a+5) { printf(“ a’nin karesi=%d\n”,a*a); } printf(“Dongu sona erdi!\n”); }

Page 205: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ * ve & İşaretçi Operatörleri

• İşaretçi(pointer) bir değişkenin hafızadaki adresidir. İşaretçi değişken bu adresin saklanacağı özel bir değişkendir.

• Bazı uygulamalarda değişkenlerin bulunduğu adresin bilinmesi büyük avantaj sağlar.

• * karakteri : (Çarpmadan farklı !) bir operatör olup

2 maksatla kullanılır:

– İşaretçi Bildirimi

– İşaretçinin işaret ettiği hafızanın içeriğine erişmede

Page 206: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ & ve * İşaretçi Operatörleri (Devam)

Örnekler:

*p : p adlı işaretçinin(adresin) içindeki değişkendir.

int *p : Eğer başına int konursa bu p değişkeninin tamsayı

olduğu anlaşılır.

*a : a adlı değişkenin işaretçisini (adresini) gösterir.

char *k : k adlı karakter değişkeninin işaretçisini (adresini)

gösterir.

Page 207: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ & ve * İşaretçi Operatörleri (Devam)

• & karakteri : Daha önce lojik (bit seviyesinde) VE işlemi için kullanılmıştı. Bu durumda değişkenin değeri değil de adresi ile ilgileniliyor demektir.

• Örnek: p işaretçi (adres) , m ve n normal değişkenler ise…

int *p, n=15, m;

…..

m=n; // m de 15 oldu.

p=&m; // m degiskeninin bulunduğu hafıza baslangic adresi p oldu.

Page 208: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ & ve * İşaretçi Operatörleri (Devam)

• Bir işaretçinin gösterdiği değişkenin normal bir değişkene atanması için yine * operatörü kullanılır.

• Bu durumda değişken ile ilgileniyoruz demektir.

• Örnek:

int *q,a ; // q işaretçisinin(adresinin)içindeki sayı ve a tamsayi olsun

q=&a ; // a adlı değişkenin işaretçisi (adresi) q olsun.

*q=130 ; //q işaretçisinin(adresinin) gösterdiği degişkene (a= 130) yaz.

Not: Yukarıdaki örnekte aslında a=*q işlemi yapılmış oldu !

Page 209: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Bazı Hazır (Kütüphane) Fonksiyon Örnekleri

Karakter Üzerinde İşlem Yapanlar:

Fonksiyon Adı : isalnum()

Kullanılacak Başlık Dosyası: # include <ctype.h>

Bildirimi (Kullanılışı): int isalnum(int kr);

Açıklaması:

• Eğer kr alfanümerik ise sıfırdan farklı bir sayı verir…

• Eğer kr alfanümerik değil ise sıfır gönderir.

209

Page 210: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Bazı Hazır (Kütüphane) Fonksiyon Örnekleri (Devam)

Örnek: k değişkeni alfanümerik ise deger= 10 , aksi

halde deger=20 yazan deyimleri yazınız. (fonk. değil)

….

if (isalnum (k)) // k alfanumerik mi ?

a=10; // Evetse

else // Degilse

a=20;

printf (“deger=%d ”,a); // a degiskenini yaz

…..

210

Page 211: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Benzer şekilde…

o isalpha() fonksiyonunun parametresi harfse sıfırdan

farklı bir sayı, aksi halde sıfır gönderir.

o islower() fonksiyonunun parametresi küçük harfse

sıfırdan farklı bir sayı, büyük harfse sıfır gönderir.

o islower() fonksiyonunun parametresi büyük harfse

sıfırdan farklı bir sayı, küçük harfse sıfır gönderir.

211

C PROGRAMLAMA DİLİ Bazı Hazır (Kütüphane) Fonksiyon Örnekleri(Devam)

Page 212: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Bazı Hazır (Kütüphane) Fonksiyon Örnekleri(Devam)

Katar Üzerinde ve Hafıza Alanında İşlem Yapanlar:

Katar, ‘\0’ ile sonlandırılmış karakter dizisidir.

#include<string.h> başlık dosyası isterler.

str… ya da mem… ile başlayan fonksiyonlardır.

str… ile başlayanlar kopyalama işlemi yaparlar ve

karakter işaretçi yollarlar.

mem… ile başlayanlar sorgulama işlemi yaparlar ve

mantıksal sonuç gönderirler.

212

Page 213: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Bazı Hazır (Kütüphane) Fonksiyon Örnekleri(Devam)

Fonksiyon Adı : strcat()

Kullanılacak Başlık Dosyası: # include <string.h>

Bildirimi (Kullanılışı):

char strcat(char *k1,const char *k2);

Açıklaması:

• Hafızada k2 katarını k1 katarının peşine ekler.(k2 nin ilk

elemanı k1’in ‘\0’ [sonlandırma karakterinin] yerine gelir.

213

Page 214: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

C PROGRAMLAMA DİLİ Bazı Hazır (Kütüphane) Fonksiyon Örnekleri(Devam)

Benzer şekilde…

o strchr() fonksiyonu bir katar içinde bir karakterin olup

olmadığını araştırır.

o strcmp() fonksiyonu iki katarı karşılaştırır.

o strlen() fonksiyonu katarın karakter sayısını gönderir.

o strstr() fonksiyonu bir katarın diğer bir katar içinde olup

olmadığını araştır.

214

Page 215: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek ya da sizin yazdığınız programları çalıştırmak

için…

The open source, Cross-Platform IDE 13.12 programını

aşağıdaki siteden indirip kurunuz.

http://www.codeblocks.org/

Deneyeceğiniz basit Programların başına

#include <stdio.h> ya da gerekli başlık ifadelerini

yazarak printf(), scanf() gibi Standart kütüphane

fonksiyonlarının çalışmasını sağlayınız.

215

C PROGRAMLAMA DİLİ Program Çalıştırma

Page 216: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

Örnek ya da sizin yazdığınız programları çalıştırmak için

aşağıdaki internet adresinden deneme için C free

standart 5.0 dosyasını indirip kurunuz.

http://www.programarts.com/cfree_en/download.htm

Deneyeceğiniz basit Programların başına

#include <stdio.h> ya da gerekli başlık ifadelerini

yazarak printf(), scanf() gibi Standart kütüphane

fonksiyonlarının çalışmasını sağlayınız.

216

C PROGRAMLAMA DİLİ

Program Çalıştırma

Page 217: ALGORİTMA VE PROGRAMLAMA (Bölüm 1) · 2017-11-01 · PROBLEM ÇÖZME ve ALGORİTMALAR (Devam) Algoritma yapma Sırasında Dikkat Edilecek Hususlar: Doğruluğu kesin olarak ispatlanmadıkça,

ALGORITHMS AND FLOWCHARTS, faraday.ee.emu.edu.tr/ web

sitesi

ALGORİTMA VE PROGRAMLAMA Ders Notları, Öğr. Gör. Dr. Umut

Engin AYTEN

C Programlama Dili Programlama 3, Kemal YARCI

C Programlama Ders Notları, İnönü Üniversitesi, “The C

Programming Language”, W Kernighan ve Dennis Ritchie’den

tercüme

C Programlama Dili, Dr Rıfat ÇÖLKESEN, Papatya Yayınları

Kolay C Programlama, Editör: Gürcan BANGER, Bilim Teknik

Yayınevi

C Programming Tutorial by Examples, Dr. Kalim Qureshi

C PROGRAMLAMA DİLİ

Faydalanılan Kaynaklar…

217