Anlamak (5)

ki manyetik maddeyi kullanmasına bağlıdır. Bilgisayar disketiyle karşılaştırma konusunda klasik örneğimiz olan müzik plaklarını (ama yeni teknoloji ürünü CD'leri değil, atalarımızdan kalma koca siyah şeyleri) düşünün... Onlar da fabrikadan boş plak olarak çıktıklarında pırıl pırıl bir yüzeye sahiptirler ve ancak özel baskı yöntemleriyle üzerlerine müzik “kazınınca” hepimizin gördüğü çizgiler ortaya çıkar. Disketlerde de durum buna benzer. Ancak bir farkla, disketlerin üzerine fiziksel olarak kazınan bir şey yoktur. Tüm işlemler manyetik partiküllerin etkilenmesi sonucu gerçekleşir. Ayrıca, plaktaki izler dış kenarda başlayan ve içeri girdikçe küçülen bir spiral oluştururlar. Diskette ise iç içe girmiş manyetik halkalar vardır. İşte bu halkaların her biri TRACK adını alır. Bir diskette kaç TRACK olacağı, daha önce de belirttiğimiz gibi, tamamen onu kullanan disket sürücüsüne bağlıdır. O disket sürücüsünün okuma/yazma kafasının ne kadar hassas olduğu, birbirine ne kadar yakınlıktaki TRACK'ların bilgilerini ayırt edebileceği, TRACK sayısını belirler. Disketin merkezine en uzak olan en dıştaki TRACK'ın en uzun, merkeze en yakın en içteki TRACK'ın da en kısa TRACK olacağı aşikâr. Buna bağlı olarak da, her TRACK'ın alabileceği bilgi miktarı değişecektir. Ancak gene de, en kısa TRACK'ın alabileceği bilgi miktarı bile oldukça fazladır. Burada karşımıza bir optimizasyon sorunu çıkıyor. Belki biliyorsunuzdur, bilgisayarlar, kayıt araçları ne olursa olsun, bilgiyi kaydedilmek üzere belli uzunlukta bilgi kümeleri haline gönderir, tekrar geri okuma işleminde de aynı uzunluktaki bilgi kümeleri olarak okur. Bir başka deyişle, hiçbir kayıt aracına birer birer byte gönderilmez, daha fazla sayıda byte BLOK'lar haline getirilip gönderilir. Bu blokların uzunluğu 128, 256, 1024, 2048 veya 4096 byte olabilir. Bu, bilgisayarınızın büyüklüğüne ve kayıt cihazınızın kapasitesine bağlıdır. Diyelim ki, kayıt cihazınız 256 byte'lık bloklar halinde bilgi bekliyor ve siz sadece 200 byte (hatta dilerseniz 1 byte deyin) kaydedeceksiniz. Bu durumda geriye kalan 56 byte (ya da 255 byte) boşa gitmiş olacaktır. Bir sonra göndereceğiniz bilgi bloku eski bilgi blokunun kaldığı yerden değil, yeni bir fiziksel blok başlangıcından itibaren kaydedilecektir. Bu nedenle kayıt aracınızda mutlaka hafızanın boşa kullanılması olayı ortaya çıkacaktır. Önemli olan, o sistemin özelliklerini, sistemde kullanılan programların uzunluklarını ve kayıt aracının kapasitesini göz önüne alarak, uzun vadede en verimli sonucu verecek blok uzunluğu saptamaktır. Bu, bilgisayar mühendislerinin ve sistem dizayncılarının işi. 1541'de bu uzunluk 256 byte olarak tanımlanmıştır. Tabii bunda COMMODORE 64'ün 8 bit'lik bir alet olmasının da önemi var. 256 byte'lık bir bilgi yığınını 8 bit'lik indeks yazmaçları ile makine dilinde işleme tâbi tutmak çok daha kolay. Dediğimiz gibi, en kısa TRACK bile 256 byte'dan çok çok daha fazla bilgi alabilir. Bu durumda her bir TRACK'ı 256'şar byte'lık SECTOR'lere bölmenin zamanı geldi demektir. Neden BLOK adı dururken SECTOR adını kullanmaya başladık? BLOK ile, disketin üzerindeki herhangi bir 256 byte'lık bilgi kümesini adlandırıyoruz. Ancak, birazdan da göreceğiniz gibi, her bir TRACK'ın içindeki SECTOR'lere birer sıra numarası vererek disketin üzerindeki BELİRLİ bir bloku adreslememiz mümkün olacak. Bu sırada kavram kargaşasına düşmemek için, BLOK ve SECTOR ayırımı yapıyoruz. 1541, disketleri toplam 35 TRACK olarak kullanır. Bunlar, 01, 02,... 35 olarak numaralandırılmıştır. En dışta bulunan en büyük çaplı TRACK'e 1 numarası verilmişken, en içteki en kısa TRACK 35 numarasını almıştır. Şimdi de bu TRACK'ları SECTOR'lere ayıralım. 1-17 arası numaralandırılmış TRACK'lar en uzunları oldukları için, en fazla sayıdaki SECTOR bu TRACK'larda yer alır. Tam 21 SECTOR. Bu SECTOR'ler de 0-20 arası sayılarla numaralandırılmıştır. Sonra 18-24 numaralı TRACK'lar gelir. Bunların da her birinde 19 SECTOR vardır ve 0-18 arası numaralandırılmışlardır. 25-30 numaralı TRACK'lar ise 0-17 arası numaralandırılan 18'er SECTOR'e sahiptir. En içteki en kısa TRACK'lar olan 31-35 arası TRACK'lar ise en az sayıda SECTOR'e sahiptir. 0-16 arası numaralandırılan 17'şer SECTOR. Eğer bunları çarpma/toplama ile hesaplarsak, 683 adet BLOK olduğunu görürüz. Ancak bunların 19 tanesi directory ile ilgili bilgilerin saklanması nedeni ile kullanıcıya kapalıdır. Dolayısıyla bize 664 blok kalmakta. Her bir bloktaki 256 byte'ın ikisi sistem tarafından kullanıldığı için bize 254 byte kalır. Hesaplarsak, 254*664 = 168656 byte'lık, bir başka deyişle, 168656 / 1024 = 164.70 kilo byte'lık bilgi saklayacağımız bir alanımız var demektir. Daha önce bahsettiğimiz blokların son kısımlarının boş kalması sonucunda kaybedeceğimiz alanı da hesaba katarsak, aktif olarak kullandığımız yaklaşık 155-160 Kbyte'lık bir hafıza ortaya çıkıyor. Bu, bilgisayarımızın hafızasını 2.5 kere doldurmaya yeter. Görüldüğü gibi, disket üzerindeki bir BLOK'u hangi TRACK üzerinde olduğu ve bu TRACK üzerindeki kaç numaralı SECTOR olduğunu belirterek adresleyebiliriz. Bu bize biraz aşağıda da göreceğimiz bazı kolaylıklar sağlayacak. Tüm bu bilgileri bir tablo halinde görelim:

TRACK no SECTOR no 01-17 1 00-20 18-24 25-30 1 00-17 31-35

Birazdan her bir SECTOR'ün byte düzeyinde yapısına ineceğiz ve kimi SECTOR'lerde her bir byte'ın ayrı bir anlamı olduğunu göreceğiz. Ancak bunu yaparken Diskmon adlı programımızdan faydalanmamız yerinde olacak. Bu program ile disketin üzerindeki herhangi bir bloku TRACK/SECTOR adresini vererek okumayı, ekranda görmeyi, değişiklik yapmayı, o bloku diskete geri yazmayı ve yazımızın ilerleyen kısımlarında göreceğimiz başkaca işlemleri yapmayı becereceğiz. Önce MDE programını kullanarak DISKMON programını bilgisayara girin ve diskete kaydedin. Bu arada eğer yeni okuyucularımız varsa ve MDE'nin ne olduğunu bilmiyorlarsa, bu arkadaşların dergimizin birinci ve ikinci sayılarını TELETEKNİK'ten isteyip bir göz atmalarını tavsiye ederiz. MDE (Makine Dili Editörü), makine dilinde yazılmış programları hatasız ve kolayca bilgisayara girmenizi sağlar. Tıpkı bunun gibi, bir de BDE (Basic Dili Editörü) programımız var. Bununla da, BASIC dökümlerimizin yanında bulunan sayılar yardımıyla, dergiden yazdığınız programın SYNTAX ERROR vermeden çalışmasını garantileyebilirsiniz. Eğer dilerseniz, her iki programı da disket veya kasette TELETEKNİK'ten isteyebilirsiniz. Biz gene 1541 konumuza dönelim. DISKMON'u yazıp disket üzerinde hazır ettikten sonra yükleyip RUN komutunu verin. Ekranın değiştiğini göreceksiniz. Göreceğiniz nokta ve yanında yanıp sönen cursor, bilgisayarın sizden komut beklediğini göstermektedir. Buraya gireceğiniz komutlar ile disket keşfimize devam edebiliriz. Önce ya boş bir disket bulun ya da dolu bir disketin kenarını kapatarak yazılmaya karşı koruyun. DISK-

MON ile yapacağınız denemelerde hata yapma olasılığımız her zaman vardır ve eğer hata sonucu disketin üzerindeki bir SECTOR'ün içeriğini bozarsanız, birkaç programınızı düzeltilemez şekilde bozmuş olabilirsiniz. Disketin kenarını kapatmamızın sebebi bu. Dilerseniz, artık kullanmadığınız bir disketi formatlayıp deneme disketi olarak da kullanabilirsiniz. İsterseniz, bu işlemi DISKMON komutları ile nasıl yapacağımızı görelim. Önce disketi yerine takalım ve noktanın yanına $ karakterini yazıp RETURN tuşuna basalım. Ekrana o disketin directory'sinin yazıldığını göreceksiniz. Eğer diskette 20'den fazla dosya adı varsa, okumanızın kolaylaşması için bilgisayar ilk 20 dosya adından sonra durup sizin bir tuşa basmanızı bekleyecektir. Eğer

RUN/STOP tuşuna basarsanız, directory okunması duracaktır. Başka bir tuşa bastığınızda ise, bir sonraki 20 dosya adı listelenecektir. Diyelim ki bu disketi formatlayıp, deneme disketi olarak kullanmak istediniz. Bu durumda ekrandaki noktanın yanına yazacağınız komut şu olacaktır:

*ON:disket

Bir önceki bölümde de gördüğümüz disket formatlama komutunu OPEN, CLOSE gibi komutlara gerek kalmadan, sadece komutun başına O ekleyerek kullandık. Bu, diğer disket komutları için de geçerli. Diskete göndereceğiniz, Scratch, Rename, Validate, Copy vs. komutlarının hepsini başlarına O karakterini eklemek şartı ile DISKMON içerisinden kullanabilirsiniz. Komutların formatları, son iki bölümümüzde anlattığımız gibidir. Tek dikkat edeceğiniz, O karakterinden sonra boşluk olmaması. Şimdi deneme disketimiz şu veya bu şekilde hazır ise, DISKMON ile disketimize ilk saldırıyı yapalım: Bir blok okuma. Birazdan ayrıntısına gireceğimiz directory, disketimizde 18. TRACK'ın 0. SECTOR'ünde başlar ve 19 blok kaplar. İster misiniz, bu zincirin ilk bloğunda neler olduğuna bir göz atalım? Hemen şu komutu verelim:

12 00

Yani READ (oku) komutu. Yanında gelen iki sayı ise sırasıyla TRACK ve SECTOR numaralarını veriyor. Peki TRACK yerine neden 18 değil de 12 yazdık? Bu disket monitörümüz (DISKMON) sayıları onluk sistemde değil de onaltılık sistemde kabul ediyor. Bu sistemden defalarca söz ettik. Eğer hâlâ bilmiyorsanız, Ayhan Kalaylıoğlu'nun Makine Diline Merhaba yazısına ve benim bazı diğer yazılarıma bir göz atın. Böylece 12'nin, 1*16+2=18 sayısına tekabül ettiğini göreceksiniz. Eğer disketle bu derece yakından ilgilenecek aşamaya gelmişseniz, onaltılık (hexadecimal) sistemi sular seller gibi bilmeniz gerekmekte... Yukarıdaki komutu verdikten sonra disketin kırmızı ışığının kısa bir süre yanıp söndüğünü göreceksiniz. Hemen arkasından da şu komutu verin:

s4

.M

Ekranda bir sürü sayının geçtiğini ve ekranın sağ tarafında da sol tarafta yer alan sayıların karakter karşılıklarının yer aldığını göreceksiniz (Eğer byte'ın değerine karşılık düşen bir harf, rakam veya işaret yok ise, nokta basılacaktır). İşte bu komut (Memory, hafıza), R ile disketten bilgisayara okuduğunuz blok içindeki 256 byte'lık bilgiyi ekrana çıkarır. Gördüğünüz gibi, blokun ortalarında bir yerde, formatlarken verdiğiniz disket adı ve ID'si var. Neyse, buna birazdan geri döneceğiz. Peki, şimdi bir sürprize ne dersiniz? Eğer M komutunu verdikten sonra başka bir şey yapmadıysanız, cursor ekranın en alt satırında yanıp

iskete

yazılan bilgilerin üst üste yazılmaması için bir disket haritası tutulması lazım. Bunu directory yapıyor.

sönüyor olacak. Şimdi HOME tuşu ile cursor'u ekranı silmeden sol üst köşeye getirin. Şimdi de CRSR tuşu ile cursor'u ekranın üst kenarına doğru itmeye çalışın. N'oldu? Sayı listesi, aşağıya doğru kaymaya, ekranın üstünden listenin ilk satırları gelmeye başladı, di mi? Şimdi de, aynı şeyi ekranın alt kenarı ile yapın. Bu sefer listenin yukarıya kaydığını ve alt satırdan listenin geri kalan kısmının satır ekrana yazıldığını göreceksiniz. Güzel mi? Bir ufak komut daha... Hâlâ kaç numaralı TRACK/SECTOR'de olduğumuzu hatırlıyor musunuz? Eğer hatırlamıyorsanız, şöyle bir komutla bilgisayara sorabilirsiniz:

Show (göster) komutu, size o anda hafızada bulunan 256 byte'lık bilginin en son hangi bloktan okunduğunu belirtecektir. Bilgisayarın bu bilgiyi saklamasının bir iyi tarafı da,

R komutunu herhangi bir blok adresi belirtmeden de kullanabilmeniz. Eğer aşağıdaki komutu kullanırsanız, bilgisayar en son okuduğu bloku bir daha okuyacaktır:

.R

Böylece, yazımızın devamında göreceğimiz işlemlerle hafızayı bozarsak tekrar düzeltme imkânımız ortaya çıkıyor. DISKMON'u şimdilik bir köşeye bırakıp, disket yapımıza geri dönelim. Genel kullanım açısından disket üzerindeki bloklar üçe ayrılabilir: Directory'nin 19 blokluk zincirinin önemli sistem bilgilerinin saklandığı ilk bloku, disketteki dosyaların adı, uzunluğu ve diğer bilgilerinin saklandığı geriye kalan 18 blok ve dosyaları oluşturan esas byte'ların saklandığı 664 blok. Disket üzerine herhangi bir bilgi bir dosya adı ile yazılmaya başlandığında (örneğin bir SAVE işlemi veya bir veri dosyasının OPEN ile yazılmaya başlanması), 1541'in işletim sistemi (DOS, Disk Operating System) tarafından sırasıyla şu işlemler yapılır. Önce programın adı, birazdan göreceğimiz kurallara uygun olarak directory zincirindeki ilk boş yere yazılır. Daha sonra da bilgi yazılabilecek en uygun boş blok bulunur. Ancak bir bilgi bir bloktan uzunsa, yani 254 byte'dan (256 değil, ilk iki byte 1541 tarafından kullanılıyor) daha fazla yazılacaksa ne olacak? İşte buna çözüm olarak şöyle bir yöntem geliştirilmiş. Yazılacak bilgi yığının ilk 254 byte'ı bir bloka yazılır ve bu blokun adresi TRACK/SECTOR numarası olarak directory'de bu dosyaya ayrılmış uygun yerde kaydedilir. Sonra disket üzerinde yeni bir uygun ve boş blok bulunur. Bilginin bir sonraki 254 byte'lık kısmı da bu bloka yazılır. Bu arada ilk blok ile ikinci blok arasında bir bağ kurabilmek için, ikinci blokun TRACK ve SECTOR numaraları ilk blokun ilk iki byte'ına yazılır. Şimdi neden bize blok başına 254 byte kaldığını anladınız mı? Bu işlem, üçüncü, dördüncü ve daha sonraki 254'er byte'lık kümeler halinde devam eder. Böylece o dosyanın bilgilerini içeren bir bilgi zinciri oluşur. Bu zincirin en son halkasını oluşturan blokun ilk iki byte'ı ise, arkadan gelen başka bir blok olmadığını göstermek üzere özel değerler alırlar. İlki, sıfır değerini içermektedir. İkinci byte ise, o bloktaki bilginin kaç byte'ının programın son bölümünü oluşturduğunu belirtir. Tüm bu yazılma işlemi yapılırken, üzerlerine bilgi yazılan blokların bir yöntemle korunması gereklidir. Daha sonra diskete yazılacak bilgilerin tekrar bu blokların üzerine yazılmaması lazım. İşte bunun için, directory zincirinin ilk blokunun ilk yarısında bir tür disket haritası tutulmaktadır ve bu haritada hangi blokun o anda boş, hangisinin dolu olduğu açıkça belirtilmektedir. Bu haritanın da ayrıntısına ineceğiz. Dikkatli okuyucuların hemen soracakları bir soru olsa gerek. Yukarıda “uygun ve boş” blok bulmaktan bahsettik. Acaba uygun blok da neyin nesi: Bilginin ilk 254 byte'lık kısmını diyelim ki, 01/00 numaralı (TRACK/SECTOR) bloka yazıldı. Bir sonra gelen 254 byte, 01/01'e yazılmaz. Onun yerine 01/04 tercih edilir. Eğer bu blok daha önce başka bir programın blokları tarafından kullanılmamışsa, ikinci 254 byte oraya yazılır. Peki neden? Bilginin ilk blokunu okuyup COMMODORE 64'e gönderme sırasında disket, merkezi etrafında dönmeye devam eder ve 01/01 numaralı blok okuma/yazma kafasının altından geçer gider. Sıra ikinci bloku okumaya geldiğinde ise, okuma/yazma kafasının altındaki blok 01/04 numaralı blok olacaktır. Diskete kayıt sırasında böylesine atlayarak giden blok sıralamasının en güzel örneğini directory yapısını incelerken göreceğiz. Hatta isterseniz, bu incelemeye hemen başlayalım...

Önce iki konuda anlaşalım. Bir blokta 256 byte vardı. Biz bu byte'ları numaralandırırken 0-255 arası sayılar kullanacağız. Yani bir bloktaki ilk byte sıfır numaralı, son byte da 255 numaralı olacak. Ayrıca, yazı içinde TRACK, SECTOR ve byte numaralarından bahsederken sayıları onluk sayı sistemine göre vereceğim. Ancak bunları DISKMON ile kullanırken onaltılık tabana çevirmemiz gerektiğini unutmayın. Eğer yazımızda onaltılık sistemde bir sayı vermek zorunda kalırsak, başına bir dolar işareti koyacağız. Örneğin 5 yerine $5, 65 yerine $41 örneği gibi. Anlaştıysak devam edelim. Directory dediğimiz bölüm, disketin 18 numaralı TRACK'ını tamamen kaplar. İlk bloku 18/00'dadır. İlk iki byte bir sonraki directory bloku olan 18/01'i gösterir. 18/01'de dosyalarla ilgili bilgiler başlamaktadır. Buna birazdan geleceğiz. Önce 18/00'ı inceleyelim.

DISKMON ile .R 12 00 komutunu kullanarak bu bloku hafızaya yükleyin. Sonra da M komutu ile 256 byte'ı ekrana getirin. Gerçi ilk satırlar ekranın üstünde kaybolacak ve RUN/STOP tuşu ile listeleme işlemini durdurma çabalarınız da bir sonuç vermeyecek (çünkü böyle bir olanak yok, kih kih...), ama daha önce gördüğümüz şekilde cursor'u ekranın üst kenarına doğru iterek o geçip giden satırları tekrar geri getirebilirsiniz. Ama bir başka olanağı da burada belirtelim. M komutu ile bir başlangıç ve bitiş byte numarası verebilirsiniz. Örneğin:

.M 00 OF

dediğinizde, ilk onaltı byte iki satır halinde ekrana basılacak ve listeleme duracaktır. Eğer sadece başlangıç byte numarası verir bitişi vermezseniz, bitiş olarak $FF varsayılacaktır. Önce .M 00 0F vererek ilk satırı görelim. Gerçi 04-07 arası byte'lar da satırı tamamlamak için ekrana çıkacaktır ama işimiz onlarla değil. 00 ve 01 numaralı byte'lar 12/01 değerleri ile bir sonraki directory blokunu göstermektedir. 02 numaralı byte'a gelince, dikkat edelim. Bu byte'ın değeri 65'tir ($41). Eğer ekranın sağ tarafındaki harflere bakarsanız, bunun “A” harfinin kodu olduğunu görürsünüz. Bu, disketin 1541 tarafından formatlandığını anlatmaktadır. Aynı disketi COMMODORE firmasının diğer disket sürücüleri ile de formatlayabilirdiniz. Bu durumda, ikinci byte'ın içeriği daha farklı olacaktır. Örneğin, CBM4040 kullandığınızda, bu sayı harfine karşılık gelen 69 ($45) olur. Bu tür disketleri 1541 ile okuyabilir, ancak üzerine yazamazsınız. Eğer yanlışlıkla disketinizin bu byte'ını ileride göreceğimiz komutlarla değiştirir ve 65'ten farklı bir değere getirirseniz, bu diskete bir daha başka şey yazamazsınız. Gelecek bölümlerimizde göreceğimiz bazı özel rutinler kullanmanız gerekecektir.

C programlama dilinin detaylı incelemesine başlıyoruz. Şunu söylemeliyim ki, bu diziyi daha iyi anlayabilmeniz için en azından bir bilgisayar dilini ve daha iyisi Pascal gibi yapısal bir programlama dilini bilmenizde fayda var. C ile ilgili yazılarımızda bu dilin özellikle Amiga için önemini vurgulamıştık. Bu dizide yer alan örnek ve programlar bu açıdan ele alınmış ve Amiga ile denenmiş programlardır. Kullanılan C derleyicisi Lattice-C'dir. Aslında verilen örnekler Aztec-C ile de kullanılabilir. Yeter ki, gerekli olan işlemler tam olarak yerine getirilsin. Verdiğiniz örnekler C-64'te, First Publish LTD. tarafından piyasaya sürülmüş Süper-C derleyicisi ile denenebilir. Derleyicilerin çoğu (hattâ hemen hemen hepsi) referans olarak B. Kernighan ve Dennis Ritchie tarafından kitaplaştırılmış The C Programming Language adlı yapıtını almışlardır. Biz de bu yazı dizisi boyunca bu kaynağı temel referans olarak alacağız. Yeri geldiğinde de derleyicilerin ekstra özelliklerinden söz edeceğiz. Yazı dizisi genel C bilgisini konu aldığından, PC kullanıcıları da bu yazı dizisinden yararlanabilir.

İlk Program

Bir dil öğrenirken ilk görmek istenilen, ekrana bir mesajın yazılmasıdır. Biz de bunu dikkate alarak ilk programımızı yazıyoruz.

main()
(
printf(“Merhaba

C dilinin yapısal bir dil olduğunu söylemiştik. main() ifadesi ana programın başlangıcını göstermektedir. Hemen arkadan gelen { işareti program bloğunun başlangıcını, en altta yer alan } işareti de bloğun bitişini göstermektedir. Bu işaretler arasında ise program yer almaktadır. Verdiğimiz program basit ve tek program satırından oluşmuştur. printf() ekrana çıkış sağlayan bir fonksiyondur. Parantezler içinde yer alan mesaj bu fonksiyonun argümanıdır. C'de tüm fonksiyonlar bu mantıkla kullanılmaktadır. Çoğu dilde olduğu gibi, karakter dizisi “...” arasında tanımlanmıştır. Gerektiği durumda karakter değişkeni de argüman olarak kullanılabilir. C'de her bir program satırı (;) ile sona erer yani (;) işareti bir işlemin sona erdiğini ifade eder. Mesaj sonunda yer alan ( ) ifadesi mesajdan sonra bir alt satıra geçileceğini göstermektedir. ( — newline) bu işlemi yapmadığımızda bir sonraki mesaj öncekinin hemen yanından devam edecektir. Bunu aşağıdaki örnekle gösterebiliriz.

main()
printf(“merhaba”');
printf(*/n”);

Bu program ilk yazdığımız programın aynısıdır. Burada her bir kelime ayrı ayrı printf() fonksiyonuyla kullanılmıştır. ( ) ifadesi tek karakter uzunluğundadır. işareti arkadan gelen karakterin kontrol karakteri olduğunu göstermektedir. Peki, biz karakterini mesaj içinde kullanmak istediğimizde ne yapacağız? Bunun için (\) ifadesi kullanılmalıdır. Benzer olarak birkaç örnek verelim:

( — tab), ( — boşluk), ( — apostrof) olarak gösterilir. Değişkenler ve aritmetik işlemler

Konuyu anlamada yararlanacağımız basit bir program yazalım. Bu program, kaynak kitabın ünlü Fahrenayt ısı değerini Santigrat cinsinden hesaplamaya yarayan örneği.

/*Fahrenayt ısı değerini Santigrat olarak hesaplama*/
int endüşük, enyüksek, adım;
float fahr, sant;
endüşük /*sıcaklık tablosunun en düşük değeri*/
enyüksel 00; /*tablonun en yüksek değeri*/
adım *20 derecelik farklarla hesap için*/
fahr düşük;
while(fahr —en yüksek) |
| sant — (5.0/9.0)*(fahr-32.0);
fahr—fahr * adım;
Hn

Örnekte standart ASCII karakterde olmayan Türkçe karakterler, anlaşılabilir olması nedeniyle kullanılmıştır. İleride yazıcı çıkışı örnekler verilecektir. Şimdi bu örnekte yeni öğreneceğimiz birçok şeyi incelemeye başlayalım. Önce program içinde sadece programı inceleyecekler için açıklama yapmakta kullanılan /*açıklama*/ gösterimini inceleyelim. Bu tür özellikler tüm programlarda vardır ve derleyici bu iki uyarı işareti arasındaki hiçbir şeyi dikkate almaz. Sadece programın rahat incelenmesini sağlar. C'de tüm değişkenlerin önceden tanımlanması gerekmektedir. Unutulduğu durumda derleyici hata mesajı verecektir. Bu örnekte:

int endüşük, enyüksek, adım;

int fahr, celsius; satırıyla tamsayı (integer) değişkenleri tanımlanmıştır. Bunun için değişken tipi (örneğimizde int) ve ardından değişkenler sıralanır. Değişkenler (,) virgül ile birbirinden ayrılır. İkinci değişken tipi ise Türkçeye “kayan nokta” olarak çevrilmiş (tam ifade etmiyor) floating point değişkenidir. Bu değişken tüm gerçek sayıları kapsamaktadır. Diğer değişken tipleri ise; Char (karakter ASCII) Long (32 bit uzunluğunda tamsayı) Short (16 bit uzunluğunda tamsayı) Double (64 bit uzunluğunda reel sayı) Bu arada Int değişkeninin 16 bit uzunluğunda, float değişkeninin de 32 bit uzunluğunda olduğunu söyleyelim. C'de her bir değişkene değer yüklemeler diğer dildeki kullanımlara benzemektedir. Bunu örnekte görebilirsiniz.

endüşük -0;
enyüksek — 300;
adım —20
fahr endüşük;

Bu işlemden sonra tablo değerlerinin sırayla ekrana çıkmasını sağlayan bir çevrim (loop) gelmekte.

while(fahr < —enyüksek) |

(çevrim içindeki program)

While ile parantez içindeki şart gerçekleştiği sürece çevrim içindeki program işlenir. Çevrim { ve } işaretleri arasında yer alır. Eğer çevrim programı tek satırsa başlangıç ve bitiş işaretlerine gerek yoktur. Şartın ortadan kalkması ile çevrimin hemen altındaki işlemler yapılır. Bu örnekte çevrimden sonra bir işlem olmadığından program sona erer. Buradaki çevrim şartı ise, fahr değişkeninin enyüksek değişkeninden küçük veya eşit olmasıdır.

Gelecek yazımızda çevrimin içini inceleyeceğiz. Şimdilik hoşçakalın.