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İ
VERİYAPILARI
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. Dİ ZİLER .............................................................................................................................. 3
1.1. Dizi Değiş kenini Tanı mlama ......................................................................................4
1.2. Dizi Değiş keni ile Veri Saklama................................................................................. 5
1.3. Çok Boyutlu Diziler....................................................................................................5
1.4. Dinamik Diziler ..........................................................................................................7
1.5. Yapı lar ........................................................................................................................8
1.6. Yapı larıDizi Olarak Kullanmak................................................................................. 9
UYGULAMA FAALİ YETİ............................................................................................ 10
ÖLÇME VE DEĞERLENDİ RME .................................................................................. 11
ÖĞRENME FAALİ YETİ- 2 ................................................................................................. 12
2. İŞARETÇİ LER .................................................................................................................. 12
2.1. İşaretçi Nedir?........................................................................................................... 12
2.2. Bağ lı Liste Tanı mlama.............................................................................................. 14
2.3. Bağ lı Listeyi Kullanma .............................................................................................15
2.4. Çift Bağ lıListeler ..................................................................................................... 16
2.5. Dairesel BağlıListeler .............................................................................................. 16
2.6. Yı ğ ın .........................................................................................................................17
2.7. Kuyruk ...................................................................................................................... 17
2.8. Ağ aç .......................................................................................................................... 18
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ı mı ....................................................................................................... 25
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
AÇIKLAMALAR
AÇIKLAMALAR
KOD 481BB0027
ALAN Biliş
im Teknolojileri
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ı şolmak.
sal Programlama Temelleri modülünü almı
YETERLİ
K Veri yapı
ları
yla program yazmaya hazı
rlı
k yapmak
Genel Amaç
Gerekli ortam sağlandı ğ ı
nda, dizi ve iş
aretçileri
tanı
yıp nesneye yönelik program yazabileceksiniz.
Amaçlar
MODÜLÜN AMACI
1. Dizi mantı ğı nıanlayacak ve dizi değişkenleri
kullanabileceksiniz
2. İşaretçiler ile program yazabileceksiniz
3. Nesneye yönelik program yazabileceksiniz
ii
Gİ
RİŞ
Gİ
RİŞ
Sevgili Öğ
renci,
1
2
ÖĞRENME FAALİ
YETİ
–1
ÖĞRENME FAALİ
YETİ- 1
AMAÇ
Mehmet
ğ
Dizi mantıını
anlayacak, dizi ve yapıdeğiş
kenleri kullanabileceksiniz.
ARAŞ
TIRMA
Bu faaliyet öncesinde hazı
rlı ağı
k amaçlıaş da belirtilen araş
tı
rma
faaliyetlerini yapmalısı
nız.
1. Dİ
ZİLER
Birkaç tane değ işken ile küçük programlarıidare edebilirsiniz. Programlamada uzun
ve benzer bilgilerle dolu değ turulması“dizi - array” ile yapı
er listelerin oluş lmaktadı
r. Veri
yapısı
nıaş ağıdaki gibi ayrıdeğiş ken yapabileceğ iniz gibi:
Ad1 = "Ali"
Ad2 = "Veli"
Ad3 = "Mehmet"
Ad(1) = "Ali"
Ad(2) = "Veli"
Ad(3) = "Mehmet"
3
Dikkat ederseniz, önceki örnekte 3 ayrıdeğiş kenimiz varken, sonrakinde ise tek
değişken olan “Ad” kullanılmıştı
r. Dizi sayesinde tek değişken ismi ile birden fazla değ
er
saklanabilmektedir.
3 elemanlıbir dizi; Ad
Not: Programlama dillerinde genellikle ilk dizi elemanı nı n indis numarası“0”dı r. QBasic dilinde
“Option Base – Taban Seçeneği” ile varsayılan alt limiti 0 veya 1 olarak değiş
tirebilirsiniz.
Dizi elemanlarınıtanı
mlanmadan önce “Option Base 1” olarak seçilmişise, 0. elemandan değil 1.
elemandan baş lanı
r.
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
4
1.2. Dizi Değ
işkeni ile Veri Saklama
Programdaki dizi değ iş
kenlerinin tanı
mlandıklarısatı ş
rlar çalıtırı
ldığında, ana bellekte
dizi boyutunca yer ayrılı
r. Değiş
ken ile olan iş
lem bitince ayrılan bellek bölgesi silinir. Belli
bir bellek alanıayrı lmasından dolayıdizinin maksimum sı nı
rıdı şındaki diğ er bellek
bölgesine eriş
emeyiz.
1. Baş la
2. Metin Dizi Ad(3)
3. Sayı sal i, j
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
5
Tablolama programları ndaki gibi satı
r ve sütunlu hücrelerden oluş an dizilere; iki
boyutlu dizi denir. Resim 1.3’te görüldüğü gibi herhangi bir hücrenin değerine satır ve sütun
ilebilmektedir. Matematikteki matrisler de çok boyutlu dizilerdir.
bilgisini kullanarak eriş
1. boyut
2. boyut
Bir boyut daha eklendiğ inde küp şekline benzeyen 3 boyutlu dizi elde edilir. Bu
dizilerde satı
r ve sütun bilgisinin yanında derinlik bilgisi de eklenir.
1. boyut 2. boyut
3. boyut
TextBox5
TextBox6
Resim 1.5: Çok boyutlu dizi örneği, burada dizi 0 indis numarasıile baş
lı
yor
6
Başla
Metin Dizi bilgi(2, 6)
Sayısal i, j, satır, sütun
Döngü i = 1, 2, 1
Döngü j = 1, 6, 1
Oku; bilgi(i, j)
Döngü Bitti
Döngü Bitti
Oku; "Satır ve sütun bilgisini giriniz", satır, sütun
Yaz; "Aranan bilgi: ", bilgi(satır, sütun)
Bitir
Not: Basic dilinde dinamik diziler için “Redim - Boyutlandı r” komutu kullanı
lı
r. Bu komut ile eski dizi
bilgileri silinir. Dizinin değiş
ken türünü değiş
tiremezsiniz.
Dizilerde dizi sı
nırı
nıdeğiş
tirebilirsiniz, ama 2 boyutlu bir diziyi 3 boyutlu dizi
yapamazsınız.
TextBox8 TextBox7
7
1. Baş la
2. Metin Dizi dinamikDizi()
3. Sayı sal i, sı
nı r, eleman
4. Oku; “Dizi sı nırınıgiriniz”, sınır
5. Boyutlandı r dinamikDizi(sı nır)
6. Döngü i = 1, sı nır, 1
7. Oku; dinamikDizi(i)
8. Döngü Bitti
9. Oku; “Eleman numarası nı giriniz”, eleman
10. Yaz; dinamikDizi(eleman)
11. Bitir
1.5. Yapı
lar
“Yapı sal Programlama Temelleri” modüldeki dosyalama kı smı nda, yapılar ve kayıtlar
hakkı nda az da olsa girişbilgisi verilmiş
ti. Sayıve metin değiş
kenleri karışı
k olarak bir yapı
(structure) içine kaydedebiliyoruz.
Ad1 = "Ali"
Notu1 = 45
Ad2 = "Veli"
Notu2 = 55
Ad3 = "Mehmet"
Notu3 = 75
kş
Bunun yerine artı uş
ekilde yapabiliriz:
Ogrenci1.Ad = "Ali"
Ogrenci1.Notu = 45
Ogrenci2.Ad = "Veli"
Ogrenci2.Notu = 55
Ogrenci3.Ad = "Mehmet"
Ogrenci3.Notu = 75
Yapı Kisi
Metin Ad
Sayısal Yas
Yapı Bitti
birKisi Kisi
Degisken = KayitDegiskeni.Degisken
1.6. Yapı
ları
Dizi Olarak Kullanmak
Dizi olarak kullanımda sadece yapıyıkullanacak değiş
kenin yazı
mıdeğ
işmektedir.
Yani yapıkısmıaynış ekilde tanı
mlanı
rken değiş
ken kısmıdeğişir.
Başla
Yapı birÖğrenci
Metin Ad
Sayısal Notu
Yapı Bitti
Döngü i = 1, 3, 1
Oku; "Öğrenci adını giriniz ", Öğrenci(i).Ad
Oku; "Öğrenci notunu giriniz ", Öğrenci(i).Notu
Döngü Bitti
Döngü i = 1, 3, 1
Yaz; "Öğrenci adı ", Öğrenci(i).Ad
Yaz; "Öğrenci notu ", Öğrenci(i).Notu
Döngü Bitti
Bitir
9
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
10
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
Ad(1)
A- OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
2. ( ) Dizi değiş
kenlerinin indis numaralarısadece tam sayıolabilir.
11
ÖĞRENME FAALİ
YETİ
–2
AMAÇ
ÖĞRENME FAALİ
YETİ- 2
Bu öğ
renme faaliyetinde iş
aretçiler ve iş
aretçi yapı
ları
ile program yazabileceksiniz.
ARAŞTIRMA
Bu faaliyet öncesinde hazı
rlı ağı
k amaçlıaş da belirtilen araş
tı
rma
faaliyetlerini yapmalısı
nız.
2. İ
ŞARETÇİ
LER
ğ
Bir dizi yaptıını zda boyutunu belirtmek zorunda kalı rsını
z. Eğer dizi çok küçük ise,
bilgilerinizi saklamak için yeterli olmaz, ya da diziniz çok büyükse bilgisayarı n değerli ana
belleğ ini boş una meş gul edersiniz. Dizilerde başka bir problem de içeriğ in kolayca tekrar
düzenlenememesidir. Yani dizi içeriğini alfabetik olarak sı ralamak isterseniz, tüm bilgileri
dışarıalı p, düzenleyip, içine tekrar atmak zorunda kalı
rsınız.
2.1. İ
şaretçi Nedir?
Dizilerdeki bilgiler peşpeş e kutulara benzetilebilir. Bağ lılisteler ise birbirine
bağ lanmı şayrıkutular olarak düş
ünebiliriz. İ
şaretçiler birbiri ile ilgili olan, düğ
üm halindeki
bilgileri birbirine bağlar.
Tupol dilinde iş
aretçi, yapıve dizi örneklerini inceleyiniz.
İşaretçi değiş kenler sadece “bellek adresi” bilgisini saklayan değişkenlerdir. Diğer
değ kenler ise metin veya sayıolabilirler. İ
iş stenilen değ zadan çağı
eri hafı rmak için adresini
bilmeniz yeterlidir.
İ
şaretçiler C ve C++ programlama dillerinin temel bölümüdür. Yanlı şbellek bölgesine
ulaşmak, kötü bir ş ekilde programın çökmesi ile sonuçlanabilir. Bunu beyninize rastgele
batırı
lan sivri bir iğne gibi düş ünebilirsiniz. İ
şaretçileri hatalıkullanmak bilgisayarı n
belleğini rastgele kurcalamak anlamına gelir.
12
C dilinde işaretçi örneği
#include <stdio.h>
main(){
int i; /* "i" tamsayı değişkenlerdir */
int *iptr; /* "*" işaretçi olduğunu belirtir */
iptr = &i;
/* işaretçiye muhakkak bir de ğ
işken adresi atanır, "&" adres simgesidir */
*iptr = 55;
/* aslında işaretçinin işaret etti ğ
i değişkene 55 değeri atandı */
clrscr();
printf("%d\n",i); /* ekrana 55 yazar */
printf("%d\n",*iptr); /* 55 "i" değişkeninin değeri*/
printf("%X\n",iptr); /* FFC8 "i" değişkeninin hafızadaki adresi*/
printf("%X\n",&iptr); /* FFCA işaretçinin adresi*/
printf("%X\n",&i); /* FFC8 "i" değişkeninin hafızadaki adresi*/
getch();
}
Resim 2.1a: İ
şaretçi değiş
keni tanı
mlanan programı
n çalı
şmadan önceki bellek görüntüsü
Resim 2.1b: İ
şaretçi değiş
keni ve normal bir değiş
kenin bellek görüntüsü
13
2.2. Bağ
lıListe Tanı
mlama
Bağ lılistelerde (linked list) Şekil 2.1’de görüldüğü gibi her eleman birbirine iş
aretçiler
ile bağlıdır. İşaretçinin en son gösterdiği ise “nil veya null” adıverilen boşbir değ erdir.
“Nil” liste sonunu belirtir.
Ası
l verileri yer değiştirerek düzenlemek yerine, iş
aretçiler tekrar düzenlenerek yer
değ
iştirme iş
lemi hı zlıbir ş
ekilde yapılı
r.
3 elemanlıbir dizi; Ad
Düğ
üm (node) Düğüm Düğüm
İ
şaretçi (pointer) İ
şaretçi İ
şaretçi
Yeni bir iş
aretçi tanı
mlayalı
m:
TYPE
isaretciAdi= ^KayitTuru;
Hemen tanı
mlamanı
n altı
nda da yapı
mızı“KayitTuru” tanı
mlayalı
m:
KayitTuru= RECORD
Adi: String[15];
Notu: integer;
Sonraki: isaretciAdi;
END;
14
Alt alta yazı
lan bu satı
rlar ile yeni bir yapıve onun adresini saklayacak bir iş
aretçimiz
oldu. “Sonraki” değ işkeni diğer düğ ümün adresini saklayacaktır.
VAR
Dugum: isaretciAdi;
TYPE
isaretciAdi= ^KayitTuru; {"KayitTuru" yapısının işaretcisi}
END;
VAR
Dugum: isaretciAdi;
Artı
k programı
mızı
n “kurulum” kı ş
smıtamamlanmıtı
r.
ğ
Yaptıı
mız değ
işkenlerden sonra, ana programı
n kod yazı
mında ise:
BEGIN
New(Dugum); {Yeni düğüm oluşturduk}
Dugum^.Adi := 'Ali Can'; {Veri aktardık}
Dugum^.Notu:= 45;
Dugum^.Sonraki:= nil; {Bağlı Listeyi sonlandırıyoruz}
2.3. Bağ
lıListeyi Kullanma
Bir dizi içindeki bir elemanısildiğinizde, hala bellekte yer kaplayan bir boşalan
oluş
ur. Ayrı
ca işe yaramayan bir “boş
luk”, programda istenmeyen hatalara neden olabilir.
15
Bağ
lılistelerde ise düğ
üm silmek çok kolaydı
r:
Düğ
ümlerdeki iş
aretçileri düzenleyin
Düğ
ümü silin
Boş(nil) Boş(nil)
16
2.6. Yı
ğın
Yığ ı
nı(stack), özel tek yönlü bağ lılistelere benzetebiliriz. Ekleme ve silme iş
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ınızdı r. Yeni bir tabak gelince de yığı nı
n üstüne koyarsı nız.
Formül:
(1 + 2) * 4
Aynı
formülün RPN hali:
1 2 + 4 *
1 rakamıyı ğını
n en üstüne konur.
2 rakamıyı ğını
n üstüne konur, 1 alta iner.
2 ve 1 rakamıyığından çekilerek toplama iş lemi yapılı ğı
r, sonuç olan 3 yı nı
n en
üstüne konur.
4 rakamıyı ğını
n en üstüne konur, 3 alta iner.
4 ve 3 rakamıyığından çekilerek çarpma iş lemi yapılı ğ
r, sonuç olan 12 yıını
n en
üstüne konur.
ğ
Yıı
nlar genellikle LIFO (Last in First out – Son giren İ
lk çı
kar) yöntemini temel alı
r.
2.7. Kuyruk
Kuyruk (queue) listelerinin iki kuralıvardı r. Birincisi yeni eklenen bilgiler sadece
sona eklenebilir, ikincisi de silinecek bilgi sadece baş tan silinebilir. FIFO (First in First out
–İlk giren ilk çı
kar), yöntemi de denilmektedir.
Sinema kuyruğundaki insanlarıdüş ünün, ilk giren ilk kuyruktan çı kar. Son gelen ise
son çıkar. Kuyruğa girmek isterseniz en sona gitmeniz gerekir, biletini alan müş teri ise en
başta olduğundan kuyruktan ayrılı
r.
17
Resim 2.3: Kuyruk yöntemi
2.8. Ağ
aç
“Ağ aç – Tree” listeleri doğrusal veya dairesel ş
ekilde gitmezler. Kök düğ
üm üzerinde
dalları
n bulunduğ u bir listedir.
Bazıprogramcı lar bu yönteme “ikilik ağaç – binary tree” demektedir. Bir düğ
üm;
boş
luğa, baş
ka bir düğüme veya iki düğ
üme iş aret edebilir.
Genellikle yapay zekâ programlarında kullanır. Mesela bir satranç oyunu olabilir. İ
lı lk
hamle en üstteki köktür. Yapı labilecek her hamlenin ihtimalleri dallara ayrı lır. Karş ı
oyuncunun hareketine göre de ihtimaller değişerek dallar oluş
ur. En son dal “şah – mat” ile
biter.
18
Resim 2.4: Ağaç listesi ve satranç oyunundaki dallanma*
2.9. Grafik
Belli bir ş
ekli olmayan bağlılistelerdir. Bir düğüm bir veya daha fazla düğ
üme iş
aret
edebilir.
*
Toplam 10 ^ 120 ihtimal vardı r. Evrendeki tahmini atom sayı
sı10 ^ 75 olduğuna göre bu rakam ile
ı
satranç ihtimallerini karşlaş
tı
rı
nı z.
19
20
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
21
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
2. boyut
OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
1. İ
şaretçi tanı ğ
mlandıında muhakkak bir değiş
kene bağ
lanmalı
dır. ( )
3. Kayı
t ve yapıaynıkavramlardı
r. ( )
22
ÖĞRENME FAALİ
YETİ
–3
AMAÇ
ÖĞRENME FAALİ
YETİ- 3
Nesneye yönelik programlama yapabileceksiniz.
ARAŞTIRMA
Eski zamanlarda programlar küçük olduğ u için pek plan ve organizasyon yapmaya
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ır. Milyonlarca satır programda “dene ve hata bul” pek işe yaramaz.
Bu nedenle örneğ in bir mimar gökdeleni plansı z olarak inş
a edemez.
OOP’de temel olan konu da alt modüllerin diğ er modüllere müdahale etmemesidir.
Yani araları
nda yalı
tı r. Modüllere “object – nesne” de denir.
m vardı
24
Klasik programlamada alt program diğer alt programı n verisine ulaş
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ılları ş
nıverir. Zaten çalıan bir programıgüncellemek
yepyeni program yazmaktan kolaydı r. Nesne tabanlı
programlamada, sadece güncellenmesi gerekli nesne
üzerine ş
çalııldığından programcının işi
kolaylaşı
r.Nesne tabanlıprogramlama bu sebeple çok
tutulmuştur.
Bir sı
nıftan nesneler türetebilirsiniz:
class canavar
{
public:
int x_koordinati;
int y_koordinati;
void hareketEt(int, int);
void ilklendirme(int, int);
};
İşte ilk sı
nıfı
mızıyazdı
k. Gördüğünüz gibi sı nı
fımı zın “x_koordinati ve y_koordinati”
olarak tam sayıtüründe 2 özelliğ
i var. “hareketEt ve ilklendirme” olarak da 2 metodumuz
var.
25
Bu hazı
rlı
ktan sonra, yapmamı
z gereken metotları
n kodları
nıhazı
rlamaktı
r:
cout << "X olarak zombinin yeni yeri " << zombi.x_koordinati << "\n";
cout << "Y olarak zombinin yeni yeri " << zombi.y_koordinati << "\n";
system("PAUSE");
return 0;
}
Bu özet sizi profesyonel OOP’ci yapmasa da, bu temel kelimeleri anlamaya çalı ş alı
m:
Encapsulation (kuş atma): İlgili veri ve kodlarıtek bir yerde toplamak
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ı dı
r. Varsayı lan olarak ilk kez
nası
l oluş
turulacağ ı
nıbelirtiriz.
26
Aslı
nda bu yapılanlar klasik programlamadaki alt programlara benziyor. Ama ş
imdiye
kadar hiç bir yapıya olay eklememiş tik ve bu kadar geliş mişdeğ işken tanı
mlaması
gerekmemişti.
Resim 3.3: Sı
nıf (class) ve nesne (object)
Karma (hybrid) nesne tabanlıprogramlama dili: Eski bir dil üzerine OOP
özellikleri eklenmişise dil karma olur. Mesela Pascal üzerine yapı
lmışDelphi,
C üzerinde C++ gibi…
Saf (pure) nesne tabanlı programlama dili: SmallTalk, Eiffel, C# ve Java gibi
doğrudan OOP özelliklerine sahip olarak yazılmı şdiller.
Karma bir dil eski dili bilen birinin, nesne tabanlıdile geçiş ini kolaylaştı
rmak için
yapılmı ş
tır. En az eğ itim ve deneyim ile OOP’ye geçiş i sağlar. Programı n küçük bir kı
smını
nesne tabanlı , kalan büyük kı smınıeski klasik programlama yöntemleri ile yazabilirsiniz.
27
Aslı
nda en iyisi doğrudan saf bir OOP dili ile programlamaya baş lamaktır. Böylece
programları mız karmaş ık ve düzensiz olmaz. Tabii tek baş ına OOP ile düzenli ve kolay
okunur program yazamazsı nı
z. Yazı lı
m tekniğ inizi, problem çözüm yöntemlerinizi
geliş
tirmelisiniz.
Yazılı
mıkullanacak olanlar, sizin gece geç saatlere kadar çalı ş
tığınızı, hangi
programlama dilini kullandı ğ ınızıumursamaz. Zamanı ş
nda biten, çalıır halde olan program
satı
lır, rağ
bet görür. Ondan sonra da artık siz patron olursunuz, kravatınızıtakar, rakibinizi
geçmek için politikalar geliş
tirirsiniz.
28
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
29
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
1. boyut
A- OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
3. Programı
mızınesnelere böldüğümüzde, dünyadaki tüm programcı
lar bizim
programı
mızıanlayabilirler. ( )
4. “Encapsulation –kuş
atma” nesnenin diğer nesnelerin komutları
na eriş
ememesidir.( )
30
MODÜL DEĞERLENDİ
RME
MODÜL DEĞERLENDİ
RME
PERFORMANS TESTİ(YETERLİ
K ÖLÇME)
DEĞERLENDİ
RME KRİ
TERLERİ Puan
Tek isim vererek, birçok veriye dizi kullarak ulaş
ma
Bir dizi elemanı
na değer aktarma
Döngü içinde diziye veri girme ve gösterme
Çeş
itli veri türlerine sahip değ
işkenleri yapı
ile kontrol etme
Yapı
sal veri tanı
mlanabilen bir dilde iş
aretçi oluş
turma
Kayı
t yapı
sı
nda bir değiş
ken tanı
mlama
İ
şaretçiyi bir değ
işkene bağ
lama
Sı
nıf tanı
mlamak için uygun bir dil seçme
Bir sı
nıfıtanı
mlayan nesne yazma
Nesnenin ilklenme olayı
nıyazma
Toplam (en fazla 100 puan olabilir)
DEĞERLENDİ
RME
ğı
Yaptı nı
z değ
erlendirme sonucunda eksikleriniz varsa öğ
renme faaliyetlerini
tekrarlayı
nız.
31
CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
ÖĞRENME FAALİ
YETİ1 CEVAP ANAHTARI
1 D
2 D
3 D
4 Y
5 D
6 A
ÖĞRENME FAALİ
YETİ
-2 CEVAP ANAHTARI
1 D
2 Y
3 D
4 Y
5 Y
6 C
ÖĞRENME FAALİ
YETİ
-3 CEVAP ANAHTARI
1 Y
2 D
3 Y
4 D
5 D
6 C
Cevapları
nı ı
zıcevap anahtarlarıile karşlaş
tı
rarak kendinizi değ
erlendiriniz.
32
SÖZLÜK
SÖZLÜK
İ sim Okunuş Anlam
priority prayoriti iş
lemciye yaptı
rı
lan iş
lemlerin öncelik değ
erleri
procedure pir ı
siicı
r yordam, prosedür
project pricekt proje, tasarı
prompt prompt uyarı
, MS-DOS sistem hazı
r simgesi c:\> gibi
protect prı
tekt korumak, protection – koruma
queue kyu kuyruk
real riı
l ondalı
klı
sayı
lar
recognize rikı
gnayz tanı
mak
record rikı
rd rekor, kayı
t
recover rikavı
r bilgileri kurtarmak
recursive rikörsiv kendini çağı
ran fonksiyon
register recı
stı
r yazmaç, kayı
tlı
kullanı
cıolmak
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ı
mcı
programlama dili, el yazı
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ı
m, ayarlamak (setting)
33
KOD ÖRNEKLERİ
KOD ÖRNEKLERİ
34
TextBox1 TextBox4
TextBox2
TextBox3
Dizinin sı
nırlarıdı
şı
nda bir değer çağrı
lmasıhatası
; “Index Out Of Range”
Visual Basic çok boyutlu dizi örneğinde eğer “DataGridView1”de yeterli veri
girilmemişise nası
l bir hata meydana gelebilir? Nası
l bir önlem alı
rsı
nız?
35
Visual Basic dilinde çok boyutlu dizi örneği
Private Sub Button4_Click
Dim bilgi(1, 5) As String 'İki boyutlu dizi tanı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("Arama sonucu " & bilgi(TextBox5.Text, _
TextBox6.Text))
End Sub
main()
{
Ogrenciler.Ad = "Ali Can";
Ogrenciler.Notu = 34;
printf("Bir öğrencinin adı ve notu: %s %d",
Ogrenciler.Ad, Ogrenciler.Notu);
}
36
Yapıdizisi kullanı
mı
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("%d",&Ogrenciler[i].Notu);
printf("\n");
}
for (i=0; i<3; i++){//Veri çıktısı alma
printf("\n%d öğrencinin adı ve notu: %s %d", i,
Ogrenciler[i].Ad, Ogrenciler[i].Notu);
}
}
Aşağı
daki iş
aretçiler ile ilgili C dilinde olan satı
rları
nıinceleyiniz.
int *iptr;
iptr = (int *) 0x1b64;
//Belli bir adres işaretçiye atanabilir, ama tehlikelidir, neden?
*iptr = 2001; //işaretçiye değer aktarımı
printf ("\n%p", iptr); //ekrana 1B64 yazar
printf ("\n%d", *iptr); //ekrana 2001 yazar
printf ("\n%X", &iptr); //ekrana FFF2 benzeri işaretçinin adresini yazar
int a[3] = {12, 55, 88}; //üç elemanlı dizi ve ilk değer atamaları
int *iptr; //int *iptr = a; da olabilirdi
iptr = a;
37
//dizi başlangıç adresi & ile gösterilemez
printf ("\n%d",*(iptr+1));
//ekrana 55 yazar
printf ("\n%d", iptr[2]);
//ekrana 88 yazar; *(iptr+2) ile iptr[2] aynı anlamdadır
Üstte ekran belleğine ulaş ma ile ilgili bir örnek vardır. Sizce belleğin istediğiniz
ı
yerine ulaşlmasıprogramcı ya özgürlük mü sağlı yor, yoksa tam tersine, hazı r ekrana yazı
yazma komutlarıdururken böyle işlem yapmak, daha da kı sı
tlıbir ortam mısağlı yor?
38
ÖNERİ
LEN KAYNAKLAR
ÖNERİ
LEN KAYNAKLAR
computer.howstuffworks.com
en.wikipedia.org/wiki/Pointer
java.sun.com/docs/books/tutorial/java
www.bloodshed.net/devcpp.html
www.robsite.de/programme.php?prog=ccompiler
www.seslisozluk.com
www.yunus.projesi.com
39
KAYNAKÇA
KAYNAKÇA
BAĞRIYANIK Tarı k, Programlama Ders Notlarıve UygulamalıGenel
Programlama Kitabı(www.yunus.projesi.com)
40