Upload
others
View
31
Download
0
Embed Size (px)
Citation preview
ALGORİTMA VE PROGRAMLAMA I
DERS#3
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu
Teknoloji FakültesiYZM 1105
1. BÖLÜM
PROGRAMLAMAYA GİRİŞ
2
YZM 1105 – Algoritma ve Programlama I
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
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.
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.
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.
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.
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ı.
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…
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.
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.
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
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.
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)
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.
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.
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.
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.
2. BÖLÜM
C PROGRAMLAMA DİLİNE GİRİŞ
19
YZM 1105 – Algoritma ve Programlama I
• 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.
• 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
• 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
• 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
• 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
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)
• Program çalıştırılması sonucunda ekrana «Hello World!»
yazmaktadır.
İlk C Programı26
YZM 1105 – Algoritma ve Programlama I
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.
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.
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
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.
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
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.
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.
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.
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.
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.
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ü
38
YZM 1105 – Algoritma ve Programlama I
7. Satır: printf("Hello World!\n"); fonksiyonu (devam…)
Ekran Çıktısı
Ne Olacak
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.
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.