1. T.C.
Mİ EĞİ M BAKANLIĞI
LLÎ Tİ
MEGEP
(MESLEKİ İ M VE ÖĞ
EĞ Tİ RETİ Sİ
M STEMİ N
Nİ
GÜÇLENDİ LMESİ
Rİ PROJESİ
)
Bİ ŞM TEKNOLOJİ
Lİİ LERİ
VERİYAPILARI
ANKARA 2007
2. Milli Eğ Bakanlıı
ğ tarafı geliş
itim ndan tirilen modüller;
Talim ve Terbiye Kurulu Baş ğnı 02.06.2006 tarih ve 269 sayı Kararı
ı
kanlı n lı ile
onaylanan, Mesleki ve Teknik Eğ Okul ve Kurumları kademeli olarak
itim nda
yaygı tılan 42 alan ve 192 dala ait çerçeve öğ
nlaşrı retim programlarında
amaçlanan mesleki yeterlikleri kazandı rmaya yönelik geliş
tirilmişöğretim
materyalleridir (Ders Notları r).
dı
Modüller, bireylere mesleki yeterlik kazandı
rmak ve bireysel öğrenmeye
ş
rehberlik etmek amacı öğ
yla renme materyali olarak hazı
rlanmı denenmek ve
,
geliş
tirilmek üzere Mesleki ve Teknik Eğ itim Okul ve Kurumları nda
ş
uygulanmaya baş lanmı r.
tı
Modüller teknolojik geliş melere paralel olarak, amaçlanan yeterliğ i
kazandı rmak koş ile eğ
ulu itim öğ retim sı nda geliş
rası tirilebilir ve yapı
lması
önerilen değ iklikler Bakanlı ilgili birime bildirilir.
iş kta
Örgün ve yaygı eğ kurumları letmeler ve kendi kendine mesleki yeterlik
n itim , iş
ı
kazanmak isteyen bireyler modüllere internet üzerinden ulaşlabilirler.
Bası ş ılı
lmımodüller, eğ kurumları öğ
itim nda rencilere ücretsiz olarak dağtır.
Modüller hiçbir ş lamaz ve ücret karş ğ
ıı
ekilde ticari amaçla kullanı lı nda
satı
lamaz.
3. İ NDEKİ
Çİ LER
AÇIKLAMALAR ....................................................................................................................ii
Gİ Ş.......................................................................................................................................1
Rİ
ÖĞ RENME FAALİ YETİ 1 ...................................................................................................3
-
1. Dİ LER .............................................................................................................................. 3
Zİ
1.1. Dizi Değ kenini Tanı
iş mlama ......................................................................................4
1.2. Dizi Değ keni ile Veri Saklama................................................................................. 5
iş
1.3. Çok Boyutlu Diziler....................................................................................................5
1.4. Dinamik Diziler ..........................................................................................................7
1.5. Yapı ........................................................................................................................8
lar
1.6. Yapı Dizi Olarak Kullanmak................................................................................. 9
ları
UYGULAMA FAALİ YETİ ............................................................................................ 10
ÖLÇME VE DEĞ ERLENDİ RME .................................................................................. 11
ÖĞ RENME FAALİ YETİ 2 ................................................................................................. 12
-
2. İARETÇİ .................................................................................................................. 12
Ş LER
2.1. İş
aretçi Nedir?........................................................................................................... 12
2.2. Bağ Liste Tanı
lı mlama.............................................................................................. 14
2.3. Bağ Listeyi Kullanma .............................................................................................15
lı
2.4. Çift Bağ Listeler ..................................................................................................... 16
lı
2.5. Dairesel Bağ Listeler .............................................................................................. 16
lı
ğ ı
2.6. Yın .........................................................................................................................17
2.7. Kuyruk ...................................................................................................................... 17
2.8. Ağ .......................................................................................................................... 18
aç
2.9. Grafik ........................................................................................................................ 19
UYGULAMA FAALİ YETİ ............................................................................................ 21
ÖLÇME VE DEĞ ERLENDİ RME .................................................................................. 22
ÖĞ RENME FAALİ YETİ 3 ................................................................................................. 23
-
3. NESNE TABANLI PROGRAMLAMA ............................................................................23
3.1. Kolay Programlama Yöntemi ................................................................................... 23
3.2. Nesne Kullanı ....................................................................................................... 25
mı
3.3. Dil Seçimi ................................................................................................................. 27
UYGULAMA FAALİ YETİ ............................................................................................ 29
ÖLÇME VE DEĞ ERLENDİ RME .................................................................................. 30
MODÜL DEĞ ERLENDİ RME .............................................................................................. 31
CEVAP ANAHTARLARI ..................................................................................................... 32
SÖZLÜK ................................................................................................................................ 33
KOD ÖRNEKLERİ ................................................................................................................34
ÖNERİ LEN KAYNAKLAR.................................................................................................. 39
KAYNAKÇA .........................................................................................................................40
i
4. AÇIKLAMALAR
AÇIKLAMALAR
KOD 481BB0027
ALAN Biliş Teknolojileri
im
DAL/MESLEK Alan Ortak
MODÜLÜN ADI Veri Yapı ları
Dizi, işaretçiler ve nesneye yönelik program yazma ile
MODÜLÜN TANIMI
ilgili öğ
renme materyalidir.
SÜRE 40/24
ÖN KOŞUL ş
Yapı Programlama Temelleri modülünü almıolmak.
sal
YETERLİ
K Veri yapı yla program yazmaya hazı k yapmak
ları rlı
Genel Amaç
ğı
Gerekli ortam sağ landında, dizi ve iş
aretçileri
tanı p nesneye yönelik program yazabileceksiniz.
yı
Amaçlar
MODÜLÜN AMACI
1. Dizi mantıı anlayacak ve dizi değ kenleri
ğnı iş
kullanabileceksiniz
2. İşaretçiler ile program yazabileceksiniz
3. Nesneye yönelik program yazabileceksiniz
Bilgisayar laboratuvarı bu ortamda bulunan;
ve
EĞİ M ÖĞRETİ
Tİ M
bilgisayar, yazı, bilgisayar masaları ı kalem, lisanslı
cı , kâğt,
ORTAMLARI VE
ş
işletim sistemi programı akıdiyagramı
ve sembolleri ile
DONANIMLARI
ilgili panolar.
Her faaliyet sonrası o faaliyetle ilgili
nda
değ erlendirme soruları kendi kendinizi
ile
değ erlendireceksiniz. Modül içinde ve sonunda verilen
öğ retici sorularla edindiğ bilgileri pekiş
iniz tirecek,
ÖLÇME VE
uygulama örneklerini ve testleri gerekli süre içinde
DEĞERLENDİ
RME
tamamlayarak etkili öğ renmeyi gerçekleş tireceksiniz.
ş
Sı yla araşrma yaparak, grup çalı
rası tı maları katı
na larak ve
ş ölçme ve
en son aş amada alan öğ retmenlerine danı arak
değ erlendirme uygulamaları gerçekleş
nı tireceksiniz..
ii
5. Gİ Ş
Rİ
Gİ Ş
Rİ
Sevgili Öğ
renci,
Bu modül ile sizlere diziler, iş
aretçiler ve nesne tabanlıprogramlama konuları ilgili
ile
yeterlik kazandıracaktı Öncelikle bu modülü daha iyi anlamanı için, daha önceki
r. z
ğz
ı
programlama temelleri modüllerinde kavrayamadını yerler varsa onlarıpekiş tiriniz.
Değ kenler, döngüler ve dosyalama konuları tekrar gözden geçirmeniz tavsiye edilir.
iş nı
Önceki modülleri anlayarak buraya gelmişiseniz, daha ileri seviye programlama
konuları geçebilirsiniz. “Veri Yapı ” modülü ile bir program yazı nda gerekli olan
ları
na mı
bazı eksikliklerimizi gidereceksiniz. Bilgisayarı belleğ ve programı zdaki verileri daha
n ini nı
etkin kullanacaksı z.
nı
Programlamada veri yapı larıen önemli unsurlardan birisidir. Program yazarken
lacak veri yapını en ideal ş
kullanı sın ekilde belirlenmesi, programcıkta biraz daha
lı
ustalaşman anlamı gelmektedir. Program içerisinde iş
na lenecek veriler diziler ile
ş
tanımlanmıbir veri bloğ içerisinden seçilebileceğ gibi, iş
u i aretçiler kullanılarak daha etkin
şekilde hafı zada saklanabilir. Veri yapı , dizi ve iş
ları aretçiler ile yapı nı yanı
lması n nda,
nesneler ile de gerçekleş
tirilebilir.
1
7. ÖĞRENME FAALİ
YETİ
–1
ÖĞRENME FAALİ
YETİ 1
-
AMAÇ
Mehmet
Dizi mantıı anlayacak, dizi ve yapı iş
ğnı değ kenleri kullanabileceksiniz.
ARAŞ
TIRMA
aş ı
Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma
rlı tı
faaliyetlerini yapmalını
sı z.
Banka ve hastane gibi yerlerde kuyrukta bekleyenlerin iş kolaylaşran
ini tı
ş
“Sıramatik” isimli programı inceleyiniz. Sizce bu program nasıdaha kullanı
l lı
hâle getirilebilir?
Kargo firmaları n (Aras, Fedex ve DHL gibi) kargo takip programı
nı nı
inceleyiniz. Paketlerin internet üzerinden nasıtakip edildiğ inceleyiniz.
l ini
1. Dİ LER
Zİ
Birkaç tane değ ken ile küçük programları
iş idare edebilirsiniz. Programlamada uzun
“dizi - array” ile yapı
ve benzer bilgilerle dolu değ listelerin oluş
er turulması lmaktadı Veri
r.
sı aş ı
yapını ağdaki gibi ayrı iş yapabileceğ gibi:
değ ken iniz
Ad1 = quot;Aliquot;
Ad2 = quot;Veliquot;
Ad3 = quot;Mehmetquot;
Bunun yerine dizi kullanarak, tek değ ken ile ş ş
iş u ekilde yapabilirsiniz:
Ad(1) = quot;Aliquot;
Ad(2) = quot;Veliquot;
Ad(3) = quot;Mehmetquot;
3
8. Dikkat ederseniz, önceki örnekte 3 ayrıdeğ kenimiz varken, sonrakinde ise tek
iş
değ ken olan “Ad” kullanı şr. Dizi sayesinde tek değ ken ismi ile birden fazla değ
iş lmı tı iş er
saklanabilmektedir.
3 elemanlı dizi; Ad
bir
Ad(2)
Ad(1) Ad(3)
Ali Veli Mehmet
1.1. Dizi Değ kenini Tanı
iş mlama
Normalde bir değ kenin bir adı bir değ olabilir. Dizi değ kenlerinin de bir adı
iş ve eri iş
vardı ama içinde aynı
r, türde çok sayı veri saklanabilir. Tanı
da mlarken dizinin boyutunu
belirtmemiz mecburidir. Dizi boyutu tam sayıolarak belirtilmeli, negatif girilmemelidir.
Not: Programlama dillerinde genellikle ilk dizi elemanı n indis numarası
nı “0”dı QBasic dilinde
r.
“Option Base – Taban Seçeneğ ile varsayı alt limiti 0 veya 1 olarak değ tirebilirsiniz.
i” lan iş
Dizi elemanları tanı
nı mlanmadan önce “Option Base 1” olarak seçilmiş ise, 0. elemandan değ 1.
il
elemandan baş r.
lanı
1. Baş la
2. Metin Dizi Ad(3)
3. Ad(1) = “Ali”
4. Ad(2) = “Veli”
5. Ad(3) = “Mehmet”
6. Yaz; Ad(1)
7. Yaz; Ad(2)
8. Yaz; Ad(3)
9. Bitir
Resim 1.1: Dizi örneğ ve ekran çı sı
i ktı
4
9. 1.2. Dizi Değ keni ile Veri Saklama
iş
mlandı satı çalı rı ğnda, ana bellekte
ş ldı
tı ı
Programdaki dizi değ kenlerinin tanı
iş kları rlar
dizi boyutunca yer ayrır. Değ ken ile olan iş bitince ayrı bellek bölgesi silinir. Belli
lı iş lem lan
nı ş ı
bir bellek alanıayrı ndan dolayıdizinin maksimum sırıdındaki diğ bellek
lması er
bölgesine eriş
emeyiz.
Dizilere değ aktarma veya okuma iş
er lemlerinde döngü komutlarıkullanı
lmaktadı
r.
Hangi döngüyü kullanı z kullanı baş ç ve bitiş erlerini iyi belirleyiniz, yoksa
rsanı n, langı değ
programız hata verip kapanı Sı rıaltı veya üstünde indis vermemek gerekir.
nı r. nın nda
1. Baş la
2. Metin Dizi Ad(3)
3. Sayı i, j
sal
4. Döngü i = 1, 3, 1
5. Yaz; i & “. ismi giriniz”
6. Oku; Ad(i)
7. Döngü Bitti
8. Yaz; “Girilen isim listesi”
9. Döngü i = 1, 3, 1
10. Yaz; Ad(i)
11. Döngü Bitti
12. Bitir
Resim 1.2: Döngü ile dizi kullanı
mı
1.3. Çok Boyutlu Diziler
Şimdiye kadar verdiğ
imiz örnekler tek boyutlu dizi örnekleridir. Bu tip diziler aynen
tren vagonları bellekte peş e değ
gibi peş erlere sahip olan değ kenlerdir.
iş
5
10. ndaki gibi satı ve sütunlu hücrelerden oluş dizilere; iki
Tablolama programları r an
boyutlu dizi denir. Resim 1.3’te görüldüğ gibi herhangi bir hücrenin değ
ü erine satıve sütun
r
ilebilmektedir. Matematikteki matrisler de çok boyutlu dizilerdir.
bilgisini kullanarak eriş
1. boyut
2. boyut
Resim 1.3: Excel’de bir sayfa 2 boyutlu diziye benzetilebilir
inde küp ş
ekline benzeyen 3 boyutlu dizi elde edilir. Bu
Bir boyut daha eklendiğ
dizilerde satıve sütun bilgisinin yanı derinlik bilgisi de eklenir.
r nda
2. boyut
1. boyut
3. boyut
Resim 1.4: 3 boyutlu dizi
TextBox5
TextBox6
Resim 1.5: Çok boyutlu dizi örneğ burada dizi 0 indis numarası başyor
i, ile lı
mlanması boyutlu diziye benzer ş
Çok boyutlu dizilerin tanı tek ekilde yapı
lmaktadı
r:
6
11. Başla
Metin Dizi bilgi(2, 6)
Sayısal i, j, satı sütun
r,
Döngü i = 1, 2, 1
Döngü j = 1, 6, 1
Oku; bilgi(i, j)
Döngü Bitti
Döngü Bitti
Oku; quot;Satı ve sütun bilgisini girinizquot;, satı sütun
r r,
Yaz; quot;Aranan bilgi: quot;, bilgi(satı sütun)
r,
Bitir
Bu örnekte 2 satı ve 6 sütun olduğ için, 2 * 6 yani 12 adet metin bilgisi
r u
bulunmaktadı İ boyut olduğ undan iç içe iki döngü hazı k. İ döngünün “i” değ keni
r. ki rladı lk iş
şı
satıseçicisi, ikinci iç döngünün “j” değ keni de sütun seçici olarak çalıyor. Bilgi(i, j)
r iş
üzerine veri aktarı döngü sonunda hangi satı ve sütun isteniyor ise ekrana değ
p, r eri
getiriliyor.
1.4. Dinamik Diziler
ş
Çoğ dil sadece statik sırlıdizi imkânı
u nı sunar, yani çalı zamanı dizilerin
ma nda
eleman sayını sı rı değ tiremezsiniz. Eğ dizi büyük gelmiş dizi kı lamaz, ya
sı n nını iş er ise saltı
da tam tersi uzatı
lamaz. Statik dizi içi boş olsa hafı yer kaplamaktadı
bile zada r.
Resim 1.6 : C dilinde dinamik dizi yoktur
zayıetkin kullanmak için “dinamik dizi” kullanabilirsiniz. İ
Hafı sterseniz diziyi
boyutlandı
rabilirsiniz, ya da silebilirsiniz.
Not: Basic dilinde dinamik diziler için “Redim - Boyutlandı komutu kullanır. Bu komut ile eski dizi
r” lı
bilgileri silinir. Dizinin değ ken türünü değ tiremezsiniz.
iş iş
Dizilerde dizi sı rı
nınıdeğ tirebilirsiniz, ama 2 boyutlu bir diziyi 3 boyutlu dizi
iş
yapamazsı z.
nı
TextBox8 TextBox7
Resim 1.7: Dinamik dizi örneği
7
12. 1. Baş la
2. Metin Dizi dinamikDizi()
3. Sayı i, sı r, eleman
sal nı
4. Oku; “Dizi sı rı giriniz”, sı r
nını nı
5. BoyutlandıdinamikDizi(sı r)
r nı
6. Döngü i = 1, sır, 1
nı
7. Oku; dinamikDizi(i)
8. Döngü Bitti
9. Oku; “Eleman numarası giriniz”, eleman
nı
10. Yaz; dinamikDizi(eleman)
11. Bitir
Dizilerde farklıveri türlerini saklama imkânı yoktur. Yani öğ
renci listesinde öğrenci
isimleri metin, öğ renci numaraları sayı türünde olsun diyemezsiniz. Tüm elemanları türü
n
aynı r. Bu eksiklik “yapı kullanı
dı ” mıile giderilmektedir. Bir yapı istediğ
da iniz türde
değ kenleri beraber tanı
iş mlayarak tek isim altı kullanabilirsiniz.
nda
1.5. Yapı
lar
“Yapı Programlama Temelleri” modüldeki dosyalama kı nda, yapı ve kayı
sal smı lar tlar
şı
hakkı az da olsa giriş
nda bilgisi verilmiş Sayı metin değ kenleri karık olarak bir yapı
ti. ve iş
(structure) içine kaydedebiliyoruz.
Ad1 = quot;Aliquot;
Notu1 = 45
Ad2 = quot;Veliquot;
Notu2 = 55
Ad3 = quot;Mehmetquot;
Notu3 = 75
Bunun yerine artış ş
k u ekilde yapabiliriz:
Ogrenci1.Ad = quot;Aliquot;
Ogrenci1.Notu = 45
Ogrenci2.Ad = quot;Veliquot;
Ogrenci2.Notu = 55
Ogrenci3.Ad = quot;Mehmetquot;
Ogrenci3.Notu = 75
Görüldüğ gibi farklıtürlerde birbiri ile iliş yapıelemanları“Ad ve Notu”
ü kili
değ kenleri beraber, tek bir isim olan “Ogrenci” yapında toplanı
iş sı yor.
Yapı Kisi
Metin Ad
Sayı sal Yas
Yapı Bitti
birKisi Kisi
Dosyalama konusunda “Kisi” değ ken isminde yapıhazı şk. Programcın
iş rlamı tı nı
kendi yaptı değ kenlere “kullanı tanı veri türü – user defined variable” de denir.
ğ iş
ı cı mlı
8
13. Yapı n Genel Kullanı
nı mı
KayitDegiskeni.Degisken = quot;Veriquot;
Degisken = KayitDegiskeni.Degisken
1.6. Yapı Dizi Olarak Kullanmak
ları
Dizi olarak kullanı sadece yapı kullanacak değ kenin yazı değ mektedir.
mda yı iş mı iş
Yani yapı smı ş
kı aynıekilde tanı mlanı değ ken kı değ ir.
rken iş smı iş
Başla
Yapı birÖğrenci
Metin Ad
Sayısal Notu
Yapı Bitti
birÖğrenci Dizi Öğrenci(3)
Sayısal i
Döngü i = 1, 3, 1
Oku; quot;Öğrenci adı giriniz quot;, Öğ
nı renci(i).Ad
Oku; quot;Öğrenci notunu giriniz quot;, Öğrenci(i).Notu
Döngü Bitti
Döngü i = 1, 3, 1
Yaz; quot;Öğrenci adı quot;, Öğrenci(i).Ad
Yaz; quot;Öğrenci notu quot;, Öğrenci(i).Notu
Döngü Bitti
Bitir
9
14. UYGULAMA FAALİ
YETİ
UYGULAMA FAALİYETİ
İlem Basamakları
ş Öneriler
İ
1. Bir dizi oluş
turunuz. simlendirmede değ ken
iş isimlendirme
kuralları uyunuz.
na
2. Dizi elemanı değ aktarı z.
na er nı Dizilerin ilk indis numarası genellikle 0 veya 1
ile baş Değ aktardı sonra ekranda
lar. er ktan
değ erlerini listeleyiniz.
3. Döngü içinde diziye veri giriniz ve Genellikle “Döngü – For” döngüsü ile veri giriş
çı şyapı
ı labilir. Döngünün değ keni dizinin
gösteriniz. kı iş
ilerlemesi için kullanır.
lı
4. Bir yapı turunuz.
oluş Çeş veri türlerine sahip değ kenleri yapı
itli iş
içine tanı mlayı z. Program içinde
nı
ğz
ı
tanı mladınıyapı kullanı z.
yı nı
5. Yapı iş ile verileri kontrol
değ keni Yapı olarak tanı
dizi mlanı döngü içinde veri
p,
ediniz. girişve ekrana listeleme yapı
i labilir.
10
15. ÖLÇME VE DEĞ ERLENDİ
ERLENDİRME
ÖLÇME VE DEĞ RME
Ad(1)
A- OBJEKTİ TESTLER (ÖLÇME SORULARI)
F
Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı şsoruları r. Verilen
ağ daki ru dı
ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı
ş nı ı sorularda uygun şı
ru kkı
işaretleyiniz.
1. mlamak, diziden daha az bellek alanı gal eder.
( ) Ayrı değ ken tanı
ayrı iş iş
2. ( ) Dizi değ kenlerinin indis numaraları
iş sadece tam sayıolabilir.
3. ( ) Dizi içinde ondalı değ
klı erler saklayabiliriz.
4. ( ) Dizi içindeki veriler otomatik olarak sı
ralanı
r.
5. ( ) Hangisini dizi olarak tanı
mlayamayı
z?
A) Yapı
B) Metin
C) Karakter
D) Döngü
6. ( ) Genellikle dizi indisi hangi karakterler arası yazır?
na lı
A) ( )
B) [ ]
C) { }
D) { ( ) }
11
16. ÖĞRENME FAALİ
YETİ
–2
ÖĞRENME FAALİ
YETİ 2
-
AMAÇ
Bu öğ
renme faaliyetinde iş
aretçiler ve iş
aretçi yapı ile program yazabileceksiniz.
ları
ARAŞTIRMA
aş ı
Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma
rlı tı
faaliyetlerini yapmalını
sı z.
mıvardı İ
r? ş
Hangi dillerde bağ lıliste veya işaretçi (pointer) kullanı aretçi
kullanı nıavantajları dezavantajları araşrı z.
mı n ve nı tını
Posta görevlisi mektuplarıadresine nasıulaşrı Bir mektup gönderenden
l tıyor?
alıya giderken hangi aş
cı amalardan geçer, araşrı z.
tını
2. İARETÇİ
Ş LER
ğ zda
ı
Bir dizi yaptını boyutunu belirtmek zorunda kalı nı Eğ dizi çok küçük ise,
rsı z. er
bilgilerinizi saklamak için yeterli olmaz, ya da diziniz çok büyükse bilgisayarı değ ana
n erli
belleğ boş meş edersiniz. Dizilerde baş bir problem de içeriğ kolayca tekrar
ini una gul ka in
düzenlenememesidir. Yani dizi içeriğ alfabetik olarak sı
ini ralamak isterseniz, tüm bilgileri
ş
dı alı düzenleyip, içine tekrar atmak zorunda kalı nı
arı p, rsı z.
İşaretçiler ve bağ listeler
lı sayesinde dizinizin uzunluğunu esnek olarak
kullanabilirsiniz.
2.1. İ
şaretçi Nedir?
Dizilerdeki bilgiler peşpeş kutulara benzetilebilir. Bağ
e lılisteler ise birbirine
ş ünebiliriz. İ
ş
bağ lanmıayrı kutular olarak düş aretçiler birbiri ile ilgili olan, düğ halindeki
üm
bilgileri birbirine bağ lar.
Tupol dilinde iş
aretçi, yapı dizi örneklerini inceleyiniz.
ve
İşaretçi değ kenler sadece “bellek adresi” bilgisini saklayan değ kenlerdir. Diğ
iş iş er
olabilirler. İ ı
değ kenler ise metin veya sayı
iş stenilen değ hafı
eri zadan çağrmak için adresini
bilmeniz yeterlidir.
İ
ş ş
aretçiler C ve C++ programlama dillerinin temel bölümüdür. Yanlıbellek bölgesine
mak, kötü bir ş
ulaş ekilde programı çökmesi ile sonuçlanabilir. Bunu beyninize rastgele
n
ünebilirsiniz. İ
ş
batılan sivri bir iğ gibi düş
rı ne aretçileri hatalıkullanmak bilgisayarı
n
belleğ rastgele kurcalamak anlamı gelir.
ini na
12
17. C dilinde işaretçi örneği
#include <stdio.h>
main(){
int i; /* quot;iquot; tamsayı değ kenlerdir */
iş
int *iptr; /* quot;*quot; iş aretçi olduğunu belirtir */
iptr = &i;
aretçiye muhakkak bir de ğ ken adresi atanı quot;" adres simgesidir */
/* iş iş r,
*iptr = 55;
aret etti ğ değ kene 55 değ
/* aslı nda işaretçinin iş i iş eri atandı */
clrscr();
printf(quot;%dnquot;,i); /* ekrana 55 yazar */
printf(quot;%dnquot;,*iptr); /* 55 quot;iquot; değ keninin değ
iş eri*/
printf(quot;%Xnquot;,iptr); /* FFC8 quot;iquot; değ keninin hafı
iş zadaki adresi*/
printf(quot;%Xnquot;,&iptr); /* FFCA işaretçinin adresi*/
printf(quot;%Xnquot;,&i); /* FFC8 quot;iquot; değ keninin hafı
iş zadaki adresi*/
getch();
}
Resim 2.1a: İaretçi değ keni tanı
ş iş mlanan programı çalı
n şmadan önceki bellek görüntüsü
Resim 2.1b: İaretçi değ keni ve normal bir değ kenin bellek görüntüsü
ş iş iş
13
18. 2.2. Bağ Liste Tanı
lı mlama
Bağ listelerde (linked list) Ş 2.1’de görüldüğ gibi her eleman birbirine iş
lı ekil ü aretçiler
ile bağdı İ
lı r. ş aretçinin en son gösterdiğ ise “nil veya null” adı
i verilen boş değ
bir erdir.
“Nil” liste sonunu belirtir.
Asıverileri yer değ tirerek düzenlemek yerine, iş
l iş aretçiler tekrar düzenlenerek yer
değ tirme iş hı bir ş
iş lemi zlı ekilde yapır. lı
3 elemanlı dizi; Ad
bir
Ad(2)
Ad(1) Ad(3)
Ali Veli Mehmet
3 elemanlı lı (linked list)
bağ liste
Düğ (node)
üm Düğüm Düğüm
Ali Veli Mehmet
Boş(nil)
İ
ş İ
ş İ
ş
aretçi (pointer) aretçi aretçi
Ş 2.1: Diziler ve bağ listeler
ekil lı
Pascal dilinde bağ listeleri aş ı ş
lı ağdaki ekilde kullanabiliriz.
Yeni bir iş
aretçi tanı
mlayalı
m:
TYPE
isaretciAdi= ^KayitTuru;
Hemen tanı
mlamanıaltı da yapı zı
n nda mı “KayitTuru” tanı
mlayalı
m:
KayitTuru= RECORD
Adi: String[15];
Notu: integer;
Sonraki: isaretciAdi;
END;
14
19. Alt alta yazı bu satı ile yeni bir yapı onun adresini saklayacak bir iş
lan rlar ve aretçimiz
oldu. “Sonraki” değ keni diğ düğ
iş er ümün adresini saklayacaktı
r.
Son olarak bu kayıyapını
t sı belirten bir değ ken tanı
iş mlayalı
m:
VAR
Dugum: isaretciAdi;
Kodları araya getirelim:
bir
Pascal dilinde bağ liste örneğ
lı i
PROGRAM bagliListeler;
TYPE
isaretciAdi= ^KayitTuru; {quot;KayitTuruquot; yapı nı iş
sı n aretcisi}
KayitTuru= RECORD {yapı veya veri kümesi}
Adi: String [15];
Notu: integer;
Sonraki: isaretciAdi; {sonraki kayıt}
END;
VAR
Dugum: isaretciAdi;
ş
Artıprogramı zı “kurulum” kı tamamlanmı r.
k mın smı tı
ğz
ı
Yaptımıdeğ kenlerden sonra, ana programıkod yazı nda ise:
iş n mı
Bir düğ oluş m.
üm turalı
Düğ veri aktaralı
üme m
Düğ ümün iş
aretçisini düzenleyelim (baş ç, orta, bitiş
langı olarak)
BEGIN
New(Dugum); {Yeni düğ oluş
üm turduk}
Dugum^.Adi := 'Ali Can'; {Veri aktardık}
Dugum^.Notu:= 45;
Dugum^.Sonraki:= nil; {Bağ Listeyi sonlandı yoruz}
lı rı
writeln('Adı ',
: Dugum^.Adi);
writeln('Notu: ', Dugum^.Notu);
readln;
Release(Dugum); {düğümü sildik}
END.
2.3. Bağ Listeyi Kullanma
lı
Bir dizi içindeki bir elemanısildiğinizde, hala bellekte yer kaplayan bir boşalan
oluş Ayrı iş yaramayan bir “boş
ur. ca e luk”, programda istenmeyen hatalara neden olabilir.
15
20. Bağ listelerde ise düğ silmek çok kolaydı
lı üm r:
Düğ
ümlerdeki iş
aretçileri düzenleyin
Düğ silin
ümü
Ali Veli Mehmet Boş(nil)
Ali Veli Mehmet Boş
Ali Veli Mehmet Boş
Tek bağ listelerin dezavantajı kaydı
lı ilk bulmanı mümkün olmaması r. Yani siz
n dı
ı sakladıı z için bu mümkün değ
ğmı
geri yönde gidemezsiniz. Hep sonraki kaydı bağnı
n ildir.
“Ali” düğ ümü, “Veli” düğ ümünü gösteriyor, ama “Veli” düğümünün önceki düğ ile ilgili
üm
hiçbir ipucu yoktur.
2.4. Çift Bağ Listeler
lı
İ iş
ki aretçi kullanarak önceki ve sonraki düğ
ümlerin adres bilgilerini tutabilirsiniz.
Ali Veli Mehmet
Boş(nil) Boş(nil)
2.5. Dairesel Bağ Listeler
lı
İ ve son düğ
lk ümün iş
aretçileri birbirini gösterebilir.
Ali Veli Mehmet
16
21. 2.6. Yı n
ğı
ğ (stack), özel tek yönlü bağ listelere benzetebiliriz. Ekleme ve silme iş
ı
Yını lı lemlerini
ı
sadece listenin en baş ndakiler üzerinde yapabilirsiniz. Üst üste tabaklar gibi
düşünebilirsiniz. Alttaki tabaklara ulaş
mak için mecburen üstteki tabaklarıkaldı rmak
zorundası zdı Yeni bir tabak gelince de yıın üstüne koyarsı z.
ğnı
nı r. nı
“Ters Polonyalı mı Reverse Polish Notation RPN” yöntemi bunu kullanı
Yazı – r:
Formül:
(1 + 2) * 4
Aynı
formülün RPN hali:
12+4*
Normalde 1 ve 2 toplar, sonucu 4 ile çarparı Sonuç 12 olur. RPN yönteminde ise
z.
adı olarak ş yapır:
m öyle lı
1 rakamı ğnıen üstüne konur.
yıın
2 rakamı ğnıüstüne konur, 1 alta iner.
yıın
2 ve 1 rakamı ğndan çekilerek toplama iş yapır, sonuç olan 3 yıı n en
yıı ğnı
lemi lı
üstüne konur.
4 rakamı ğnı en üstüne konur, 3 alta iner.
yıın
4 ve 3 rakamı ğ
yıı çekilerek çarpma iş yapır, sonuç olan 12 yınıen
ğn
ı
ndan lemi lı
üstüne konur.
Resim 2.2: RPN yöntemi
Yınlar genellikle LIFO (Last in First out – Son giren İ çı yöntemini temel alı
ğı lk kar) r.
2.7. Kuyruk
Kuyruk (queue) listelerinin iki kuralıvardı Birincisi yeni eklenen bilgiler sadece
r.
sona eklenebilir, ikincisi de silinecek bilgi sadece baş silinebilir. FIFO (First in First out
tan
– İ giren ilk çı yöntemi de denilmektedir.
lk kar),
Sinema kuyruğ undaki insanları ünün, ilk giren ilk kuyruktan çı Son gelen ise
düş kar.
son çı Kuyruğ girmek isterseniz en sona gitmeniz gerekir, biletini alan müş ise en
kar. a teri
baş olduğ
ta undan kuyruktan ayrır.
lı
17
22. Resim 2.3: Kuyruk yöntemi
2.8. Ağ
aç
“Ağ – Tree” listeleri doğrusal veya dairesel ş
aç ekilde gitmezler. Kök düğ üzerinde
üm
dallarıbulunduğ bir listedir.
n u
programcı bu yönteme “ikilik ağ – binary tree” demektedir. Bir düğ
aç
Bazı lar üm;
boş a, baş bir düğ veya iki düğ iş edebilir.
luğ ka üme üme aret
Genellikle yapay zekâ programları kullanır. Mesela bir satranç oyunu olabilir. İ
nda lı lk
ı
hamle en üstteki köktür. Yapı labilecek her hamlenin ihtimalleri dallara ayrır. Karş
lı
oyuncunun hareketine göre de ihtimaller değ erek dallar oluş En son dal “ş – mat” ile
iş ur. ah
biter.
18
23. Resim 2.4: Ağ listesi ve satranç oyunundaki dallanma*
aç
2.9. Grafik
Belli bir ş olmayan bağ listelerdir. Bir düğ bir veya daha fazla düğ iş
ekli lı üm üme aret
edebilir.
Resim 2.5: Grafik yöntemi
ları– neural network” kurulumunda kullanır. Beyin de bu
Genellikle “sinir ağ lı
yöntemle iş yapmaktadı Her düğ (neuron), siniri (synapses) temsil eder. Programı z
lem r. üm nı
ı kça bu geliş
karmaş tı
klaş miş yöntemleri keş federek algoritmaları zı yeniden
nı
şekillendireceksiniz.
*
Toplam 10 ^ 120 ihtimal vardı Evrendeki tahmini atom sayı 10 ^ 75 olduğ göre bu rakam ile
r. sı una
ı rız.
satranç ihtimallerini karş tını
laş
19
25. UYGULAMA FAALİ
YETİ
UYGULAMA FAALİYETİ
İlem Basamakları
ş Öneriler
1. Yapı veri tanı
sal mlanabilen bir dilde Her dil iş aretçi imkânısağ lamaz. Uygun dili
“işaretçi” oluş turunuz. bulmanıgereklidir.
z
2. İ
ş aretçiyi bir değ kene bağ nı
iş layız. Bir değ ken tanı
iş mlayı ona ait iş
p, aretçi
değ ken tanı
iş mlayız.
nı
İşaretçiyi değ kenin adresine bağ nı
iş layı z.
Doğ rudan iş aretçiyi kullanarak değ atamaları
er
yapı z.
nı
3. Kayıyapında bir değ ken
t sı iş Bir yapı mlayı iş
tanı p, aretçi ile yapı n adresini
nı
tanımlayı z.
nı saklayı z.
nı
Değ atayı ekrana değ listeleyiniz.
er p, eri
21
26. ÖLÇME VE DEĞ ERLENDİ
ERLENDİRME
ÖLÇME VE DEĞ RME
2. boyut
OBJEKTİ TESTLER (ÖLÇME SORULARI)
F
Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı şsoruları r. Verilen
ağ daki ru dı
ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı
ş nı ı sorularda uygun şı
ru kkı
işaretleyiniz.
1. İ
ş ğı
aretçi tanı
mlandı nda muhakkak bir değ kene bağ
iş lanmalı r. ( )
dı
2. Düğ (record) içinde sadece sayı
üm bilgisi saklayabiliriz. ( )
3. Kayıve yapı
t aynıkavramlardı ( )
r.
4. rusal bir ş
Listeler doğ ekilde birbirine bağ olarak yapırlar. ( )
lı lı
5. Her listenin sonu “nil - null” ile belirtilmelidir. ( )
6. Hangisi bir veri listesi değ
ildir?
A) Bağ lı
B) Çift bağlı
C) Grafiksel
D) Yıı
ğn
22
27. ÖĞRENME FAALİ
YETİ
–3
ÖĞRENME FAALİ
YETİ 3
-
AMAÇ
Nesneye yönelik programlama yapabileceksiniz.
ARAŞTIRMA
aş ı
Bu faaliyet öncesinde hazı k amaçlı ağda belirtilen araşrma
rlı tı
faaliyetlerini yapmalını
sı z.
Klasik programlama dilleri ile nesne tabanlıprogramlama dillerinin farkları
nelerdir?
Yapay zekâ ile ilgili programlarıinceleyiniz. Mesela bilgisayar ile sohbet
programları oyunlar gibi.
ve
3. NESNE TABANLI PROGRAMLAMA
ı zlı
Yapı programları
lan rahat anlaş r, hı ve görsel nitelikleri zenginleş
lı tirilmişduruma
getirmek için nesne tabanlı programlama dilleri kullanı labilir. Nesne tabalı programlama
labilir. Yine de OOP (Object Oriented
dilleri ile güvenilir ve hatadan uzak programlama yapı
Programming – nesne tabanlı ı
programlama) tek baş bir programı
na daha okunaklı hale
getiremez.
QBasic ve Visual Basic 6 nesne tabanlı programlama dilleri değ
ildir. C#, C++ ve Java
dillere örnektir. Hangi dilin OOP olduğ tartıladursun, biz ş
şı imdilik C++ ile
nesne tabanlı u
ı
ilk denemelerimizi yapacağ z.
3.1. Kolay Programlama Yöntemi
Bilgisayarı zı ne kadar güçlü olduğ önemli değ
nın u ildir, onun sırları
nı nıyazımlı
kontrol eder. Yazımları en büyük problemi “güvenilirlik” konusudur. Program sı sı
lı n kk
göçmemeli, hata vermemeli ve garip davranmamalı r. Daha önceki derslerde bunun
dı
öneminden yaş ş
anmıörnekler ile bahsetmiş
tik.
23
28. Güvenilir bir program planlanan zamanda bitmelidir. Tam test etmeden piyasaya
sürmek kötü sonuçlar verebilir.
Eski zamanlarda programlar küçük olduğ için pek plan ve organizasyon yapmaya
u
ş
gerek duyulmazdıÇalı
. mayan programı programcı tekrar yazı
yordu. Küçük programlarda
“dene ve hata bul” iş lemi pek zor değ ildir. Büyük programlarda böceklerin daha fazla
saklanacak yerleri vardı Milyonlarca satıprogramda “dene ve hata bul” pek iş yaramaz.
r. r e
Bu nedenle örneğ bir mimar gökdeleni plansıolarak inş edemez.
in z a
Önceki derslerde de anlatı ğ gibi, büyük programları programlara bölerek kolay
ı
ldı alt
programlanı hâle getirmiş Ana program yayı
r tik. mlanmadan önce alt program kodları
ş tirilir ve derlenir. Burada siz de bir ş
kopyala yapı r ile birleş
tı üphe duyuyor musunuz?
ş
Mesela çalı zamanı alt programlar diğ alt programlardan etkileniyor olabilir mi?
ma nda er
OOP’de temel olan konu da alt modüllerin diğ modüllere müdahale etmemesidir.
er
Yani araları yalım vardı Modüllere “object – nesne” de denir.
nda tı r.
Bir nesnenin iki temel özelliğ vardı
i r:
Veri: Özellikler de denir.
Komutlar: Metod da denir. Veriyi kontrol eden kodlardı
r.
Nesne diğ kodlara müdahale etmeyeceğ için kazancı z ş
er i mı unlar olur:
Güvenilirlik: Program çalı şğ ı
madında, böcekli nesne alır ve düzeltilir, tüm
nı
programıelden geçirilmesine gerek kalmaz.
n
Tekrar kullanı labilme: Teorik olarak nesneleri alı baş program içinde
p ka
rahatlı kullanabilirsiniz. Böylece yeni program yazarken daha hı iş
kla zlı lerinizi
bitirebilirsiniz.
“inheritance – miras alma, kalı alma, devralma” sayesinde elde
t
Bu kazançları
ederiz. Var olan kodu tekrar kullanabilmek, programcı n daha fazla ilerlemesini sağ
nı lar.
Resim 3.1: Klasik programlama ve nesne tabalıprogramlama
24
29. Klasik programlamada alt program diğ alt programı verisine ulaş
er n abilir. Nesne
tabanlıprogramlamada ise nesneler verilerini korurlar. Bu korumaya “encapsulation –
kuş atma” denir.
3.2. Nesne Kullanı
mı
Programlamada en büyük sorun, var olan kodu güncellemektir. Programcıbuna
ş
yı nı
lları verir. Zaten çalı bir programı
an güncellemek
yepyeni program yazmaktan kolaydı Nesne tabanlı
r.
programlamada, sadece güncellenmesi gerekli nesne
çalıldıı
ş ğndan
ı
üzerine programcın
nı iş
i
ı
kolaylaşr.Nesne tabanlı programlama bu sebeple çok
tutulmuştur.
Uzaylı larıvurduğ bir oyunda, ekrana gelen
uz
uzaylı n görünümünü değ tirmek için yapmanı
ları iş z
nesnesini alı değ tirip, yeniden eski yerine koymaktı Sadece ş değ
gereken; uzaylı p, iş r. ekil il,
hareketlerini de bu şekilde güncelleyebilirsiniz.
Nesnedeki Veriyi Saklama veya Gösterme
ş inde bulunabilir. “private, public ve protected”
Nesneler de birbirleri ile veri alı veriş
bu iş için yapı şr.
lem lmı tı
Private (özel): Nesne verisini ve kodunu paylaş açmaz.
ıma
Public (paylaş açı Herkes nesnenin verisini ve kodunu kullanabilir.
ıma k):
Protected (korumalı Eğ varolan bir nesne miras alma yöntemiyle
): er
ı
kopyalanı yeni bir nesne oluş
p turulursa, yeni nesne sadece paylaş açı
ma k
(public), korumalı (protected) veri ve komutları miras alı Özel (Private) veri
r.
ve komutlar eski nesnede kalı yeni nesneye aktarı
r, lmaz.
turmanı ilk adı “class – sı f” oluş
nı
Yeni bir nesne oluş n mı turmaktı Sıf daha önceki
r. nı
derste gördüğ ümüz yapı benzer. Bir sı f, veriyi kullanmak için veri ve kod
ya nı
tanımlamaları tanı
nı mlar. Bir sıf nesne değ
nı ildir. Nesneyi bir değ ken gibi tanı
iş mlayı
p,
sıftan oluş
nı turursunuz.
Bir sı ftan nesneler türetebilirsiniz:
nı
class canavar
{
public:
int x_koordinati;
int y_koordinati;
void hareketEt(int, int);
void ilklendirme(int, int);
};
İ ilk sı fı zı
şte nımı yazdı Gördüğ
k. ünüz gibi sı fı zı“x_koordinati ve y_koordinati”
nımın
olarak tam sayıtüründe 2 özelliğ var. “hareketEt ve ilklendirme” olarak da 2 metodumuz
i
var.
25
30. Bu hazı ktan sonra, yapmamıgereken metotlarıkodları hazı
rlı z n nı rlamaktı
r:
void canavar::hareketEt(int yeni_x, int yeni_y)
{
x_koordinati = x_koordinati + yeni_x;
y_koordinati = y_koordinati + yeni_y;
}
void canavar::ilklendirme(int ilk_x, int ilk_y)
{
x_koordinati = ilk_x;
y_koordinati = ilk_y;
}
Son olarak da ana programı zı yoruz:
mı yazı
int main(int argc, char *argv[])
{
canavar zombi; //‘canavar’ sı fı
nı ndan ‘zombi’ nesnesi üretiyoruz
zombi.ilklendirme(12, 15);
printf(quot;Ilk C++ Programimiznquot;);
cout << quot;Zombimizin X olarak yeri quot; << zombi.x_koordinati << quot;nquot;;
cout << quot;Zombimizin Y olarak yeri quot; << zombi.y_koordinati << quot;nquot;;
zombi.hareketEt (34, 9);
cout << quot;X olarak zombinin yeni yeri quot; << zombi.x_koordinati << quot;nquot;;
cout << quot;Y olarak zombinin yeni yeri quot; << zombi.y_koordinati << quot;nquot;;
system(quot;PAUSEquot;);
return 0;
}
Resim 3.2: C++ örneğimizin çı sı
ktı
Genel Olarak OOP Deyimleri
ş
Bu özet sizi profesyonel OOP’ci yapmasa da, bu temel kelimeleri anlamaya çalı m:
alı
Encapsulation (kuş atma): İ veri ve kodları bir yerde toplamak
lgili tek
Inheritance (miras alma): Bir nesneden diğ erine veri ve kod geçirmek
Method (olay, komut): Nesnenin verilerini manipüle eder
Object (nesne): Bir ünitede gruplanmıveri ve komut koleksiyonudur
ş
Nesnenin genellikle “initialize – ilkleme” olayıolmalır. Varsayı olarak ilk kez
dı lan
ı
nasıoluş
l turulacağ belirtiriz.
nı
26
31. lanlar klasik programlamadaki alt programlara benziyor. Ama ş
Aslı bu yapı
nda imdiye
kadar hiç bir yapı olay eklememiş ve bu kadar geliş
ya tik mişdeğ ken tanı
iş mlaması
gerekmemişti.
Resim 3.3: Sı f (class) ve nesne (object)
nı
Resim 3.4: Nesnelerin mesajlaş
ması
3.3. Dil Seçimi
programlama dilleri ana olarak ş ş
Nesne tabanlı u ekilde gruplandılı
rırlar:
Karma (hybrid) nesne tabanlı programlama dili: Eski bir dil üzerine OOP
özellikleri eklenmiş dil karma olur. Mesela Pascal üzerine yapı ş
ise lmıDelphi,
C üzerinde C++ gibi…
Saf (pure) nesne tabanlı programlama dili: SmallTalk, Eiffel, C# ve Java gibi
rudan OOP özelliklerine sahip olarak yazı ş
doğ lmıdiller.
Karma bir dil eski dili bilen birinin, nesne tabanlıdile geçiş kolaylaşrmak için
ini tı
yapı şr. En az eğ ve deneyim ile OOP’ye geçişsağ Programı küçük bir kı nı
lmı tı itim i lar. n smı
nesne tabanlı
, kalan büyük kı nı klasik programlama yöntemleri ile yazabilirsiniz.
smı eski
27
32. Aslı en iyisi doğ
nda rudan saf bir OOP dili ile programlamaya baş
lamaktı Böylece
r.
ı ı
programları z karmaş ve düzensiz olmaz. Tabii tek baş OOP ile düzenli ve kolay
mı k na
okunur program yazamazsı z. Yazım tekniğ
nı lı inizi, problem çözüm yöntemlerinizi
geliş
tirmelisiniz.
Yazımıkullanacak olanlar, sizin gece geç saatlere kadar çalı ğnı , hangi
ş ı zı
lı tı
ğ zı
ı şı
programlama dilini kullandını umursamaz. Zamanı biten, çalır halde olan program
nda
satır, rağ görür. Ondan sonra da artı siz patron olursunuz, kravatızı
lı bet k nı takar, rakibinizi
geçmek için politikalar geliş
tirirsiniz.
Resim 3.6: Öğrenme grafiği
Resim 3.5: Program yapı aş
m amaları
28
33. UYGULAMA FAALİ
YETİ
UYGULAMA FAALİYETİ
İlem Basamakları
ş Öneriler
1. Sı f tanı
nı mlamak için uygun bir dil Karma veya saf nesne tabanlıprogramlama
ı rı z.
seçiniz dillerini karş tını
laş
2. Bir sı f tanı
nı mlayı z nı “canavar” örneğ indeki gibi siz de sıf
nı
ı
oluş turabilirsiniz. Mesela taş için “tasit”
tlar
3. Sı fa ait olaylar oluş
nı turunuz
sıfı
nı gibi.
4. Sı ftan nesne oluş
nı turunuz
“canavar” örneğ indeki gibi sı fa “hareketEt”
nı
gibi metod ekleyiniz.
“tasit” nesnesinden de örneğ araba, kamyon
in
nesneleri yapı labilir.
5. Nesnenin ilklenme (initialize) ve Program içinde nesnenin olayları kontrol
nı
diğ olayları yazı z
er nı nı ediniz.
29
34. ÖLÇME VE DEĞ ERLENDİ
ERLENDİRME
ÖLÇME VE DEĞ RME
1. boyut
A- OBJEKTİ TESTLER (ÖLÇME SORULARI)
F
Aş ı sorulardan; sonunda parantez olanlar doğ / yanlı şsoruları r. Verilen
ağ daki ru dı
ifadeye göre parantez içine doğ ise “D”, yanlıise “Y” yazız. Şklı
ş nı ı sorularda uygun şı
ru kkı
işaretleyiniz.
1. Nesne tabanlıprogramlamada, klasik programlamadaki döngü ve dallanma gibi
komutlar yoktur. ( )
2. Her nesne oluş
turulur oluş
turulmaz, hemen ilklendirilmelidir. ( )
3. Programı zı
mı nesnelere böldüğ ümüzde, dünyadaki tüm programcı bizim
lar
programı zı
mı anlayabilirler. ( )
4. “Encapsulation –kuş
atma” nesnenin diğ nesnelerin komutları eriş
er na ememesidir.( )
5. Aş ı
ağ dakilerden hangisi ile nesnenin değ ken değ
iş erlerini korumayı
z?
A) private - özel
B) void - boş
C) protected - korumalı
ı
D) public – paylaş açı
ma k
6. Nesne tabanlıprogramlamada hangisi nesne ile ilgili değildir?
A) Miras alma
B) Kuş atma
C) Alt program
D) Metod
30
35. MODÜL DEĞERLENDİ
RME
MODÜL DEĞERLENDİ
RME
PERFORMANS TESTİ(YETERLİ ÖLÇME)
K
Modül ile kazandıız yeterliğ öğ
ğnı i, retmeniniz iş basamakları göre 0 ile 10 puan
lem na
arası olacak ş
nda eklinde değ
erlendirecektir.
DEĞERLENDİ
RME KRİ
TERLERİ Puan
Tek isim vererek, birçok veriye dizi kullarak ulaş
ma
Bir dizi elemanı değ aktarma
na er
Döngü içinde diziye veri girme ve gösterme
Çeş veri türlerine sahip değ kenleri yapı kontrol etme
itli iş ile
Yapı veri tanı
sal mlanabilen bir dilde iş
aretçi oluş
turma
Kayıyapında bir değ ken tanı
t sı iş mlama
İ
şaretçiyi bir değ kene bağ
iş lama
Sı f tanı
nı mlamak için uygun bir dil seçme
Bir sı fı mlayan nesne yazma
nı tanı
Nesnenin ilklenme olayı yazma
nı
Toplam (en fazla 100 puan olabilir)
DEĞERLENDİ
RME
Yaptıız değ
ğnı erlendirme sonucunda eksikleriniz varsa öğ
renme faaliyetlerini
tekrarlayız.
nı
Modülü tamamladı z, tebrik ederiz. Öğ
nı retmeniniz size çeş ölçme araçları
itli
uygulayacaktı Öğ
r. retmeninizle iletiş geçiniz.
ime
31
36. CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
ÖĞRENME FAALİ
YETİ CEVAP ANAHTARI
1
1 D
2 D
3 D
4 Y
5 D
6 A
ÖĞRENME FAALİ
YETİ CEVAP ANAHTARI
-2
1 D
2 Y
3 D
4 Y
5 Y
6 C
ÖĞRENME FAALİ
YETİ CEVAP ANAHTARI
-3
1 Y
2 D
3 Y
4 D
5 D
6 C
ı rarak kendinizi değ
Cevapları zı
nı cevap anahtarları karş tı
ile laş erlendiriniz.
32
37. SÖZLÜK
SÖZLÜK
İ sim Okunuş Anlam
priority prayoriti iş
lemciye yaptılan iş
rı lemlerin öncelik değ
erleri
procedure pir ı r
siicı yordam, prosedür
project pricekt proje, tasarı
prompt prompt uyarı
, MS-DOS sistem hazısimgesi c:> gibi
r
protect prı
tekt korumak, protection – koruma
queue kyu kuyruk
real riı
l ondalı sayı
klı lar
recognize rikı
gnayz tanı
mak
record rikı
rd rekor, kayı
t
recover rikavı
r bilgileri kurtarmak
recursive ı
rikörsiv kendini çağ fonksiyon
ran
register recı r
stı yazmaç, kayı kullanı olmak
tlı cı
registry recı
stri Windows kayı
t bilgileri
reserve rizörv ayı
rmak, rezervasyon
revert rivört geri dönüş
türmek, kurtarmak
root ruut kök, ana dizin
scene sin sahne
script sı
kript yardı programlama dili, el yazı
mcı sı
scroll skrol kaydı
rmak
sector sektı
r bölge, disk iz parçası
sequence sikuins sı
ra
server sörvı
r ana bilgisayar, sunucu
set set küme, takı ayarlamak (setting)
m,
33
38. KOD ÖRNEKLERİ
KOD ÖRNEKLERİ
Her iki örnekte de 3 isim bilgisi saklanı Ekran görüntüleri aynı r. Acaba neden
r. dı
ğıyer olan DIM kı nda birinci örnekte 3, ikinci örnekte 2
değ kenlerin tanı
iş mlandı smı
yazmaktadır?
34
39. TextBox1 TextBox4
TextBox2
TextBox3
Dizinin sı rları ş
nı dında bir değ çağ lması
ı er rı hatası“Index Out Of Range”
;
Visual Basic çok boyutlu dizi örneğ eğ “DataGridView1”de yeterli veri
inde er
girilmemiş nasıbir hata meydana gelebilir? Nasıbir önlem alı nı
ise l l rsı z?
35
40. Visual Basic dilinde çok boyutlu dizi örneği
Private Sub Button4_Click
Dim bilgi(1, 5) As String 'İ boyutlu dizi tanı
ki mlama kısmı
Dim i, j As Integer
For i = 0 To 1
For j = 0 To 5
bilgi(i, j) = DataGridView1.Item(i, j).Value
Next
Next
MsgBox(quot;Arama sonucu quot; & bilgi(TextBox5.Text, _
TextBox6.Text))
End Sub
Dinamik dizi örnek programı dizi hazı
nda, rlanmadan arama yapırsa nasıbir hata
lı l
meydana gelebilir? Nasıbir önlem alı nı
l rsı z?
Visual Basic dilinde dinamik dizi örneği
Dim DinamikDizi() As String 'dizi boyutu belli değil
Private Sub Button6_Click
ReDim DinamikDizi(TextBox8.Text) 'kullanı boyutu girdi
cı
Dim i As Integer
For i = 0 To TextBox8.Text 'kullanı değ
cı erleri giriyor
DinamikDizi(i) = InputBox(quot;Eleman değeriquot;)
Next
End Sub
Private Sub Button5_Click 'aranan eleman ekrana gelir
MsgBox(DinamikDizi(TextBox7.Text))
End Sub
C dilinde yapı örneği
struct birOgrenci{
char *Ad;
int Notu;
}Ogrenciler;
main()
{
Ogrenciler.Ad = quot;Ali Canquot;;
Ogrenciler.Notu = 34;
printf(quot;Bir öğrencinin adı ve notu: %s %dquot;,
Ogrenciler.Ad, Ogrenciler.Notu);
}
36
41. Yapıdizisi kullanı
mı
C dilinde yapı dizisi örneği
#include <stdio.h>
struct birOgrenci{
char *Ad[15];
int Notu;
}Ogrenciler[2]; //Dizi olarak yapı tanımlanması
main()
{
int i;
clrscr(); //Yapı içine veri aktarma
for (i=0; i<3; i++) {
fflush(stdin);
gets(Ogrenciler[i].Ad);
scanf(quot;%dquot;,&Ogrenciler[i].Notu);
printf(quot;nquot;);
}
for (i=0; i<3; i++){//Veri çı sı alma
ktı
printf(quot;n%d öğ rencinin adı ve notu: %s %dquot;, i,
Ogrenciler[i].Ad, Ogrenciler[i].Notu);
}
}
ağ iş
Aş ı
daki aretçiler ile ilgili C dilinde olan satı nı
rları inceleyiniz.
char *hata = quot;Dosya yok!quot; //metin işaretçilere ilk değ atanabilir
er
int *iptr;
iptr = (int *) 0x1b64;
//Belli bir adres işaretçiye atanabilir, ama tehlikelidir, neden?
*iptr = 2001; //işaretçiye değ aktarı
er mı
printf (quot;n%pquot;, iptr); //ekrana 1B64 yazar
printf (quot;n%dquot;, *iptr); //ekrana 2001 yazar
printf (quot;n%Xquot;, &iptr); //ekrana FFF2 benzeri işaretçinin adresini yazar
char far *cptr; //1 MB (0-FFFFF) içinde tanımlanabilen işaretçi
p = (char far *) 0x124532bc //1245 segment, 32bc offset adresidir
char far *ekran = (char far *) 0xb8000000;
//B800 DOS’un ekran bilgilerinin tutulduğ yerdir
u
*(ekran+20) = '#';
*(ekran+21) = 10;
//metin ekranı ilk satı nı 11. sütununa # karakterini basar
n rı n
//Neden 20 deyince 11. sütun oldu?
//Not: Çift adresler veri, tek adresler renk bilgisi olarak kullanı r
lı
int a[3] = {12, 55, 88}; //üç elemanlı dizi ve ilk değ atamaları
er
int *iptr; //int *iptr = a; da olabilirdi
iptr = a;
37
42. //dizi başlangı adresi & ile gösterilemez
ç
printf (quot;n%dquot;,*(iptr+1));
//ekrana 55 yazar
printf (quot;n%dquot;, iptr[2]);
//ekrana 88 yazar; *(iptr+2) ile iptr[2] aynı anlamdadır
void deneme (int *iptr) //fonksiyona bir değ kenin adresi gelecek
iş
{
*iptr=100; //işaretçinin gösterdiğ yere değ aktarı r
i er lı
}
void main(void) //void ne anlama gelir?
{
int x;
deneme (&x); //x değ keninin adresi fonksiyona yollanı
iş r
printf (quot;%dquot;, x); //ekrana 100 yazar
}
char *ad_oku (void) //değ döndüren fonksiyon
er
{
char s[50];
printf (quot;Adı z=quot;);
nı
gets(s);
return s; //okunan metnin değeri gönderilir
}
main()
{
char *cptr;
cptr= ad_oku();
//dönecek değ ancak bir char tipi iş
er aretçiye aktarı labilir
printf(quot;%squot;, cptr);
}
Üstte ekran belleğ ulaş ile ilgili bir örnek vardı Sizce belleğ istediğ
ine ma r. in iniz
ı
yerine ulaşlmasıprogramcı özgürlük mü sağ yor, yoksa tam tersine, hazıekrana yazı
ya lı r
yazma komutlarıdururken böyle iş yapmak, daha da kıtlı ortam mı lı
lem sı bir sağ yor?
38