BİLGİSAYAR PROGRAMLAMA YRD. DOÇ. DR. YAKUP EMÜL CUMHURIYET ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1 B01. Bilgisayar Programlamaya Giriş
B01. Bilgisayar Programlamaya Giriş 2 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1.0 Notlandırma 1.1 Kaynak Materyaller 1.2 Etkileşimli Geliştirme Ortamı (IDE) 1.3 C Programlama Diline Dair 1.4 Bilgisayar Birimleri Materyaller 1.5 Çalışan Bir C Programı Üretim Süreci 1.6 DevC++ IDE 1.7 İlk Program 1.8 KC de Değişken Tipleri
B01.0 Notlandırma 3 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Notlandırma : Öğrencinin yıl içindeki çalışmaları, aşağıdaki notlandırma tablosuna göre değerlendirilecektir. (*) Ödevlerin arasınav/final notuna katkısı %10 dur. Sınav ve Ödevler Adet % Katkı Ödevler 6-8 (*) Ara Sınav 1 40 Yıl Sonu Sınavı 1 60
B01.1 Kaynak Materyaller 4 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Diğer bütün programlama dillerinde olduğu gibi C/C++ programlama dilide öğrenme aşamasında birçok tekrar ve uygulamayı gerektirir, yani çeşitli program yazma egzersizlerini. Öğrencilerin sınıfta tartışılan/yazılan programların benzerlerini bireysel çalışma zamanlarında geliştirmeleri önemsenmektedir. Bu nedenle sınıfta tartışılan programlar ve program yazma tekniklerinin öğrenci tarafından uygulanması için ayrıca bir dizi ödev verilecektir. Ders Kitabı : Internet ortamında gerek Türkçe gerekse İngilizce olarak birçok kaynak bulmak mümkündür. Öğrencilerin bu kaynakları incelemesi/kullanması teşvik edilmektedir. Bu kaynakların yanında aşağıdaki Türkçe kaynaklar da öğrencinin ilgisine sunulmaktadır. İleri C Programlama, G. Murat TAŞBAŞI, altaş yayıncılık ve elektronik C Programlama Dili, Selçuk ALP Arzu KİLİTÇİ, Umuttepe Yayınları C Programlamanın Temelleri, Timur Karaçar, Abaküs yayınları C How to program, 6th Ed., Paul Deitel and Harvey Deitel Programming in C, 3 rd Ed., S. Kochan.
B01.1 Kaynak Materyaller 5 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu derste, mühendislik öğrencileri için C/C++ programlama dilinde temel programcılık esaslarının kavranması ve C/C++ uygulamaları için deneyim kazandırılması amaçlanmaktadır. Bu derste C programlama dilinin aşağıdaki temel sintaksları verilerek temel seviyede bir programcılık altyapısı oluşturulması amaçlanmaktadır. Data tipleri ve değişkenler (Data types and variables) Diziler (arrays) Yapılar (structures) Dizgiler (strings) İmleçler (pointers) Koşullu deyimler (conditional statements) Döngüler, fonksiyonlar ve (loops, functions) Girdi/çıktı dosyaları (file input / output)
B01.2 Etkileşimli Geliştirme Ortamı (IDE) 6 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Geliştirme Ortamı : Bu ders boyunca Dev C++ IDE (Integrated Development Environment) ortamını program derleme aracı olarak kullanacağız. Öğrenciler bu programlama ortamını ücretsiz olarak: http://orwelldevcpp.blogspot.com.tr/ Adresinden indirerek bilgisayarlarına kurabilirler.
B01.3 C Programlama Diline Dair 7 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C Programlama Dili: Bu gün kullandığımız yazılıma dayalı teknolojilerin büyük oranda temelini oluştura programlama dilidir. ABD de Bell laboratuvarlarında 1969-1973 yıllarında Denis Ritchie tarafından yazılmıştır. İlk defa UNIX işletim sisteminin bir versiyonunu tasarlamak için kullanıldı. 1989 yılında Amerikan Standartlar Enstitüsü (ANSI) C Dili için tüm işletim sistemleri içinde geçerli olacak ANSI C standartlarını yayınladı. Bu standartlar 1990 yılında ISO (uluslar arası standartlar örgütü) tarafından da kabul edildi. 1999 yılında bu standartlar son halini almıştır.
B01.3 C Programlama Diline Dair 8 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Pascal, Basic, Java gibi diler kendi amaçları doğrultusunda çok önemli işler başarmış olsalarda C dilinin vazgeçilemezliği ortadadır. Bunun başlıca nedenleri Yapısallık: C kaynak programı fonksiyon ve kod bloklarından oluşan bir yapıdadır. Onu sadece yazan değil okuyan kişide ne yaptığını anlar ve gerekli düzenlemeleri, hata ayıklamalarını kolaylıkla yapabilir. Modüler Yapı: Fonksiyonlar ve kod blokları bir araya getirilerek modüller oluşturulabilir. Modüller başka programlarca çağrılabilir ve güncellenebilir. Tekrar kullanılabilme: modüller ve programlar başka programlarca tekrar be tekrar kullanılabilir. Etkinlik: C dili makine dili ile üst düzey diller arasında bir yerde konumlanır. Bu nedenle hem sistemle ilgili hemde üst düzey işlerle ilgili problemleri çözebilir.
B01.3 C Programlama Diline Dair 9 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Hız: Makine diline yakın olduğu için çok hızlı çalışır. Esneklik: işletim sistemi, ağ, web, grafik, hesap tabloları, derleyici yazmak, başka bir dil yazmak gibi çok geniş uygulama alanları vardır. Taşınabilirlik: C dilinde yazılan herhangi bir program farklı işletim (bazen küçük değişiklikler gerekebilir) sistemlerinde de çalışır. Genişleyebilme: Makine diline yakın olması sebebiyle programcılar, standart C dilinde olmayan kodlar yazarak yeni kodlar oluşturabilir ve C dilinin parçasıymış gibi çalıştırabilirler. Zengin Kütüphane: C dili standartlaşmış fonksiyonlardan oluşan ve çok farklı işlerde kullanılabilen zengin bir kütüphaneye sahiptir. Bu fonksiyonlar #include deyimiyle çağrılır ve istendiği kadar sıklıkla kulanılabilir.
B01.3 C Programlama Diline Dair 10 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C 1970 li yıllardan beri popülerliğini ve yaygınlığını korumuştur. 1970 li yıllarla günümüz ihtiyaçları çok farklı olması nedeniyle geliştirilmesi kaçınılmazdır. C++ Bjarne Stroustrup tarafından Bell laboratuvarlarında geliştirilmiştir. Nesneye yönelik bir programlama dilidir(object oriented programming). 1980 li yılların başlarında geliştirildi ANSI ve ISO standartlarına sahiptir.
B01.3 C Programlama Diline Dair 11 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C# 2000 yılında Microsoft firması tarafından C ve C++ programlama dillerinden geliştirilmiştir..net (dat net) yeni bir platformun parçasıdır. C# ve.net internet programcılığı ve platformdan bağımsız yazılım geliştirme konularındaki ihtiyacı kapatmak amacıyla geliştirilmiştir. İnternet programcılığında Java nın yerini alabilecek yeni bir platform olma özelliğinde.
B01.3 C Programlama Diline Dair 12 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Neden C? Her türlü emeğe değecek kadar iyi ve güçlü bir dildir. İşletim sistemleri, sürücüler, derleyiciler gibi bugün kullandığımız teknolojinin klasikleşmiş bir enstrümanıdır. Bugün geliştirilen modern diller çoğunlukla C tabanlıdır. Temel programcılık esaslarının kavranması için vazgeçilmezdir. C öğrendikten sonra C++, C# yada diğer dillere geçerken bir temel oluşturur.
B01.4 Bilgisayar Birimleri 13 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) CPU: İşlemci, bilgisayarda ki her birim, merkezi bir işlemci denetiminde çalışır. Hafıza: Tüm programlar ve bu programlara ait datalar hafızada saklanır. RAM External, USB, CDs, Hard disk gibi Farklı tür hafızalar: registers, cache, virtual/page gibi İşletim Sistemi: Kullanıcı ve bilgisayar kaynakları arasındaki bir arayüz Mac, Windows, Linux, Unix, IOS, Android gibi Derleyici: Programlama dilini makine diline çevirir
B01.5 Çalışan Bir C Programı Üretim Süreci 14 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Program düzenlemesi/yazımı Kaynak Kodu Derleyici Nesne/Ob ject Kodu Kütüphane Dosyaları Nesne Kodu ile Bağlantı Executable Kode (Yürütücü Kod)
B01.6 DevC++ IDE 15 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C programı geliştirme ortamı olarak DevC++ IDE (Integrated Development Environment) I kullanacağız. http://orwelldevcpp.blogspot.com.tr/ GNU General Public License altında ücretsiz kullanıma sunulmuş bir C programlama ortamıdır. Buradan ilgili programın kurulum dosyasını indirmek için ayrıca bir Sourceforge bağlantısı mevcuttur. Default kurulum özelliklerini kullanınız. (diğer bir deyişle yes, yes, yes gibi) Sadece windows makinelerde çalışmaktadır. Programlarınızı.c uzantılı olarak kaydedin,.cpp DEĞİL!!!
B01.6 DevC++ IDE 16 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.7 İlk Program 17 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.7 İlk Program 18 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Burası yorum/bilgilendirme amaçlandır. Derleyici /* ve */ arasındaki hiçbirşeyi dikkate almaz, bu kısım yokmuş gibi davranır. Okuyucuya kod içinde ne olduğu hakkında bilgi verir. Programlamanın hayati bir parçasıdır.
B01.7 İlk Program 19 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu kısım bir öncü-işlemci (pre-processor) emridir. öncü-işlemci emri, herzaman # işareti ile başlar. Derleyiciye, stdio.h isimli bir kütüphane dosyasını içermesini söyler. Bu dosyayı içerdikten sonra, stdio.h dosyasının tüm fonksiyonlarından/özelliklerinden dilediğimiz ölçüde faydalanabiliriz. # ve include arasında hiçbir boşluk bulunmaması gerektiğine dikkat etmemiz gerekir.
B01.7 İlk Program 20 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) main fonksiyonunun standart tanımı; Tüm C programlarının main diye isimlendirilen bir fonksiyonu olmak zorundadır. Bir program çalışmaya, main fonksiyonu ile başlar. Fonsiyonar mutlaka bir değere atanmalıdırlar.
B01.7 İlk Program 21 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bizim programımızda int, main fonksiyonunun atanma türünü verir. void yazılması, fonksiyonun herhangi bir değere atanmayacağını gösterir. (), birbirinden virgülle ayrılmış bir dizi parametreyi içerir. Bizim programımız içinse parametre listesi yoktur.
B01.7 İlk Program 22 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Parantez içine void yazabileceğimiz gibi boş da bırakabilirdik. Boş (), parametreyi void olarak otomatik algılar.
B01.7 İlk Program 23 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Dalgalı parantez işaretleri, main fonksiyonunun başlangıç ve bitiş yerlerini göstermektedir. Bütün fonksiyon tanımları için zorunlu Bu dalgalı parantezler aynı zamanda ilerde inceleyeceğimiz diğer kod bloklarının ayrılması için kullanılır.
B01.7 İlk Program 24 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu satır, Stdio.h içinde tanımlanmış ve printf olarak isimlendirilen fonksiyonu çağrır. printf fonksiyonu, çift tırnak içinde yazılmış olan bütün dizgiyi (string) ekrana yazar. \n karakterleri, ekranda görünmezler. Bu karakterler kaçış dizisi (escape sequences) olarak isimlendirilirler. \n, bilgisayara yeni bir satıra geçmesini söyler. Kaçış dizileri hakkında ilerde daha fazla konuşacağız.
B01.7 İlk Program 25 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) system fonksiyonuda stdio.h dosyası içinde tanımlanmıştır. pause kelimesi, bilgisayara bu satırdan itibaren klavyede herhangi bir tuşa basılıncaya kadar çalışmasını durdurmasını söyler.
B01.7 İlk Program 26 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu ifade bilgisayara main fonsiyonundan çıkmasını söyler. 0 a dönme, main fonksiyonundan başarılı bir şekilde çıkmayı gerektirir.. Bir fonksiyonun Return yapılan değeri, return çeşidi ile aynı olmalıdır. Eğer return yapılan değer bir int dan farklı ise, SelamDunya.c programında bir derleme hatasına neden olacaktır.
B01.7 İlk Program 27 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.7 İlk Program 28 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) /* B01_Uygulama01.c Ekrana 3 arkadaşınızı alt alta yazan bir program yazınız. 1. ve 2. arasında 1 satır, 2. ve 3. arasında 4 satır boşluk bulunsun. */
B01.8 C de Değişken Tipleri 29 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Hemen hemen tüm programlar bir takım değişkenler üzerinde işlem yaparlar. Bunu gerçekleştirebilmek için, bir programın dataları saklaması ve gerektiğinde çağırması gerekir. Farklı tipteki değişkenler farklı tipteki dataarın saklanmasına olanak verir: Data Types yada Data tipleri Örneğin 445 ve 810.56 gibi iki sayıyı saklamak zorunda iseniz, C programlama dili farklı türde iki data tipine ihtiyacınız olduğunu söyler.
B01.8 C de Değişken Tipleri 30 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Tüm değişkenler üç bileşenden oluşur. Bir isim Bir adres Ve Bir tutulan değer Örneğin, bir değişken atadığımızda int hiz; Derleyici bir tamsayı değişkeni için bir alan açar (4 bytes) Bu hafıza alanıprogramınız içinde ulaşılabilir bir adrese sahiptir. Bu değişkene şu şekilde bir başlangıç değeri atarsak hiz = 65; Derleyici 65 tam sayısını, hiz değişkeni için hafıza uzayında ilgili adreste saklar. Burada =, değerleri değişkenlere atayan bir atama operatörüdür.
B01.8 C de Değişken Tipleri 31 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Biribirine benzer sembollerden oluşan isimlendirmelerden kaçının: 1 ve l, O ve 0 gibi İsimlendirmelerde standart kütüphane isimlerini kullanmaktan kaçının stdio gibi
B01.8 C de Değişken Tipleri 32 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Değişken isimleri harflerden, sayılardan ve altçizgi işaretlerinden oluşabilir. İlk karakter bir harf yada alt çizgi işareti olmalıdır. Alt çizgi işareti, ilk karakter olabilir fakar bu tip isimlendirmelerden kaçınmakta fayda vardır. Büyük harf küçük harf farkeder! int hiz komutu, int HiZ yada int Hiz ile aynı değildir. Türkçe karakterlerden (ö,ğ,ş,ç,i,ü gibi) kaçınmak gerekir.
B01.8 C de Değişken Tipleri 33 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C anahtar sözcükleri, değişken ismi olarak kullanılamaz. arabaismi, selam, xc45a,... /* UYGUN */ _2013_vergi_odemesi /* UYGUN fakat kaçınmakta fayda var*/ Selam#C_programcisi /* UYGUN DEĞİL */ float, double, int /* çalışmaz */ 2kere2kaceder /* UYGUN DEĞİL */ önder2 /* çalışmaz */
B01.8 C de Değişken Tipleri 34 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.8 C de Değişken Tipleri 35 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C de sadece birkaç tür data tipi vardır. char: bir tek byte tır, sadece tek bir karakter saklar, örneğin a, bununla beraber bu datalar tam sayı değerli ASCII sayıları gibi standartlandırılmış tam sayı değerli olarak saklanır. int: sabit uzunlukta, bir tamsayı, genellikle 4 bytes / 32 bits. Örneğin 10 tam sayısı int tipindeki bir değişkenle saklanır. float: rasyonel sayılar, tek hassasiyetli, örneğin 10.67 double: float ile aynı hassasiyette fakat float ın iki katı hassasiyette