C++ ile Programlamaya Giriş Gülşen Demiröz
Bu ders şunları vermeyi amaçlıyor Basit bilgisayar bilimleri kavramları Çoğu C++ programlama kavramları Nesneye Dayalı Programlama dili Bu dersin sonunda yapabilecekleriniz algoritmalar geliştirmek C++ kullanarak programlar yazmak ama çok büyük programlar olmayacaklar
Eğitmen Hakkında Work Experience 1997-2008 Microsoft Corporation, Redmond WA, USA Senior Development Lead(Microsoft Online Services) Senior Design Engineer (Office Outlook) Software Test Lead (Windows Networking) Software Design Engineer(Windows Networking) Education M.Sc., Bilkent University, Computer Engineering and Information Science, 1997 B.S., Bilkent University, Computer Engineering and Information Science, 1995
Önce Belki bilgisayarlardan korkuyordunuz Belki nefret ediyordunuz Belki de onları sadece eğlence amaçlı kullanıyordunuz
Ders suresince Başlangıçta kötü rüyalar görebilirsiniz Kafayı üşüttüğünüzü düşünebilirsiniz Ama düzgünce çalışıp yeterince zaman da ayırırsanız eğer...
Dersin Sonunda Başarı sizindir!
MS Visual Studio.NET (2010) C++ programlarını yazacağımız ve çalıştıracağımız yazılım Laptoplarınıza yüklemeniz gerekiyor Adım adım yükleme ile ilgili sunumu aşağıda bulabilirsiniz: http://myweb.sabanciuniv.edu/gulsend/files/2009/02/vs2008_how_to_install.ppt
Bilgisayar Bilimi nedir? BilgisayarBilimibilginin, özellikle elektronik makineler aracılığıyla, düzenli ve ussal biçimde işlenmesi bilimidir. Bilgi Đşlenmek data problem çözmek (processing) Bilgisayarbelirli komutlara göre veri işleyen ve depolayan bir makinedir. Birçok ülkede özellikle Avrupada enformatik diye bilinir Bilgisayarmühendisliği daha çok donanım-yazılım entegrasyonu, devre/chip tasarımı için kullanılır.
Bilgisayar Bilimi Bilgisayar Bilimi sadece programlama değildir programlamadan fazlasıdır Bilgisayar Bilimi genç bir disiplindir 50 yıldan fazla Đlk yüksek lisans programı CMU (Carnegie Tech) 1965 Türkiyede ilk CS bölümü 1977 Turing machine (1937) abstract machine theoretically capable of any computation that we can do with modern computers today
Bilgisayar Bilimi Architecture Software Engineering Operating Systems Graphics Computer Security Computer Networking Artificial Intelligence Scientific Computing Theoretical CS hardware-software interface creating software products Windows, Linux/UNIX, MacOS animation, entertainment, games hacking, digital signatures made internet a reality thinking machines, learning biocomputing analyze algorithms
Algoritmalar Arapça kökenli bir kelimedir Bir problemi adım adım çözmektir önce bunu yap, sonra şunu yap,... en sonunda da bir cevap ile durur bir spesifik programlama diline has değil de genel bir işleme yöntemidir Amaç doğruluk Verimlilik 1 and 100 arasında bir sayı seçeyim Siz tahmin edeceksiniz Ben de her tahminde yüksek, alçak, doğru diyeceğim. Kaç tane tahmin gerekir (en kötü ihtimalde)?
Örnek Algoritma Minimum inimumu u bulma Đlk liste: 4 6 7 3 9 1 4 5 Sıralasak mı? 1 3 4 4 5 6 7 9 (n.log(n)) işlem gerek, n eleman sayısı Optimum algoritma Yaklaşık n işlem Đlk önce 4 minimum olsun 4 ve 6 yı karşılastıralım - min hala 4 4 ve 7 yi karşılastıralım - min hala 4 4 ve 3 ü karşılastıralım Şimdi 3 yeni minimum 3 ve 9 u karşılastıralım - min is still 3 3 ve 1 i karşılastıralım - Şimdi 1 yeni minimum 1 ve 4 ü karşılastıralım - min hala 1 1 ve 5 i karşılastıralım Đşimiz bitti ve minimum 1
Bilgisayarda Bilginin Gösterimi Bilgisayarlar bilgi işleyen makinerdir Bütün bilgiler nümerik şekilde gösterilir ve saklanırlar sayılar bariz sekilde nümerik zaten karakterler ASCII (Unicode) kodlarla ( A =65, Z =90) renkler RGB değerleri ile Đçerde saklanışı (en alt düzeyde) ikilik sayı sistemidir 0 ve 1 (4=100, 5=101) bütün aritmetik işlemler de ikilik sistemde yapılır En düşük seviyedeki yönergeler de ikilik sistemdedir Makine dili Đnsan tarafından okunamaz ve programlanamaz!
High-level Languages and Assembly Rather than instruct computers at the level of 0 s and 1 s, higher level languages have been developed. Flexible and easier programming Compilers translate a high level language, such as C++, into machine-specific executable program (0s and 1s) The compiler is a program, input is C++ program, output is an executable program for other languages different compilers are needed Between machine code and high-level languages: assembly language human understandable form of machine code instructions
Programlama Dillerinin Seviyeleri Üst Seviye int main() { int x, y, z; x = 7; y = 12; z = x * y; return 0; }
Programlama Dillerinin Seviyeleri - assembly Makıneye has assembly dili, soldaki Sparc, sağdaki Pentium, ikisi de aynı C++ kodundan türetilmiştir main: main: save %sp,-128,%sp pushl %ebp mov 7,%o0 movl %esp,%ebp st %o0,[%fp-20] subl $12,%esp mov 12,%o0 movl $7,-4(%ebp) st %o0,[%fp-24] movl $12,-8(%ebp) ld [%fp-20],%o0 movl -4(%ebp),%eax ld [%fp-24],%o1 imull -8(%ebp),%eax call.umul,0 movl %eax,-12(%ebp) nop xorl %eax,%eax st %o0,[%fp-28] jmp.l1 mov 0,%i0.align 4 b.ll1 xorl %eax,%eax nop jmp.l1
Basit Program Geliştirme Adımları Problemi Analiz Edin Algoritma Geliştirin Kaynak Kod Derle & Kur Düzelt Programı Tasarlayın Syntax Hataları? Evet Kodu kağıda yazın Kodu bilgisayara yazın Çalıştır Hayır Doğru Sonuçlar? No Düzelt (Debug) Evet - Bitti
Basit bir Program Kullanıcdan üç tane tamsayı okuyun ve toplamlarını hesaplayın Algoritma ekrana bilgi girişi için istemde bulunan bir cümle yazın sayıları okuyun(sayı 1, sayı 2, sayı 3 ) toplam sayı 1 + sayı 2 + sayı 3 çıktı (toplam) Programı Microsoft Visual Studio 2010 ile yazalım (toplam3sayı.cpp)