DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu
BİL1001 Bilgisayar Bilimlerine Giriş 1 Ders İçeriği Bilgisayar Bilimlerine Giriş Sayı Sistemleri İkilik, sekizlik, onaltılık sayı sistemleri ve dönüşümleri Algoritmalar Algoritmalar Algoritmalar Algoritmalar Akış-Şeması Diyagramları Programlamaya Giriş: Temel Veri Tipleri (Data Types) Değişkenler (Variables) İfadeler (Expressions), Deyimler (Statements), Kontrol Deyimleri (Control Statements) Döngüler (Loops) 2
BİL1001 Bilgisayar Bilimlerine Giriş 1 Dersin Amacı 1. Bilgisayar bilimlerindeki temel kavramları bilme 2. Algoritma kavramı hakkında anlayışa sahip olabilme. 3. Veri tipleri hakkında temel bilgi sahibi olabilme. 4. Bilgisayar programlama yapılarını kullanabilme. 5. Programlama dilinde uygulama kodu tasarlayabilme. 3
DEÜ Bilgisayar Bilimleri Bölümü Bilgisayar Bilimlerine Giriş (Introduction to Computer Science)
Bilgisayar Bilimleri (Computer Science) Bilgisayar (Computer) Nedir? Bilgisayarın dili nedir? İkilik Sayı Sistemi (Binary System) 0, 1 Neden? Bilgisayarların Tarihçesi Abaküs (MÖ 2600) 5
Bilgisayar Tarihçe 1946 ENIAC (Electrical Numerical Integrator And Computer) Askeri Amaçlı Saniyede 5000 Toplama 385 Çarpma 38 Karekök 18000 vakumlu tüp 30 ton 167 m 2 6
Bilgisayar Tarihçe 1970 IBM mainframes (3090, 7090, 360, 370) 1971 First Microprocessor 4004 Intel 1976 APPLE - Steve Wozniak and Steve Jobs 7
Bilgisayar Tarihçe 1980 IBM PC (Personal Computer) Microprocessor 8086 80286 80386 80486 80586 (Pentium) PII, PIII, PIV Core2 Duo, i5, i7, 8
Bilgisayar Tarihçe 1993 80386 DX 40 MHz 512 KByte RAM 100 MByte Hard Disk 14 CRT Monitor 32 KByte Ekran Kartı 56 Kbit/sn Modem Floppy Disk Driver MS DOS + Windows 3.1 2017 Core i7 3.6 GHz 8 GByte DDR4 RAM 1 TByte Hard Disk 22 LCD Monitor 3 Gbyte NVIDIA GTX1060 Wireless Modem Blu-Ray Disc Windows 10 / Mac OS X El Capitan 9
Donanım (Hardware) Tipik bir bilgisayar aşağıdaki bileşenlerden oluşur CPU(Merkezi İşlem Birimi) Main Memory(Ana Bellek) Secondary Storage Devices(İkincil Depolama Cihazları) Input Devices(Girdi Cihazları) Output Devices(Çıktı Cihazları) 10
CPU(Merkezi İşlem Birimi) (Central Processing Unit) Merkezi işlem birimi (CPU) bilgisayarların programları çalıştıran (run veya execute) parçasıdır. CPU, bilgisayarın en önemli parçasıdır çünkü olmadığında bilgisayar herhangi bir yazılımı çalıştıramaz. ENIAC Bilgisayarı Intel 80486dx2 mikroişlemci Intel i7 mikroişlemci 11
Ana Bellek (Main Memory ) Ana belleği, bilgisayarınızın çalışma alanı olarak görebilirsiniz. Bilgisayar, program çalışırken programın kendisini ve programın kullandığı verileri burada saklar. Ana bellek genellikle RAM (Random-Access Memory veya rasgele-erişimli bellek) olarak da bilinir. Bu şekilde isimlendirilmesinin sebebi CPU nun RAM içinde rasgele bir lokasyonda saklanan bir bilgiye hızlıca ulaşabilmesidir. RAM geçiçi bir bellek tipidir. Yalnızca bilgisayar çalışırken kullanılır. Bilgisayarınızı kapattığınız anda RAM içinde saklanan her şey silinir. Rasgele Erişimli Bellek 12
İkincil Depolama Cihazları (Secondary Storage Devices) İkincil depolama cihazları, ortamda güç olmasa dahi verilerin uzun zamanlı saklanmasına yararlar. Programlar normalde ikincil depolama cihazlarında saklanırken, çalıştırılacakları zaman ana belleğe alınırlar. Disk Drive Hard Disk Drive (HDD) Floppy Disk Drive (FDD) Flash Memory Solid State Disk (SSD) Optical Devices CD ( Compact Disk) DVD (Digital Versatile Disk) HDD ve SSD 13
Girdi Cihazları (Input Devices) Bir bilgisayarın, insanlardan veya diğer cihazlardan topladığı herhangi bir veriye girdi (input) denir. Bu girdileri toplayıp bilgisayara yollayan tüm cihazlara girdi cihazları denir. Örneğin; klavye, fare, tarayıcı, mikrofon, dijital kamera vb.. Çıktı Cihazları (Output Devices) Bir bilgisayarın insanlar veya diğer cihazlar için ürettiği herhangi bir veriye çıktı (output) denir. Çıktıları doğru şekilde formatlayıp sunan araçlara ise çıktı cihazları denir. Örneğin; ekran, yazıcı, hoparlör vb 14
15
Veriler bilgisayarda nasıl depolanır? Bir bilgisayarın belleği byte (bayt) adı verilen küçük depolama hücrelerine bölünmüştür. Bir bayt ancak alfabeden bir harf veya küçük bir sayı tutacak kadar büyüktür. Anlamlı bir şeyler yapa bilmesi için bilgisayarın çok fazla bayta ihtiyacı vardır. Günümüzdeki çoğu modern bilgisayarın milyon, hatta milyar baytlık bellekleri vardır. Her bir bayt bit olarak adlandırılan daha küçük sekiz adet depolama alanına ayrılır. Bit terim İngilizce binary digit (ikili rakam) kelimesine dayanmaktadır. Bilgisayar bilimciler çoğu zaman bitleri açık ve kapalı durumda olabilen küçük düğmeler olarak düşünürler. Pek çok bilgisayar sisteminde bitler, pozitif veya negatif yük taşıya bilen küçük elektriksel bileşenlerdir. Şimdi, verilerin depolanması ve temsilini iyi anlayabilmek için bilgisayar bilimlerinde sık sık karşılaşacağımız ikilik, sekizlik, onluk ve onaltılık sayı sistemlerini inceleyeceğiz. Sekiz düğmeden oluşan bayt gösterimi 16
İkilik Sayı Sistemi (Binary System) Bilgisayarın dili nedir? İkilik Sayı Sistemi (Binary System) 0, 1 İkilik düzendeki her bir basamağa «Bit» (Binary Digit) denir. Soru: 1 bit ile kaç farklı şey ifade edilebilir? Cevap: 2 (Ya 0, ya da 1) 0 0 0 0 0 0 0 0 8 Bit = 1 Byte 17
İkilik Sayı Sistemi (Binary System) 0 0 0 0 0 0 0 0 8 Bit = 1 Byte 18
İkilik Sayı Sistemi (Binary System) (00000001) 2 = ( 1 ) 10 (00000010) 2 = ( 2 ) 10 (00000100) 2 = ( 4 ) 10 (00000101) 2 = ( 5 ) 10 (00000111) 2 = ( 7 ) 10 (11111111) 2 = ( 255 ) 10 (10000000) 2 = ( 128 ) 10 19
Mantıksal Kapılar (Logical Gates) 20
Mantıksal Kapılar (Logical Gates) 21
Mantıksal Kapılar (Logical Gates) Bu nedir? Half Adder 22
Mantıksal Kapılar (Logical Gates) Bu nedir? Full Adder 23
Mantıksal Kapılar (Logical Gates) Bu nedir? Hamlett Circuit (Two b OR NOT two b) 24
(Sayı Sistemleri) Günlük hayatta kullandığımız sayı sistemi olan onluk sistem (decimal) sistemdir. Sistem, 10 ve üsleri üzerine kuruludur. Ör: 462 sayısını çözümleyiniz 462 = 4 x 100 + 6 x 10 + 2 x 1 25
(Sayı Sistemleri) İkilik (binary) sayı sistemindeki 101 sayısı için bu formülü kullanalım. Peki onluk sistemde yazılmış bir sayıyı başka bir sayı sisteminde nasıl yazarız? Sonuç sıfırdan büyük olduğu sürece sayıyı hedef sayı sisteminin tabanına bölerek kalanları tersten yazarız. Bir örnekle bakalım: 11 10 sayısını ikilik sistemde yazalım. 101 2 = 1 x 2 2 + 0 x 2 1 + 1 x 2 0 = 5 10 11 / 2 = 5, kalan 1 5 / 2 = 2, kalan 1 2 / 2 = 1, kalan 0 1 / 2 = 0, kalan 1 11 10 = 1011 2 26
(Sayı Sistemleri) Sekizlik ve Onaltılık sayı sistemlerine geçiş yapmanın ikilik sisteme geçiş yapmaktan pek bir farkı yoktur. 27
(Sayı Sistemleri) 91 10 sayısını sekizlik ve onaltılık sistemde yazalım: 91/8 = 11, kalan 3 11/8 = 1, kalan 3 1/8 = 0, kalan 1 91 10 = 133 8 1*8 2 + 3*8 1 + 3*8 0 = 91 91/16 = 5, kalan 11 5/16 = 0, kalan 5 91 10 = 5B 16 5*16 1 + 11*16 0 = 91 28
(Sayı Sistemleri) Ondalıklı Sayılar Sayıların kesirli kısımlarını çevirirken ise bölme yerine çarpma işlemi kullanırız. 1473.2 8 Çarpım işlemlerini yalnızca ondalık kısım üzerinde, bir tamsayı elde edene kadar devam ettirir ve işlemler boyunca her adımdaki tam kısımları yukarıdan aşağıya doğru alırız..1875 10 sayısını ikilik tabanda yazalım. 0.1875*2 = 0.375 tam kısım 0 0.375*2 = 0.75 tam kısım 0 0.75*2 = 1.5 tam kısım 1 0.5*2 = 1.0 tam kısım 1.1875 10 =.0011 2 0*2-1 + 0*2-2 + 1*2-3 + 1*2-4 = 1/8 + 1/16 =.1875 1*8 3 + 4*8 2 + 7*8 1 + 3*8 0 + 2*8-1 = 827.25 10 33B.4 16 3*16 2 + 3*16 1 + B*16 0 + 4*16-1 = 827.25 10 29
(Sayı Sistemleri).1875 10 sayısını sekizlik ve onaltılık sistemde yazalım. 0.1875*8 = 1.5 tam kısım 1 0.5*8 = 4.0 tam kısım 4 Sekizlik ve Onaltılık sayı sistemleri neden önemli? Bu sayı sistemleri bilgisayar dünyasının farklı alanlarında farklı amaçlar için kullanılıyorlar. Ancak bilgisayarların çalıştığı ikilik sistemin yanı sıra bu sistemlerin de kullanılmasında en önemli neden, ikili sistemde ifade edilen sayıların çok fazla basamak içermesi ve bunların makine düzeyi haricinde kullanımının pratik olmamasıdır..1875 10 =.14 8 1*8-1 + 4*8-2 = 1/8 + 4/64 = 12/64 =.1875 Yine de her an ikili sisteme kolayca dönüşüm yapabilmek için 2 sayısının kuvvetleri olan bu sayıların sistemleri kullanılmaktadır. 0.1875*16 = 3.0 tam kısım 3.1875 10 =.3 16 3*16-1 =3/16 =.1875 30
(Sayı Sistemleri) Peki 2, 8 ve 16 sayı tabanları arasında nasıl kolay dönüşüm yapabiliriz? 8 = 2 3 olduğu için, 2 tabanındaki her 3 basamak 8 tabanındaki 1 basamağa karşılık gelir. 46 10 = 101110 2 101 2 = 5 8 110 = 6 8 46 10 = 101110 2 = 56 8 Benzer şekilde, 16 = 2 4 olduğu için... 46 10 = 101110 2 10 2 = 2 16 1110 = E 16 46 10 = 101110 2 = 2E 16 31
Karakter depolama Bilgisayar belleğinde saklanan her bir veri mutlaka ikili sayı olarak tutulmalıdır. Bu durum harf veya özel işaret gibi karakterleri de içermektedir. Bir karakter depolandığı zaman önce numerik bir koda sonrada ikili tabana çevrilir. Yıllar boyunca bilgisayar belleğinde karakter kodlamak için değişik kodlama şemaları kullanıldı. Bunlardan, en önemli ve geçerlisi ASCII (American Standart Code for Informaiton Interchange) olarak kabul edilir. 32
ASCII/Unicode Karakter Tablosu 33
ASCII/Unicode Karakter Tablosu 34
Negatif Sayıların Temsili Peki ya negatif sayılar? Biz sadece - işaretini kullanarak ve çıkarma işlemi yaparak bu işin içinden çıkabiliyoruz. Bilgisayarlarda ise bu iş biraz daha karmaşıktır. Negatif, yani işaretli tamsayıları temsil etmek için iki temel yöntem vardır: Bire Tümleme (One s complement) İkiye Tümleme (Two s complement) Bu yöntemlerden daha kullanışlı olanı ve modern bilgisayarların mimarisinde yer alanı ikiye tümleme yöntemidir. 35
Bire Tümleme Bire tümleme yönteminde negatif tamsayılar hesaplanırken yalnızca pozitif sayının tümleyeni alınır. Yani 1 ise 0, 0 ise 1 yazılır. 0110 = 6 1001 = -6 Çıkarma işlemi yapılırken sayının negatif temsili bulunur ve toplama işlemi yapılır. Taşan bit varsa sonuca eklenir. 5-3 = 2 0101 + 1100 = 10001 0001 + 1 = 0010 = 2 36
İkiye Tümleme İkiye tümleme yönteminde negatif tamsayılar hesaplanırken önce pozitif sayının tümleyeni alınır, sonra sayıya 1 eklenir. 0110 = 6 1010 = -6 Çıkarma işlemi yapılırken sayının negatif temsili bulunur ve toplama işlemi yapılır. Taşan bit dikkate alınmaz. 5-3 = 2 0101 + 1101 = 10010 0010 = 2 37
38
İşaretli tamsayılar ile 2 ye tümleyen sayıların grafik gösterimi 39
Çarpma işlemi ardarda toplama, bölme işlemi ise ardarda çıkarma işlemi yapılarak gerçekleştirilir. Reel sayıları temsil etmek için farklı standartlar belirlenmiştir ancak bu standartların hepsi benzer yöntemlerle kayan noktalı sayıları (floating point numbers) temsil eder. Günümüzde kayan noktalı sayıların temsilinde kabui edilen standart IEEE-754 standartıdır (1985). Onluk bir kayan noktalı sayı ifadesi: -1.2345E 6 = -1.2345 x 10-6 Genel ifade: (-1) s x M x 2 E S: İşaret (Sign) M: Mantis (Mantissa) E: Üs (Exponent) B: Taban (Base) 40
İkilik Sistem Birimleri 1 bit: 0 veya 1 bilgisinin saklandığı en küçük bellek hücresi. 8 bit = 1 Byte 2 10 Byte = 1024 Byte = 1 KiloByte (KB) 2 20 Byte = 1024 KByte = 1 MegaByte (MB) 2 30 Byte = 1024 Mbyte = 1 GigaByte (GB) 2 40 Byte = 1024 Gbyte = 1 TeraByte (TB) 2 50 Byte = PetaByte (PB) 2 60 Byte = ExaByte (EB) 2 70 Byte = ZettaByte (ZB) 2 80 Byte = YottaByte (YB) 41
ÖRNEKLER 1. 33 10 =? 2 2. 564 8 =? 10 3. FA54 16 =? 10 4. 11101001 2 =? 8 5. FA752 16 =? 2 6. 100,10001 2 =? 10 7. 8,875 10 =? 2 8. 1043.9 sayısını ikilik, sekizlik ve onaltılık tabanlara çevirin. 9. -127 + 36 10.15 6 59 + 40 işlemlerini ikilik sayı sisteminde bire tümleme ve ikiye tümleme yöntemleriyle ayrı ayrı gerçekleştiriniz. Not: Minimum sayıda bit kullanın. 42