Professional Documents
Culture Documents
Mİ
LLÎ EĞİ
TİM BAKANLIĞI
MEGEP
(MESLEKİEĞİTİ
M VE ÖĞRETİ
M Sİ
STEMİ
NİN
GÜÇLENDİRİ
LMESİPROJESİ)
Bİ
LİŞİ
M TEKNOLOJİ
LERİ
ANKARA 2007
ğıtarafı
Milli Eğitim Bakanlı ndan geliş
tirilen modüller;
Talim ve Terbiye Kurulu Baş kanlığı nı
n 02.06.2006 tarih ve 269 sayı lıKararıile
onaylanan, Mesleki ve Teknik Eğ itim Okul ve Kurumları nda kademeli olarak
yaygınlaştı
rılan 42 alan ve 192 dala ait çerçeve öğretim programları nda
amaçlanan mesleki yeterlikleri kazandı rmaya yönelik geliş tirilmişöğretim
materyalleridir (Ders Notları
dır).
Modüller hiçbir ş
ekilde ticari amaçla kullanı ı
lamaz ve ücret karş ğ
lıında
satı
lamaz.
İ
ÇİNDEKİ
LER
AÇIKLAMALAR ....................................................................................................................ii
Gİ RİŞ.......................................................................................................................................1
ÖĞRENME FAALİ YETİ- 1 ...................................................................................................3
1. ALT PROGRAMLAR ......................................................................................................... 3
1.1. Modüller Halinde Programlama ...............................................................................3
1.2. Alt Program Tanı mlama ...........................................................................................7
1.3. Alt ProgramıKesmek ve Değ er Göndermek ............................................................8
1.4. Değ er Aktarı mı ....................................................................................................... 10
UYGULAMA FAALİ YETİ .......................................................................................... 12
ÖLÇME VE DEĞERLENDİ RME ................................................................................13
ÖĞRENME FAALİ YETİ- 2 ................................................................................................. 14
2. KULLANICI ARABİ Rİ Mİ ................................................................................................ 14
2.1. Kullanı cı Arabiriminde Pencere Tasarı mı .............................................................. 15
2.2. Örnek Uygulama..................................................................................................... 15
UYGULAMA FAALİ YETİ .......................................................................................... 20
ÖLÇME VE DEĞERLENDİ RME ................................................................................21
ÖĞRENME FAALİ YETİ- 3 ................................................................................................. 22
3. HATA Gİ DERME.............................................................................................................. 22
3.1. Kod Böceği Nedir? ................................................................................................. 22
3.2. Yazı m Hataları ........................................................................................................23
3.3. Çalı şma ZamanıHataları ........................................................................................ 24
3.4. Mantı k Hataları ....................................................................................................... 24
3.5. Adı mlamak ............................................................................................................. 25
UYGULAMA FAALİ YETİ .......................................................................................... 29
ÖLÇME VE DEĞERLENDİ RME ................................................................................30
ÖĞRENME FAALİ YETİ- 4 ................................................................................................. 31
4. DOSYALAMA .................................................................................................................. 31
4.1. Metin Dosyalar ....................................................................................................... 31
4.2. Rasgele Eriş imli Dosyalar ...................................................................................... 33
4.3. İkilik Dosyalar ........................................................................................................35
UYGULAMA FAALİ YETİ .......................................................................................... 37
ÖLÇME VE DEĞERLENDİ RME ................................................................................38
MODÜL DEĞERLENDİ RME .............................................................................................. 39
CEVAP ANAHTARLARI ..................................................................................................... 40
SÖZLÜK ................................................................................................................................ 41
KOD ÖRNEKLERİ ................................................................................................................42
ÖNERİ LEN KAYNAKLAR.................................................................................................. 49
KAYNAKÇA .........................................................................................................................50
i
AÇIKLAMALAR
AÇIKLAMALAR
KOD 481BB0026
ALAN Biliş
im Teknolojileri
YETERLİ
K ş
Alt programlar ve dosyalarla çalımaya hazı
rlı
k yapmak
Genel Amaç
Gerekli ortam sağlandı ğında, alt program
yazabilecek, kullanıcıdostu arabirimleri yapabilecek ve
hata düzeltme yöntemleri ile hatalarıdüzeltebileceksiniz.
MODÜLÜN AMACI Amaçlar
1. Alt program yazabileceksiniz.
2. Kullanı cı arabirimi yapabileceksiniz.
3. Programıtest edip, hataları nıdüzeltebileceksiniz.
4. Dosyaya bilgi yazmayıve okumayıyapabileceksiniz.
EĞİ
TİM ÖĞRETİ M Bilgisayar laboratuvarıve bu ortamda bulunan
ORTAMLARI VE bilgisayar, lisanslıiş ş
letim sistemi programıve akı
DONANIMLARI diyagramısembolleri ile ilgili panolar.
ii
Gİ
RİŞ
Gİ
RİŞ
Sevgili Öğrenci,
Programlama bir hünerdir. Bazıinsanlar doğal olarak diğ erlerinden daha iyidir, ama
herkes pratik yaparak iyi olabilir. Baş
aramamaktan korkmak yerine, kendinizi bu maharete
vererek, öğ renmek için uğraş ın. Programlama eğ lencelidir, fakat sinir bozucu olabilir ve
zamanı nızın da boşa geçmesine neden olabilir. Bu sebeple bu modülleri takip ederek, en az
sıkı
ntıve en yüksek memnuniyet ile programlamayıöğ reneceğiz.
1
2
ÖĞRENME FAALİ
YETİ
–1
ÖĞRENME FAALİ
YETİ- 1
AMAÇ
Mehmet
Programı
n tekrarlanan belli yerlerini alt program hâline getirebileceksiniz.
ARAŞ
TIRMA
1. ALT PROGRAMLAR
Hikâye veya roman yazar gibi, plansız olarak program yazılmamalı dır. Basit ş
ekilde
çalış
masısağ lanan programa yeni eklentiler yaptıkça program karı ş
ık ve anlaş ı
lmaz hâle
gelebilir. Kodları
nız okunmasızor olan çöp kodlara dönüş memelidir.
Sı
ralıkomutlar,
Dallanma komutlarıve
Döngü komutlarıdır.
3
“Sıralıkomutları ”ş ğ
u ana kadar yaptıı
mı z programlarda ifade ettik. Bu tip komutlar
alt alta yazılı
r, en sonunda program sonlandı
rı
lı
r.
4
Alt programlara “modül” diyebiliriz. Alt programlar hâlinde yazı
larak yapı
lan
programlamaya “modüler programlama” denir.
Şimdiye kadar yapı lan programlar tek parça halindeki “ana program”dan oluş
uyordu.
Sadece bir çeş
it iş
, görev yapabilir hâlde idi.
Sık kullanılan komut kümelerini alt program hâline getirebiliriz. Bu alt programlar
kod yazı mı nda genellikle “ana program”ı n üst kısmına yazı lı
r. Değ işken adlandı rmasıile
aynıkurallar çerçevesinde isimlendirilir ve alt programa neler yollanacağı , alt programdan
neler döneceğ i belirlenir. Açı klama satı
rlarıile önemli noktalarıbelirtebilir, alt programların
ne işe yaradığınıanlatabiliriz.
Başla Hesapla
2 sayı
sonuc = a^4 – 2*a*b
giriniz: a, b
Hesapla
Geri Dön
Sonucu
göster
Bitir
5
Alt programın ismini gerektiği yerlere yazıp, çağı ğ
rdıımı ş
zda program akııo program
kısmı na yönelir. Alt programda işlemler tamamlanı nca ana program kaldığıyerden devam
eder.
Alt programlarıayrıdosya olarak kaydetmeyiz. Hâlâ tek dosya hâlinde, ana program
ve alt programlarımı zdan oluş
an bir programı mız vardır.
Not:Şekillerdeki siyah olmayan diğer mavi ve kı rmızırenklerdeki oklarış ema çizerken sizin
yapmanı za gerek yoktur. Alt programa gidişve dönüş
ü belirtmek için yapı
lmı
ştı
r.
Prosedür: Bir iş
lem bloğ ş
u çalıtı
rılır, ama değer döndürmez.
Fonksiyon: İçine değ er yollanır, iş lenir ve kendi adı
na bir sonuç değ
eri
döndürür.
6
1.2. Alt Program Tanı
mlama
Yazdı ğımız mini programlarda bazıön değ erlerin girilmesi gerekebilir. Bunu bayrak
yarış ı
ndaki atletlerin birbirlerine bayraklarıvermelerine benzetebiliriz. Genellikle gönderilen
bilgileri parantez içine alı
rız.
…
Oku; "Öğrencinin adını giriniz ", öğrAd
Oku; "Öğrencinin soyadını giriniz ", öğrSoyad
Oku; "Öğrencinin diğer bilgilerini giriniz", öğrDetay
Yaz; öğrAd & öğrSoyad & öğrDetay
…
Oku; "Velinin adını giriniz ", veliAd
Oku; "Velinin soyadını giriniz ", veliSoyad
Oku; "Velinin diğer bilgilerini giriniz", veliDetay
Yaz; veliAd & veliSoyad & veliDetay
…
Tekrar eden kı
sı
mlarımodüler (prosedür) hâle getirelim:
Prosedür VeriGirişi
Prosedür Bitti
Başla
Yaz; "Öğrenci için"
VeriGirişi
Yaz; "Veli için"
VeriGirişi
Bitir
7
1.3. Alt Programı
Kesmek ve Değ
er Göndermek
Döngülerde olduğu gibi, bazışartlar meydana geldiğinde alt programı n sonlanıp, ana
programa dönmesi gerekebilir. Genellikle "çı
kış– exit" komutu ile alt programlar istenilen
yerden bitirilebilir.
Başla Hesapla
2 sayı
giriniz: a, b Evet “0’a bölünemez”
b=0 hata mesajını
göster
Hesapla Hayı
r
sonuc = a / b
sonuc
değerini
göster
Geri Dön Çı
kış
Bitir
Şekil 1.3’deki örnekte acaba “b” değişkeni, 0 olunca ekrana ne sonuç yazı
lı
r?
Başla
VeriGirişi("Öğrencinin")
VeriGirişi("Velininin")
Bitir
8
Örnek 1:
Fonksiyon VeriGirişi(Metin mesaj)
Oku; mesaj & " adını giriniz ", kişiAd
Oku; mesaj & " soyadını giriniz ", kişiSoyad
Oku; mesaj & " diğer bilgilerini giriniz ", kişiDetay
VeriGirişi = kişiAd & kişiSoyad & kişiDetay
Fonksiyon Bitti
Başla
Yaz; VeriGirişi("Öğrencin")
Yaz; VeriGirişi("Velinin")
Bitir
Örnek 2:
Fonksiyon Toplama(Sayısal sayı1, sayı2)
Toplama = sayı1 + sayı2
Fonksiyon Bitti
Başla
Yaz; Toplama(2, 4) //Ekrana 6 yazar
Yaz; Bölme(3, 0) //Ekrana "Hata" yazar
Bitir
Örnek 3:
Prosedür Onaylama(Sayısal Giriş)
Eğer Giriş <= 0 İse
Yaz; "0 veya daha düşük rakam girilemez!"
Eğer Bitti
Prosedür Bitti
Başla
Sayısal sayı1, sayı2, sonuç
Oku; "Alınan malın miktarını giriniz ", sayı1
Onayla(sayı1)
Oku; "Alınan malın fiyatını giriniz ", sayı2
Onayla(sayı2)
sonuç = sayı1 * sayı2
Yaz; "Ödenmesi gereken fiyat ",sonuç
Bitir
9
Örnek 4:
Fonksiyon Onaylama(Metin a, b)
Eğer (a = "Yönetici") Ve (b = "qweasd_123") İse
Onaylama = "Tamam" //Eğer yönetici ise onay verilir
Eğer Bitti
Fonksiyon Bitti
Başla
Metin isim, şifre, sonuç
Oku; "Kullanıcı isminizi giriniz ", isim
Oku; "Şifrenizi giriniz ", şifre
sonuç = Onayla(isim, şifre)
Eğer sonuç = "Tamam" İse
Yaz; "Kayıtlara ulaşabilirsiniz"
Değilse
Yaz; "Kayıtlara ulaşamazsınız!"
Eğer Bitti
Bitir
1.4. Değ
er Aktarı
mı
Alt programa veri ya “değer” ya da “referans” olarak aktarı lır. Parametreler ana
program ile alt program arası ş
nda veri akıı
nısağ
layan bir köprü kurulmasını sağlar.
Değ er olarak aktarmak demek, veriyi gönderen değişken ile veriyi alan değiş kenin
hafızada farklıyerlerde olmasıdı
r. Araları
nda bir yalı
tı
m vardı
r. Ana program ile alt program
arasında tek yönde veri akış
ıvardır.
Not: İ ki değiş kenin aynıdeğişkenmişgibi değerinin güncellenmesi istenir ise Basic dilinde “ByRef,
ByVal” veya Pascal “Var” gibi terimleri kullanı r. C dilinde ise iş
lı aretçiler ile değerleri güncel
tutabiliriz. Ana program ile alt program arası
nda çift yönlü veri alı
şveriş
i için dildeki uygun yöntemi
kullanmanı z gerekir.
Ana Program
Alt programda tanı mlanan değ işkenlere “yerel değ işkenler”; kod kı smı nda en üstte
tanımlı, tüm programda geçerli değişkenlere “global değ işkenler” denir. Alt programlar ile
global değ iş
kenler ile de haberleşme sağ lanabilir. Fakat program büyüdükçe, çok sayı da
değişken tanımlamak zorunda kalı nacağıiçin, bu daha karmaş ık bir yöntem haline gelir.
Parametrelerde tanımlanan değiş kenler, yerel değişkenler ile aynıömre sahiptir. Alt
program bitince, hafı zadan silinirler. Global değ işkenler ise program kapanınca, hafızadan
silinirler. Aş ağıdaki örnekte global değ işkenler ile alt program ve ana programı n
haberleş mesi vardır.
10
Örnek:
Sayısal notu
Metin derece
Prosedür KademeHesabı
Eğer notu > 80 İse
derece = "A"
Çıkış //değer aktarımı bitince prosedürden çıkılır
Eğer Bitti
Eğer notu > 60 İse
derece = "B"
Çıkış
Eğer Bitti
Eğer notu > 40 İse
derece = "C"
Çıkış
Eğer Bitti
Eğer notu > 20 İse //Son ihtimalde zaten prosedürden çıkılır
derece = "D"
Değilse
derece = "E"
Eğer Bitti
Prosedür Bitti
Başla
Oku; "Öğrenci notunu giriniz", notu
KademeHesabı
Yaz; derece
Bitir
11
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
12
ÖLÇME
ÖLÇMEVE
VEDEĞERLENDİ
DEĞ RME
ERLENDİ
RME
Ad(1)
OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
1. Bir programı
n bir baş
langı
cıvardı
r, birçok kere sonlandı
rı
lması
olabilir. ( )
2. Diğ
er programcı
ları ğ
n yaptıı
mız programları
mızıanlaması
na gerek yoktur. ( )
3. Her programı
n bir ana program kı
smıvardı
r. ( )
5. İ
ç içe komut yazı mı nda ne yapmamalı yız?
A) Tüm komutlar aynıhizada yazı lmalıdır
B) Blok baş langıç ve bitişkomutlarınıyapmalı yı z
C) İlk kapatılmasıgereken blok, en son yapı lan blok olmalıdı
r.
D) Blok açma ve kapatma sayı larıbirbirine eşit olmalı
dır.
6. Hangisi yapı
sal bir programlama komutu olarak kabul edilmez?
A) Döndür
B) Eğer
C) Git
D) Durum
13
ÖĞRENME FAALİ
YETİ
–2
AMAÇ
ÖĞRENME FAALİ
YETİ- 2
Programı
nı cıdostu (user friendly) arabirim yapabileceksiniz.
za kullanı
ARAŞTIRMA
Bilgisayarı
nızda kurulu programlardan hangisinin arabirimi size daha kullanı şlı
geliyor?
MS-DOS pencereleri, Windows pencereleri ve web sayfaları nın ara yüzlerini
karşılaştı
rı
nı
z, farklarınıbelirleyiniz.
Oyunlarda, oyuncu ile diğer nesneler (para çekme makinesi, bilgisayar, el
,ş
bilgisayarı ifreli kapı
lar…) arası nda nası
l iletiş
im kuruluyor, örnek araş
tı
rınız.
2. KULLANICI ARABİ
RİMİ
14
2.1. Kullanı
cıArabiriminde Pencere Tasarı
mı
İ
ş ş
letim sisteminizdeki pencereleri incelediyseniz, bazıkullanılınoktalar dikkatinizi
çekmiş
tir.
Şimdiye kadar yapı lan görsel programlama örneklerinde genellikle Visual Basic ve
Yunus dili kullanılmı ş
tır. Birçok programlama dili görsel arabirim yapabilmemize imkân
sağ
lar. Sı
k kullanılan programlama dillerine diğ er örnekler Delphi ve Visual C’dir.
İ
şletim sisteminden bağ ımsı z yazılı
m yapmak isterseniz, Java, Python ve web
programcılığıile ilgilenebilirsiniz. Şimdilik burada Visual Basic ile arabirim oluş
turma
denemesi yapacağız.
Şimdilik içinde program kodu olmayan, sadece görüntü olarak çalı şan bir program
m. Şu ana kadar kod yazı
yapalı mıile ilgili birçok örnek yaptı
k, görüntü ile ilgilenmemiş tik.
*
Paul Fitts, 1954 yı
lında yayımladı ğıergonomi ile ilgili kitabı
nda, bir iş
lemi tamamlamak için gerekli
hareketleri formül hâlinde belirlemiş
tir.
15
İlk düşüneceğ imiz konu, ne ile ilgili program yapacağımızdır. Örneğ
in dosya, düzen
ve yardı m menüsü olan basit bir not defteri tasarlayalı m. Boşformu uygun bir boyuta
getirdikten sonra gerekli nesneleri “Toolbox” penceresinden alı
yoruz.
Nesnelerimiz:
Button1: Kapat düğ mesi
Combobox1: Dosya türü seçmek için (içinde metin ve zengin metin yazı
yor)
Label1: “Dosya türü” yazı sı
RichEdit1: Not defterinin ası
l nesnesidir, içine yazıyazı
lacak kı
sı
mdı
r
StatusStrip1: “İ
lk programı mı z” yazı
lı
MenuStrip1: Ana menüyü bununla hazı rlayacağı z
ContextMenuStrip1: RichEdit1’e sağtuşmenüsü ekleyeceğiz
Nesneler ve özellikleri çok sayı da olduğu için burada tek tek özelliklerini
anlatamayacağız. Deneme yanılma ile çok güzel özellikler keş
fedebilirsiniz.
Basit bir not defterinde ne çok nesne varmı şdeğ il mi? Kim bilir kod kı
smıkaç satı
rdır,
ya da programcıkaç saat program ile uğ raşmı ştı
r. Saatlerce uğraşan programcı, programı
eğer kendi isteği ile ücretsiz olarak yayı
nlıyor ise çabalarınıtakdir etmek, maddi ve manevi
olarak destek vermek gereklidir.
16
Resim 2.2: İ
şte programı
nızı
n ilk hâli olan boşbir form
17
Resim 2.4: Programı
mızı
n çalı
ştı
rı
ldı
ğıan
Görüntü olarak hazı r hâle gelince artı k programlama kı smı na geçilebilir. Tüm
nesneleri, tüm komutlarıkullanmanı z gerekmez, zaten önemli olan bu değ ildir. Çok sevilen
programlarıincelerseniz bazı ları
nın çok sade olduğunu görürsünüz. Mesela “Biliş im
Sözlüğ ü” gibi. Sadece aranacak kelime giriliyor ve anlamıelde ediliyor.
Resim 2.5: Sı
k kullanı
lan nesneler
18
Resim 2.6: Bir alarm ve ı
sıtı
cısistemi arabirimi yapı
mı; akı
şşeması
nıve resmini inceleyiniz
19
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
20
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
Ad(1)
OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
1. MS-DOS uygulamaları
nda kullanı
cıarabirimi yoktur. ( )
21
ÖĞRENME FAALİ
YETİ
–3
AMAÇ
ÖĞRENME FAALİ
YETİ- 3
Programda oluş
an hatalarıgiderme yolları
nıöğreneceksiniz.
ARAŞ
TIRMA
Sevgili öğrenci, bu faaliyet öncesinde hazı
rlı
k amaçlıaş
ağı
da
belirtilen araştı
rma faaliyetlerini yapmalı
sı
nız.
Sadece yazı lı
mda mıhatalar vardı r? Şimdiye kadar meydana
gelen donanı m hataları nıaraş tı
rınız. Mesela, 1994 yı lı
nda intel Pentium
işlemcilerde FDIV bölme hatasıbulunmuş tu.
Bilgisayarda oluşan ilginç hata mesajlarınıaraş tı
rı
nız. Mesela, çöken bir iş
letim
sisteminde (mavi ekran) neler yazıyor olabilir?
3. HATA Gİ
DERME
Yazım Hatası
1962 yılı
nda NASA, Venüs gezegenini incelemek için “Mariner 1” adlıuydu
ı
gönderdi. Uyduyu taşyan roket hatalırota izlemeye baş
lamasıüzerine, patlatı
lmak zorunda
kalı
ndı.
Bir hikâyeye göre, bu bir “Döngü”den kaynaklanmı ş
tı
. Normalde 3 kere dönmesi
gereken döngü, basit bir yazı
m hatasısebebi ile hataya yol açmıştı
.
FOR I = 1.3 'I değişkenine 1.3 değerini atar
FOR I = 1,3 'I döngü değişkenidir, 1’den 3’e kadar döngü yapılır
Sık yapı
lan bir hata da değ işken isimlendirmesinde yapı lı
r. Program büyüdükçe, üst
satı
rlarda kullanılan değ işken adı , yanlışlı
kla diğer yerlerde farklıkullanı labilir. Garip
değerlerle karşı
laş ırsanı
z değişken isimlerini kontrol ediniz. Aslı nda kı sa ve ş ifreli gibi
değişken adıvermemek en iyisidir.
Sağlık
Therac–25, radyasyon ile tedavi makinesi olarak tasarlamı ştı
. Hastalara yavaşyavaş
radyasyon veriyordu. Aş ı
rıradyasyon verilmemesi için yazı lım ile denetlenen bir güvenlik
mekanizmasıvardı . Ama yazılı
mda “ölümcül” bir hata
vardı.
Makinenin 2 durumlu çalışma prensibi vardı :X
ışınıve elektron ışı
nı.Xı şınıdurumu, yüksek seviye
enerji seviyesine sahipti. Yüksek seviye enerji,
elektron durumu ile dengelenmeye çalı şı
yordu.
Yanlı ş kla X ı
lı ş ı
nıdurumunda kalı nı
nca, hastalara aşı
rı
radyasyon verilerek yanı
klar ve ardı
ndan ölüme sebep
olunabiliyordu.
Sonunda hata bulundu, ama birçok hasta için artı
k çok geçti!
23
3.3. Çalı
şma ZamanıHataları
Çalışma zamanıhatalarıçok sinsidir. Programcıprogramıiyi test etmemişise, hatayı
kullanıcı
nın keşfetmesine fırsat vermişdemektir. Test etmek için kendimizi kullanıcının
yerine koyup, her değ
işiklikten sonra bol bol denemeler yapmamız gereklidir. Uç değ
erler
denenmelidir.
Hata sebebi
3.4. Mantı
k Hataları
Mantık hatalarının tespiti çok zordur. Parantez hatası
, unutulan karakterleri bulmak
daha kolaydı
r. Hatta programı nı ş
zıtest edip çalıma zamanıhatalarırahatlıkla bulunabilir.
24
Stratejik Hata
1982 yı nda İ
lı ngiltere ile Arjantin arası
nda yapı lan
Falkland adalarısavaş ı
nda, 37 yı lda ilk kez İngilizler gemi
kaybetmiş lerdi.
3.5. Adı
mlamak
Satır olarak adımlamak programı ı
n daha iyi anlaşlması
nısağ lar. Adımlama sayesinde
normalde çok hı ş
zlıçalıan programı, yavaşyavaşya da duraklatı
larak izleyebiliriz.
Run: Çalış tı
r
Break All: Çalıştı
rmaya ara ver veya kı
r
Stop: Programıtamamen durdur
Step Into: Adım adım çalıştı
r
Step Over: Alt programlara girmeden adı mla
Step Out: Alt programdan çıkı p, hı
zlı
ca ana
programa dönülür, adımlamaya devam edilir
25
Hatanı n “durak noktası
n olduğu tahmin edilen yere yakı ” eklenir.†
ş
Program normal çalıtı
rı
lı
r.
Resim 3.4: Kı
rmı
zırenkli kı
sım “durak noktası
” olan bir satı
rdı
r
Not: İ
sterseniz “çalı
şma anı
nda – Run Time”, değiş
kenler üzerinde oynama yapabilirsiniz.
Eğer programlama dilinde böcek ayı klama imkânıbu kadar kolay değil ise, daha basit
yöntemler deneyebilirsiniz. Mesela hatalıyere yakın, ekrana değişken değ erini bir mesaj ile
gösteren komut eklenebilir. Programdaki hata giderildikten sonra bu sat ı
rların temizlenmesi
unutulmamalı dı
r.
†
“Debug*Toggle Breakpoint F9” ile yapabilirsiniz
‡
“View*Other Windows*Command Window Ctrl+Alt+A” ile pencereyi açabilirsiniz
26
Kullanı cını
n hatalı
girişyapmaması
için kısa
açı klamalar
yazı lmalıdı
r
Kullanıcı
nın
kafasınıkarış
tıran
mesajlar
olmamalı dı
r
ağı
Bir program yazarken aş daki öneriler iş
inize yarayabilir:
Yazı lı
mı z ne kadar büyürse o kadar içinde böcek bulunma ihtimali artar.
nı
Böcek oluş ması nı nası l önleyebileceğ inizi, otomatik olarak nası l
yakalayabileceğ inizi düşünmelisiniz.
Algoritmanı zı oluş tururken, kullanacağ ınız dili tam olarak öğ renerek
koşullarını
zıtamamlayı nız.
Birden fazla yol göz önüne alarak alternatifler ekleyiniz.
Çalış ma anında beliren böcek sinyallerini göz ardıetmeyiniz. Kendi kendilerine
kaybolmazlar. Kaybolması nıbeklerseniz daha da büyürler.
Değ işkenlerinizin değerlerini takip ediniz ve aykı rıdeğerler almalarıne zaman
ve nerede oluş uyor böcek ayı klama ile görünüz.
27
Eğ er programı nızıkontrol amacıile adı m adı m iş lemekten çekinirseniz, tahmin
etmediğ iniz hatalarla kullanı cımuhatap olmak zorunda kalı r.
Denetlenmesi kolay adlandı rmalar ve algoritmalar oluş turunuz.
Hı zlıçalı şan program yapmak için dayanı ksız kodlar oluş turmayı nız.
Kestirme ve pratik programlama risklidir. Kendi ihtiyacı nı
za göre çözüm
üretiniz.
Ara sı ra temizlik yaparak, artı k yani artan kodları nı zı
n böceğ e sebep
olmamaları nısağ layını z.
Yaptı ğını z değiş iklik çok küçük olabilir, ama hata oluş turabileceğ ini
unutmayı nız.
Sürümler oluş turarak ilerleyiniz. Son ticari halinden hata ayı klama kodları nızı
çıkararak küçülterek ilgililere teslim ediniz.
Program içine yerleş tirdiğ iniz açı klama satı rlarıaz ve öz olmalıya da hiç
yazmayı nız.
İmkânsı z olan bir girdi olabilir mi? Kullanı cıher zaman sizin gibi düş ünmez.
Bu ihtimallere önlem almalı sınız. Sorunlarısessizce çözen kodlar yazabilirsiniz.
Böceğ i gizlemekten çok onu yok etmeye çalı şını z.
Farklıalgoritma yöntemleri kullanarak böceklerin sebebini çözebilirsiniz.
Devamlıhata mesajlarıile kullanı cıyı telaşlandı rmayı nız.
Böceğ i açı ğa çı karmanı n yöntemi, onu bulduğ unuz anda ortadan kaldı rmaktı
r.
Böcekleri tekrar çı kmaya zorlayı nı z.
Çok az sayı da programcıkodlara “durak noktaları ” ekleyerek, kod içinde adı m
adı m ilerleme ve girdilerin çı ktı
ya dönüş tüğü yerlere bakma alı şkanlı ğına sahip.
Bu iş lemler angarya değ ildir.
Kodunuzda adı m adı m ilerlerken veri akı şına odaklanı nız.
Arabiriminizdeki aksaklı klarıbulup yok ediniz.
Kaybolan bir böceği göz ardıetmeyin, gizleniyor olabilir.
Zamanı nda bulunan böcek daha fazla böcek oluş ması na engel olur.
Belirtiyi değ il, oluş um nedenini düzeltiniz.
Aptal böcek yoktur. Ası l sorun programcı nın onu bulamamı şolması dır.
Aynıböceğ in sizi iki kere sokması na izin vermeyiniz!
28
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
29
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
Ad(1)
OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
6. Hangi hatanı
n tespiti ve giderilmesi çok kolaydır?
A) Yazım hataları
B) Çalış
ma anıhataları
C) Mantık hataları
D) Ölümcül hatalar (disk, bellek hatalarıgibi)
30
ÖĞRENME FAALİ
YETİ
–4
AMAÇ
ÖĞRENME FAALİ
YETİ- 4
Programda saklanması gereken bilgileri dosyalara saklayabilecek ve tekrar
okuyabileceksiniz.
ARAŞTIRMA
Bu faaliyet öncesinde hazı
rlı
k amaçlıaş
ağı
da belirtilen araş
tı
rma
faaliyetlerini yapmalı
sınız.
4. DOSYALAMA
Bir önceki derste değiş kenlerin ömürleri bitince hafı zadan silindiğinden bahsettik.
Zaten böyle olmasaydı , ana bellek birçok programıçalı ştırmaya yetmezdi. Ya bize kalı
cı, her
program açı ğı
ldı nda, önceden saklanan bilginin gösterilmesi gibi bir durum gerekirse ne
yapabiliriz? Oyunlardaki rekor bilgileri gibi düşünebiliriz. Bilgiler çoğ
unlukla ayrıbir veri
dosyası nda saklanı
r.
31
Sı ralıdosya olduğ u için dosyaya bilgileri sı ra ile yazı
p, yine sıra ile okuyoruz. Peş
peş e bilgi iş
lemi yapı ldığıiçin “For - Döndür” komutu ile daha az komut yazarak, çok satı rlı
bilgileri alabilir, yazabiliriz. 3 satı
r bilgi için basit olarak aş ağı
daki gibi bir örneğimiz var.
1. Baş la
2. DosyaAdi = “dosya.txt”
3. Eğer DosyaAdi mevcut İ se Git 9
4. yazar = DosyaAç (DosyaAdi)
5. yazar.Satı
rYaz “1. satı
r”
6. yazar.Satı
rYaz “2. satı
r”
7. yazar.Satı
rYaz “3. satı
r”
8. yazar.DosyaKapat
9. Bitir
32
Resim 4 .2: Metin dosya iş
lemleri ekran görüntüsü
Programları nı
zıpiyasada yaygı n olarak kullanılan programlar ile uyumlu yapmaya
dikkat ediniz. Eğ er kendi dosya türünüzü oluşturursanız, sadece sizin programı za bağı
nı mlı
hâle gelir. Mesela programı nız hesap tablosu halinde verilerini kaydedebiliyor ise, hesap
tablosunu kullanarak iş lem yapan kullanı cıya destek sağlamı şolursunuz. Programı nızın
kalitesi daha artar.
Rasgele erişimli dosyalar sabit boyutlu küçük parçalar halinde “kayı t” isminde
bölümlerden oluşur. Kayıt içinde bir veri kümesi saklanı
r. Her kayı
t içinde “alan” isminde
daha küçük parçalar vardı
r.
Kayıt uzunlukları
nın belirli olmasısayesinde istenen bilgiye rahatlı
kla gidilebilir. Bu
daha etkin veri işleme anlamı na gelmektedir. Veritabanıkonusuna bu sayede girmiş
oluyoruz.
33
Ali Can
Ali Can
2344224 Bir
1.Kayı
t 2344224
T10C Kayıt
T10C
Mehmet Demirci
2323434
T11C Mehmet Demirci
İdris Kıvanç 2.Kayı
t 2323434
T11C Bir
2323443 Alan
T11C
İdris Kı
vanç
3.Kayı
t
2323443
T11C
Metin Dosyaları
n yapı
sı Rasgele Erişimli Dosyaları
n yapı
sı
34
Rasgele eriş imli dosyada kayı t hazı rlarken, ne tür verileri saklayacağ ı
nızı, kaç adet
alana sahip olacağı nıkararlaştı
rmalısınız. Alanları n kaç karakter büyüklüğ e sahip olacağını
planlamalısınız. “Daha sonradan değiş tiririm” derseniz, yeni alan boyutlarıeskisi ile
uymayacağ ıiçin veri kaybıile karş
ılaşabilirsiniz.
4.3. İ
kilik Dosyalar
Rasgele dosyalamada her kaydıyapısal olarak kullanma zorluğ u,
programcı ları
n yeni bir yol araması na sebep olmuş tur. Hem hı zlı
erişimli, hem de uzun metinleri saklayacak ş ekilde ikilik (binary)
sistemde yapı lan dosyalamayıkullanabiliriz. Metin uzunluklarısabit
olmak zorunda olmadı ğından, bu yöntem dosya boyutu olarak tasarruf
sağ lar.
İkilik dosyalar; *.pdf dosya oluş turma, kayı t bilgileri saklama (*.log dosyaları
),
program ayarları nısaklama (*.bin dosyaları ), internette dosya aktarı mısı rası
nda (FTP,
eposta), veritabanıiçine resim, ses dosyasıeklemek istendiğ inde kullanılı
yor.
Basit bir işiçin bu kadar uzun program yazmak gereksiz görünebilir. Zaten genellikle
Microsoft Access gibi “veritabanıprogramları ” bizim veri saklamamı za yardım ederler.
Daha karmaş ık ve yoğun veri saklama ve okuma iş lemleri gereken yerlerde veritabanı
programlarıyüksek performans sağ larlar.
35
Bazıdurumlarda ise metin dosyası na kaydetmek daha pratiktir. Mesela, sitenizin
ziyaretçi sayı
sınısaklamak, programı nı
zı
n pencerelerinin en son boyutlarınısaklamak için
bu yöntemi kullanabilirsiniz. Çok az bilgi tutulacağ ıiçin gidip bir veritabanına bağlantı
yapmaya gerek yoktur. Güvenliğin önemli olmadı ğıve hı z gerektiren yerlerde “metin
dosyalama” ile veri saklayabilirsiniz.
Yapı Kisi
Metin Ad
Sayısal Yas
Yapı Bitti
Basla
birKisi Kisi
dosyaAdi = "dosya.txt"
Oku; birKisi.Ad
Oku; birKisi.Yas
yazici.DosyaBasinaGit
yazici.Yaz birKisi.Ad
yazici.Yaz birKisi.Yas
yazici.DosyaKapat
Bitir
§
“Baş ş
lat*Çalıtı
r…*regedit” ile kayı
t defterini görüntüleyebilirsiniz.
36
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
İ
şlem Basamakları Öneriler
1.“DosyaAç” komutu ile dosya Veri dosyasınımetin, rasgele veya ikilik
oluş turunuz. yöntemi ile oluş
turunuz.
2.“Satı rYaz, Satı
rOku” komutu ile Bilgi yazma ve okuma için uygun komutu
dosyaya veri giriniz veya ekrana verinin seçiniz.
çıktı sıalınız.
3.“Structure – Yapı ” içinde alanları
n Belirleyeceğiniz alanlarıyapıhâline
boyutunu, türünü belirtiniz. getiriniz.
4.“DosyaKaydet” ve “DosyaGetir” ile Kaydolmuşbilgileri ekrana listeleyiniz.
belli bir kayda ulaşı
nı z.
5.Döngü içinde verileri ekrana Peşpeş e işlemleri döngü komutları
ile kolay
listeleyiniz. programlanabilir hâle getiriniz.
6.“DosyaKapat” komutu ile dosyayı Her alt programı n sonunda dosyayı
kapatı nız. kapatını z.
37
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
Ad(1)
OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
1. Programı
mız tüm dosya türlerini açı
p okuyabilmelidir. ( )
4. İ
ki program aynı
anda bir metin dosyayıkullanabilir. ( )
38
MODÜL DEĞERLENDİ
RME
MODÜL DEĞERLENDİ
RME
PERFORMANS TESTİ(YETERLİ
K ÖLÇME)
DEĞERLENDİ
RME KRİ
TERLERİ Puan
Sıralıolarak program komutları nıyazma, dallanan programlama yöntemi ile
program yazma, döngü komutlarıile program yazma
Çok tekrar eden komut blokları nı bir alt programa toplama
Alt programlara uygun bir tekil isim verme
Bir alt programa değ er yollayı nız ve değ er döndürme
Programa pencere ekleme
Pencerenin boyut ve koordinatları nıuygun hâle getirme
Pencere ve içindeki nesneleri uygun bir ş ekilde renklendirme
Kullanı cıya yardı mcıkı sa yol menüleri tasarlama, pencere üzerine temel
kontrolleri ekleme, kontrollere program yazma
Bir programıdenerken karş ımı za çı kan yazı m hataları nıgörme, programdaki
yazım hataları nıdüzeltme
Program çalı ş
tırıldıktan sonra denemek için veri girme
Adı m adı m programıçalı ştırarak, programı n akışınıkontrol etme
“DosyaAç” komutu ile dosya oluş turma
“SatırYaz, Satı rOku” komutu ile dosyaya veri girip, ekrana verinin çı ktı
sıalma
“Structure – Yapı ” içinde alanları n boyutunu belirtme
“DosyaKaydet” ve “DosyaGetir” ile belli bir kayda ulaş tı
rma
Döngü içinde verileri ekrana listeleme, “DosyaKapat” komutu ile dosyayı
kapatma
Toplam (en fazla 96 puan olabilir)
DEĞERLENDİ
RME
ğı
Yaptı nı
z değ
erlendirme sonucunda eksikleriniz varsa öğ
renme faaliyetlerini
tekrarlayı
nız.
39
CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
ÖĞRENME FAALİ
YETİ
-1 CEVAP ANAHTARI
1 D
2 Y
3 D
4 B
5 A
6 C
ÖĞRENME FAALİ
YETİ
-2 CEVAP ANAHTARI
1 Y
2 D
3 Y
4 A
5 D
6 D
ÖĞRENME FAALİ
YETİ
-3 CEVAP ANAHTARI
1 Y
2 Y
3 Y
4 Y
5 C
6 A
ÖĞRENME FAALİ
YETİ
-4 CEVAP ANAHTARI
1 Y
2 D
3 Y
4 Y
5 B
6 D
Cevapları
nı ı
zıcevap anahtarlarıile karşlaş
tı
rarak kendinizi değ
erlendiriniz.
40
SÖZLÜK
SÖZLÜK
İ
sim Okunuş Anlam
install instol kurmak, installation – kurulum
instruction ı
instrakşn komut
instrument instrumı
nt enstrüman, araç
integer intecı
r tamsayı
introduction ı
introdakşn tanı
tı
m, intro
item aytı
m nesne, öğ
e
kernel kernı
l çekirdek
log log kayı
t tutmak, döküm yapmak
logical locikı
l mantı
ksal, boolean
match meç uymak, oyun, birbirini tutmak
message mesic mesaj, ileti
minimize minimayz en küçük yapmak, simge durumuna küçült
missing mising eksik, kaçı
rmak
multimedia maltimedya çoklu ortam
network netwörk ağ
object ı
bcekt nesne
Optical Character Recognition – Optik karakter tanı
ma, yazı
lı
mı
OCR ou si ar
tarayıcıların yanında verilir
optimize optimayz en iyi hale getirmek, optimize
optional op ş
ını
l isteğ
e bağ
lı, opsiyonel
page peyç sayfa
parameter perı
mitı
r parametre, argüman, anahtar
parity perı
ti parite, eş
lik
partition ı
partişn disk bölümü (c: gibi)
path pet yol, izlek, patika
pattern pet ı
rn doku, dizi
perform pörform gerçekleş
tirmek
peripheral perifirı
l çevresel birim
pin pin girişçı kı şiçin kullanı
lan port – veriyolu iğnesi
Ekrandaki yazı lı
mla elde edilebilen nokta (picture element/picture
pixel piksı
l
cell)
pointer pointı
r işaretçi, fare imleci
port port kapı
, iletiş
im hattı
present prezı
nt var olmak
previous privi ı
s önceki
primary praymı
ri birincil
41
KOD ÖRNEKLERİ
KOD ÖRNEKLERİ
Tupol dilinde alt program örneği
PROGRAM altProgProgrami;
TANIM
TANIMSONU
ALTPROGRAMLAR
{Alt Programimiz}
paletCiz();
TANIM
Sayi i,j;
TANIMSONU
Basla
Dongu j<=0 >> 199
Blok
Dongu i<=0 >> 319
Blok
Pixel(i,j,j);
Son;
Son;
Bitti;
ALTPROGRAMLARSONU
Basla
{Ana Programimiz}
Grafikekran();
paletCiz();
Okugh();
Yaziekran();
Bitti.
42
Fonksiyon, parametre olarak değ er alıp, ona göre hesap yapı
p, sonuç üreten alt
programdır. Genellikle "return" komutu ile değer geri aktarı
lı
r.
C dilinde fonksiyon örneği
#include <stdio.h>
float kupAl(float a)
{
return a*a*a;
}
main()
{
float sayi = 0;
printf("Küpü alinacak sayiyi giriniz\n");
scanf("%f",sayi);
printf("Sonuc: %f",kupAl(sayi));
getch();
}
begin
clrscr; (* ekran sil *)
x:=10;y:=20;
writeln(x,y); (* ilk değerler *)
degistir(x,y); (* yerlerini değiştir *)
writeln(x,y); (* yeni değerlerimiz *)
end.
43
Visual Basic dilinde sıralı dosya örneği
Imports System
Imports System.IO
44
Visual Basic dilinde rasgele dosyalama örneği
Structure Kisi
<VBFixedString(15)> Public Ad As String
Public Yas As Short
End Structure
birKisi.Ad = TextBox1.Text
birKisi.Yas = TextBox2.Text
If TextBox3.Text = "*" Then
TextBox3.Text = LOF(dosyaNo) \ Len(birKisi) + 1
End If
kayNo = TextBox3.Text
FilePut(dosyaNo, birKisi, kayNo)
FileClose(dosyaNo)
End Sub
FileGet(dosyaNo, birKisi, 1)
TextBox1.Text = birKisi.Ad
TextBox2.Text = birKisi.Yas
TextBox3.Text = 1
FileClose(dosyaNo)
End Sub
45
Private Sub Button5_Click_1
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = "*"
End Sub
TextBox1.Text = birKisi.Ad
TextBox2.Text = birKisi.Yas
TextBox3.Text = LOF(dosyaNo) \ Len(birKisi)
FileClose(dosyaNo)
End Sub
46
Visual Basic dilinde ikilik dosyalama örneği
Imports System
Imports System.IO
Structure Kisi
Public Ad As String
Public Yas As Short
End Structure
Dim birKisi As New Kisi
Dim dosyaAdi As String = "dosya.txt"
birKisi.Ad = TextBox1.Text
birKisi.Yas = TextBox2.Text
yazici.Write(birKisi.Ad)
yazici.Write(birKisi.Yas)
yazici.Close()
okuyucu.Close()
47
Private Sub Button1_Click
'ilk kayıt düğmesi
If File.Exists(dosyaAdi) Then
Dim binDosya As New FileStream(dosyaAdi, _
FileMode.Open, FileAccess.Read)
Dim okuyucu As New BinaryReader(binDosya)
okuyucu.BaseStream.Seek(0, SeekOrigin.Begin)
TextBox1.Text = okuyucu.ReadString
TextBox2.Text = okuyucu.ReadInt16
TextBox3.Text = 1
okuyucu.Close()
End If
End Sub
48
ÖNERİ
LEN KAYNAKLAR
ÖNERİ
LEN KAYNAKLAR
en.wikipedia.org/wiki/Fitts'_law
en.wikipedia.org/wiki/Pentium_FDIV_bug
msdn2.microsoft.com
news.bbc.co.uk/onthisday/hi/dates/stories/may/4/newsid_2504000/2504155.stm
samples.gotdotnet.com
www.eecs.tufts.edu/~jacob/171/slides/therac.butler.html
www.sourgeforge.net
www.wikipedia.org
www.yunus.projesi.com
49
KAYNAKÇA
KAYNAKÇA
AYFER Can Uğur, Kim Güler Bilgisayarlara?, Pusula Yayı
nevi, İ
stanbul,
1998
50