40
ALGORİTMA VE PROGRAMLAMA I DERS#3 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi YZM 1105

ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

  • Upload
    others

  • View
    31

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

ALGORİTMA VE PROGRAMLAMA I

DERS#3

Celal Bayar Üniversitesi Hasan Ferdi Turgutlu

Teknoloji FakültesiYZM 1105

Page 2: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

1. BÖLÜM

PROGRAMLAMAYA GİRİŞ

2

YZM 1105 – Algoritma ve Programlama I

Page 3: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Programlama Terimleri ve Programlama Ortamı

3

YZM 1105 – Algoritma ve Programlama I

• Program

• Programlama

• IDE (Integrated Development Environment – Tümleşik Geliştirme Ortamı)

• Derleyici (Compiler)

• Yorumlayıcı (Interpreter)

• Bağlayıcı (Linker)

• Çalıştırma (Execution)

• Hata Türleri

• Debug

Page 4: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Program

4

YZM 1105 – Algoritma ve Programlama I

• Var olan bir problemi çözmek amacıyla bilgisayar dili

kullanılarak oluşturulmuş anlatımlar (komutlar, kelimeler,

aritmetik işlemler, mantıksal işlemler vb.) bütününe

«program» denir.

Page 5: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Programlama

5

YZM 1105 – Algoritma ve Programlama I

• Bir programı oluşturabilmek için gerekli komutların

belirlenmesi ve uygun biçimde kullanılmasına programlama

denir.

• Programlama, bir programlama dili kullanılarak yapılır.

Bu programlama dili Java ve C# gibi yüksek seviyede bir dil

olabileceği gibi C, Assembly ve bazı durumlarda makine dili de

olabilir.

• Yazılan kaynak kodu genellikle bir derleyici ve bağlayıcı

yardımıyla belirli bir sistemde çalıştırılabilir hale getirilir.

Ayrıca kaynak kodu, bir yorumlayıcı yardımıyla derlemeye

gerek duyulmadan satır satır çalıştırılabilir.

Page 6: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Programlama (devam…)

6

YZM 1105 – Algoritma ve Programlama I

• Programlama aktivitesi genelde “Merhaba Dünya” (Hello

World!) programı yazılmasıyla başlar.

• Bir programlama dilini öğrenmekteki tek zorluk

programlamanın ne olduğunu öğrenmektir. Bundan sonraki

aşamalar daha basittir.

Page 7: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

IDE (Integrated Development Environment –

Tümleşik Geliştirme Ortamı) 7

YZM 1105 – Algoritma ve Programlama I

• IDE yazılımcının hızlı ve rahat bir şekilde program geliştirebilmesini

amaçlayan, geliştirme sürecini organize edebilen birçok araç ile

birlikte geliştirme sürecinin verimli kullanılmasına katkıda bulunan

araçların tamamını içerisinde barındıran bir yazılım türüdür.

Page 8: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

IDE (Integrated Development Environment –

Tümleşik Geliştirme Ortamı) (devam…)8

YZM 1105 – Algoritma ve Programlama I

• Tümleşik geliştirme ortamlarında olması gerekli en temel

özellikler aşağıdaki gibidir:

• Programlama diline göre sözdizimi renklendirmesi

yapabilen kod yazım editörü.

• Kod dosyalarının hiyerarşik olarak görülebilmesi

amacıyla hazırlanmış gerçek zamanlı bir dizelge.

• Tümleşik bir derleyici, yorumlayıcı ve hata ayıklayıcı.

• Yazılımın derlenmesi, bağlanması, çalışmaya tümüyle

hazır hale gelmesi ve daha birçok ek işi otomatik olarak

yapabilmek amacıyla küçük inşa araçları.

Page 9: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

IDE (Integrated Development Environment –

Tümleşik Geliştirme Ortamı) (devam…)9

YZM 1105 – Algoritma ve Programlama I

• En bilinen tümleşik geliştirme ortamları: Eclipse, Microsoft

Visual Studio, Code::Blocks, Dev-C++, Anjuta, KDevelop,

NetBeans…

Page 10: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Derleyici (Compiler)

10

YZM 1105 – Algoritma ve Programlama I

• Derleyici, yazılan programın kaynak

kodunu okuyup içerisinde mantıksal

veya yazınsal hatalar olup olmadığını

bulan, bulduğu hataları kullanıcıya

göstererek programın düzeltilmesine

yardım eden, hata yoksa programın

çalıştırılması öncesinde kaynak kodu

makine çeviren diline bir yazılımdır.

Page 11: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Yorumlayıcı (Interpreter)

11

YZM 1105 – Algoritma ve Programlama I

• Yorumlayıcı, kaynak kodu kısım kısım ele alarak doğrudan

çalıştırır.

• Yorumlayıcılar standart bir çalıştırılabilir kod üretmezler.

• Yorumlama işlemi aşama aşama yapılmadığı için genellikle

ilk hatanın bulunduğu yerde programın çalışması kesilir.

• Derleyicilerin tersine kodun işlenmeyen satırları üzerinden

hiç geçilmez ve buralardaki hatalar ile ilgilenilmez.

• Yorumlayıcılar genelde kaynak koddan, makine diline anlık

olarak dönüşüm yaptıkları için, derleyicilere göre daha

yavaş çalışırlar. Ayrıca kodu iyileştirme (optimizasyon)

imkanı da çoğu zaman yoktur.

Page 12: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Bağlayıcı (Linker) ve Çalıştırma (Execute)

12

YZM 1105 – Algoritma ve Programlama I

• Bağlayıcı: Derleyici tarafından object dosyasına çevrilen bir veya

birden çok dosyanın birbirleri ile ilişkilendirmesi ve tek bir

çalıştırılabilir dosyaya (Örneğin Windows exe) çevrilmesini sağlayan

yazılımdır.

• Çalıştırma: Oluşturulan makine dili programının çalıştırılması

adımıdır.

Program

Kaynak Kod

Derleyici Obje Kod –

Makine Dili

Bağlayıcı

Çalıştırılabilir

Program

Page 13: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Yazılım Hataları

13

YZM 1105 – Algoritma ve Programlama I

• Yazılım geliştirme sürecinin herhangi bir aşamasında (temel

olarak analiz, tasarım, kodlama, test, bakım) yapılan insani

hatalardır.

• Hiçbir yazılımcı veya programcı isteyerek hata yapmaz.

Dolayısı ile programı kendi kendine test ederken yaptığı

hatayı da görmemesi normaldir.

Page 14: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Yazılım Hataları (devam…)

14

YZM 1105 – Algoritma ve Programlama I

• Sıfır hatalı bir yazılım üretmek pratikte mümkün değildir.

Ancak doğru hata yönetimi yaparak hata sayısını azaltabilir

ve hata oluştuğunda müdahale için daha hızlı olabilirsiniz.

• Uygulama geliştirme aşamasında hatalar 3 grupta

değerlendirilir:

1. Syntax Error – Sözdizimi Hataları

2. Run-time Error – Çalışma Zamanı Hataları

3. Logic Error (Bug) – Mantıksal Hatalar (Böcek)

Page 15: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

1. Syntax Error – Söz dizimi Hataları

15

YZM 1105 – Algoritma ve Programlama I

• Yazılan programda programlama dili kurallarına aykırı bir takım

ifadelerden dolayı karşılaşılabilecek hatalardır.

• Düzeltilmesi basit hatalardır.

• Hatanın bulunduğu satır derleyici tarafından rapor edilir.

• Günümüz IDE’lerinde bu sıkıntılar neredeyse yok denecek kadar

azdır. Özelikle kod editörlerinin gelişmiş yazım denetimi

sayesinde yazılımcılar söz dizimi hatalarını derlemeye gerek bile

kalmadan fark edebiliyorlar.

• Eğer bir derlemede Syntax Error alındı ise obje kod

üretilememiştir demektir.

Page 16: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

2. Run-time Error – Çalışma Zamanı Hataları

16

YZM 1105 – Algoritma ve Programlama I

• Programın çalıştırılması sırasında karşılaşılan hatalardır.

Programcının ele almadığı bir takım aykırı durumlar ortaya

çıktığında programın işletim sistemi tarafından kesilmesi ile

ortaya çıkar. Bu tip hatalarda hata mesajı çoğunlukla çalışan

işletim sisteminin dili ile verilir.

• Eğer bu tip hataları kullanıcı ele almışsa, program programcının

vereceği mesajlarla ve uygun şekilde sonlandırılabilir. Bu tip

hataların nerelerde ve hangi şartlarda ortaya çıkabileceğini bazen

kestirmek zor olabilir.

• Örneğin olmayan bir dosya açmaya çalışmak, var olan bir

dosyanın üzerine yazmaya çalışmak, olmayan bir bellek

kaynağından bellek ayırtmaya çalışmak, olmayan bir donanıma

ulaşmaya çalışmak vs.

Page 17: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

3. Logic Error (Bug) – Mantıksal Hatalar (Böcek)

17

YZM 1105 – Algoritma ve Programlama I

• Karşılaşabileceğiniz en tehlikeli hatadır. Programlama mantığındabir takım şeylerin yanlış düşünülmesinden kaynaklanır. Hata testaşamasında veya müşteri kullanımı sırasında ortaya çıkar.

• Örneğin: Hesaplanması gereken veya bulunması gerekendeğerlerin eksik veya yanlış hesaplanması mantıksal bir hatadır.Bu sorunun giderilebilmesi için Analiz aşamasına kadar geridönülmesi gerekebilir. Bazen bu hatanın nereden kaynaklandığınıbulabilmek çok zor olmaktadır.

• Gerek serbest yazılım gerek ticari yazılımların tümünde bugdediğimiz mantıksal hatalar bulunur.

• Günümüzde en etkin yazılım firmaları bile yazılımlarında bugolduğunu kabul eder ve zaman zaman bu bugları giderebilmekiçin ya yazılımlarına yama yazılımı (Update, Patch) üretirler yada o yazılımın yeni bir versiyonunu piyasaya sürerler.

Page 18: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

Debug (Bugdan arındırma)

18

YZM 1105 – Algoritma ve Programlama I

• Mantıksal hataları giderebilmek ve yazılımdaki hataları (bug)

bulabilmek için yapılan işlemin adıdır. Genellikle yazılan

programın adım adım ve denetim altında çalıştırılmasıdır.

• Programın her adımında ilgili değişkenlerin hangi değere sahip

olduğunu görmeyi sağlayarak anormal bir durumu daha kolay

izleyip bulmanızı sağlar.

Page 19: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

2. BÖLÜM

C PROGRAMLAMA DİLİNE GİRİŞ

19

YZM 1105 – Algoritma ve Programlama I

Page 20: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

• C programlama dili, geniş amaçlı, orta

seviyeli, yapısal bir programlama dilidir.

• C, temelde iki eski dile dayanır : BCPL ve B.

• BCPL, 1967 yılında Martin Richards

tarafından işletim sistemleri ve derleyiciler

yazmak için geliştirilmiştir.

C Programlama Dilinin Tarihçesi20

YZM 1105 – Algoritma ve Programlama I

• C programlama dili 1972 yılında Bell Laboratuvarlarında Dennis

Ritchie tarafından geliştirilmiştir.

• C programlama dili, UNIX işletim sisteminin kodlama ve

geliştirilmesinde kullanılarak popülerliğini arttırmıştır.

Page 21: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

• 1970'lerin sonunda C, şu anda geleneksel C olarak bilinen

haline geldi. 1978 yılında Kernighan ve Ritchie tarafından

yazılan, «The C Programming Language» adlı kitabın

yayınlanmasından sonra, C'ye olan ilgi artmıştır.

• ANSI C, C programlama dilinin, 1989 yılında Amerika'da

«American National Standards Institute (ANSI)» ve tüm

dünyada «Internationals Standards Organization (ISO)»

tarafından standart hale getirilmiş sürümüdür.

• ANSI C standardı, 1989 yılında onaylanmış, 1999 yılında

gözden geçirilmiş ve Mart 2000'de C99: ISO/IEC 9899:1999

standardı Standart C olarak kabul edilmiştir

C Programlama Dilinin Tarihçesi (devam…)

21

YZM 1105 – Algoritma ve Programlama I

Page 22: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

• C, en popüler dillerdin birisidir.

• C, güçlü ve esnek bir dildir. C ile işletim sistemi veyaderleyici yazabilir, kelime işlemciler oluşturabilir veyagrafikler çizebilirsiniz.

• C, yazılım geliştirme ortamları oldukça fazladır.

• C, özel komut ve veri tipi tanımlamasına izin verir.

• C, taşınabilir bir dildir.

• C, gelişimini tamamlamış ve standardı oluşmuş bir dildir.

• C, yapısal bir dildir. C kodları fonksiyon olarak adlandırılanalt programlardan oluşmuştur.

• C++, Java, JavaScript, JavaApplet, PHP, C# gibi diller Cdilinden esinlenmiştir.

C Programlama Dili Tercih Nedeni22

YZM 1105 – Algoritma ve Programlama I

Page 23: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

• C dili, donanımdan ve işletim sisteminde bağımsızdır.

• C dili ile dikkatli bir biçimde yazılmış bir program, her

bilgisayara taşınabilir.

• Yani herhangi bir C programı hiçbir değişikliğe uğramadan, veya

çok az bir değişimle, başka bir derleyicide ve/veya işletim

sisteminde derlenebilir.

• Sonuç olarak Windows işletim sistemlerinde yazılan bir C

kodu, Linux, UNIX veya VAX gibi işletim sistemlerinde de

derlenebilir.

C Dili Taşınabilirdir (Portable) !!!23

YZM 1105 – Algoritma ve Programlama I

Page 24: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

• C sistemleri üç kısımda oluşur:

1. Programlama ortamı

2. C programlama dili

3. C standart kütüphaneleri

• C programları «fonksiyon» adı verilen parçalardan ya da

modüllerden oluşur.

• Fonksiyonlar C «bloklarından» oluşur.

• Her fonksiyon/blok bir veya daha fazla «deyimi» içerir.

• Her bir deyim program çalıştırıldığında belirli bir eylemi yerine

getirir. Deyimler işlemleri yerine getiren komutlardır.

C Sistemleri ve Kütüphaneleri24

YZM 1105 – Algoritma ve Programlama I

Page 25: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

C Yazılımı İçeriği25

YZM 1105 – Algoritma ve Programlama I

Ön işlemci Direktifleri

(Preprocessor Directives)

Genel Tanımlamalar

(Global Declarations)

int main (void)

{

}

Deyimler ve İfadeler (Statements)

Yerel Tanımlamalar (Local Declarations)

Page 26: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

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

yazmaktadır.

İlk C Programı26

YZM 1105 – Algoritma ve Programlama I

Page 27: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

27

YZM 1105 – Algoritma ve Programlama I

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

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

yorum satırları yazılır.

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

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

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

derleyicileri bu satırları atlar.

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

kodlar oluşturulmaz.

Page 28: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

28

YZM 1105 – Algoritma ve Programlama I

1.Satır: Yorumlar /* …. */ Comments (devam...)

• Yorumlar, diğer yazılımcıların programınızı anlamasında

yardımcı olur ancak çok fazla yorum satırı programın ve

kodun okunabilirliğini azaltır.

• Tek satır olan yorumlar için // karakteri de kullanılabilir.

• Yorumlar programın herhangi bir yerinde olabilirler.

• İç içe açıklamalara izin verilmez.

• /* yorum deneme /* …. */ …..*/

• Program başlangıcının; programın yazılma amacı, yazarı,

yazılma tarihi vb. yorumlarla olması programlama sürecine

adaptasyon noktasında yararlı olabilir.

Page 29: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

29

YZM 1105 – Algoritma ve Programlama I

Yorum Satırı Örnekleri

/* Tek satır yorum */

// Tek satır yorum

/* İki satır yorum

örneği */

/* Birden fazla

satır yorum

örneği */

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

Page 30: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

30

YZM 1105 – Algoritma ve Programlama I

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

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

işlemcisi tarafından işlenirler.

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

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

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

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

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

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

Page 31: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

31

YZM 1105 – Algoritma ve Programlama I

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

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

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

yardımcı olan bilgiler içerir.

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

assert.h

ctype.h

errno.h

float.h

limits.h

locale.h

math.h

setjmp.h

signal.h

stdarg.h

stddef.h

stdio.h

stdlib.h

string.h

time.h

Page 32: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

32

YZM 1105 – Algoritma ve Programlama I

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

• «stdio.h» başlık dosyasının eklenmesi tercihe bağlıdır fakat

standart giriş/çıkış fonksiyonlarının kullanıldığı programlara

eklenmelidir.

• Bu sayede, derleyici, hataları derleme anında bulabilecektir.

• Aksi takdirde, hatalar programın çalıştırıldığı anda ortaya

çıkar. Bu tür hataların düzeltilmesi oldukça güç olur.

Page 33: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

33

YZM 1105 – Algoritma ve Programlama I

5. Satır: main( ) fonksiyonu

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

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

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

olduğunu gösterir.

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

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

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

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

Page 34: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

34

YZM 1105 – Algoritma ve Programlama I

5. Satır: main( ) fonksiyonu (devam…)

• Küme parantezi, { , her fonksiyonun gövdesinin başına

yazılır.

• Diğer küme parantezi , } , ise her fonksiyonun sonuna

yazılmalıdır.

• Bu iki parantez arasında kalan program parçacığına «blok»

denir.

• Bloklar C'de önemli program birimleridir.

Page 35: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

35

YZM 1105 – Algoritma ve Programlama I

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

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

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

karakterleri ekrana yazdırır.

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

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

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

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

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

sonlandırıcı da denir.

Page 36: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

36

YZM 1105 – Algoritma ve Programlama I

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

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

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

yazdırılmamaktadır.

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

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

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

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

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

çıkış sırası denir.

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

geçmesine sebep olur.

Page 37: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

37

YZM 1105 – Algoritma ve Programlama I

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

• Çıkış karakterleri (escape sequence) aşağıdaki gibidir:

Çıkış Anlamı

\0 null karakteri temsil eder (sonlandırıcı karakter)

\n Yeni satır

\r Satırbaşı

\t Yatay sekme

\v Düşey sekme

\f İleri besleme

\b Geri boşluk (space)

\a Alarm karakteri

\" Çift tırnak

\\ Ters bölü

Page 38: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

38

YZM 1105 – Algoritma ve Programlama I

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

Ekran Çıktısı

Ne Olacak

Page 39: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

39

YZM 1105 – Algoritma ve Programlama I

C Kodlarının Temel Özellikleri - Özet

• Yazılımda kullanılacak olan her fonksiyon için ilgili başlık

dosyası programın başına ilave edilmelidir.

• Her C programı main() fonksiyonunu içermelidir.

• Program içinde kullanılacak olan değişkenler ve sabitler

mutlaka tanımlanmalıdır.

• Her ifade satırının sonuna ; işareti konmalıdır.

Page 40: ALGORİTMA VE PROGRAMLAMA Iaytugonan.cbu.edu.tr/YZM1106/hafta-03/ders_notu03.pdf · Bu programlama dili Java ve C# gibi yüksek seviyede bir dil olabileceğigibi C, Assembly ve bazıdurumlarda

40

YZM 1105 – Algoritma ve Programlama I

C Kodlarının Temel Özellikleri – Özet (devam…)

• Her bloğun ve fonksiyonun başlangıcı ve bitişi sırasıyla { ve

} sembolleridir.

• C dilinde yazılan kodlarda küçük-büyük harf ayrımı vardır

(case sensitive).

• Örneğin; “A” ile “a” derleyici tarafından farklı

değerlendirilir.

• Yorum satırı operatörü /* */ veya // sembolleridir.