1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.

Bilgisayar Programlamanın Temelleri

'Bilgisayar Programlama ve Kodlama' forumunda Powers tarafından 15 Ocak 2013 tarihinde açılan konu

  1. Powers

    Powers Administrator Site Yetkilisi

    Herhangi bir dilde programlamayı öğrenmeye başlamadan önce bir bilgisayar sisteminin çalışması ve programlamanın ne demek olduğu hakkında fikir sahibi olmanız gerekir.

    Elbette daha önce uzun bir süre bilgisayarlarla uğraşmış iseniz veya küçük programlar geliştirmişseniz bu bilgilerin bir çoğuna çoktan sahipsiniz demektir. Bu gruba girenler isterlerse bu giriş kısmını doğrudan geçebilirler, fakat kendinizden çok emin değilseniz bir göz gezdirmenizde yarar var.

    İlk olarak bu yazıyı okumakta olduğunuz bilgisayara şöyle bir bakın, verdiğiniz komutları anlıyor, sizin istediğiniz şeyleri sanki akıllı bir varlıkmış gibi yerine getiriyor değil mi? İşin aslı hiçte öyle değil. Şimdi bilgisayara tekrar bakın ve onu artık dünyanın en akılsız yaratığı gibi görmeye başlayın. Çünkü gerçekten de bu bilgisayar için geçerli bir tanımdır.

    Belki bu yazıyı okuyan birçok kişi neden bilgisayarı bu kadar beceriksiz bir aletmiş gibi göstermeye çalıştığımı merak edebilir. Bunun çok geçerli bazı sebepleri var. Programlamaya yeni başlayan kişiler genellikle bilgisayarın insan gibi düşünmesini beklerler ve bu yüzden hayal kırıklığına uğrarlar. Yapmak istedikleri şeyler onlar için düşününce çok kolaydır ama nedense bunu bilgisayara bir türlü anlatamazlar. Bu sorunlarla ileride siz de karşılaşabilirsiniz.

    Yeni bir bilgisayar aldığınızda size bazı özelliklerden bahsedilir, işte şu kadar hafızası (RAM) var, işlemcisi (CPU) şöyle hızlı... Şimdi sırası ile bu özelliklerden bahsedeceğiz.

    Hafıza (RAM)

    Hafıza bilgisayarın çalışır halde iken bilgileri tuttuğu bir elektronik parçadır. Şu anda okumakta olduğunuz yazı, kullandığınız program ve birçok farklı bilgi bu hafıza içerisinde tutulmaktadır. Hafızayı yan yana dizilmiş küçük kutular şeklinde düşünebilirsiniz. Bu kutular içine hatırlanmak istenen sayılar, harfler yazılabilir.

    Bunu daha iyi anlayabilmek için bir abaküsü düşünün. (Abaküs, genellikle ilkokul 1.sınıfta kullanılan, boncuk ve teller ile yapılmış, sayıları toplamak için kullanılan bir alettir.) Bir an için onu toplama yapmak yerine sayıları unutmamak için kullanalım. Mesela, 723456 sayısını abaküs üzerine nasıl yazabileceğinizi biliyorsunuz. Bu sayıyı burada oluşturduktan birkaç gün sonra tekrar bakarsanız sayıyı geri okuyabilirsiniz. Abaküsün her bir teline 1 ile 10 arasında bir sayıyı yazabilirsiniz. İşte hafıza abaküs telleri gibi bazı kutucuklardan oluşur ve bu kutucuklar abaküs gibi sayılar tutarlar. Bu kutulardan her birine BYTE denir. Abaküsten farklı olarak bu BYTE kutuları 0 ila 255 arasında, yani 256 farklı değer tutabilir.

    Aldığınız makinada örneğin 16 MB hafıza olduğu söylendi. Burada MB, "Mega BYTE" kelimelerinin ilk harfleridir. "1 Mega BYTE" yaklaşık olarak 1 Milyon BYTE demektir. Yani bu durumu abaküsün 1 milyon teli olması gibi düşünebilirsiniz. Demek ki makinamızda 16 x 1 Milyon = 16 Milyon Byte büyüklüğünde hafıza varmış.

    Hafızanın kutucuklardan oluştuğunu söylemiştik. Fakat bu kutucuklar da daha küçük parçacıklardan, "BIT" lerden oluşuyor. BIT'i de abaküsün tellerine benzetebiliriz. Fakat BIT'lere yalnızca 0 ve 1, diğer bir deyişle iki farklı değer yazılabilir. Bu 0 ve 1'ler elektronik olarak bir telde elektrik yok veya var olarak karşılanır.

    Bir BYTE'ın BIT'ler ile nasıl oluşturulduğunu anlamak için çok az olasılık hesaplarını bilmek gerekir. Bir parayı attığımızda ya YAZI, ya da TURA gelir. YAZI gelmesini BIT'in 0 olması gibi, TURA gelmesini de BIT'in bir değeri alması gibi kabul edelim. İki kere parayı attığımızda oluşabilecek durumları aşağıya yazalım.

    1.ATIŞ

    2.ATIŞ

    SONUÇ

    Tura

    Tura

    TT

    Tura

    Yazı

    TY

    Yazı

    Tura

    TY

    Yazı

    Yazı

    YY


    Yani şu 4 durumdan biri söz konusu : TT, TY, YT, YY. Bunlardan başka bir durum olması imkansız. (Para dik gelmedikçe!) Üç kez atış için durumları yazalım : TTT, TTY, TYT, TYY, YTT, YTY, YYT, YYY : Toplam 8 Dört kez atış için yazmaya gerek kalmadan 16 farklı, 5 kez için 32 farklı durum söz konusudur. Bu işlemin kolay bir hesaplama yolu var. Bu atışların herbiri birbirinden bağımsız. Bunun için her olayın kaç farklı sonuç verebileceğini hesaplayıp bunları çarpmalıyız.

    Atış Sayısı

    Hesaplama Yöntemi

    Farklı Sonuç Sayısı

    5

    2x2x2x2x2

    32

    6

    2x2x2x2x2x2

    64

    7

    2x2x2x2x2x2x2

    128

    8

    2x2x2x2x2x2x2x2

    256


    Tablodan görebileceğiniz gibi 8 atışta 256 farklı sonuç ortaya çıkabiliyor. Bu da bir BYTE'ın tutabileceği maksimum değerdir. O yüzden 1 BYTE = 8 BIT 'tir.

    İkilik düzeni bilenler için BYTE büyüklüğünü ikilik düzendeki 8 basamaklı bir sayı olarak tanımlayarak açıklayabiliriz.

    Mesela 177 sayısını 2'lik düzende yazalım.

    177 = 1 x 128 + 0 x 64 + 1 x 32 + 1 x 16 + 0 x 8 + 0 x 4 + 0 x 2 + 1 x 1

    177 = 1 0 1 1 0 0 0 1


    İşte bir BYTE'lık bir sayının BIT yapısı.

    BIT'leri 10'luk düzendeki bir sayının basamakları gibi de düşünebilirsiniz. Fakat bu basamaklar 10'luk düzendeki gibi 0..9 arasındaki 10 değer yerine sadece 2 değer (0 ve 1) alabiliyor.

    BIT özellikle permütasyon, olasılık ve sayı düzenleri gibi konuları bilmeyen kişiler için zor anlaşılabilir. Fakat eğer daha ileri gitmek istiyorsanız bu konuyu olasılık hesapları dahil tam anlamıyla bilmeniz gerekiyor. Bu yüzden bunları tam manasıyla anlamadıysanız tekrarlamanızı tavsiye ederim.

    "Kilo", "Mega", "Giga" ve "Tera" Kavramları

    Daha önce MEGABYTE kavramını gördük. Bu sebepten yukarıda sıraladığım büyüklükleri kolayca anlayabileceğinizi sanıyorum.

    KILOBYTE : 1024 BYTE manasındadır.

    MEGABYTE : Genellikle 1000 KB, yani 1024000 BYTE olarak kabul görür, ama az da olsa farklı

    tanımları vardır. Disk üreticileri ürünlerinin kapasitesini yüksek göstermek için 1 MB = 1,000,000 BYTE diyebilir. Bu şekilde örnek olarak 800 MB'lık bir harddisk etiketinde hiçte yalan sayılamayacak şekilde 815 MB yazılabilir.Bazı yazılım üreticileri ise programlarının az yer kapladığını göstermek için 1 MB = 1024 x 1024 = 1048576 BYTE şeklinde kabul edebilir. Onlar ise örneğin 80 MB yer kaplayan programlarını bu sayede 76 MB kaplar gibi gösterebilirler. Ama siz yine de birinci tanıma güvenin!

    GIGABYTE : İstisnasız olarak 1000 MB olarak kabul edilir. Fakat byte olarak büyüklüğü MEGABYTE tanımına bağlı olduğundan bunda da kargaşa vardır.

    TERABYTE : 1000 GB'dır. Aynı sorunlar bunun için de geçerli.

    Bu kısma kadar kafanızı karıştırmamak amacıyla vermediğim bir tanımı vermem gerekiyor. RAM aslında hafıza demek değildir. Hafıza kelimesinin karşılığı Memory'dir. RAM ise Random Access Memory - Rastgele Erişilebilir Hafıza demektir. Bunu bildiğimiz rastgele ile karıştırmayın. Buradaki "rastgele" bu hafıza tipinin istenen kutusuna (bundan sonra BYTE olarak yazacağız.) herhangi bir an erişilebildiğini belirtmek amacıyla konulmuştur.

    RAM ne yazık ki büyük bir soruna sahip. Bilgisayarınız kapandığında içinde ne var ne yok herşey gidiyor. Çünkü tamamen elektronik tabanlı ve elektrik ile beslenmeyince bilgileri tutamıyor. Bu yüzden programlarınızı, yazılarınızı her seferinde tekrar hazırlamak zorundasınız :) Hayır! Tabi ki böyle bir şey söz konusu değil. Bilgilerinizi, bilgisayarınız kapansa da saklı tutabilen bir parça var! Bu parçaya HARDDISK denilir.

    HARDDISK (HDD)

    Türkçeye bazıları tarafından KATI veya TIKIZ TEKER olarak çevrilen bu donanıma gerçekten ikisi de yakışmıyor. O yüzden onu harddisk olarak tanımak daha iyi. Harddisk'ler çok istisnai durumlar dışında makinanızdaki RAM'e oranla yüzlerce kat daha fazla bilgi tutabilecek kapasiteye sahiptir. Şu an dev bilgisayarlar dışında gigabyte seviyesinde RAM hayal gibi düşünülürken 10 GB'ın üstündeki harddiskler bazı sektörlerde çalışan kişiler için az gelmeye başlamıştır.

    Harddisk'ler hafıza gibi programları çalıştırmak için kullanılmazlar. (sanılanın aksine Windows gibi işletim sistemlerinde, harddiskler hafıza olarak değil takas aracı olarak kullanılır ve programlar hiçbir zaman üzerinde çalıştırılamaz) Verilerinizi saklamak onların birincil ve en önemli görevleridir.

    Peki neden böyle bir ayrım? Neden yalnızca harddiskler programları çalıştırmak ve verileri toplamak için kullanılmıyor? RAM gibi sadece elektrik varken verileri tutabilen parçalara ne ihtiyaç vardı?

    Bütün bu soruların cevabını tek bir kelime veriyor : "HIZ". Harddiskler mekanik bir sistem ile plak (kullanmamış olsanız bile eski filmlerde rastlamışsınızdır) gibi çalışan aletlerdir. Elektronik parçalar neredeyse ışık hızında çalışırken mekanik aletler onlara oranla bir otomobil hızında çalışıyorlar.

    Küçük bir karşılaştırma yapalım. Mesela RAM ve HDD'e aynı anda şu komutu verdiniz : "Bana 1843423'üncü kutucuğundaki BYTE'ın kaç olduğunu söyle". En hızlı harddisk bu komutu 9 milisaniyede yerine getirirken kaliteli bir RAM (SDRAM) 9 nanosaniyede bu işlemi yapabilir. Bu ikisi arasındaki 1,000,000 katlık bir fark demektir.

    Aslında bunu söylerken hız farkının gerçek hayatta bu kadar fazla olmadığını belirtelim. Sıralı (ard arda dizilmiş, belli bir noktaya konumlanma gerektirmeyen) verileri okurken aradaki hız farkı 50 kat seviyesine düşebilir, fakat yine de bu az bir fark değildir.

    Buraya kadar gelmişken bir parantez açmakta yarar var. Bu döküman içerisinde şu ana kadar RAM ve HDD hakkında bazı bilgiler aldınız, fakat bunlar sizin bu konular hakkında yeterince bilgi sahibi olduğunuz anlamına gelmiyor. Bu ve bundan sonra ele alacağımız parçalarla ilgili bilmeniz gereken aslında daha birçok şey var, fakat bu dökümanda asıl amaç programlamaya bir giriş yapmak olduğundan dolayı sadece konu ile ilgili kısımlarına değinmeye çalışıyorum. Parçaların teker teker özellikleri, nasıl seçilmeleri gerektiği, hızları arasındaki farklar... gibi konulardaki bilgileri mümkün olursa sitenin diğer bölümlerinde ayrı ayrı açıklamaya çalışacağım. Bir programcıyanlış yollara sapmamak için en iyi bilgisayar satıcısı veya teknisyenden daha iyi donanım bilgisine sahip olmalıdır.

    Neyse, bu kadar büyük bir aradan sonra tekrar konumuza dönelim. Tamam, anladık, bilgileri bu aletler saklıyor da, bu bilgiler işlenmedikten, toplanıp çıkarılmadıktan, ekranıma sonuç olarak getirilmedikten sonra ne işe yarar? Hem bu bilgileri adı geçen yerlere yazmak için birşeylere ihtiyacım var... Mesela abaküse sayıları yazarken ve işlem yaparken beynimi ve ellerimi kullanıyorum değil mi?

    İşte bu verileri istenilen yerlere yerleştirmemize, daha da önemlisi onlar üzerinde gerçekleştirilmesi gereken hesapları yapmamıza yarayan, bilgisayarın en önemli ve karmaşık parçası olarak kabul edilebilecek beyne ise CPU denir. Şimdi biraz da ondan bahsedelim.

    CPU (Central Processing Unit - Merkezi İşlem Ünitesi)

    Sonunda bilgisayarın bir programcı için en önemli parçasına geldik. CPU, bilgisayarın tüm işlemlerini denetleyen, olmadan bilgisayar diye birşey olmayacak yegane parçadır. CPU, kendisine verilen komut serilerine bağlı olarak istenilen yerdeki bilgiyi alıp üzerinde istediğiniz işlemi gerçekleştirdikten sonra emrettiğiniz yere sonucu gönderen bir yapay zeka olarak değerlendirilebilir.

    Sizin programcı olarak göreviniz yukarıdan da anlaşılacağı gibi hangi bilginin nereden, nasıl alınıp, hangi işlemlerden geçirilip nereye konulacağını belirlemek. Aslında bazen çok karmaşık görünen bilgisayarın en temel işlevi budur.

    Mesela, harddisk'te yazılı bulunan bir insanın adresini, buradan daha hızlı olan RAM'e alıp üzerinde gerekli düzenlemeleri yaptıktan sonra, kullanıcıya sonucu, yazıcıdan veya ekrandan, bir adres etiketi şeklinde çıkartmak.

    Kullanıcı tarafından girilen iki sayıyı alıp toplama işlemine sokmak ve sonucu ekrandan kullanıcıya bildirmek.

    Girilen bir telefon numarasının ilk olarak mantıklı olup olmadığını kontrol etmek, sonra bunu ilgili parçaya yönlendirerek istenen telefonun aranmasını sağlamak, karşı taraf cevap vermişse bağlantıyı başlatmak...

    Bunlar gibi örnekler milyonlarca olabilir. Buradaki asıl amaç bu bilgisayar parçaları arasındaki bilgi transferi, ara işlemler ve sonucun son parçaya iletilmesi (ekran, yazıcı vs.) işlemlerinin sizin tarafınızdan CPU'ya yaptırıldığının anlaşılmasıdır. İleride program yazmaya başladığınızda bilgisayar programlamanın gerçekten de sadece bundan ibaret olduğunu göreceksiniz.

    Bir örnek daha verelim. Programcıyı bir yemek kitabının yazarı, programı kitabındaki yemek tariflerinden biri, işlemciyi ise yemeği yapan kişi olarak tarif edebiliriz. İşlemci (aşçı) programdaki (tarifteki) işlemleri yerine getirmek için birtakım girdilere ihtiyaç duyar (tarifte bulunan malzemeler), bunları programa (tarife) göre donanımları (bıçak, ocak vs.) yardımıyla işleyerek çıktıyı bir başka donanımdan (servis tabağı) verir. Dediğimiz gibi tarifler ve bunları yazan kişiler olmadan aşçı hiçbirşey yapamaz.

    Bu örneği vermişken, anlatımı kolaylaştırdığından dolayı bir programlama dilinin ne demek olduğu konusunda da bilgi vermek istiyorum. Programlama dili ile bildiğimiz konuşma dili arasında yakından alaka vardır. Türkçe bilen bir aşçıya, Türkçe tarif vermelisiniz. Ama eğer Aşçı ile aynı dili konuşmanız sizin için zorsa (örneğin Japonya'dan gelen bir yemek uzmanı iseniz) bir çevirmen yardımı ile Türk aşçımıza yemek tariflerinizi öğretebilirsiniz. İşte her işlemcinin, ana dili olarak da tabir edebileceğimiz bir makina dili vardır. Fakat bu dil başlangıç düzeyindeki bir programcı için en az Çince kadar zordur.

    Bunun yerine programlamayı daha kolay hale getirmek için Pascal, C, Fortran gibi özel programlama dilleri geliştirilmiştir. Bu dillerde yazdığınız programlar, dillerin kendilerine has derleyicileri (compiler, aynen bir çevirmen gibi) sayesinde makina diline çevrilerek bilgisayarın anlayacağı dile dönüştürülmüş olur.

    Artık programlama yaparken gereken en önemli parçaları listeledik, fakat iş bunlarla bitmiyor tabi ki. Diğer donanımlar konusunda da bilgi sahibi olmak gerekir. Mesela okuduğunuz yazıyı kaydırırken kullandığınız fare (mouse), bu yazıyı elektronik dünyaya girerken kullandığım, sizin buranın adresini bilgisayara bildirmekte kullandığınız klavye (keyboard), bu yazıyı dikkatle kendisine bakarak okuduğunuz ve belki de gözünüzü ağrıtan ekran (monitor) ve daha birçoklarından bahsetmemiz gerekiyor...

    Anakart (Motherboard, Mainboard)

    CPU'nun bilgisayarın çeşitli birimleri arasında bilgi transferini düzenlediğini belirtmiştik. Elbette bu transferin gerçekleşebilmesi için RAM, HDD gibi donanımlar ile arasında fiziksel bir bağlantı olması gerekir. Bunu sağlayan ve bilgisayarınızın kasasının içindeki tüm parçaların bağlı bulunduğu (işlemci dahil) diğerlerine oranla büyük karta anakart denir. Bazı standart aygıtlar anakart üzerinde doğrudan montelidir, bazıları çeşitli standartlara uygun soketler aracılığıyla monte edilirler (PCI, ISA, VESA...) Bazıları ise Harddisk gibi anakart üzerine doğrudan monte edilmemelerine rağmen anakart üzerindeki veya ayrı bulunan bir kontrol kartı ve aralarındaki kablo aracılığı ile dolaylı da olsa anakarta bağlıdır.

    Programlama açısından anakart diğerlerine oranla daha az kullanılsa da, bir bilgisayarın çalışma prensibini anlama açısından önemlidir. Anakart üzerindeki bütün kartlar, hafıza ve işlemci BUS adı verilen bir ortak hattı kullanırlar. Bir program örnek olarak hafızanın belli bir yerine istediği bilgiyi yazmak için öncelikle BUS'ın ADDRESS BUS adı verilen alt kısmına hangi bölgeye veri göndermek istediğini belirten bir sinyal gönderir. Ardından yazılmasını istediği veriyi DATA BUS kısmına gönderir.

    Bu sistemi anlamak, henüz kart, adres, veri gibi tanımları öğrenmediğimizden, zor gelebilir. Bunları genellikle düşük seviyeli (makinanın donanımına direk ulaşan) programlar yazmak istediğinizde kullanmanız gerekeceğinden şimdilik sadece şöyle bir göz gezdirmeniz yeterli. İleride bunlar ile ilgili çok daha ayrıntılı bilgiler vereceğiz. (sistem programlama ile ilgili bölümlerde)

    Ekran Kartı (Video Card)

    Yazıyı okumakta olduğunuz ekranı kontrol eden bir donanım birimidir. Program yazarken, özellikle DOS altında grafik uygulamaları geliştirirken, hele bir de hızlı animasyon gibi özel istekleriniz varsa en çok bu parça ile haşır neşir olacaksınız demektir.

    Ekran kartı anakart üzerine doğrudan entegre bir halde bulunabilse de genellikle ayrı olarak alınan bir parçadır. Yakın bir tarihe kadar ekran kartlarının CGA, MGA, Hercules, VGA gibi sayılı standartları vardı ve bu sebeple programlanmaları oldukça kolaydı. Standartların hemen hepsini IBM belirliyordu. Daha sonra Super VGA denilen ekran kartları ortaya çıktılar ve bunlar daha önceki kartlardan çok daha hızlı ve kaliteli görüntüler vermeye başladılar. Bu kartlar kullanıcıların birinci tercihi haline geldi ve birçok şirket bu işin cazibesine kapılıp kendi kartlarını üretmeye başladı. Genel bir standart olmadığından tüm kartların programlama şekli farklıydı ve onların hepsini birden programlarınızda kullanmak için tüm iç yapılarını bilmenin yanı sıra, hepsi için ayrı ayrı rutinler yazmak zorundaydınız.

    Bu sırada Video Electronics Standards Association - VESA isimli örgüt birçok üreticinin desteğini alarak bir standart yayınladı ve yeni çıkan hemen hemen bütün ekran kartları bu standarda uydular. Bu standarda uyan kartlara VESA uyumlu kart denildi. Buradaki VESA'yı anakart konusunda anlattığımız BUS standartlarından VESA ile karıştırmayın. VESA kart, VESA BUS arabirimini kullanan ve ona uyan kart demektir. VESA uyumlu ekran kartı ise VESA'nın belirlediği standartlara uyumlu olan ekran kartı demektir.

    Neyse, DOS altında program yazarken VESA'yı kullanmanız artık kaçınılmaz. Fakat Windows işletim sistemi tüm ekran kartları ile çalışabilen sürücülere sahip ve onun için program yazarken kullandığınız ekran kartınız ne olursa olsun programınız her zaman çalışacaktır.

    Gelelim EKRAN MODLARINA... Ekran kartları farklı farklı modlarda çalışabilirler, bunlardan en önemlisi TEXT (YAZI) modudur. Bu mod bilgisayarınız ilk açıldığında geçtiği moddur. Ekran kartı text modunda iken (en çok kullanılan 80x25 modunda) ekran 80'e 25'lik bir matris gibi kullanılır. Matrisin elemanlarının her biri bir karakter (A..Z, a..z, 1..9, /, *, !, ....) olabilir. Bu modda ekrandaki tüm bilgi karakterler kullanılarak oluşturuğundan bazı özel yöntemler haricinde grafik çizmek imkansızdır. Ekranın her bir karakteri 16 farklı arka plan rengine ve 16 farklı yazı rengine sahip olabilir. İlk açılışta 7'den büyük arka plan renkleri karakterleri yanıp söner hale getirir. Ama özel bir ayarla bunlar açık arka plan renkleri olarak değiştirilebilir.

    Yandaki pencerenin iç kısmı text moduna bir örnek olarak verilebilir. Text modundaki bir ekran bir kareli deftere benzer. Örneğin yatay 80 kareye, dikey olarak ise 25 kare gibi. Bu karelerin herhangi birinin içine bir karakter yazılabilir. Bu yukarıda söylediğimiz harfler, sayılar ve noktalama işaretleri olabileceği gibi daha önceden ASCII (Amerikan Standartları vs.) tarafından belirlenmiş 256 ayrı karakterden biri de olabilir. Sizin ekranda "A" olarak gördüğünüz harf aslında ASCII tarafından belirlenmiş 65 numaralı karakterdir. Bir bilgisayarsiz klavyeden A harfine bastığınızda, ekrana A harfini yazması gerektiğini bilmez. Klavye, bilgisayara kodu 65 olan karaktere basıldığını bildirir, çalışan program basılan karakteri ekranda görüntülemek isterse bu karakteri ekran kartının hafızasına, doğrudan veya dolaylı yollardan gönderir. Ekran kartı kendi içinde tanımlanmış olan font tablosundan 65 nolu karakterin ekrana nasıl çizilmesi gerektiğini öğrenir ve buna göre ekrana sonuçta bir A karakteri gösterilir. Fakat bir program araya girip ekran kartının font tablosunda bir değişiklik yaparsa yazdığınız bütün A harfleri örneğin C olarak görülebilir. Normalde standart ASCII tablosunda Türkçe, "ı","ş","ğ" gibi harfler tanımlanmamıştır, bu yüzden türkçe font tablosu yüklenmemiş bir bilgisayarda daha önceden türkçe yüklenmiş bir bilgisayarda hazırladığınız yazıdaki bu harfler alakasız görünebilir.

    Diğer modların tümü ekranın noktalardan (pixel) oluşmasıyla meydana getirilir. Mesela 320x200 adı verilen modda ekranda yatay olarak 320, dikey 200 nokta bulunur. Bu noktaların her biri ekran moduna göre farklı farklı renkler alabilir. Mesela 320x200x256 modunda 256 farklı renk kullanılabilir. Bu renk sayıları 2, 16, 256, 65536, 16 Milyon olabilir. Bunlar sırasıyla 1, 4, 8, 16 ve 24 bitlik ekran modlarına karşılık gelir. Örneğin 16 bitlik bir ekran modunda bir pixel'in renk bilgisinin saklanması için 16 bit = 2 Byte hafızaya ihtiyaç vardır. Bu bilgi ekran kartının hafızasında tutulur.

    320x200'de 256 renkli yani 8 bitlik bir modda çalıştığımızı varsayalım. Çalıştığımız ekranın hafızada saklanması için gerekli yeri hesaplayalım. Bir pixel'in saklanması için 8 bit = 1 Byte gerekiyor. 320 yatay, 200 dikey pixel olduğuna göre 320x200=64000 pixel var demekki. 64000 pixel'in her biri için 1 BYTE gerektiğine göre 64000 Byte bu işlem için yeterli.

    800x600x16bit modda hesaplayalım. 800x600 = 480000 x 2 (16 bit) = 960000, bu da yaklaşık olarak 1 MB eder. Demekki 800x600 ekran modunda 16 bit, yani 65536 farklı renk görmek istiyorsak ekran kartımızın 1 MB olması gerekiyor.

    Kendi grafik programlarınızı yazmaya başladığınızda bu konu ile sıkça karşılaşacaksınız. Ekran kartları ve onların kullanımıyla ilgili birçok örnek göreceğiz.
     
    Tags:

Bu Sayfayı Paylaş

  1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.
  1. Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha Fazla Bilgi.
Yükleniyor...