0
BÖLÜM 1 BİLGİSAYARIN TARİHÇESİ Hesap yapmayı basitleştiren ilk alet olan ABACUS, M.Ö. 8. yüzyılda Çin'de yapılmıştır. Aynı devirlerde Romalılar ise yatay oluklarda kayabilen yüzüklerin bulunduğu bir alet kullanıyorlardı. Her iki alette de birinci sıra birler basamağını, ikinci sıra onlar basamağını gösteriyordu.sonraları bu işlem tahtaları geliştirildi ve bugün bile kullanılan, karekök alabilenleri yapıldı. Hesap makinesi denebilecek ilk alet 1642'de Pascal'ın yaptığı dişli çarklardan oluşan hesap makinesi oldu.bu makine günümüzde kullanılan mekanik hesap makinelerinin ilkeli idi ve o da çarpma için üst üste toplama tekniğini kullanıyordu. Bu makine daha da geliştirilerek 1850'de güvenilir toplama makineleri yapıldı. 19. yüzyılın sonlarına doğru bölme yapabilen mekanik hesap makineleri geliştirildi.tüm bu makineler tekbir çeşit işlem yapabiliyorlardı ve hafızadan yoksundular. Birçok işlem yapabilen hafızalı ilk makine İngiltere'de Charles Babbage isimli matematikçi tarafından yapıldı ve bu makine hızla geliştirildi. 1929'da bilimsel uygulamalarda kullanılabilecek ilk makine yapıldı. Bu klavyesi olan bir makine idi ve yine mekanik sistemle çalışıyordu. Daha sonra elektroniğin gelişmesiyle 1944'de MARK-1 adı verilen makine yapıldı. Saniyede 10 işlem yapabilen ve o zamana göre olağanüstü hız yaptığı sayılan bu makine 18 metre uzunluğunda ve 2.5 metre yüksekliğinde idi. Çalışma ilkeleri ise hala mekanik tiptekiler gibiydi. 1947'de elektronikteki lambaların icadı ile program fikri ortaya atıldı ve programlama tekniğiyle çalışan ilk bilgisayar yapıldı.daha sonra transistorların icadı ile bu bilgisayarların güç ihtiyacı azaldı, boyutları küçüldü ve hızları arttı. 1970'lerde entegre devrelerin yapılmasıyla boyutları iyice küçülen bilgisayarların işlem kapasiteleri arttı. Artık saniyede 1000000000 işlem yapabilenleri yapıldı. Günümüzde ise boyutları ve fiyatlarının iyice düşmesi ile bilgisayarlar artık evlerde kullanılmaya başlandı. 1
BİLGİSAYARLARIN SINIFLANDIRILMASI Bilgisayarlar yapıları ve çalışma prensiplerine göre üç sınıfa ayrılırlar: 1- Dijital (Sayısal) Bilgisayarlar: Giriş, işlem ve çıkış bilgilerini sayılar halinde kabul eden ve veren bilgisayarlardır. Aşağıdaki özelliklere sahiptirler: a) Herhangi bir programlama dili ile kullanılabilirler. b) Özel elektronik devrelerle dizaynları yapıldığından pahalı know-how ve patentler ihtiva ederler. c) Mini ve mikro bilgisayarlar haline dönüşmüşler ve günümüzde yaygın hale gelmişlerdir. d) Dört işlem ve karar verme (mukayese) işlemini çok hızlı ve doğru olarak yapabilirler. e) Giriş, işlem ve çıkış bilgilerini çok küçük hacimde çok büyük kapasite olarak depolayabilirler. f) Herhangi bir program icra edilirken görülen hata ancak işlem sonunda düzeltile bilir. 2- Analog Bilgisayarlar: Giriş ve çıkış bilgilerini eğriler olarak kabul eden ve veren bir yapıya sahiptirler. Fiziksel büyüklükleri elektriksel büyüklüğe çevirme esasına göre çalışırlar. Aşağıdaki özelliklere sahiptirler: a) Belirli bir programlama diline ihtiyaç yoktur. b) Çözüm eğriler halinde verildiğinden sonuç hassasiyeti yazıcının ölçeğine bağlı olarak değişmektedir. c) Giriş ve çıkış bilgilerini depo etme kabiliyetleri yoktur. d) Bilgisayara icra esnasında müdahale yapılabilir. e) Elektronik yapı olarak çok özel devrelere ve bilgilere ihtiyaç göstermezler. f) Dijital bilgisayarlara nazaran daha yavaştırlar. 3- Hibrid Bilgisayarlar: Dijital ve analog bilgisayarların her ikisini de bünyesinde bulundurdukları için çok pahalı tiplerdir. Çok komplex yapıdadırlar. Yapılan işlem analog bilgisayarın özeliklerine ihtiyaç duyduğunda analog kısım, dijital bilgisayarın özelliklerine ihtiyaç duyduğunda ise dijital kısım devreye girer. Kullanım yerine örnek vermek gerekirse proses kontrolde işlemin kritik değerleri sayısal kısımla alınır, işlem analog kısımda icra edilir. Not: Kitabın bundan sonraki bölümlerinde bilgisayar kelimesi, sayısal bilgisayar anlamında kullanılacaktır. 2
GİRİŞ - ÇIKIŞ ÜNİTELERİ KLAVYE MOUSE DİSK,DİSKET CD,DVD EKRAN EKRAN G Ç PRİNTER HAVAİ HAT İ MERKEZ I PLOTTER SCANNER R K DİSK,DİSKET KAMERA İ BİLGİSAYAR I CD, DVD MİKROFON Ş Ş HAVAİ HAT JOYSTİC KART YAZICI KART,ŞERİT TEYP TEYP Diğer Dış Diğer Dış Hafızalar Hafızalar Şekil : Bilgisayarın giriş verilerini almakta ve çıkış verilerini vermekte kullandığı üniteler. Bir bilgisayar yukarıdaki ünitelerden en az 1 giriş, 1 çıkış ünitesine sahip olmalıdır. Aynı anda tüm üniteler de 1 bilgisayar üzerinde buluna bilir. PROGRAMLAMA DİLLERİ 1-Alçak seviyeli diller: a) Makine dili b) Assembler dili 2-Yüksek seviyeli diller a) FORTRAN 2,4,5 b) ALGOL c) COBOL d) PL/1 e) BASIC f) PASCAL g) C++ h) Windows altındaki diller(oracle, Dbase, ) 1- Alçak Seviyeli Diller: Sayısal bilgisayarlar her bilgiyi, her komutu ve her işlemi Boolen cebrindeki 0 ve 1 rakamları ile ifade etmektedirler.kısaca bu sistemde sayılar ondalıklı sistem yerine 2'li sayı sisteminde ifade edilmektedirler. Bu da demektir ki herhangi bir program parçası yan yana gelmiş 0 ve 1'lerden ibarettir. Bunlar elektroniksel olarak akımın geçtiğine veya geçmediğine göre belirlenen ve çalışan sistemlerdir. 3
İlk bilgisayarlarda genel bilgilere göre hazırlanmış program Boolen (0,1) cebrine uygun olarak yeniden ifadelendirilirdi. Bu işleme makine diline çevirme denir. Her geçen gün bilgisayarların özel matematiği kullanabilecek kişilerin haricinde; matematikten hiç anlamayan meslek gruplarında kullanılma ihtiyacı doğduktan sonra, makine dili yerine herkes tarafından kullanılabilen dillerin kullanılması ihtiyacı doğmuştur. Bu diller bilgisayardaki derleyici program vasıtasıyla otomatik olarak makine diline çevrilir. Böylece makine dili veya asembler dili öğrenme zorunluluğu ortadan kalkmıştır. 2- Yüksek Seviyeli Diller: FORTRAN: Formula Translation kelimelerinin başlangıç kısımları alınarak türetilmiş bir kelimedir. Kısaca mühendislik ve diğer ilmi çalışmalarda kullanılan bilgilerin belirli kaide ve bilgiler ışığında tercüme edilmiş hali olarak düşünülmektedir. Fortran-2 olarak bulunan dil geliştikçe Fortran-4 ve 5 adını almıştır. Aşağıdaki özelliklere sahiptir: a) Az sayıda temel komut gerektirir. b) Problemin metin işleme payı az olmalıdır. c) Kullanılacak sayılar üstel sayı biçiminde gösterilmiş olmalıdır. d) İşleyebileceği veri miktarı genellikle azdır ama daha kapsamlı işler yapabilir. e) Belirli hesaplama araçları (algoritmalar) mevcuttur. ALGOL: Algoritmic Language kelimelerinden türetilmiş olup, çeşitli algoritmaların belirli kaide ve bilgilerle ifadesinden başka birşey değildir.fortrana nazaran daha az kullanılır. COBOL: (Common Busines Oriented Language) Banka ve iş idaresi için yaygın olarak kullanılan genelleştirilmiş iş idaresi dili anlamına gelir. Özellikleri: a) Temel işlemler dışında hesap komutları yoktur. b) Veriler kolaylıkla diskete kaydedilir. c) Metin yazımına elverişli komutları vardır. PL/1: (Programming Language/1) Programlama dili 1 anlamına gelmektedir.fortran ve Cobol dillerini birleştiren bir dil olup hem iş idaresi, hem de mühendislikte kullanılır. PASCAL VE BASIC: (Beginers All Purpose Symbolic Instruction Code) : Bu diller mini ve mikro bilgisayarlar için geliştirilmiştir.daha önce sıraladığımız dillere nazaran daha dar kapsamlı diller idi ve yapılmak istenen işe ait komutlar aynen genel sistemdekine benzer olarak bilgisayara aktarılıyordu. Çok geniş amaçlı olarak kullanılmazdı. Ancak günümüzde her iki dil de çok geniş problemlerin çözümünde kullanılır hale gelmiştir. Ayrıca Windows işletim sistemine uygun olarak çıkarılan yeni versiyonları ile dillerin kullanımı da daha basit hale getirilmiştir. 4
SAYISAL BİLGİSAYARLARIN ANA İŞLEM ÜNİTELERİ VE ÇALIŞMA PRENSİPLERİ: Bilgisayarlar basit dört işlemi kağıt-kalemle uygulanan yolun aynısını takip ederek yaparlar.burada her işlem için ayrı bir ünite iş görmektedir. Mesela: a=10, b=20 ;c=2a+5b işlemini yapmak için şu adımlar takip edilir: a) Okuma: a ve b değerlerinin bir yerden okunarak bilgisayar iç hafızasında bir yere kaydedilmesi. b) Kaydedilen bilgilerin ve yapılacak olan işlemin ezberlenmesi c) Hesaplama işleminin yapılması.(dört işlem veya herhangi bir algoritmanın nasıl hesaplandığına dair bilgi sahibi olmak gerekir.) d) Yazma: Hesaplama neticesinde elde edilen sonucun herhangi bir ortama yazılması işlemidir. e) Kontrol işlemi: Yukarıda daha önce sıraladığımız dört adımın her birinin doğru yapılıp yapılmadığının kontrol edilmesidir. HAFIZA ÜNİTESİ GİRİŞ ÜNİTESİ ARİTMETİK İŞEM ÜNİTESİ (ALU) ÇIKIŞ ÜNİTESİ KONTROL ÜNİTESİ Şekil: Sayısal bilgisayarların işlem-mantık şeması 5
Sayısal bilgisayarlar yukarıda sıraladığımız her bir işlemi, fonksiyon olarak birbirinden farklı ünitelerle sağlamaktadır. Aşağıdaki şekli inceleyecek olursak hafıza ünitesi giriş ve çıkış üniteleriyle tek yönlü, aritmetik işlem ünitesiyle çift yönlü ilişkiye sahiptir.sistemin çalışması kısaca şöyledir: Giriş ünitelerinden girilen bilgi önce hafızaya aktarılır.hafızadaki bilgi aritmetik işlem ünitesinde işleme tabi tutulduktan sonra tekrar hafızaya gider ve oradan çıkış ünitesine gönderilir.kontrol ünitesinin; her adımın ayrı ayrı kontrol edilmesi açısından diğer ünitelerle ayrı ayrı ilişkisi vardır. Buraya kadar olan bilgiler ışığında BASIC dilinde bir programın gerçekleştirilmesinde aşağıdaki adımların izleneceği açıktır: 1. Programın analizi 2. Basıc programlama dilinde programın hazırlanıp yazılması 3. Program için gerekli verilerin derlenmesi ve bir kayıt ortamına kaydedilmesi 4. Hazırlanan programın bir derleyici kanalıyla kaynak programından gaye programına dönüştürülmesi 5. Programın icrası 6. Hataların düzeltilmesi BAZI TANIMLAR Buraya kadar ve buradan sonraki olan konularda bazı yeni terimler geçecektir. Şimdi bunlara bir göz atalım: Adres: Hafızadaki herhangi bir yeri gösteren sayıdır. Hafızadan bilgi almak veya hafızaya bilgi yazmak için bu adres sayısının bilinmesi gerekir. Akış Diyagramı: Bir programın yapması istenin işlerin çizgi ile adım adım gösterilmesidir. "Akış", sorunu için makinenin izlemesi gereken yolu belirler. Anahtar: Herhangi bir kaydın yerinin bulunmasını sağlayan bölümü. Byte (Bayt): Komutların tanıdığı, genellikle sekiz bitten oluşan temel bilgi birikimi. Bit: İçerisinde 0 yada 1 bilgisini bulunduran en küçük bilgi birikimi Derlenmiş Program: Derleyici tarafından makine diline çevrilmiş program. Derleyici: Bilgisayarın genel iletişim sisteminin bir parçası olan programdır. Kullanıcının yazdığı kişisel programları makinenin anlayacağı makine diline çeviren program. Döngü: Tekrar tekrar işleme girmesi gereken program bölümleridir. Bu bölümlerin kaç kere işleme girmesi gerektiği ya önceden belirlenir, ya da bir şarta bağlanır. 6
Giriş/Çıkış (G/Ç) (I/O): Bilgisayarla çevresel aygıtlar arasında genel bilgi alışverişini sağlayan her türlü giriş ve çıkış işlemlerini simgeler. Ham Program: Kullanıcının simgesel dilde yazdığı programdır. Cursor: Ekranda genellikle küçük dikdörtgen şeklinde görülen işaret. Ekran üzerinde giriş ve çıkış verilerinin nereden yazılmaya başlanacağını gösterir. Mikroişlem Birimi: Kişisel bilgisayarların bütün işlemlerini denetleyen devre. Alt Programlar: Özel bir işlev görmek üzere hazırlanmış program parçalarıdır. Ana programın herhangi bir noktasından çağrılıp orada kullanıla bilir. SAYI SİSTEMLERİ Bu bölümde bizim kullandığımız 10'lu sistem ile bilgisayarın kullandığı 2'li, 8'li ve 16'lı sistemler arasındaki farklar ve gereklilikler anlatılacaktır. Öncelikle kullandığımız 10'lu sayı sisteminde sayıları düşünmeden yazar, okur ve anlarız. Sistem aynı olmasına rağmen diğer sayı sistemlerinde düşünmek hatta hesap yapmak zorunluluğu duyarız. Bilgisayarımız ise sayı olarak yalnızca 1 (akım geçmesi durumu) ve 0 (akım geçmemesi durumu) sayılarını tanıyabilir. Öyleyse bilgisayar işlemlerini 2'li sistemde yapmaya zorunludur. Ancak bu bölümde görüleceği gibi 2'li sistem çok tıkız olduğundan (çok bit kapladığından) bilgisayar 8'li veya 16'lı sistemi kullanır. 10'lu sistem yerine bu sistemlerden birini kullanmasının sebebi ise 2'li sisteme olan dönüştürme kolaylığıdır. Artık günümüzde bilgisayarlar genellikle 16'lı sistemi kullanmaktadırlar. A-) 10'LU SAYI SİSTEMİ: Bu sayı sistemi için 0,1,2,3,4,5,6,7,8,9 rakamlarını kullanmaktayız. Bir sayıyı belirtmek istediğimizde 10 ve 10'un üstel katlarının çarpımlarının toplamları şeklinde yazarız. Bunu matematiksel olarak sağdan itibaren şöyle yazabiliriz:...e.10 4 + d.10 3 + c.10 2 + b.10 1 + a.10 0 Kesirli rakamlar için de, virgülden sonrası için:,x.10-1 + y.10-2 + z.10-3 +... Şeklinde olacaktır. Diğer sayı sistemleri için de durum aynı olup sadece taban değişik olacaktır. B-) 2'Lİ SAYI SİSTEMİ: Bu sayı sisteminde 0 ve 1 rakamlarını kullanırız. Bu sayılar bilgisayarda akımın geçmesi veya geçmemesi esasına göre belirlenir. 7
a-) 2'li sistemden 10'lu sisteme dönüştürme: (101101) 2 = 1.2 5 + 0.2 4 + 1.2 3 + 1.2 2 + 0.2 1 + 1.2 0 = =32 + 0 + 8 + 4 + 0 + 1 = (45) 10 örnekte görüldüğü gibi sistem 10'lu sistemin aynısıdır. Aralarındaki fark ise 10'lu taban formülündeki 10 yerine 2 rakamı gelmektedir. Bu sebeple de ikili taban daha çok bit istemektedir. b- 10'lu sistemden 2`li sisteme dönüştürme: Bu işlemi yapabilmek için 10'lu sistemde verilen sayı sürekli olarak ikiye bölünmektedir.bölmelerin kalanları bize o sayının ikili sistemdeki karşılığını vermektedir. 10'lu tabandaki 53 sayısını ikili tabana çeviriniz? Bölünen Bölüm Kalan Bölüm 53 2 1 (53) 10 =(110101) 2 26 2 0 13 2 1 6 2 0 3 2 1 1 1 1 1 0 1 0 1 c-)kesirli sayıların 10'lu sistemden 2'li sisteme çevrilmesi: Bu işlemi yapmak için verilen sayı sürekli 2 ile çarpılır Virgülden önceki sayılar bize sayının ikili sistemdeki karşılığını verir. 0.25 sayısını ikili sisteme dönüştürünüz? Çarpılan/Çarpım Çarpan Çarpımın virgülden önceki kısmı 0.25 2 0 0.50 2 1 0.00 1 0 (0.25) 10 = (0.01) 2 8
d-)kesirli sayıların 2'li sistemden 10'lu sisteme çevrilmesi: 0 1 1 (0.01) 2 =0.2-1 +1.2-2 = --- + --- = --- =(0.25) 10 2 2 2 4 C-) 8'Lİ SAYI SİSTEMİ: Bu sayı sistemi de diğerlerinin aynısı olup aradaki tek fark taban sayısının değişmesidir. Bu sistemde 0,1,2,3,4,5,6 ve 7 rakamları kullanılır. a-) 8'li sistemden 10'lu sisteme çevirme: Bu işlemi yaparken yine ikili sistemdeki metot kullanılır. (1734) 8 = 1.8 3 + 7.8 2 + 3.8 1 + 4.8 0 =512+448+24+4=(988) 10 b-)10'lu sistemden 8'li sisteme çevirme: 10'lu tabanda verilen 988 sayısını 8'li sisteme çeviriniz? 988 8 4 123 8 3 15 8 7 (988) 10 =(1734) 8 1 1 1 7 3 4 c-)8'li sistemden 2'li ve 2'li sistemden 8'li sisteme çevirme Bu işlemi yapmak için iki türlü yol vardır. Birincisi sayıyı önce 10'lu sisteme çevirip oradan esas çevirmek istediğimiz tabana çevirmek. Diğeri ise pratik metot olarak bilinen işlemdir. Biz burada pratik metodu birer örnekle inceleyelim. 1011010101 sayısını 8'li sisteme çevirmek istediğimiz de önce bu sayıyı sağdan itibaren üçer üçer ayırırız. Sonra her bir üçlüyü kendi arasında çeviririz ve böylece elde ettiğimiz sayı verilen sayının 8'li sistemdeki karşılığı olur. 9
1 011 010 101 (1011010101) 2 =(1325) 8 --- --- --- --- 1 3 2 5 Tersini yaptığımızda da sayıyı 8'li sistemden ikili sisteme çevirmiş oluruz. Burada da sekizli sistemdeki her bir sayıya karşılık 2'li sistemde üç basamaklı bir sayı yazmalıyız. 3 7 4 1 --- --- --- --- (3741) 8 = (11111100001) 2 011 111 100 001 D-)16'LI (HEKSODESİMAL) SAYI SİSTEMİ: Sistem yine aynıdır fakat burada 16 adet rakam gereklidir. Bunun içinde bu sistemde 0,1,2,3,4,5,6,7,8, 9,A,B,C,D,E,F rakam ve harfleri kullanılır. Burada A=10, B=11, C=12,D=13, E=14, F=15 karşılığıdır. a-) 10'lu sistemden 16'li sisteme çevirme: 1613 16 13 100 16 4 6 6 6 4 D (1613) 10 =(64D) 16 b-)16'lı sistemden 10'lu sisteme çevirme: (1AB3) 16 =1.16 3 + A.16 2 + B.16 1 + 3.16 0 =1.16 3 +10.16 2 +11.16 1 +3.16 0 =4096+2560+176+3= (6835) 10 c-)16'lı sistem ile 2'li ve 8'li sistem arasındaki dönüşümler Bu işlemlerde önce 10'lu sisteme dönüşüm yapıp sonra diğer sisteme geçilir. Ancak 16'lı sistem ile 2'li sistem arasında yine pratik metod mevcuttur. 10
6 F 1 8 (6F18) 16 = ---- ---- ---- ---- =(110111100011000) 2 0110 1111 0001 1000 1 0100 1101 0011 1010 (10100110100111010)=---- ---- ---- ---- ---- =(14D3A) 16 1 4 13 3 10 Metot 8'li sistemin aynısıdır,fakat burada üçlü yerine dörtlü ayırma yapılmaktadır. RAKAMLARIN BİLGİSAYARDA YAZILISI: a-) Tamsayılar: Bilgisayarlar tamsayıları (ondalıklı olmayan sayılar) önünde (-) işareti olmazsa pozitif kabul eder. -15, 1548, 0,... gibi b-) Ondalıklı sayılar: Ondalıklı sayı sabitleri önünde (-) işareti yoksa pozitif kabul edilir. Ondalıklı kısım (.) işareti ile bölünür. Eğer (,) ile bölünürse yazılım hatası (syntax error) oluşur. Bir çok bilgisayar tüm sayıları ondalıklı gibi işler, yani tamsayıları sonunda (.0) gibi kabul eder. 2.15, -67.7,.25, 328.0 gibi c-)üslü sayılar: Bilgisayarlar genelde 0.01'den küçük ve 999999999'dan büyük sayıları üslü (bilimsel) yazılımla yazarlar. 2E4 = 2.10 4 = 20000 3E-2 = 3.10-2 = 0.03 11