PPAASSCCAALL
ve
Program Geliþtirme
Zülkif GÜVEN
Asým Taylan ERVERDÝ
Sürat Yayýnlarý
Yazarlar : Zülkif GÜVEN
Hacettepe Üniversitesi Bilgisayar Bilimleri Mühendisliði, Asým Taylan ERVERDÝ
Yýldýz Teknik Üniversitesi Bilgisayar Bilimleri Mühendisliði
Sayfa Düzen ve Grafik : Zülkif GÜVEN, Asým Taylan ERVERDÝ
Kapak Tasarým : Sürat Görsel Sanatlar Merkezi
Renk Ayrým ve Film :Sürat Görsel Sanatlar Merkezi
Yayým :Sürat A. Þ.
Basým Yeri ve Tarihi :Ýstanbul / Türkiye, Aðustos-1997
Logo SÜRAT A.Þ.’nin Tescilli Markasýdýr. ISBN :975-577-072-0
Copyright ©1997 Sürat Basým Yayýn ve Daðýtým Anonim Þirketi.
Tüm haklarý saklýdýr. Bu kitapta bulunan metin ve grafiklerin tamamýnýn kullaným hakký,
Fikir ve Sanat Eserleri Kanunu’na göre SÜRAT YAYINLARI’na aittir. Sürat A.Þ. ve yazarlarýn önceden yazýlý izinleri olmaksýzýn elektronik, mekanik, fotokopi ya da her-hangi bir
kayýt sistemiyle çoðaltýlamaz, yayýnlanamaz veya depolanamaz.
DAÐITIM
ÖN SÖZ
Özellikle son 50 yýllýk süre zarfýnda, bilgisayar her alan-da kullanýlmaya baþlamýþ ve tüm ilimlerin hýzla geliþmesinde ana yardýmcý konumuna gelmiþtir. Astronomiden uzay bilim-lerine, eðitimden týbba, maliyeden bankacýlýða kadar pek çok alanda yaygýnlaþarak vazgeçilmez olmuþtur. Ýþte böyle büyü-leyici olarak görülen bilgisayarýn, hizmet üretebilmesi için, biz-zat kendisine problemleri çözme yeteneði kazandýrýlmasý gerekir ki, bu da prog-ramlama ile mümkündür.
Program geliþtirmek, günlük hayatta karþýlaþýlan prob-lemleri çözmeye benzer. Problemlere ne kadar iyi çözüm getirebiliyorsanýz o kadar iyi programlama yapabileceðiniz söylenebilir.
Problemlerin çözümünde kendi düþünce sistemimiz çok önemlidir. Bir soru sorulduðunda, hiç düþünmeden kolayca cevap verebilme, insanýn hýzlý düþünebilme yeteneðinden kay-naklanýr. Ve bu hýzla cereyan eden düþünme süreci içerisinde, elbette takip edilen bir çözüm metodu vardýr. Sonra da bu metodun, bilgisayarýn anlayacaðý bir dilin program kodlama kurallarý çerçevesinde uyarlanmasý gerekir. Biz de bu baðlam-da, bilgisayarla aktif iletiþim kuracaðýmýz dil olan Pascal’ý seçtik.
Pascal programlama dili, 1968 yýlýnda Niklaus Wirth tarafýndan geliþtirilmiþ, özellikle Borland firmasýnýn çýkarttýðý yeni Pascal sürümleriyle güçlenmiþtir. Bir çok yerde program-lama, Pascal diliyle öðretilmektedir. Ýdeal bir öðretim dili olmasýnýn yanýnda, yapýsal programlama bakýmýndan da güçlü bir dildir. Dos, crt, string, grafik fonksiyonlarý, simgesel dil komutlarýnýn kullanýmýna izin vermesi, kütüphane oluþtura-bilme gibi imkanlarý, Pascal’ý güçlü kýlan özelliklerdir.
Program uygulamalarýmýzda Pascal’ýn deðiþik model ve sürümlerinden baðýmsýz kalmaya çalýþtýysak ta programlarýmýz Borland Pascal 7.0 sürümünün komutlarýný desteklemektedir.
a. Kitabýn Hazýrlýðý
Her devirde olduðu gibi günümüzde de yeni yetiþen nes-lin, bilgi çaðýný yakalayabilmesi, düþünüp, düþündüðünü ifade edebil-mesi, olaylar karþýsýnda yorum gücüne sahip olmasý, iyi bir eðitim ve öðretimle mümkündür. Eðitim ve öðretimde kalitenin artýrýlmasýnda, birçok unsurun yanýnda kitap faktörü de çok önemlidir.
Elinizdeki bu kitap, uzun programcýlýk deneyiminin ve titiz bir araþtýrmanýn ürünüdür. Kitabý hazýrlýk aþamasýndan son haline getirinceye kadar, temel hedef olarak, Pascal ile pro-gram geliþtirmenin zor ve sýkýcý olduðu düþüncesini ortadan kaldýrmak ve sevdirerek öðretmek olduðu hiç bir zaman
Konular büyük bir özenle hazýrlandý. Kendi özeleþtirimizi yapmak, konunun anlaþýlýrlýðýný saðlamak, konunun hazýrlanma amacýna uyup uymadýðýný kontrol için, her konu yazýlýp bittikten sonra kendimize þu sorularý sorduk. “Konu gerekli bilgileri içeriyor mu? Kullanýlan dil akýcý ve sade mi? Konuda pedogojik bir anlatým sýralamasý var mý?“ Bu sorularýn tamamýna evet cev-abýný almaya çalýþtýk. Eðer, bunlardan birine net olarak evet cevabý alamadýysak, konuyu yeniden inceledik ve düzenlemel-er yaptýk.
c. Program Geliþtirme Metodu
Konu anlatýmýnda pek çok örnek program uygulamasý verilmiþtir. Bu programlar doðrudan kodlarý verilerek deðil, aþaðý-da belirtildiði gibi problemi anlama, çözüm metodu geliþtirme, adýmlandýrma, kodlama, test etme aþamalarýndan geçirilmiþtir:
1. Problemi Anlama
Bir problemin çok iyi þekilde anlaþýlmasý gerekir. Problemin çözümü için hangi verilerin elde olduðu ve istendiði iyi bilin-melidir.
2. Çözüm Metodu Geliþtirme (Analiz)
Problemi iyice anladýktan sonra, çözümü için bir metot geliþtirmek gerekir. Bu metot, ya daha evvel çözülen problemlere benzetilir ya da baþtan yeni bir yöntem geliþtirilir. Problemi en ufak detaylarýna kadar alt programlara bölmek ise iyi bir baþlangýçtýr.
3. Çözüm Metodunun Adýmlandýrýlmasý (Tasarým)
Çözüm metoduna iliþkin somut adýmlar belirlenir. Herbir adým kendi içinde kapalý bir noktasý kalmayýncaya kadar detay-landýrýlýr.
4. Programý Kodlama (Uygulama)
Belirlenen somut adýmlar, Pascal dilinin kurallarý çerçe-vesinde kodlanýr. Burada kullanýlan sabit, tip, komut ve diðer ifadelerin söz dizim açýklamasý ve kritiði yapýlýr.
Konunun en baþýnda, anlaþýlmasý güç pek çok taným ve komutlar yýðýnýný vermekten kaçýndýk. Aksine, tümden parçalara doðru mantýðýndan hareketle, örnek program uygulamalarýyla baþladýk. Verilen örnek uygulamalar, kolaydan zora doðru sýra-landý, her yeni örnekte bir baþka taným verilmesi hedeflendi.
5. Programýn Testi (Test Ýþletimi)
Bir program her ne kadar bitmiþ gözükse de bir çok hatalar içerebilir. Bir veri için çalýþýp, baþka bir veride yanlýþ sonuçlar
6.2. Problem (Girilen N Adet Sayýnýn Ortalamasý)
Girilen N sayýnýn ortalamasýný bulan program akýþýný geliþtirin.
Kaç adet sayý girileceði (N) okunur. 1’den N’e kadar sayýlar okunur ve toplama eklenir. En sonunda bulunan toplam deðeri, N’e bölünerek ortalama elde edilir.
N adet sayýnýn toplanmasý, bir havuzu N adet mus-luðun doldurmasýna benzetilebilir. Her sayý toplam havuzuna ilave edilir.
Analiz
5.1.1. Sayýnýn Karakökü (Sqrt)
DikKenar1 ve DikKenar2 deðiþken deðerlerinin karelerini toplar ve toplamýn karekökünü alýp hipotenüsü
hesaplar. Kritik
Program Dik_Ucgenin_Hipotenusunu_Hesaplar; Var DikKenar1, DikKenar2, Hipotenus: Real; Begin
Write('Lütfen dik üçgenin iki kenar uzunluklarýný giriniz :'); ReadLn(DikKenar1,DikKenar2);
Hipotenus:=Sqrt(
Sqr(DikKenar1)+Sqr(DikKenar2));{5.1.1, 5.1.2.}
WriteLn('Hipotenüsün uzunluðu = ',Hipotenus:4:2); WriteLn(‘Hipotenüs uzunluðunun tam kýsmý = ‘,
Trunc(Hipotenus)); {5.1.3.}
WriteLn(‘Hipotenüs uzunluðunun yuvarlatýlmýþ hali = ‘, Round(Hipotenus));{5.1.4.}
End.
Program Kodu (DikUcHip.Pas)
1. Dik üçgenin iki kenar uzunluðunu oku. 2. Hipotenüsü hesapla;
2.1 Dik kenarlarýn karelerini alýp topla ve toplamýn karekökünü al.
3. Hipotenüsü yazdýr ve programý sonlandýr.
Tasarým
Hipotenus:=Sqrt(Sqr(DikKenar1)+Sqr(DikKenar2));
Test Ýþletimi Örnek Program Kodu
d. Program Geliþtirmede Akýþ Þemalarý
Problemlerin çözümünde, yukarýda belirtilen program geliþtirme aþamalarýna ek olarak, yer yer tasarýmla birlikte akýþ þemalarý da çizilmiþtir. Burada, bir resim birçok cümleden daha fazla anlam ifade eder düþüncesiyle, programýn planý akýþ þemasýyla desteklenmiþtir.
e. Renkli Çizim ve Modelleme Desteði
Kitaba göz gezdirdiðinizde çoðu konunun renkli çizimlerle desteklendiðini göreceksiniz. Konularýn daha iyi anlaþýlýr kýlýn-masý, göze hitap etmesi, soyut bir takým kavramlarýn hayal ale-minden kaðýt üzerine aktarýlmasý saðlandý. Konu anlatýmýndaki bir kýsým yorumlarýn çizim modellemesi de yapýlarak farklý bir bakýþ açýsý kazandýrýldý.
f. Karikatür Desteði
Konularýn anlatýmýnda bazý yorumlarý ve bazý Pascal tip ve komutlarýný karikatürize ettik. Kýsmen espiritüyel olan bu karikatürleri, konuyla önemli oranda iliþkilindirmeye gayret ettik.
g. Bölüm Tarama ve Programlama Sorularý
Ölçme ve deðerlendirme, eðitim ve öðretimde vazgeçilmez bir unsurdur. Her bölümün sonuna ilave edilen sorularýn, kýsmen zor olanlarý da olsa, kendinizi ölçmenizde oldukça yardýmcý ola-caðý kanaatindeyiz.
h. Son Söz
Programlama dersi alan tüm orta ve yüksek okul öðrencile-rine ve programcýkla ilgilenen tüm kiþilere, bu kitabýn oldukça faydalý olacaðýný ümit ediyoruz. Bu kitapla konulara çalýþýrken, bir defa okuduðunuzda anlamadýðýnýz taktirde, ikinci defa okudu-ðunuzda rahatlýkla anlayabileceðiniz kanaatindeyiz. Bu arada þunu da tavsiye ederiz: Bir konuyu iyice anladýðýnýza emin olmadan bir sonraki konuya geçmeyiniz.
Kitabýn hazýrlanmasý esnasýnda ihmal ettiðimiz ailelerimize de gösterdikleri anlayýþtan dolayý teþekkür ederiz.
Zülkif GÜVEN Asým Taylan ERVERDÝ Aðustos 1997, Ýstanbul
1. Sayacý 1’e eþitle. 2. 1000 defa ‘Pascal’ yazdýrý
cak döngüyü kur; 2.1. Ekrana ’Pascal’ yazdýr. 2.2. Sayacý bir artýr. 2.3. Sayac 1000’den küçük
veya eþitse 2.1. adýma geri dön. 3. Programý sonlandýr.
Tasarým ve Akýþ Þemasý
4.3.1. Atama Ýfadesinin Ýþleyiþi
1. Atama operatörünün (:=) sað tarafýndaki ifadenin ... 2. Bulunan bu deðer, atama operatörünün solundaki deðiþkene, tip uyuþmazlýðý yoksa, aktarýlýr.
ÝÇÝNDEKÝLER
BÖLÜMLER
SAYFA
BÖLÜM-1
PROGRAM GELÝÞTÝRME (PROGRAMMING)
1 - 14
BÖLÜM-2
PASCAL PROGRAMLAMA DÝLÝ
15 - 36
(PASCAL PROGRAMMING LANGUAGE)
BÖLÜM-3
KONTROL DEYÝMLERÝ (DECISION CONTROL)
37 - 58
BÖLÜM-4
DÖNGÜ DEYÝMLERÝ (REPETITION CONTROL)
59 - 94
BÖLÜM-5
DÝZÝLER (ARRAYS AND STRING)
95 - 120
BÖLÜM-6
ALT PROGRAMLAR
121 - 146
(PROCEDURES AND FUNCTIONS)
BÖLÜM-7
GRAFÝK (GRAPHIC)
147 - 200
BÖLÜM-8
ÖZEL TANIMLI TÝPLER (USER DEFINED TYPES) 201 - 220
BÖLÜM-9
DOSYALAR (FILES)
221 - 248
BÖLÜM-10
BELLEK KONUM GÖSTERGECÝ (POINTER)
249 - 274
BÖLÜM-11
ÖZYÝNELEME (RECURSION)
275 - 286
BÖLÜM-12
SIRALAMA (SORTING)
287 - 304
BÖLÜM-13
ARAMA (SEARCHING)
305 - 312
BÖLÜM-14
KESMELER (INTERRUPTS)
313 - 326
1. V
1. VERÝERÝ ÝÝÞLEMEÞLEME(D(DATAATAPPROCESSINGROCESSING))-3 2. V
2. VERÝERÝ ÝÝÞLEMEÞLEMETTARÝHÇESÝARÝHÇESÝ-3 3. B
3. BÝLGÝSAYARDAÝLGÝSAYARDAVVERÝERÝÝÝÞLEMEÞLEMEVEVESSAKLAMAAKLAMA-4 3.1. Ýkilik Sayý Düzeni (Binary Numbers)-5 3.2. Onaltýlýk Sayý Düzeni (Hexadecimal Numbers)-5 4. B
4. BÝLGÝSAYARINÝLGÝSAYARINGGENELENELYYAPISIAPISI-5 4.1. Ana Bellek (Ram)-6 5. P
5. PROGRAMROGRAM GGELÝÞTÝRMEELÝÞTÝRMEMMETODUETODU-6 5.1. Problemi Anlama-6
5.2. Çözüm Metodu Geliþtirme (Analiz)-6
5.3. Çözüm Metodunun Adýmlandýrýlmasý (Tasarým)-6 5.4. P
5.4. PROGRAMÝROGRAMÝKKODLAMAODLAMA(U(UYGULAMAYGULAMA))-7 5.5. P
5.5. PROGRAMÝNROGRAMÝNTTESTIESTI(T(TESTESTÝÝÞLETIMIÞLETIMI))-7 6. P
6. PROGRAMROGRAM GGELÝÞTÝRMEDEELÝÞTÝRMEDEAAKIÞKIÞÞÞEMALARIEMALARI-7 6.1. Sýralý Akýþ (Sequential Flow)-7
6.1.1. Problem (Çember Alan ve Çevre Hesabý)-7 6.2. Þartlý Akýþ (Conditional Flow)-8
6.2.1. Problem (Üçgenin Eþkenarlýk Kontrolü)-8 6.3. Tekrarlý Akýþ (Repetitive Flow)-9
6.3.1. Problem (1’den 100’e Kadar Sayýlarýn Yazdýrýlmasý)-9
6.3.2. Problem (Girilen N Adet Sayýnýn Ortalamasý)-10 6.3.3. Problem (Girilen N Adet Sayýnýn En Büyüðü)-10 7. P
7. PROGRAMLAMAROGRAMLAMADDÝLLERÝÝLLERÝ-11 7.1. Yüksek Seviyeli Diller-11 7.2. Simgesel (Assembly) Dil-12 7.3. Makine Dili-12
7.4. Yaygýn Kullanýlan Bazý Yüksek Seviyeli Diller-12 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-13 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-14
1. P
1. PASCALASCAL’’DADAEEDÝTÖRDÝTÖRKKULLANIMIULLANIMI-17 1.1. Yeni Dosya Açýlmasý (New File)-17 1.2. Yazýlan Programýn Çalýþtýrýlmasý
(Compile & Run)-18
1.3. Dosyanýn Kaydedilmesi (File Save)-18 1.4. Düzenleme: Kes, Kopyala, Yapýþtýr
(Cut, Copy, Paste)-18 1.5. Kelime Arama (Search)-19
1.6. Dosyanýn Kapatýlmasý (Close File)-19 2. P
2. PASCALASCAL’’ININGGENELENELBBLOKLOKYYAPISIAPISI-19
2.1. Uygulama (Verilen Üç Notun Ortalamasý)-19
2.2. Program Baþlýðý-20 2.3. Pascal Söz Dizim Kuralý-20
2.3.1. Ayrýlmýþ Kelimeler-20 2.3.2. Standart Ýfadeler-20 2.3.3. Özel Semboller-21 2.3.4. Bellek Alan Ýsimleri-21 2.4. Açýklama Sembolleri-21
3. DEÐÝÞKEN TANIMLAMA BLOÐU
3. DEÐÝÞKEN TANIMLAMA BLOÐU-21
3.1. Deðiþken Kavram ve Tanýmý-21 3.2. Deðiþken Ýsmi Verme Kurallarý-22 3.3. Deðiþken Tipleri-22
4. ANA PROGRAM BLOÐU
4. ANA PROGRAM BLOÐU-23
4.1. Çýkýþ Deyimleri (Write, WriteLn)-23 4.1.1. Çýkýþ Ortamýna Yazým (Write)-24
4.1.2. Çýkýþ Ortamýna Satýr Baþýyla Yazým (WriteLn)-24 4.2. Giriþ Deyimleri (Read, ReadLn)-24
4.2.1. Giriþ Ortamýndan
Satýr Baþýyla Okuma (ReadLn) -24 4.2.2. ReadLn Deyiminde
Dikkat Edilecek Hususlar -25 4.2.3. Giriþ Ortamýndan Okuma (Read) -26 4.3. Atama Ýfadesi-26
4.3.1. Atama Ýfadesinin Ýþleyiþi -26 4.3.2. Yer Deðiþtirme Ýþlemi (Swap) -26 4.3.3. Atamada Dikkat Edilecek Hususlar -27 4.4. Aritmetik Ýþlemler-27
4.4.1. Kesirli Bölme (/) -27 4.4.2. Tam Bölme (Div) -27 4.4.3. Mod Ýþlemi -28 4.5. Aritmetik Ýþlem Sýrasý-28
4.6. Aritmetik Ýþlem Sonucunun Tipi-28 4.7. Matematik Formüllerinin Yazýmý-29 4.8. Çýkýþ Ýfade Düzeni-29
4.8.1. Tamsayý (Integer) Ýfade Düzeni -29 4.8.2. Gerçek Sayý (Real) Ýfade Düzeni -30 4.8.3. Açýklama Ýfadesi Yazým Düzeni -30 5. MATEMATÝKSEL ÝÞLEMLER
5. MATEMATÝKSEL ÝÞLEMLER-31
5.1. Uygulama (Dik Üçgenin Hipotenüs Hesabý)-31 5.1.1. Sayýnýn Karekökü (Sqrt) -31
5.1.2. Sayýnýn Karesi (Sqr) -31
5.1.3. Gerçek Sayýnýn Tam Kýsmý (Trunc) -31 5.1.4. Gerçek Sayýyý En Yakýn Tamsayýya
Yuvarlama (Round) -32 6. K
6. KODLAMADAODLAMADAYYAPILABÝLECEKAPILABÝLECEKGGENELENELHHATALARATALAR-32 6.1. Söz Dizim Hatalarý (Syntax Errors)-32 6.2. Ýþletim Hatalarý (Runtime Errors)-32 6.3. Hatalý Program Kodunu Düzeltme-32 B
BÖLÜMÖLÜM TTARAMAARAMASSORULARIORULARI-34 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-36
BÖLÜM-2 PASCAL PROGRAMLAMA DÝLÝ (PASCAL PROGRAMMING LANGUAGE)-15
BÖLÜM-1 PROGRAM GELÝÞTÝRME (PROGRAMMING)-1
Ýçindekiler
1.
1. TTEKEKVEVEÇÇÝFTÝFTDDALLANMALIALLANMALIKKONTROLONTROLDDEYÝMLERÝEYÝMLERÝ-39 1.1. Uygulama (Üç Sayýnýn En Büyüðü)-39 1.2. If-Then-Else Deyimi-40
1.3. Mantýksal (Boolean) Ýfadeler-41 1.3.1. Karþýlaþtýrma Operatörleri -41 1.3.2. Mantýksal Deðiþkene Deðer Atama -41 1.3.3. Mantýksal Operatörler (Ve, Veya, Deðil) -41
- Ve (And) Operatörü -42 - Veya (Or) Operatörü -42 - Deðil (Not) Operatörü -42 1.3.4. Genel Ýþlem Sýrasý -42 1.4. Kontrol Ýfadesinde Mantýksal
Deðiþken Kullanýmý-43
1.5. Kontrol Ýfadesinde Gerçek Sayýlarýn Kullanýmý-43 1.6. Else Dallanmasýndan Önce
Noktalý Virgül Kullanýmý-43 1.7. If-Then Deyimi-44
2. B
2. BLOKLOKKKULLANIMIULLANIMI-45
2.1. Uygulama (Dikdörtgen veya Üçgen Alan Hesabý)-45 2.1.1. Kütüphane Bloðu ve
Crt Kütüphanesi (Uses Crt) -46 2.1.2. Ekraný Temizleme (ClrScr) -46
2.1.3. Klavyeden Karakter Okuma (ReadKey) -47 2.1.4. Büyük Harfe Çevirme (UpCase) -47 2.1.5. In Karþýlaþtýrma Operatörü -47 2.1.6. Begin-End Blok Yapýsý -48 2.1.7. Blok Ýfade Kullanmanýn Gereði -48 3. Ç
3. ÇOKOKDDALLANMALIALLANMALIKKONTROLONTROLDDEYÝMLERÝEYÝMLERÝ-49 3.1. Uygulama (Öðrenci Ders Baþarýsý)-49
3.1.1. Sabit (Const) Bloðu -51 3.1.2. Ýçiçe If Kontrolü -51
3.1.3. Ýçiçe If Kontrolünde Else Kullanýmý -52 3.2. Uygulama (Üçgen Tipini Belirleme)-52
3.2.1. Ýçiçe If-Then-Else Deyimleri -52 3.3. Uygulama (Yüzden Beþe Not Çevrimi)-53
3.3.1. Ýçiçe If-Then-Else ile Not Çevrimi -53 3.4. Case ile Yüzden Beþe Not Çevrim Örneði-53 3.5. Case Deyimi-54
3.5.1. Case Deyiminde Deðer Aralýklarý -54 3.5.2. Case Bloðunda Tekrar Eden Deðerler -55 3.5.3. Case Bloðunda Else ile Yönlendirim -55 3.5.4. Case Blok Sonu -55
3.6. Uygulama (Karakter Tespiti)-55
1. D
1. DÖNGÜÖNGÜ NNEDENEDENGGEREKÝREREKÝR-61 1.1. Uygulama (Ekrana 1000 Defa
Pascal Yazdýrma)-61
1.2. Etiket (Label) Tanýmlama Bloðu-62 1.3. Program Akýþýný
Ýstenen Satýra Yönlendirme (GoTo)-62 2. B
2. BELLÝELLÝSSAYIDAAYIDATTEKRARLIEKRARLIDDÖNGÜÖNGÜ(F(FOROR))-63 2.1. For Döngüsüyle
Ekrana 1000 Defa Pascal Yazdýrma-63 2.2. For-To-Do Deyimi
2.2.1. For Döngüsünün Ýþleyiþ Adýmlarý -63 2.3. Uygulama (1’den 100’e Kadar
Sayýlarýn Toplamý)-64
2.3.1. Yýðmalý Toplama ve Çarpma -65
2.4. Uygulama (Sayýlar ve Karelerinin Yazdýrýlmasý)-65 2.5. For-DownTo-Do Deyimi-65
2.5.1. Döngüde Blok Kullanýmý -66
2.6. A’ dan Z’ye Kadar Karakterlerin Yazýmý-66 2.6.1. Döngü Deðiþkeni Olarak Karakter Kullanýmý -66 2.7. Uygulama (Sýnýfýn Kalan ve
Süper Öðrenci Sayýsý) -66
2.8. For Döngüsünde Dikkat Edilecek Noktalar-68 2.8.1. Döngü Deðiþken Deðerinin Deðiþimi -68 2.8.2. Sonsuz Döngü -68
2.8.3. Döngünün Bitiþ Deðerini Deðiþtirme -69 2.8.4. Döngü Bitiminde Döngü Deðiþkeninin Deðeri-69 2.8.5. Döngü Bloðunun Tekrar Etme Sayýsý -69 2.8.6. Do’dan Sonra Noktalý Virgül Kullanýmý -69 2.8.7. For Döngü Deðiþkeni Tipi -69
3. Ö
3. ÖNN KKONTROLLÜONTROLLÜDDÖNGÜÖNGÜ(W(WHILEHILE))-70 3.1. Uygulama (1 ile10 Arasýndaki Sayýlarý
While ile Yazdýrma)-70 3.2. While-Do Deyimi-71
3.2.1. While Döngüsünde Üç Aþama -72 3.3. Sayma ve Gözcü (Sentinel)
Kontrollü Döngüler-72
3.4. Uygulama (Not Ortalama Hesabý)-73 3.4.1. Döngü Deðiþkeninin Ýlk Deðer Almasý -74 3.4.2. Döngüye Hiç Girmeme Kontrolü -74 3.5. Uygulama (Bir Þehrin Hedef Nüfusa
Ulaþma Süresi)-74
3.5.1. Tamsayý Bölme ve Çarpmada Oluþabilecek Hatalar -75
BÖLÜM-4 DÖNGÜ DEYÝMLERÝ
(REPETITION CONTROL)-59
BÖLÜM-3 KONTROL DEYÝMLERÝ (DECISION CONTROL)-37
3.7. While Döngüsünde Dikkat Edilecek Noktalar-78 3.7.1. Do Kelimesinden Sonra
Noktalý Virgül Kullanýmý -78 3.7.2. Döngülerde Tamsayý Kullanýmý -78 4. S
4. SONONKKONTROLLÜONTROLLÜDDÖNGÜÖNGÜ(R(REPEAT)EPEAT)-79 4.1. Uygulama (Esc Tuþuna
Basýlana Kadar Tuþ Okuma)-79 4.2. Repeat-Until Deyimi-79
4.2.1. Diyez (#) Ýþaretiyle Karakter Kontrolü -80 4.3. Uygulama (Fibonacci Serisi)-80
4.4. Uygulama (Dört Ýþlem Hesabý)-83 5. Ý
5. ÝÇÝÇEÇÝÇEDDÖNGÜLERÖNGÜLER-84
5.1. Uygulama (Yýldýzlardan Oluþan Kare)-85 5.2. Ýçiçe For Kullanýmý-85
5.3. Uygulama (Bir Sayýnýn Asal Çarpanlarý)-86 6. P
6. PROGRAMINROGRAMINTTESTÝESTÝ-88 6.1. Run Menüsü-88 6.1.1. Step Over (F8) -88 6.1.2. Trace Into (F7) -88 6.1.3. Goto Cursor (F4) -89 6.1.4. Program Reset (Ctrl+F2) -89 6.2. Debug Menüsü-89 6.2.1. Breakpoint -89 6.2.2. Output -89
6.2.3. User Screen (Alt+F5) -89 6.2.4. Evaluate/Modify (Ctrl+F4) -89 6.2.5. Add Watch (Ctrl+F7) -89 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-90 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-93
1. T
1. TEKEK BBOYUTLUOYUTLUDDÝZÝLERÝZÝLER-97 1.1. Uygulama (Beþ Sayýnýn
Sondan Baþa Yazdýrýmý)-97 1.1.1. Dizi Tanýmlama -98
- Dizinin Ýsmi -98 - Eleman Aralýðý -98 - Dizi Elemanlarýnýn Tipi -99
1.1.2. Dizilerin Okunmasý ve Read Kullanýmý -99 1.1.3. Dizilerin Yazdýrýlmasý -99
1.2. Uygulama (2 Kat 3 Fazla Kuralýnda Dizi Oluþturma)-100 1.2.1. Dizilerde Atama Ýþlemi -100 1.2.2. Dizinin Diziye Atanmasý -100 1.3. Uygulama (Bir Diziyi Baþka
Bir Diziye Tersten Aktarým)-101
1.4. Uygulama (Dizinin Sýralýlýk Kontrolü)-101 1.4.1. Artýrma ve Eksiltme (Inc, Dec) -102 1.5. Uygulama (Sýnýf Ortalamasý
Üstündeki Öðrenciler)-103 2. K
2. KARAKTERARAKTERDDÝZÝSÝÝZÝSÝ(S(STRINGTRING))-104
2.1. Uygulama (Bir Kelimedeki Sesli Harfler)-104 2.1.1. String Deðiþken Tanýmlama -104
2.1.2. String Okuma ve Yazma -105
2.1.3. Stringin Bir Karakterinin Yazdýrýlmasý -105 2.1.4. Stringin Mevcut
Bir Karakterine Deðer Okuma -105 2.1.5. String Uzunluðunu Öðrenme (Length) -106 2.1.6. String’te 0. Karakter -106
2.1.7. Sýra Deðer Bildirimi (Ord) -106 2.2. Uygulama (Adam Asma Oyunu)-106
2.2.1. Stringlerde Toplama Operatörü -108 2.2.2. Stringleri Toplama (Concat) -109 2.2.3. String ile Kullanýlan
Karþýlaþtýrma Operatörleri -109 2.2.4. Stringte Atama Ýþlemi -109
2.2.5. ASCII Kodun Karakter Karþýlýðý (Chr) -110 2.2.6. Stringe String Atama -110
2.3. String Komutlarý-111 2.3.1. Stringten Belli Bir Kesimin
Kopyalanmasý (Copy) -111 2.3.2. Stringten Belli Bir Kesimin
Silinmesi (Delete) -111
2.3.3. Stringe String Eklenmesi (Insert) -111 2.3.4. String Karakter Dizisinde Arama (Pos) -112 2.4. Uygulama (Cümle Ýçindeki
Kelimeyi Deðiþtirme)-112 2.5. Uygulama (N Tabanýndan
Onluk Tabana Çevrim)-113 2.5.1. Sayýyý Stringe Çevirme (Str) -114 2.5.2. Stringi Sayýya Çevirme (Val) -114
2.6. Uygulama (Büyük Sesli Uyumu Kontrolü)-115 3. Ý
3. ÝKÝKÝBBOYUTLUOYUTLUDDÝZÝLERÝZÝLER-116
3.1. Uygulama (Ýki Boyutlu Tablonun Sayýlarý Toplamý)-116
3.1.1. Ýki Boyutlu Dizilerin Tanýmlanmasý -117 - Dizinin Ýsmi -117
- Ýndis Aralýklarý -117 - Elemanlarýn Tipi -117
3.1.2. Ýki Boyutlu Dizilerin Okunmasý -117
3.2. Uygulama (Öðrenciler ve Yazýlýlarý Ortalamasý)-117 3.2.1. Tablodaki Bir Satýrýn Toplanmasý -118 3.2.2. Tablodaki Bir Sütunun Toplanmasý -118 B
BÖLÜMÖLÜM TTARAMAARAMASSORULARIORULARI-119 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-120
BÖLÜM-5DÝZÝLER (ARRAYS AND STRING)-95
Ýçindekiler
1. A
1. ALTLTPPROGRAMROGRAMKKULLANMANINULLANMANINFFAYDALARIAYDALARI-123 1.1. Kolay Çözüm, Kolay Hata Kontrolü-123 1.2. Alt Programlarýn
Tekrar Tekrar Çaðrýlabilmesi-124 1.3. Programlarýn Kolay Anlaþýlýr ve
Yönetilebilir Olmasý-124 1.4. Kütüphane Haline Getirme-124 1.5. Programcýlar Arasý Ýletiþim-124 2. A
2. ALTLTPPROGRAMLARLAROGRAMLARLA A
ANANAPPROGRAMROGRAMAARASINDAKÝRASINDAKÝÝÝLÝÞKÝLÝÞKÝ-124 3. P
3. PROSEDÜRROSEDÜRAALTLTPPROGRAMIROGRAMI(P(PROCEDUREROCEDURE))-125 3.1. Prosedürün Parametresiz Çaðrýlmasý-125
3.1.1. Prosedürün Baþlýðý -125 3.1.2. Prosedür Kod Bloðu -125 3.1.3. Prosedürün Çaðrýlmasý -125
3.2. Uygulama (Çarpým ve ASCII Tablolarý)-126 3.2.1. Menü Prosedürü -127
3.2.2. Çarpým Tablosu Prosedürü -127 3.2.3. Genel (Global) ve
Yerel (Local) Deðiþkenler -127 3.2.4. ASCII Tablo Prosedürü -129 4. P
4. PROSEDÜREROSEDÜREPPARAMETREARAMETRE G
GÖNDERÝMÝÖNDERÝMÝVEVEKKULLANIMIULLANIMI-129
4.1. Uygulama (Yýldýzlardan Oluþan Dik Üçgen)-129 4.1.1. Deðer Parametreli Prosedür Baþlýðý -130 4.1.2. Deðer Parametreli Prosedürün Çaðrýlmasý-130 4.1.3. Prosedürdeki Deðer
Parametrelerinin Durumu -131 4.2. Uygulama (Üs Hesabý)-132 5. D
5. DEÐÝÞKENEÐÝÞKENPPARAMETRELÝARAMETRELÝPPROSEDÜRLERROSEDÜRLER-132 5.1. Deðiþken Parametreli Prosedürle Üs Hesabý-133
5.1.1. Deðiþken Parametreli Prosedür Baþlýðý -133 5.1.2. Deðiþken Parametreli
Prosedürün Çaðrýlmasý -133
5.1.3. Deðiþken Parametresinin Bellekteki Yeri -134 6. F
6. FONKSÝYONONKSÝYONAALTLTPPROGRAMIROGRAMI (F(FUNCTIONUNCTION))-135 6.1. Fonksiyonla Üs Hesabý-135
6.1.1. Fonksiyonun Prosedüre Göre Kullaným Farklýlýklarý -135 6.1.2. Fonksiyon Baþlýðý -136 6.1.3. Fonksiyon Kod Bloðu -136 6.1.4. Fonksiyonun Çaðrýlmasý -136
6.2.3. Rastgele Sayý Üretimi (Random) -139 6.2.4. Sayý Geçerliliði Kontrol Fonksiyonu -140 6.2.5. Tahmin Sayýyý Deðerlendirme Prosedürü -141 7. Ý
7. ÝÇÝÇEÇÝÇEBBÝRBÝRÝNÝÝRBÝRÝNÝÇÇAÐIRANAÐIRANAALTLTPPROGRAMLARROGRAMLAR-142 7.1. Alt Programlarýn Birbirini Çaðýrma Þartlarý-143
7.1.1. Alt Programdan Çýkýþ (Exit) -143 7.1.2. Programdan Tamamen Çýkýþ (Halt) -143 7.1.3. Döngü Bloðundan Çýkýþ (Break) -143 7.1.4. Döngü Baþýndan Devam Etme (Continue)-143 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-144 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-146
1. M
1. METÝNETÝN(T(TEXT) TEXT) TABANLIABANLIGGÖSTERÝMÖSTERÝM-149 1.1. Metin Modunda Renkli Yazýmlar-149
1.1.1. Ýstenen Konuma Gidilmesi (GotoXY) -149 1.1.2. Yazý Taban Rengini
Belirleme(TextBackGround) -150
1.1.3. Yazý Üst Rengini Belirleme (TextColor) -150 1.1.4. Deðiþik Taban ve Üst Renkleriyle Yazým -150 1.2. Metin Tabanlý Diðer Ekran Komutlarý-150
-TextAttr, HighVideo, LowVideo, NormVideo -150 2. G
2. GRAFÝKRAFÝK TTABANLIABANLIGGÖSTERÝMÖSTERÝM-151 3. G
3. GRAFÝKRAFÝK KKOORDÝNATOORDÝNATSSÝSTEMÝÝSTEMÝ-151 3.1. Uygulama (Grafik Ortamda
Ekran Dinlendirici)-151
3.1.1. Grafik Kütüphanesi Kullanýmý (Uses Graph) -152
3.1.2. Grafik Sürücü ve Modu Deðiþkenleri -153 3.1.3. Grafik Sürücü ve
Modunun Belirlenmesi (DetectGraph) -153 3.1.4. Grafik Ortamýnýn Baþlatýlmasý (InitGraph) -153 3.1.5. Grafik Hata Kontrolü (GraphResult) -153 3.1.6. Grafik Hata Mesajý (GraphErrorMsg) -154 3.1.7. Grafik Ekrana Piksel Koyulmasý (PutPixel)-154 3.1.8. Grafik Koordinat Sýnýrlarý ve
Maksimum Renk -155
- Maksimum Yatay Piksel Adedi (GetMaxX) -155 - Maksimum Dikey Piksel Adedi (GetMaxY) -155 - Maksimum Renk Adedi (GetMaxColor) -155 3.1.9. Klavye Tuþuna Basýlma Kontrolü
(KeyPressed) -155
3.1.10. Grafik Ekrandan Piksel Okuma (GetPixel)-155 3.1.11. Grafik Ortamýnýn Kapatýlmasý (CloseGraph)-155 4. G
4. GRAFÝKTERAFÝKTE TTEMELEMELÇÇÝZÝMLERÝZÝMLER-156
BÖLÜM-7 GRAFÝK (GRAPHIC)-147
BÖLÜM-6 ALT PROGRAMLAR
4.1.2. Grafik Zemin Rengi Deðiþimi (SetBkColor)-158 4.1.3. Grafik Ekraný Temizleme (ClearDevice) -159 4.1.4. Doðru Parçasý Çizimi (Line) -159
4.1.5. Dikdörtgen Çizimi (Rectangle) -159
4.1.6. Aktif Çizim Renginin Alýnmasý (GetColor) -159 4.1.7. Aktif Çizim Rengini Deðiþtirme (SetColor) -159 4.1.8. Grafik Ortamda Yazým (OutTextXY) -160 4.1.9. Verilen Açýnýn Sinüsü (Sin) -160 4.1.10. Verilen Açýnýn Kosinüsü (Cos) -160 4.1.11. Çizim Stilini Belirleme (SetLineStyle) -161 4.1.12. Ýmlecin Konumunu Deðiþtirme (MoveTo)-161 4.1.13. Doðru Çizimi (LineTo) -161
4.1.14. Grafik Sürücü ve
Modunun Otomotik Tespiti (Detect) -161 4.1.15. Grafik Hata Kontrolü -161
4.2. Uygulama (Dijital ve Analog Saat)-162 4.2.1. Dos Kütüphanesi (Uses Dos) -166 4.2.2. Yazý Ayarlarý Kaydý (TextSettingsType) -166 4.2.3. Yazý Ayarlarýnýn Alýnmasý (GetTextSettings)-166 4.2.4. Yazý atilini Ayarlama (SetTextStyle) -166 4.2.5. Yazý Konumunu Ayarlama (SetTextJustify)-167 4.2.6. Karakter Büyüklüðü
Ayarlama (SetUserCharSize) -167
4.2.7. Yazý Geniþliðinin Alýnmasý (TextWidth) -168 4.2.8. Yazý Yüksekliðinin Alýnmasý (TextHeight) -168 4.2.9. Çember Çizimi (Circle) -168
4.2.10. Çizim Modunu Ayarlama (SetWriteMode)-168 4.2.11. Bilgisayar Saatini Okuma (GetTime) -169 4.2.12. Programýn Fonksiyonlarý -169
4.2.13. Programýn Prosedürleri -170
4.3. Uygulama (Hareketli Dairenin Takibi)-170 4.3.1. Elips Çizimi (Ellipse) -173
4.3.2. Doðru Çizimi (LineRel) -173
4.3.3. Ýmlecin Konumunu Deðiþtirme (MoveRel)-173 4.3.4. Grafik Ekrana Yazým (OutText) -174
4.3.5. Verilen Deðerin Ark Tanjantý (ArcTan) -174 4.3.6. Ark Çizimi (Arc) -174
4.3.7. Kontrol ve Fonksiyon Tuþlarýný Okuma -174 4.3.8. Program Ýþletimini Geciktirme (Delay) -175 4.3.9. Bilgisayarýn Hoparlöründen
Ses Üretimi (Sound) -175 4.3.10. Bilgisayar Hoparlörünü
Susturma (NoSound)-175 4.3.11. Mutlak Deðer (Abs) -175 5. G
5. GRAFÝKTERAFÝKTE BBÝRLEÞÝKÝRLEÞÝKÇÇÝZÝMÝZÝMVEVEAALANLAN TTARAMAARAMA-176 5.1. Uygulama (Öðrenciler Arasý
Baþarý Çubuk Grafiði)-176
5.1.1. Sabit Tanýmlý Diziler (Constant Array) -179 5.1.2. Desen ve Renk Kodu Kaydý
(FillSettingsType)-179 5.1.3. Mevcut Desen ve
Rengin Alýnmasý (GetFillSettings) -180
5.1.4. Desen ve Renk Kodu Deðiþimi (SetFillStyle)-180 5.1.5. Ýki Boyutlu Çubuk Grafik Çizimi (Bar) -180 5.1.6. Desen Dizi Veri Tipi (FillPatternType) -181 5.1.7. Grafik Pencere Alan Kaydý (ViewPortType)-181 5.1.8. Grafik Pencere Verilerinin
Alýnmasý (GetViewSettings) -181
5.1.9. Grafik Pencere Tanýmlama (SetViewPort) -181 5.1.10. Grafik Pencere Alanýnýn
Silinmesi (ClearViewPort) -182 5.1.11. Mevcut Desen Dizisinin
Alýnmasý (GetFillPattern) -182
5.1.12. Özel Desen Tanýmlama (SetFillPattern) -182 5.1.13. Üç Boyutlu Çubuk Grafik Çizimi (Bar3D)-183 5.2. Uygulama (Dersler Arasý
Baþarý Pasta Grafiði)-183
5.2.1. Programýn Sabit ve Sabit Tanýmlý Dizileri-185 5.2.2. Dairesel Pasta Grafik Çizimi (PieSlice) -185 5.2.3. Eliptik Pasta Grafik Çizimi (Sector) -186 6. G
6. GRAFÝKTERAFÝKTE ÇÇOKLUOKLUEEKRANKRANSSAYFALARIAYFALARI-187 6.1. Uygulama (Gülen ve Aðlayan Yüz)-187
6.1.1. Kapalý Alaný Renklendirme (FloodFill) -189 6.1.2. Çok Sayfalý Grafik Moduna Geçiþ -189 6.1.3. Aktif Ýþlem Sayfasý Seçimi (SetActivePage)-189 6.1.4. Aktif Görüntü Sayfasý
Seçimi (SetVisualPage) -189 7. G
7. GRAFÝKTERAFÝKTE ÝÝKÝKÝBBOYUTLUOYUTLU G
GEOMETRÝKEOMETRÝKDDÖNÜÞÜMLERÖNÜÞÜMLER-190
7.1. Uygulama (Kendi Etrafýnda Dönen Kutu)-190 7.1.1. Dörtgen Kutunun Ýlk Ýþlemleri -193
7.1.2. Dörtgen Kutuyu Döndürme Ýþlemleri -193 7.1.3. Grafik Alan Hacmi Bildirimi (ImageSize) -194 7.1.4. Dinamik Bellek Alaný Ayýrma (GetMem) -194 7.1.5. Grafik Alandan Belleðe
Kopyalama (GetImage) -194 7.1.6. Bellekten Grafik
Alanýna Kopyalama (PutImage) -194 7.1.7. Dinamik Bellek Alanýnýn
Boþaltýlmasý (FreeMem) -195 8. G
8. GRAFÝÐÝNRAFÝÐÝNDDÝÐERÝÐERKKOMUTLARIOMUTLARI-195 -DrawPoly, FillEllipse, FillPoly -195 -GetArcCoords, GetAspectRatio,
GetBkColor, GetDefaultPalette, GetDriverName, GetGraphMode -196 -GetLineSettings, GetMaxMode,
GetModeName, GetModeRange, GetPalette, GetPaletteSize, GetX -197 -GetY, GraphDefaults, InstallUserDriver,
InstallUserFont, RestoreCrtMode, SetAllPalette -198 -SetAspectRatio, SetGraphBufSize,
SetGraphMode, SetPalette, SetRGBPalette -199 B
BÖLÜMÖLÜM TTARAMAARAMASSORULARIORULARI-200 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-200
Ýçindekiler
1. Y
1. YENÝDENENÝDENTTANIMLIANIMLITTÝPLERÝPLER(R(REDEFINEDEDEFINEDTTYPES)YPES)-203 1.1. Prosedür ve Fonksiyonlarda
Yeniden Tip Tanýmý-203 2. S
2. SIRASALIRASALTTÝPLERÝPLER(E(ENUMERATEDNUMERATEDTTYPESYPES))-204 2.1. Yýlýn Mevsimlerini Tanýmlama Örneði-204
2.1.1. Sýrasal Tip Taným ve Ýþlemleri (YýlýnMevsimleri)-204
2.1.2. Deðiþken Hacmi Bildirimi (SizeOf) -205 2.1.3. Önceki Deðerin Bildirimi (Pred) -205 2.1.4. Sonraki Deðerin Bildirimi (Succ) -205 2.2. Tip Çevrimleri-206
2.3. Uygulama (Öðrenci Ders Notlarý Aðýrlýklý Ortalamasý)-206 3. A
3. ARALIKLIRALIKLI TTÝPLERÝPLER(S(SUBRANGEUBRANGETTYPESYPES))-207 3.1. Uygulama (Verilen Rakamýn Yazýlý Ýfadesi)-207 4. K
4. KAYITAYITTTÝPÝÝPÝ (R(RECORDECORDTTYPEYPE))-210
4.1. Öðrenci Kayýt Tipi Taným Örneði-210 4.2. With Deyiminin Kullanýmý-210
4.3. Nüfus Kayýt Tipi Tanýmlama Örneði-211 4.4. Uygulama (Sýnav Not Sýralý Öðrenci Listesi)-211 5. K
5. KÜMEÜMETTÝPÝÝPÝ(S(SETETTTYPEYPE))-213
5.1. Küme Tip Tanýmý ve Deðer Atama Örneði-213 5.2. Uygulama (Sesli Harf Geçiþleri)-214
5.2.1. Satýr Sonu Kontrolü (EoLn) -215
5.2.2. Küme Eleman Kontrolü (BirKr In Kume) -215 5.3. Küme Ýþlemleri (Set Operations)-215
5.3.1. Kesiþim Ýþlemi (Intersection Operation) -215 5.3.2. Birleþim Ýþlemi (Union Operation) -215 5.3.3. Fark Ýþlemi (Difference Operation) -216 5.3.4. Karþýlaþtýrma Ýþlemleri
(Relational Operations) -216 5.4. Uygulama (Not Geçiþ Aralýklarý)-216 6. P
6. PROSEDÜRROSEDÜRTTÝPÝÝPÝ(P(PROCEDURALROCEDURALTTYPE)YPE)-217 6.1. Prosedür Tip ile Üç Ýþlem Örneði-217
6.1.1. Uzak Adresleme Metodu (Far Call Model :{$F+}) -218
6.1.2. Özel Tanýmlý Prosedür Tip ve Deðiþkeni -218 6.1.3. Prosedür Tipi Deðiþkenin Yönlendirimi -218 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-219 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-220
1. V
1. VERÝERÝ DDOSYASIOSYASI VEVE TTÜRLERÝÜRLERÝ-223 2. S
2. SIRALIIRALIEERÝÞÝMLÝRÝÞÝMLÝDDOSYALAROSYALAR (S
(SEQUENTIALEQUENTIAL-T-TEXTEXTFFILESILES))-223 2.1. Metin Dosyasýnýn
Diðer Karakteristik Özellikleri-223 2.2. Metin Dosya Oluþturma ve Listeleme-224 2.3. Uygulama (Yeni Metin Dosyasý Oluþturma)-224
2.3.1. Metin Dosya Tipi (Text) -225
2.3.2. Dosya Ýle Ýliþki Kurulmasý (Assign) -225 2.3.3. Dosyanýn Yazým Modlu Açýlmasý (ReWrite)-225 2.3.4. Metin Dosyaya Yazma
Deyimleri (Write, WriteLn) -225 2.3.5. Dosyanýn Kapatýlmasý (Close) -226 2.4. Uygulama (Mevcut Metin
Dosyasýný Listeleme)-226 2.4.1. Dosya Mevcudiyetinin
Kontrolü (DosyaMevcutMu) -227 2.4.2. Giriþ/Çýkýþ Kontrolleri
Yönlendirimi ({$I-}, {$I+}) -227 2.4.3. Giriþ/Çýkýþ Ýþlemleri
Sonuç Bildirimi (IOResult) -227 2.4.4. Komut Satýrý
Parametre Sayýsý (ParamCount)-227
2.4.5. Komut Satýrý Parametre Adlarý (ParamStr)-228 2.4.6. Dosyanýn Okuma Modlu Açýlmasý (Reset)-228 2.4.7. Dosya Sonu Kontrolü (Eof) -228
2.4.8. Metin Dosyasýndan Okuma Deyimleri (Read, ReadLn) -228 3. M
3. METÝNETÝNDDOSYASIOSYASI KKAYITAYITKKONUMONUMDDÜZENÝÜZENÝ-229 3.1. Uygulama (Test Sýnavý
Sonuç Rapor Dosyasý)-230 4. M
4. METÝNETÝNDDOSYASININOSYASININDDÝÐERÝÐERKKOMUTLARIOMUTLARI-231 - Append, Eoln -231
5. D
5. DOÐRUDANOÐRUDANEERÝÞÝMLÝRÝÞÝMLÝ DDOSYALAROSYALAR (R
(RANDOMANDOM-B-BINARYINARYFFILES)ILES)-232 5.1. Doðrudan Eriþimli
Dosyalarýn Diðer Özellikleri-232 5.2. Doðrudan Eriþimli Dosya Türlerý-232 6.
6. TTANIMLANMIÞANIMLANMIÞTTÝPTEKÝÝPTEKÝDDOSYALAROSYALAR(T(TYPEDYPEDFFILES)ILES)-233 6.1. Standart Tipte Tanýmlý Dosyalar-233
6.2. Özel Tipte Tanýmlý Dosyalar-233 6.3. Uygulama (Kayýt Tipli
Yeni Test Dosyasý Üretimi)-234
BÖLÜM-9 DOSYALAR (FILES)-221
BÖLÜM-8 ÖZEL TANIMLI TÝPLER (USER DEFINED TYPES)-201
6.3.3. Dosya Kayýt Adedi (FileSize) -236 6.3.4. Dosyanýn Ýstenilen Kaydýna
Doðrudan Eriþim (Seek) -236 6.3.5. Dosyaya Kayýt Ekleme ve
Güncelleme (Write) -237 6.4. Uygulama (Test Netlerinin
Hesaplanýp Listelenmesi)-237 6.4.1. Dosyadan Kayýt Okuma (Read) -240 6.5. Uygulama (Öðrenci Test Sonuç Karnesi)-241 6.6. Dosya Kayýt Ýþlemlerinin
Ana Menüden Takibi-242 7.
7. TTANIMSIZANIMSIZTTÝPTEKÝÝPTEKÝDDOSYALAROSYALAR(U(UNNTTYPEDYPEDFFILESILES))-243 7.1. Uygulama (Dosyalarý Hýzlý
Kopyalama ve Þifreleme)-243 7.1.1. Tanýmsýz Tipli Dosya (File) -245 7.1.2. Dosyanýn Okuma ve Yazým
Modlu Açýlmasý (Reset, ReWrite) -245 7.1.3. Dosyadan Blok Veri Okunmasý (BlockRead)-245 7.1.4. Dosyaya Blok Veri Yazýlmasý (BlockWrite) -246 8.
8. SSIRALIIRALIVEVEDDOÐRUDANOÐRUDANEERÝÞÝMLÝRÝÞÝMLÝ D
DOSYAOSYAKKOMUTLARIOMUTLARI-246 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-247 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-248
1. D
1. DEÐÝÞKENEÐÝÞKENTTÜRLERÝÜRLERÝ-251
1.1. Statik Deðiþkenler (Static Variables)-251 1.2. Dinamik Deðiþkenler (Dynamic Variables)-251 2. B
2. BELLEKELLEKKKONUMONUMGGÖSTERGECÝÖSTERGECÝVEVE K
KULLANIMULLANIMÝÝHTÝYACIHTÝYACI-251 3. B
3. BELLEKELLEKKKONUMONUMGGÖSTERGECÝÖSTERGECÝ T
TANIMLAMAANIMLAMA VEVE AADRESDRESÝÝÞLEMLERÝÞLEMLERÝ-252 3.1. Bellek Konum Göstergeci
Deðiþkeniyle Ýþlemler-253 3.2. Uygulama (Adres Ýþlemleri)-253
3.2.1. Deðiþkenlerin Bellek Üzerindeki Diziliþi -254 3.2.2. Üst Adres Kesimi (Seg) -254
3.2.3. Alt Adres Kesimi (Ofs) -254 3.2.4. Tam Adres Bildirimi (Addr) -255 3.3. Uygulama (Ekrana Doðrudan Eriþim)-255
3.3.1. Tam Adres Göstergeci (Ptr) -256 3.4. Adres Komutlarý-256
- DSeg, CSeg, SSeg, Mem, MemW, MemL -256 4. B
4. BELLEKELLEKKKONUMONUMGGÖSTERGECÝYLEÖSTERGECÝYLE D
DÝNAMÝKÝNAMÝK AALANLANKKULLANIMIULLANIMI-257 4.1. Dinamik Bellek Alan Kullanýmý-257
4.1.1. Yeni Dinamik Bellek Alaný Açýlmasý (New) -257
4.1.2. Dinamik Bellek Alanýnýn Boþaltýlmasý (Dispose) -257 4.2. Dinamik Alan Komutlarý-258
- GetMem, FreeMem, MaxAvail, MemAvail -258 5. B
5. BELLEKELLEKKKONUMONUMGGÖSTERGECÝNÝNÖSTERGECÝNÝN D
DÝZÝYLEÝZÝYLE KKULLANIMIULLANIMI-258
5.1. Uygulama (Metin Editör Yönetimi)-259 6.
6. BBELLEKELLEKKKONUMONUMGGÖSTERGECÝYLEÖSTERGECÝYLEKKAYITAYITÝÝÞLEMEÞLEME-262 6.1. Uygulama (Konum Göstergeciyle
Not Listesi Yönetimi)-262 7. B
7. BAÐLIAÐLI LLÝSTELERÝSTELER(L(LINKEDINKEDLLISTSISTS))-265 8. T
8. TEKEK BBAÐLIAÐLILLÝSTELERÝSTELER(S(SINGLEINGLELLINKEDINKEDLLISTSISTS))-266 8.1. Tek Baðlý Liste Oluþturma-266
8.2. Uygulama (Tek Baðlý Liste Oluþturma ve Listeleme)-267 8.3. Uygulama (Tek Baðlý
Listede Arama ve Silme)-270 9.
9. ÇÇÝFTÝFTBBAÐLIAÐLILLÝSTELERÝSTELER(D(DOUBLEOUBLELLINKEDINKEDLLISTSISTS))-273 9.1. Çift Baðlý Listeye Yeni Düðüm Ekleme-273 9.2. Çift Baðlý Listeden Düðüm Silme-273 B
BÖLÜMÖLÜM TTARAMAARAMASSORULARIORULARI-274 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-274
1. Ö
1. ÖZYÝNELEMELÝZYÝNELEMELÝPPROGRAMLAMAROGRAMLAMA-277 1.1. Uygulama (Üs Hesabý)-277
1.2. Özyinelemeli Modüllerin Genel Çözümü-277 1.3. Uygulama (Faktöriyel Hesabý)-278
1.4. Özyinelemeli Problemin Çözüm Adýmlarý-278 1.4.1. Verilerin Tipi -278
1.4.2. Özyinelemenin Bitiþ Þartý -278 1.4.3. Verinin Küçültme Þekli -278 1.4.4. Parçalanmýþ Veri ile
Sonucun Elde Edilmesi -279 1.5. Uygulama (Tamsayý Dizisinin
En Büyük Elemaný)-279 1.6. Uygulama (Dizi Elemanlarýný
Kaydýrmadan En Büyüðü Bulma) -280 2. Ö
2. ÖZYÝNELEMELÝZYÝNELEMELÝAALTLTPPROGRAMLARDAROGRAMLARDA D
DEÐÝÞKENLERÝNEÐÝÞKENLERÝNYYIÐITTAIÐITTASSAKLANMASIAKLANMASI-281 2.1. Uygulama (Hanoi Kulelerinde Yer Deðiþimi)-281 2.2. Uygulama (Bir Kümenin Permutasyonlarý)-283 B
BÖLÜMÖLÜM TTARAMAARAMASSORULARIORULARI-286 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-286
BÖLÜM-11 ÖZYÝNELEME (RECURSION)-275
BÖLÜM-10 BELLEK KONUM
GÖSTERGECÝ (POINTER)-249
Ýçindekiler
1. E
1. EKLEYEREKKLEYEREKSSIRALAIRALA(I(INSERTIONNSERTION SSORTORT))-290 1.1. Ekleyerek Sýralama Prosedürü-290 1.2. Ekleyerek Sýrala Etkinlik Raporu-290 2. K
2. KABARCIKABARCIK SSIRALAIRALA(B(BUBBLEUBBLESSORTORT))-290 2.1. Kabarcýk Sýralama Prosedürü-291 2.2. Uygulama (Metin
Dosyasýnýn Karakter Frekansý)-291 2.3. Kabarcýk Sýrala Etkinlik Raporu-294 3. S
3. SEÇEÇ SSIRALAIRALA(S(SELECTIONELECTIONSSORTORT))-294 3.1. Seç Sýrala Prosedürü-294 3.2. Uygulama (Metin Dosyasý Kelimelerini Sýralama)-294 3.3. Seç Sýrala Etkinlik Raporu-298
3.4. Seç Sýrala Metodunun Özyineli Prosedürü-298 4. Ý
4. ÝKÝLÝKÝLÝBBÖLEREKÖLEREKSSIRALAIRALA(S(SHELLHELLSSORTORT))-298 4.1. Ýkili Bölerek Sýralama Prosedürü-299 4.2. Ýkili Bölerek Sýralama Etkinlik Raporu-299 5. H
5. HIZLIIZLISSIRALAIRALA(Q(QUICKUICKSSORTORT))-299 5.1. Hýzlý Sýralama Prosedürü-300
5.2. Uygulama (Öðrenci Not Listesi Sýralamalarý)-300 5.3. Hýzlý Sýrala Etkinlik Raporu-304
B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-304 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-304
1. S
1. SIRALIIRALIAARAMARAMA (L(LINEARINEARSSEARCHEARCH))-307 1.1. Sýralý Arama Fonksiyonu-307 1.2. Sýralý Arama Etkinlik Raporu-308 2. Ý
2. ÝKÝLÝKÝLÝAARAMARAMA(B(BINARYINARYSSEARCHEARCH))-308 2.1. Ýkili Arama Fonksiyonu-308 2.2. Uygulama (Öðrenci Not
Dosyasýnda Ýkili Arama)-308 2.3. Ýkili Arama Etkinlik Raporu-311
2.4. Ýkili Arama Metodunun Özyineli Fonksiyonu-311 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-312 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-312
1. K
1. KESMELERÝNESMELERÝN KKULLANIMIULLANIMI-315
1.1. Kesmelerde Yazmaç Kullanýmý-315
2. F
2. FAREAREKKESMELERÝESMELERÝ-317 2.1 Uygulama (Fare Ýþlemleri
Prosedür ve Fonksiyonlarý)-317 2.2 Uygulama (Fare ile
Dikdörtgen ve Daire Çizdirme)-319 2.2.1. Programa Dosya
Dahil Edilmesi ({$I DosyaAdý}) -321 2.2.2. Farenin Mevcut Konumunu Alma -322 2.2.3. Fareyle Ara Dikdörtgenler Çizimi -322 2.2.4. Daire Olarak Otuzikigen Çizimi -322 2.2.5. Menü Seçenekleri Çizimi -322 2.2.6. Farenin Sol Tuþuna
Basýldýðý Sürece Bekle -323 3. S
3. SHIFTHIFTBBAYRAKLARIAYRAKLARI-323
3.1. Uygulama (Shift Bayraklarýnýn Durum Kontrolü)-323
3.1.1. Simgesel (Assembly) Kod Ekleme -324 3.1.2. Saða ve Sola Kaydýrma
Operatörleri (Shr, Shl)-324 3.1.3. Tamsayýnýn 1 ile And
Ýþlemine Tabi Tutulmasý-325 4. K
4. KESMENÝNESMENÝNDDÝÐERÝÐERKKOMUTLARIOMUTLARI-325 - GetIntVec, MsDos, SetIntVec -325 B
BÖLÜMÖLÜMTTARAMAARAMASSORULARIORULARI-326 P
PROGRAMLAMAROGRAMLAMASSORULARIORULARI-326
1. A
1. ASCIISCIITTABLOABLO-329 2. A
2. AYRILMIÞYRILMIÞKKELÝMELERELÝMELERVEVESSTANDARTTANDARTÝÝFADELERFADELER-330 3. D
3. DÝÐERÝÐERSSTANDARTTANDARTKKOMUTLAROMUTLAR-330 4. C
4. CRTRTKKÜTÜPHANESÝNÝNÜTÜPHANESÝNÝN DDÝÐERÝÐERKKOMUTLARIOMUTLARI-331 5. D
5. DOSOSKKÜTÜPHANESÝNÝNÜTÜPHANESÝNÝNDDÝÐERÝÐERKKOMUTLARIOMUTLARI-332 5.1. Tarih ve Saat Komutlarý-332
5.2. Disk Durum Komutlarý-333 5.3. Dosya Ýþleme Komutlarý-333 5.4. Ýþletim Komutlarý-335 6. P
6. PRINTERRINTER KKÜTÜPHANESÝÜTÜPHANESÝ-336 7. K
7. KÜTÜPHANEÜTÜPHANEOOLUÞTURMALUÞTURMA-336
7.1. Kütüphane Baþlýðý (Unit Name)-337 7.2. Tanýmlama Kesimi (Interface)-337
7.3. Gerçekleþtirim Kesimi (Implementation)-337 7.4. Ýlk Ýfadeler (Initialization)-337
8. F
8. FORWARDORWARD(P(PROCEDUREROCEDUREDDIRECTIVEIRECTIVE))-337 9. T
9. TURBOURBO PPASCALASCALHHATAATAMMESAJLARIESAJLARI-338
BÖLÜM-15 EKLER (APPENDIX)-327
BÖLÜM-14 KESMELER (INTERRUPTS)-313
BÖLÜM-13 ARAMA (SEARCHING)-305
BÖLÜM
1
PROGRAM GELÝÞTÝRME
(PROGRAMMING)
BÖLÜM
1
PROGRAM GELÝÞTÝRME
(PROGRAMMING)
1. V
1. VERÝERÝ ÝÝÞLEMEÞLEME (D(DATATAA PPROCESROCESSINGSING)) 2. V
2. VERÝERÝ ÝÝÞLEMEÞLEME TTARÝHÇESÝARÝHÇESÝ 3. B
3. BÝLGÝSAÝLGÝSAYARDYARDAA VVERÝERÝ ÝÝÞLEMEÞLEME VEVE SSAKLAMAAKLAMA
3.1. Ýkilik Sayý Düzeni (Binary Numbers)
3.2. Onaltýlýk Sayý Düzeni (Hexadecimal Numbers)
4. B
4. BÝLGÝSAÝLGÝSAYARINYARIN GGENELENEL YYAPISIAPISI
4.1. Ana Bellek (Ram)
5. P
5. PROGRAMROGRAMGGELÝÞTÝRMEELÝÞTÝRME MMETODUETODU
5.1. Problemi Anlama
5.2. Çözüm Metodu Geliþtirme (Analiz)
5.3. Çözüm Metodunun Adýmlandýrýlmasý (Tasarým) 5.4. Programý Kodlama (Uygulama)
5.5. Programýn Testi (Test Ýþletimi)
6. P
6. PROGRAMROGRAMGGELÝÞTÝRMEDEELÝÞTÝRMEDE AAKIÞKIÞÞÞEMALARIEMALARI
6.1. Sýralý Akýþ (Sequential Flow)
6.1.1. Problem (Çember Alan ve Çevre Hesabý) 6.2. Þartlý Akýþ (Conditional Flow)
6.2.1. Problem (Üçgenin Eþkenarlýk Kontrolü) 6.3. Tekrarlý Akýþ (Repetitive Flow)
6.3.1. Problem (1’den 100’e Kadar Sayýlarýn Yazdýrýlmasý) 6.3.2. Problem (Girilen N Adet Sayýnýn Ortalamasý) 6.3.3. Problem (Girilen N Adet Sayýnýn En Büyüðü)
7. P
7. PROGRAMLAMAROGRAMLAMADDÝLLERÝÝLLERÝ
7.1. Yüksek Seviyeli Diller 7.2. Simgesel (Assembly) Dil 7.3. Makine Dili
Program Geliþtirme (Programming) Bölüm-1
Pascal ve Program Geliþtirme
3
Program geliþtirmek, günlük hayatta karþýlaþýlan problemleri çözmeye benzer. Ne kadar iyi problem çözebiliyorsanýz, o kadar iyi programlar yapa-bileceðiniz söylenebilir. Nasýlki günlük hayattaki problemleri çözmede, kýsa ve uzun metotlar vardýr; aynen öyle de programlar da kýsa ve uzun yollardan çözülebilir. Önemli olan en kýsa, en anlaþýlýr ve en hýzlý çözümü bulmaktýr.
Problemlerin çözümünde kendi düþünce sistemimiz çok önemlidir. Bir soru sorulduðunda, hiç düþünmeden kolayca cevap verebilme, insanýn hýzlý düþünebilme yeteneðinden kaynaklanýr. Ve bu hýzla cereyan eden düþünme süreci içerisinde, elbette takip edilen bir çözüm metodu vardýr. Sonra da bu metodun, bilgisayarýn anlayacaðý program kodlama kurallarýna göre uyarlanmasý gerekir. Bazen kýsa olan bir çözüm sistemi, bilgisayara uyarlandýðýnda daha uzun veya tersi olabilir.
1. V
1. V
ERÝERÝÝ
Ý
ÞLEMEÞLEME(D
(D
AATTAAP
P
ROCESSINGROCESSING)
)
Veriler, hammadde (giriþ verileri) olarak bilgisayara sunulur. Ýþlenen bu veriler daha fay-dalý bilgiye dönüþtürülüp (veri iþleme), hazýr bir ürün (çýkýþ bilgisi) olarak takdim edilir.2. V
2. V
ERÝERÝÝ
Ý
ÞLEMEÞLEMETARÝHÇESÝ
T
ARÝHÇESÝBilgisayar, donaným ve yazýlým olarak iki ana bileþenden oluþur. Donaným bilgisayarýn elle tutulan, gözle görülen fiziksel kýsmýdýr. Yazýlým ise donanýmýn verimli bir þekilde kul-lanýlmasýný saðlayan programdýr.
Önceleri hesaplamalar için, donaným olarak elin parmaklarý, fasulye taneleri veya abaküs gibi aletler kullanýlmýþtýr. Bilgi saklamak için de defter ve kalem kullanýlmýþtýr. Yazýlým olarak ise, onluk sayma sisteminde toplama, çýkarma, çarpma ve bölme gibi yöntemler geliþtirilmiþtir.
Zaman ilerledikçe çok daha fazla iþlem yapýlmasý gerekir oldu. Özellikle çarpma ve bölme iþlemleri çok vakit alýyordu. Bunun üzer-ine geçen yüzyýlda logaritma tablolarýný kulla-narak çarpma yapma mantýðý ortaya atýldý.
BÖLÜM-1
PROGRAM GELÝÞTÝRME
(PROGRAMMING)
16 x 32 a) log216=4, log232=5 b) 4+5=9, 29=512 Örnek: 16 x 32 =?Çözüm :Logaritma tablolarý sayesinde sayýlarýn önce 2 tabanýna göre logaritma deðerleri bulunuyor (a). Bu deðerler toplanýp, sonucun ters logaritma karþýlýðýna bakýlýyor (b). Böylece çarpma iþlemleri kolaylaþýyordu.
Bu fikirler üzerine, hesaplama tablosu için gerekli donanýmlar üretildi. Ýlk olarak Napier’s bones, ardýndan da sürgülü hesap cetveli (slide rule)geliþtirildi. Bu cetvel bir asýr evveline kadar kullanýldý. Pascal, bir hesap makinesi yaptý; ama çok hata yaptýðýndan tutulmadý. 1820’de ise Charles Babbage bugünkü bilgisayarýn birçok özelliklerini içeren analitik bir makine yaptý. Bu makine, birçok karmaþýk iþlem-leri yapmak üzere programlanabiliyordu.
Bütün bu buluþlar ve fikirler bugünkü bilgisayarlarýn temellerini oluþturdu ve ilk elektronik bilgisayar 1930’da Atanasoff tarafýndan Iowa State Üniversitesinde tasarlandý. 1946’da ise Pensilvanya Üniversitesinde ENIAC ismiyle üretildi. Bu bilgisayar çok aðýr ve büyüktü. Ýlk ticari olarak satýlan bilgisayar, 1951’de çýkan UNIVAC oldu ve bu þekilde bilgisayarlarýn hýzlý geliþimi devam etti.
Yakýn zamana kadar bilgisayarlar, sayýlý kiþilerin alabileceði ve eve sýðmayacak büyüklükte olan makinelerdi; ama bugün herkes evine bir bil-gisayar alabilecek duruma gelmiþtir ve günlük hayatýnda kullanabileceði bir makine olmuþtur.
3. B
3. BÝLGÝSA
ÝLGÝSAYYARDARDAAV
V
ERÝERÝÝ
Ý
ÞLEMEÞLEME VEVES
S
AKLAMAAKLAMABilgisayarda bilgiler, 0 ve 1 kümelerinden oluþur. Bunun sebebi, bilgi-lerin elektronik devreler üzerinde ifade edilebilmesini saðlamaktýr. Bilgileri oluþturan 0 ve 1’ler, bu devreler üzerinde birbirine göre farklý voltaj seviyeleriyle temsil edilirler.
Bilgisayarýn iþleyebileceði en küçük bilgi parçasýna (0 veya 1)bit
denir. 8 bit’in bir araya gelmesiyle oluþan anlamlý en küçük bilgiye de byte
denir.
Günlük hayatta kullanýlan bilgiler 0 ve 1’lerden oluþmamaktadýr. Kullanýlan sayýlar, harfler ve resimler ilk önce bilgisayarýn anlayacaðý bilgiye, yani ikili sayý sistemine dönüþtürülür. Ýþlemlerin tümü bu sistemde yapýlýr, sonuçlar bu sistemle üretilir ve çýkýþ kullanýcýnýn anlayabileceði onluk sis-teme geri dönüþtürülür.
Bilgi dönüþümü için birçok yöntem geliþtirilmiþtir. Bu yöntemlerden ‘A’ .. ’Z’ : 65 .. 90
Program Geliþtirme (Programming) Bölüm-1
Pascal ve Program Geliþtirme
5
arasýnda deðiþir.
3.1. Ýkilik Sayý Düzeni (Binary Numbers)
Bir sayýyý ikilik düzene çevirmek için, sayý sürekli ikiye bölünür ve kalanlar tersten okunur. Örneðin, 13 sayýsýnýn ikilik düzene çevrimi yandaki gibidir:
Ýkilik düzendeki bir sayýyý onluk düzene çevirmek için, en saðdan baþlayarak rakamlar 2’nin üsleriyle çarpýlýr ve sonuçlar toplanýr.
3.2. Onaltýlýk Sayý Düzeni (Hexadecimal Numbers)
Ýkilik düzende uzun olarak ifade edilebilen bir sayý, onaltýlýk düzende çok daha kýsa gösterilebilir. Bu da anlaþýlýrlýðý
artýrýr.
4 basamaklý ikilik düzendeki bir sayý, onaltýlýk düzendeki 1 basamaklý rakama karþýlýk gelir. Ýkilik düzende 2’ye kadar 0 ve 1 rakamlarý, onluk düzende 0 ile 9 arasýndaki rakamlar, onaltýlýk düzende ise 0 ile 15 arasýn-daki rakamlar kullanýlabilir. 10 ile 15
arasýnda-ki rakamlarý temsilen tek basamaklý harfler (A .. F) kullanýlýr.
4. B
4. B
ÝLGÝSAÝLGÝSAYYARINARING
G
ENELENELYAPISI
Y
APISIBilgisayarda temel olarak, giriþ birimi, çýkýþ birimi, merkezi iþlem biri-mi ve veri saklama birimleri bulunur. Veriler bilgisayara giriþ birimleri (klavye, fare,..) vasýtasýyla aktarýlýr. Ýþlenen veriler, çýkýþ birimleri (ekran, yazýcý,..) aracýlýðýyla kullanýcýya sunulur. Merkezi iþlem birimi, aritmetik, mantýk iþlemlerini ve bilgisayarýn genel yönetimini üstlenir. Veri saklamak için ana bellek ve ikincil bellek (secondary storage) adý verilen iki ayrý birim bulunur. Ana bellekte veriler bilgisayar açýk olduðu müddetçe tutulur. Disket ve sabit disk gibi ikincil bellekler ise verilerin bilgisayar kapalýyken dahi sak-landýðý birimlerdir.
Bir program sabit diskten çalýþtýrýldýðýnda ana belleðe kopyalanýr ve merkezi iþlemci (CPU-Central Processing Unit) ile olan haberleþmesi ana bellekten devam eder. Bunun sebebi, ana belleðin, sabit diske göre çok daha hýzlý eriþimli olmasýndandýr.
Bilgisayarda, iþlenecek veriler giriþ birimlerinden veya ikincil bellekten
Örnek: (FE)16= (?)2 Çözüm : (F)16=(1111)2, (E)16=(1110)2, (FE)16=(11111110)2 Örnek: (10100011)2= (?)16 Çözüm : Ýlk 4 bit, (1010)2 =(10)10 =(A)16 Sonraki 4 bit, (0011)2 =(3)10 =(3)16 =(A3)16 Örnek: (1101)2= (?)10 Çözüm :(1101)2 = 1 x 20 + 0 x 21 + 1 x 22 + 1 x 23 = 1 + 0 + 4 + 8 = 13
ana belleðe gelir. Ýþlemci bu verileri ana bellekten alýr, iþler ve sonuçlarý yeniden ana bellekte saklar. Ana bellekteki bu veriler, istenildiðinde çýkýþ bir-imlerine gönderi-lebilir. Bilgilerin uzun süre saklanmasý için ikincil bellekler kullanýlýr.
Bilgisayardaki bilgi akýþý aþaðýda olduðu gibidir:
4.1. Ana Bellek (Ram)
Ana bellek, programlama açýsýndan en önemli birimlerden biridir. Ana bellek, arka arkaya dizilmiþ milyonlarca veri hücresinden oluþur. Bu hücrelerin herbirisinin bir adresi vardýr ve bu adres vasýtasýyla doðrudan eriþilebilir. Her bir hücre bilgi içerir. Bir hücreye bilgi yazýldýðýnda eski bilgi tamamen yok olur ve bir daha elde edilemez.
Ana bellekte bilgiler, bilgisayar açýk olduðu müddetçe tutulabilir. Bu sebeple bilgiler, bilgisayar kapatýlmadan önce disket, disk gibi ikincil bellek ortamýna kaydedilmelidir.
5. P
5. P
ROGRAMROGRAMG
G
ELÝÞTÝRMEELÝÞTÝRMEM
M
ETODUETODUSorulan programýn geliþtirilebilmesi için birçok aþamadan geçilmesi gerekmektedir. Bu aþamalar þu þekilde sýralanabilir:
5.1. Problemi Anlama
Bir problemin çok iyi þekilde anlaþýlmasý gerekir. Problemin çözümü için hangi verilerin elde olduðu ve istendiði iyi bilinmelidir. Ýyi bilinmeyen bir konu üzerinde program yapýlmasý isteniyorsa, evvela konunun araþtýrýlýp öðrenilmesi gerekir. Þayet problem net bir þekilde anlaþýlmaz ise, program geliþtirmenin ortasýnda deðiþikliklere gitmek çok daha zor olacaktýr.
Program Geliþtirme (Programming) Bölüm-1
Pascal ve Program Geliþtirme
7
gramlara bölmek ise, en iyi baþlangýçlardan birisidir.
5.3. Çözüm Metodunun Adýmlandýrýlmasý (Tasarým)
Çözüm metoduna iliþkin somut adýmlar belirlenir. Herbir adým kendi içinde kapalý bir noktasý kalmayýncaya kadar detaylandýrýlýr.
5.4. Programý Kodlama (Uygulama)
Belirlenen somut adýmlar, seçilen bir bilgisayar dilinin kurallarý çerçevesinde kodlanýr. Program kodlamada yapýlabilecek yazým hatalarý, dilin kurallarýna göre düzeltilir.
5.5. Programýn Testi (Test Ýþletimi)
Bir program her ne kadar bitmiþ gözükse de birçok hatalar içerebilir. Bir veri için çalýþýp, baþka bir veride yanlýþ sonuçlar üretebilir. Bu yüzden program kritik bazý uç deðerlerle test edilip, tam doðru çalýþtýðýna emin olun-malýdýr.
Çoðu yazýlým þirketleri programlarýný piyasaya sürmeden önce, den-eme sürümlerini (beta versions) belirlediði bazý kiþi ve kurumlara daðýtýr. Onlardan gelen istek ve hata bildirimlerini göz önüne alarak programlarýnýn yeni sürümlerini üretirler.
6. P
6. P
ROGRAMROGRAMG
G
ELÝÞTÝRMEDEELÝÞTÝRMEDEA
A
KIÞKIÞÞ
Þ
EMALARIEMALARIBu konu baþlýðý altýnda örnek problemler verilecektir. Hedef, bu prob-lemlere en kýsa ve anlaþýlýr çözümler bulmaktýr. Bu problemlerin çözümünde, yukarýda belirtilen program geliþtirme metodunun aþamalarý (analiz, tasarým, program kod ve test) takip edilecektir. Yalnýz, program kodu ve testi yerine akýþ þemasý çizilecektir.
Akýþ þemasý (flowchart), programcý tarafýndan hazýrlanan ve pro-gramýn genel görünümünü, planýný, akýþ yönünü ve sorunun çözümündeki adýmlarý kapsayan çizimsel bir gösterimdir.
Bir resim birçok kelimeden daha fazla anlam ifade eder kaidesince, akýþ þemasý programýn anlaþýlýr olmasýný saðlar. Program kodu, Ýngilizce yazýlmýþ bir metin gibi olduðundan, hatayý bulmak zorlaþabilir. Halbuki akýþ þemasýndaki çizimsel akýþ, hatayý bulmayý kolaylaþtýrýr.
Genel olarak programlarýn kod akýþý üç ana gruba ayrýlýr: 1. Sýralý Akýþ (Sequential Flow),
2. Þartlý Akýþ (Conditional Flow), 3. Tekrarlý Akýþ (Repetitive Flow).
6.1. Sýralý Akýþ (Sequential Flow)
Bütün iþlemlerin sýrayla birbirini takip ettiði akýþtýr. Daha evvelki iþlem-lere geri dönülmez ve karþýlaþtýrma yapýlmaz. Yandaki þekilde, adýmlar halinde belirtilen her bir kutuya iþlem (process) kutusu denir.
6.1.1. Problem (Çember Alan ve Çevre Hesabý)
Yarýçapý verilen çemberin alanýný ve çevresini hesaplayan program akýþýný geliþtiriniz.
Çemberin yarýçapý okunur. Alan=Pi x r2 ve Çevre=2 x Pi x r formül-leriyle hesaplanýr ve sonuçlar ekrana yazdýrýlýr.
6.2. Þartlý Akýþ (Conditional Flow)
Þartlý akýþta bir karþýlaþtýrma ifadesi vardýr. Bu ifadenin doðru olmasý durumunda bir koldan, yanlýþ olmasý durumunda diðer koldan gidilir. Þartlý yola tek yoldan girilir ve kollardaki iþlemler bittikten sonra da tek bir yolda birleþip yola devam edilir.
Karþýlaþtýrma doðruysa (E:Evet), Ýþlemler1 yapýla-caktýr. Bu adýmda pek çok iþlemler yaptýrýlabilir. Hatta
Ýþlemler1 kýsmýna yeni bir karþýlaþtýrma daha eklenebilir. 1. Çemberin yarýçapýný oku.
2. Alaný hesapla;
2.1. Yarýçap deðerinin karesini, pi sayýsý ile çarp (Alan=Pi x r2) 3. Çevresini hesapla;
3.1. Yarýçap deðerinin iki katýný pi sayýsý ile çarp (Çevre=2 x Pi x r) 4. Hesaplanan, alan ve çevre deðerlerini ekrana yazdýr
ve programý sonlandýr.
Çözümün Adýmlandýrýlmasý (Tasarým) ve Akýþ Þemasý Çözüm Metodu (Analiz)
Program Geliþtirme (Programming) Bölüm-1
Pascal ve Program Geliþtirme
9
6.2.1. Problem (Üçgenin Eþkenarlýk Kontrolü)
Üç kenarýnýn uzunluðu girilen bir üçgenin eþkenar olup olmadýðýný test edecek program akýþýný geliþtiriniz.
Üçgenin üç kenar uzunluðu okunur. 1. kenar ile 2. kenar uzunluðu
karþýlaþtýrýlýr. Bu kenarlar birbirine eþitse ve 3. kenara da eþitse, üçgen eþkenardýr. Diðer tüm durumlarda üçgen eþkenar deðildir.
6.3. Tekrarlý Akýþ (Repetitive Flow)
Þu ana kadarki bütün iþlemler sadece bir defa yapýl-maktaydý. Halbuki bilgisayarýn en büyük avantajý, ayný iþlem-leri hiç sýkýlmadan çok defa tekrar edebilmesidir.
Genel olarak üç tip tekrarlý akýþ sayýlabilir:
Birincisinde, karþýlaþtýrma doðru olduðu müddetçe iþlemler yapýlýr. Karþýlaþtýrma yanlýþ olduðunda programýn sonraki adýmýna geçilir.
Bu akýþýn iþlemler kýsmýnda, karþýlaþtýrmayý yanlýþ duru-ma getirecek bir ifade bulunduru-malýdýr. Aksi halde programýn diðer adýmlarýna geçiþ saðlanamaz.
Ýkincisinde, birincisinden farklý olarak, önce iþlemler 1. Üç kenar uzunluðunu oku.
2. 1. kenar ile 2. kenar uzunluðunu karþýlaþtýr;
2.1. 1. ve 2. kenar eþitse, birini 3. kenar ile de karþýlaþtýr; 2.1.1. Eþitse, ekrana “Üçgen eþkanardýr” yazdýr. 2.1.2. Eþit deðilse, ekrana “eþkanar deðildir” yazdýr. 2.2. 1. ve 2. kenar eþit deðilse ekrana “eþkenar deðildir” yazdýr. 3. Programý sonlandýr.
Tasarým ve Akýþ Þemasý Analiz
sonra karþýlaþtýrma yapýlýr ve karþýlaþtýrma doðru olana kadar iþlemler devam eder.
Üçüncüsünde ise iþlemler belli sayýda (N adet) tekrar eder ve sonraki iþlem adýmýna geçilir.
6.3.1. Problem (1’den 100’e Kadar Sayýlarýn Yazdýrýlmasý)
1’den 100’e kadar sýralý sayýlarý yazdýran program akýþýný geliþtiriniz. Sayma iþlemine 1 ile baþlanýr. Sayaç, ekrana yazdýrýlýr ve deðeri bir artýrýlýr. Bu iþlemlere sayaç 100’den küçük veya eþit olduðu sürece devam edilir.
Tasarým ve Akýþ Þemasý Analiz
Program Geliþtirme (Programming) Bölüm-1
Pascal ve Program Geliþtirme
11
Sayaç önce 1 deðerini alýr ve karþýlaþtýrma iþlemi yapýlýr. Karþýlaþtýrma doðru olduðundan ekrana sayacýn deðeri yazýlýr ve deðeri bir artýrýlýr. Sayaç 2 olduðunda karþýlaþtýrma doðru olup ekrana yazýlýr. Bu þekilde sayaç artýrýlarak deðeri 101 olana kadar devam eder.
6.3.2. Problem (Girilen N Adet Sayýnýn Ortalamasý)
Girilen N sayýnýn ortalamasýný bulacak program akýþýný geliþtiriniz. Analiz
Akýþ Testi
1. Sayacý 1’e eþitleyerek, sayma iþlemini baþlat.
2. Sayaç ile 100’ü karþýlaþtýr. Küçük veya eþit olduðu sürece; 2.1. Sayacý ekrana yazdýr.
2.2. Sayacý bir artýr. 3. Programý sonlandýr.
Örnek Toplam
MOV AX, Sayi1 MOV BX, Sayi2 ADD AX, BX MOV Toplam, AX
Kaç adet sayý girileceði (N) okunur. 1’den N’e kadar sayýlar okunur ve toplama eklenir. En sonunda bulunan toplam deðeri, N’e bölünerek orta-lama elde edilir.
N adet sayýnýn toplanmasý, bir havuzu N adet musluðun doldurmasý-na benzetilebilir. Her sayý toplam havuzudoldurmasý-na ilave edilir.
6.3.3. Problem (Girilen N Adet Sayýnýn En Büyüðü)
N adet girilen sayý içinden en büyüðünü bulacak programý geliþtiriniz.
Kaç adet sayý girileceði (N) okunur. Ýlk sayý okunur ve bu sayý en büyük sayý olarak kabul edilir. Sayaç 1’e eþitlenir ve döngüye baþlanýr. Döngü içinde bir sayý okunur ve eski belirlenen en büyük sayýdan büyükse bu sayý en büyük olarak kabul edilir. Sayaç bir artýrýlýr ve N’den büyük olana kadar döngüye devam edilir. Döngü bitiminde en büyük sayý deðeri ekrana
Analiz Akýþ Testi
1. Kaç sayý okunacaðýný (N) al. 2. Toplamý sýfýrla.
3. N defa aþaðýdaki iþlemleri tekrarla (Sayaç <-- 1..N); 3.1. Bir sayý oku (Sayýk).
3.2. Okunan sayýyý toplama ekle (Toplam <-- Toplam + Sayýk). 4. Toplamý N’e bölerek ortalamayý hesapla
(Ortalama <-- Toplam / N).
5. Ortalamayý ekrana yazdýr ve programý sonlandýr. Tasarým ve Akýþ Þemasý