Temel bilgisayar ve Java bilgileri Temel bilgi» Her ne kadar tersine daha çok inanılsa da, bilgisayarlar yargılayamaz ve muhakeme ederek sonuç çıkartamazlar. Aslında bilgisayarlar hesaplamaları inanılmaz hızda (saniyede 1 milyon işlemden fazla) ve son derece büyük doğrulukla (önemsiz yuvarlama hataları olur) yapabilirler. Bilgisayarların bu sayede yararlı işler yapabilmeleri için programlara ihtiyaçları vardır. Örneğin yazı yazma işini gerçekleştirebilmek için Word; tablolar hazırlamak, hesaplamalar yapmak, grafik çizmek gibi işlemelri yapabilmek için Excel; istatistiksel hesaplamalar yapmak için SPSS; internete bağlanmak için Mozilla Firefox programı kullanılabilir. Java» Bu programlar, bilgisayarlara uygulanacak komutlar listesini sunar. Programlar, Java, C, Pascal, Fortran, Basic gibi programlama dilleri ile yazılırlar. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 1
Temel bilgisayar bilgisi Bilgisar sistemi: donanım (hardware) + yazılım (software) Donanım Yazılım : fiziksel bileşenler : donanıma ne yapılmasını söyleyen talimatlar Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 2
Donanım bileşenleleri Standart Donanım Organizasyonu Bellek (Ana & yardımcı) İşlemci / processor, CPU» Merkezi İşlem Birimi / Central Processing Unit» Talimatları yorumla ve uygula Bellek / memory» ana & yardımcı» veriyi ve talimatları tutar Giriş/input aygıtları (klavye, cd gibi) İşlemci/ Processor (MİB/CPU) Çıkış/ Output (Ekran, yazıcı gibi ) Girdi aygıtları / Input device(s))» Fare,klavye v.d. (mouse, keyboard, etc.) Çıktı aygıtları / Output device(s)» Ekran,yazıcı(video display, printer, etc.) CPU ve bellek aynı fiziksel ortam içinde bulunur. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 3
Fiziksel organization Klavye / keybord Ekran / monitor Kasa / chassis» MİB / CPU» Bellek / memory» Disk aygıtları / disk drives» Girdi çıktı bağlantıları» v.d. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 4
İki çeşit bellek Ana bellek / main» Çalışma alanıdır» programın çalışması sırasında programı ve veriyi geçici olarak tutar İkincil (yardımcı) bellek / auxiliary» kalıcı (yarı kalıcı)» programları ve sonuçlarını saklar» CD & sabit disk sürücüleri, bellek çubuğu, teypler Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 5
İki çeşit bellek Ana bellek (main memory) Programları, verileri ve sonuçları depolar. Çoğu bilgisayar iki tür ana belleğe sahiptir Rasgele Erişimli Bellek (Random Access Memory, RAM) RAM, programlar bilgisayar tarafından yürütülürken bu programları geçici olarak saklar. Programın kullandığı sayı, isim, resim gibi verileri de geçici olarak saklar. Bu nedenle RAM, geçici bellek (volatile memory) olarak da adlandırılır. Bilgisayar kapatıldığında RAM deki bütün veriler kaybolur. Salt Okunur Bellek (Read-Only Memory, ROM) ROM daki, veriler kalıcıdır. Bilgisayar buradaki bilgiyi okuyabilir fakat buraya bilgi kaydedemez. ROM, bilgisayar ilk kez açıldığında yapılacak komutlar listesini saklar. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 6
İki çeşit bellek İkincil bellek (auxiliary memory) İkincil bellek ya da ikincil depo yarı-kalıcı veri saklama imkanı sağlar. Yaygın bir ikincil depolama aracı disk tir. Bir disk içeriği değiştirilebilir ya da silinebilir olduğundan yarı-kalıcı depolama aracı olarak adlandırılır. Sabit disk (hard disk), disket (floppy disk), taşınabilir bellek (flash disk) ve CD (compact disk) birer disktirler. Çoğu bilgisayar bir sabit diske sahiptir. Bu depolama alanı bilgisayarın bütün kullanıcıları tarafından kullanılabilir. Bilgisayarın çalışmasını sağlayan işletim sistemi programı sabit diske kaydedilir. Bir sabit disk disketten ya da CD den çok daha fazla veri depolayabilir ve CPU tarafından daha kolay erişilebilir. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 7
Ana bellek düzeni Bit = binary digit / ikili sayı» bit sadece 0 ya da 1 değerlerinden birini alabilir. Byte = 8 bit Byte Adreslenebilir» Ana bellek herbirinde bir byte bilgi saklayan numaralanmış konumlar (adresler) listesidir. Her bir veri maddesinde byte sayısı değişebilir. Address Data Byte 3021 1111 0000 veri 1: 2 bytes saklı 3022 1100 1100 3023 1010 1010 veri 2: 1 byte saklı 3024 1100 1110 veri 3: 3 byte saklı 3025 0011 0001 3026 1110 0001 3027 0110 0011 veri 4: 2 byte saklı 3028 1010 0010 3029 sonraki veri, vd. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 8
Yardımcı bellke düzeni Auxiliary Memory Organization Main (Root) Directory / Folder Files Subdirectory Subdirectory Files Subdirectory Subdirectory Subdirectory Files Files Files Subdirectory Files Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 9
Bir programın çalıştırılması Program Bilgisayarın uygulayayacağı komutlar kümesidir. Program Veri (program girdisi) Bilgisayar Çıktı Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 10
Program çeşitleri Kullanıcının yazdığı Mevcut uygulamalar» word-processor / editor» web browser / web tarayıcı» compiler or assembler / derleyici» vd. İşletim Sistemi / Operating System DOS, Microsoft Windows, MacOS, Linux, UNIX, vd. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 11
Kullanıcı arayüzleri Komut satırı» Klavyeden sözcük ve harfler girilir.» Çoğunlukla DOS ve UNIX tabanlıdır. Menu» DOS ve Windows uygulamalarında görülebilir. Grafik kullanıcı arayüzü / (Graphical User Interface, GUI)» ikon tıklama» event-driven olarak da adlandırılır.» MacOS, Windows Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 12
Programlama Dilleri Sıradüzeni High-Level Language (HLL) Assembly Lanuage Machine Language Hardware Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 13
Programlama dillerinin artı ve eksileri... Yüksek seviyeli diller High-Level Language (HLL)» konuşma diline benzer.» kelimeler, sayılar ve matematiksel semboller kullanılır.» donanım tarafından doğrudan anlaşılamaz.» donanımdan bağımsız taşınabilir / portable kaynak kodludur.» Java, C, C++, COBOL, FORTRAN, BASIC, Lisp, Ada, vd. Makina dili (en düşük seviye)» insanın değil donanımın ana diline yakın» sadece 0 ve 1 lerden oluşur.» donanım tarafından doğrudan anlaşılır.» taşınabilir / portable değildir (donanıma bağımlı) Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 14
Kaynak kodu makine koduna dönüştürme programı derleme / compiling yüksek seviyeli program kodunu makine diline çevirir. derleyici / compiler derleme işini yapan program derleyiciler çeviriyi hedef donanımın özelliklerine göre yaparlar. Program yalnızca belirlenen donanımda çalışır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 15
Derleyiciler ve yorumlayıcılar Derleyiciler» Çeviri, kod yazıldıktan sonra kullanıcı tarafından ayrıca gerçekleştirilen bir işlemdir.» Çeviri, kod yazımıyla eş-zamanlı değildir. Yorumlayıcılar / Interpreters kaynak kodu makine (object) koda dönüştürmenin bir diğer yolu.» Yorumlama işi ayrı bir kullanıcı işlemi değildir.» Çeviri, kod yazımıyla eş-zamanlıdır. Kaynak Kod Derleyici, ya da yorumlayıcı Makine Kod Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 16
Java Program Çevirisi Derleme ve yorumlama Ara kod: Byte Kod» assembly koda benzer ancak donanımdan bağımsızdır. Yorumlayıcı, Byte kodu makine koduna çevirir. Java Program Java Derleyicisi Byte-Code Program Byte-Code Yorumlayıcı Makine Dili Komutları Java Programı İçin Veri Java Virtual Machine Makine Dili Komutlarını Uygulama Java Programı Çıktısı Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 17
Java Byte Kod Java derleyicisi tarafından oluşturulur.» Çoğu derleyici gibi makine diline dönüştürmek yerine, Java derleyicisi byte kod a dönüştürür. Çeşitli türdeki bilgisayarların makine dillerine kolaylıkla dönüştürülebilir. Java yorumlayıcısı tarafından yürütülür Programcı tarafından izlenmez» Bir Java program yazarken byte kodun nasıl çalışacağı hakkında herhangi bir şey bilmek zorunda değilsiniz. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 18
Neden Byte Kod? Sakıncaları: Hem derleyici hem de yorumlayıcıya ihtiyaç vardır. Programın yürütülmesi biraz daha yavaştır. Üstünlükleri: Taşınabilir (donanımdan bağımsız) olması» Çok önemlidir.» Aynı program farklı bilgisayarlarda çalışabilir (özellikle internette çok gereklidir)» Yeni tür bilgisayarlar için Java derleyicisi kolaylıkla yapılabilir. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 19
Algoritmalar Algoritma - Bir sorunu çözmek için oluşturulan komutlar dizisi.» muğlak değil kesin olmalı» eksiksiz, tam olmalı Çeşitli biçimlerde olabilir» doğal dilde yazılabilir(türkçe, İngilizce)» belirli bir programlama dili ile yazılabilir (Java, C)» bir diagram olabilir, akış şeması(flow chart)» sözde kod olabilir (pseudocode) - bir doğal dil ile programlama dili karışımı Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 20
Algoritma örneği Çok sayıda malzemenin toplam maliyetini hesaplayan algoritma: 1. Tahtaya 0 yaz. 2. Her bir malzeme için aşağıdaki işlemleri yap: -- Malzemenin maliyetini tahtadaki sayıya ekle. -- Tahtadaki sayının yerine bulduğun toplamı yaz. 3. Tahtadaki sayıyı toplam maliyet olarak bildir. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 21
Test etme ve Hata ayıklama (Debugging) Çok dikkatli yazılmış olsa bile program kodunuz hata içeriyor olabilir ve baştan sona test edilmelidir. Yanlış (Bug) programdaki bir hata Hata ayıklama (debugging) programdaki hataları düzeltme Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 22
Hata türleri Yazım hatası / Syntax Çalışma hatası / Run-Time Mantık hatası / Logic Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 23
Yazım kuralları /Syntax Bir programlama dili için belirlenmiş yazım kurallarının bütününe denir. Java derleyici, programın Java dili yazım kurallarına uygunluğunu kontrol eder. Eğer programınız Java programı yazım kurallarına uygun değilse, derleyici «syntax error» mesajı verir. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 24
Yazım hataları / Syntax Errors derleyici tarafından tespit edilir otomatik olarak bulunur, düzeltmesi en kolay olan hata türüdür. bütün yazım hataları giderilmeden program çalıştırılamaz. Example: return yerine rturn yazmak Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 25
Çalışma hatası (run-time error) Programın çalıtığı sırada ortaya çıkar. Düzeltmesi her zaman kolay olmayabilir. Hata mesajı hatayı bulmada her zaman yardımcı olamayabilir. Derleyici tarafından bulunamaz. Örnek: sıfıra bölme hatası Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 26
Mantık hatası Programın derleme ya da çalışması sırasında hata mesajı alınmamış olması kodlamanın doğru yapıldığı anlamına gelmez! An error in the design (the algorithm) or its implementation» Derleme sorunsuz tamamlanır» Çalışma hatası vermez» Fakat yinede beklenmedik, yanlış sonuç üretir. Genellikle bulması ve düzeltmesi en zor olan hata türüdür. Dikkatli olmak ve baştan sona test etmek gerekir.» Test durumları belirlenir, bu durumlar için prıgram çalıştırılmadan önce sonuçlar tahmin edilir ve çıkan sonuçlarla karşılaştırılır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 27
Mantık hatası örnekleri Algoritma hatası:» averageoffivescores = SumOfScores/2 (5 e bölünmesi gerekirdi) Gerçekleştirme hatası (implementation error):» Kaynak kodda yanlış bir sembol kullanılması - sum = a - b; (toplama işlemi yapılmalıydı, sum = a + b;) Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 28
Applets ve Java Uygulamaları Apletler (applets)» Internetten indirilip kolayca çalıştırılabilecek Java programlarıdır» küçük uygulamalardır» internet tarayıcı ile çalışabilir Uygulamalar (applications)» Bilgisayara yüklenip çalıştırılan Java programlarıdır.» Genellikle daha büyük uygulamalardır. Programlama açısından çok az farklıdırlar, her ikisi de kolaydır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 29
Örnek Java Programı 1 import java.util.*; public class Daire { public static void main(string[] args) { double yaricap, alan, cevre; Scanner klavye = new Scanner (System.in); System.out.println("Dairenin yaricapini yaziniz (cm) >"); yaricap = klavye.nextdouble(); alan = 3.14*yaricap*yaricap; cevre = 2*3.14*yaricap; } } System.out.println("Yaricapi "+yaricap+" cm olan bir dairenin"); System.out.println("alani "+alan+" cm karedir."); System.out.println("cevresi "+cevre+" cm dir."); Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 30
Örnek Java Programı 2 import java.util.*; public class KonusBakalim { public static void main(string[] args) { System.out.println("Oradakilere merhaba."); System.out.println("Biraz konusmak ister misiniz?"); System.out.println("İstiyorsanız 1 istemiyorsanız 0 tusuna basınız."); int cevap; Scanner klavye = new Scanner (System.in); } } cevap = klavye.nextint(); if (cevap == 1) System.out.println("Bugun hava guzel."); System.out.println("Gule gule."); Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 31
Kod Açıklaması... Scanner sınıfı java.util kütüphanesinin içinde yer alır ve kullanılması için program başlangıcından da önce aşağıdaki satır yer almalıdır. import java.util.*; Klavyeden veri girişini sağlayan Scanner sınıfının bir nesnesi Scanner klavye = new Scanner (System.in); Klavyeden bir tam sayı veri okumak için nextint yöntemi aşağıdaki gibi çağrılır. cevap = klavye.nextint(); Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 32
Kod Açıklaması... Programın başlaması için gerekli kodlar: public class KonusBakalim { public static void main(string[ ] args) { Java uygulamaları başlangıçta aynı kodlara sahiptirler.» Sınıf ismi programdan programa değişir.» Sınıfa ait diğer bilgiler de ilk satırda yer alır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 33
Kod Açıklaması... Ekranda yazı görüntülenmesini sağlayan kodlar: System.out.println("Oradakilere merhaba."); System.out.println("Biraz konusmak ister misiniz?"); System.out.println("İstiyorsanız 1 istemiyorsanız 0 tusuna basınız.");» Nokta (.) operatörüne dikkat edin» System.out bir nesnedir» println bir yöntemdir» Parantez arasındaki çift-tırnak içindeki yazı println yönteminin bir parametresidir.» Genel yazım kuralı: NesneAdi.yontemAdi(parametreler) Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 34
Kod Açıklaması... Tamsayı bir değer saklamak üzere cevap adlı bir değişken tanımlamak için kullanılan kod: int cevap; Bu değişken kullanıcının vereceği cevabı saklamak için kullanılır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 35
Kod Açıklaması... Soru: Eğer = işareti eşitliğin sağ tarafındaki ifadenin değerini sol taraftaki değişkene ata ise eşit midir anlamını hangi işaretle verebiliriz? Cevap: Çift eşit yan yana kullanarak ( == ) Örnek: Kullanıcının cevabının 1 olup olmadığını kontrol et: if (cevap == 1) Eğer kullanıcının cevabı 1 ise parantezin içindeki değer «doğru, true», değilse «yanlış, false» olacaktır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 36
Kod Açıklaması... Kullanıcı 1 girdiyse ekrana Bugun hava guzel. yazdıracak kod: if (cevap == 1 ) System.out.println( Bugun hava guzel.");» Eğer kullanıcı 1 dışında başka bir değer girdiyse bu komut ekrana herhangi bir şey yazmaz. Koşulsuz olarak ekrana Gule gule. yazdıran kod: System.out.println("Gule gule.");» İlk System.out.println girilen değere bağlı olarak yazılır ya da yazılmaz ancak ikincisi girilen değere bakmaksızın yazılır. Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 37
Summary Part 1 A computer s main memory holds both the program that is currently running and its data. Main memory is a series of numbered locations, each one containing a single byte. Auxiliary memory is for more or less permanent storage. A compiler is a program that translates a high-level language, like java, into a lower level format ( bytecode for java). Actual translation of Java byte-code to the hardware s specific machine code occurs at run time (it is interpreted). Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 38
Summary Part 2 An algorithm is a set of instructions for solving a problem (it must be complete and precise). An object is something that has both data and actions (methods) associated with it. A class defines a type of object; all objects of the same class have the same methods. In a java program, a method invocation has the general form ObjectName.MethodName(Arguments) Chapter 1 Java: an Introduction to Computer Science & Programming - Walter Savitch 39