Bigisayar Programlama (GÜZ 2015) Yrd. Doç Dr. Yakup EMÜL Cumhuriyet Üniv., Teknoloji Fakültesi Yazılım Mühendisliği Bölümü yakupemul@cumhuriyet.edu.tr Ofis Saatleri : Perşembe 14:00-16:00 Dersin Websitesi : http://emuly.cumhuriyet.edu.tr
Ders Hakkında; Notlandırma Notlandırma : Öğrencinin yıl içindeki çalışmaları, aşağıdaki notlandırma tablosuna göre değerlendirilecektir. (*) Ödevlerin arasınav notuna katkısı %10 ve kısasınavların arasınav notuna katkısı %10 dur. (**) Ödevlerin final notuna katkısı %10 ve kısasınavların final notuna katkısı %10 dur. Sınav ve Ödevler Adet % Katkı Ödevler 8-10 (*) Kısa Sınavlar 8-10 (**) Ara Sınav 1 40 Yıl Sonu Sınavı 1 60
Ders Hakkında; Kaynak Materyaller 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, T,mur Karaçar, Abaküs yayınları 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.
1.1 GİRİŞ; C Programlama Diline Dair, geliştirme süreci 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.
1.1 GİRİŞ; C Programlama Diline Dair, Özellikler 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.
1.1 GİRİŞ; C Programlama Diline Dair, Özellikler 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.
1.1 GİRİŞ; C Dilinin Versiyonları: C, C++ & C# 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.
1.1 GİRİŞ; C Dilinin Versiyonları: C, C++ & C# 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.
1.1 GİRİŞ; 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.
1.2 BİLGİSAYAR BİRİMLERİ 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
1.2 DERS HAKKINDA ; C 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)
1.3 Çalışan Bir C Programı Üretim Süreci 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)
1.3 DevC++ IDE C programı geliştirme ortamı olarak DevC++ IDE (Integrated Development Environment) I kullanacağız. 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!!!
1.3 DevC++ IDE
1.4 İLK PROGAM
1.4 İLK PROGAM; Programı inceleyelim 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.
1.4 İLK PROGAM; Programı inceleyelim 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.
1.4 İLK PROGAM; Programı inceleyelim 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. 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. Parantez içine void yazabileceğimiz gibi boş da bırakabilirdik. Boş (), parametreyi void olarak otomatik algılar.
1.4 İLK PROGAM; Programı inceleyelim 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.
1.4 İLK PROGAM; Programı inceleyelim 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.
1.4 İLK PROGAM; Programı inceleyelim 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.
1.4 İLK PROGAM; Programı inceleyelim 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şidiile 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.
1.4 İLK PROGAM; Programın derlenmesi ve çalıştırılması
1.4 Ödev-1 (son teslim:07/10/2015) 5 adet arkadaşınızın ismini ve doğum yılını alt alta herbirinin arasında sırasıyla1,2,3,4,5 boş satır bırakacak şekilde ekrana yazan bir program yazınız.