You are on page 1of 47

T.C.


LLÎ EĞİ
TİM BAKANLIĞI

MEGEP
(MESLEKİEĞİTİ
M VE ÖĞRETİ
M Sİ
STEMİ
NİN
GÜÇLENDİRİ
LMESİPROJESİ)


LİŞİ
M TEKNOLOJİ
LERİ

TEMEL ALGORİ
TMALAR

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, 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ıtır.

 Modüller teknolojik geliş melere paralel olarak, amaçlanan yeterliği


kazandı rmak koş ulu ile eğitim öğ retim sı rası
nda geliş tirilebilir ve yapı
lması
önerilen değiş
iklikler Bakanlı kta ilgili birime bildirilir.

 Örgün ve yaygın eğitim kurumları , iş


letmeler ve kendi kendine mesleki yeterlik
ı
kazanmak isteyen bireyler modüllere internet üzerinden ulaşlabilirler.

 Bası şmodüller, eğitim kurumları


lmı rencilere ücretsiz olarak dağı
nda öğ tı

r.

 Modüller hiçbir ş
ekilde ticari amaçla kullanı ı
lamaz ve ücret karş ğ
lıında
satı
lamaz.
İ
ÇİNDEKİ
LER

İ
ÇİNDEKİ
LER
İÇİ NDEKİ LER.......................................................................................................................... i
AÇIKLAMALAR ....................................................................................................................ii
Gİ RİŞ.......................................................................................................................................1
ÖĞRENME FAALİ YETİ -1..................................................................................................... 3
1. SIRALAMA .........................................................................................................................3
1.1. Ekleme Sı ralaması ..........................................................................................................4
1.2. Balon Sı ralaması ............................................................................................................7
1.3. Kabuk Sı ralaması ...........................................................................................................8
1.4. Hı zlıSı ralama .............................................................................................................. 10
1.5. Sıralama Algoritmaları ................................................................................................. 12
UYGULAMA FAALİ YETİ............................................................................................... 14
ÖLÇME VE DEĞERLENDİ RME .....................................................................................15
ÖĞRENME FAALİ YETİ -2................................................................................................... 16
2. ARAMA .............................................................................................................................16
2.1. Sıralı (Ardı şı k) Arama.................................................................................................. 16
2.2. İkilik Arama ................................................................................................................. 18
2.3. Kı yma (Hashing) Yöntemi ........................................................................................... 19
2.3.1. Kı yma Fonksiyonu .............................................................................................. 19
2.3.2. Kı yma Yönteminde Çakı şmalar .......................................................................... 20
2.3.3. Kı yma Yönteminde Arama.................................................................................. 20
UYGULAMA FAALİ YETİ............................................................................................... 22
ÖLÇME VE DEĞERLENDİ RME .....................................................................................23
ÖĞRENME FAALİ YETİ -3................................................................................................... 24
3. KOD İ Yİ LEŞTİ RME ......................................................................................................... 24
3.1. Doğru Veri Yapı sı nıSeçmek ....................................................................................... 24
3.2. Doğru AlgoritmayıSeçmek .........................................................................................25
3.3. Kaynak Kodu İ yileş tirmek ........................................................................................... 25
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.................................................................................................. 42
KAYNAKÇA .........................................................................................................................43

i
AÇIKLAMALAR
AÇIKLAMALAR
KOD 481BB0028
ALAN Biliş
im Teknolojileri
DAL/MESLEK Alan Ortak
MODÜLÜN ADI Temel Algoritmalar
Sıralama ve arama ile ilgili program yazı mı
, kodu
MODÜLÜN TANIMI
iyileştirme ile ilgili öğrenme materyalidir.

SÜRE 40/24

ÖN KOŞUL Veri Yapı şolmak.


larımodülünü almı
YETERLİ
K Temel algoritmalar yapmak
Genel Amaç
Gerekli ortam sağ landı ğı nda, sı
ralama ve arama ile
ilgili algoritmalar yazabilecek, programlamanı n son
aş amasıolarak kodu iyileş tirebileceksiniz.
MODÜLÜN AMACI
Amaçlar
1. Sıralama yapabileceksiniz.
2. Arama yapabileceksiniz.
3. Kodu iyileştirebileceksiniz.
Bilgisayar laboratuvarıve bu ortamda bulunan;
EĞİ
TİM ÖĞRETİ M
bilgisayar, yazıcı, bilgisayar masaları ı
, kâğt, kalem, lisanslı
ORTAMLARI VE
işletim sistemi programıve akı şdiyagramısembolleri ile
DONANIMLARI
ilgili panolar.
Her faaliyet sonrası nda o faaliyetle ilgili
değerlendirme soruları ile kendi kendinizi
değerlendireceksiniz. Modül içinde ve sonunda verilen
öğretici sorularla edindiğ iniz bilgileri pekiş tirecek,
ÖLÇME VE
uygulama örneklerini ve testleri gerekli süre içinde
DEĞERLENDİ
RME
tamamlayarak etkili öğrenmeyi gerçekleş tireceksiniz.
Sırasıyla araş
tı ş
rma yaparak, grup çalımaları na katı larak ve
en son aş amada alan öğretmenlerine danı şarak ölçme ve
değerlendirme uygulamaları nıgerçekleştireceksiniz.

ii

RİŞ

RİŞ
Sevgili Öğ
renci,

Her şeyden önce herkes bir programlama dilini öğ


renebilir. Bilgisayar programlama
yüksek bir zekâ ve matematik bilgisi gerektirmez. Sadece asla vazgeçmeme sabrıve
öğrenme isteği yeterlidir.

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 yanlı ş çalı şma
yöntemleriyle sinir bozucu olabilir ve zamanı nızın 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ı
öğreneceksiniz.

Bu modül ile kazanacağını


z bilgiler sıralama ve arama ile ilgili program yazmak ve
kodu iyileştirme yöntemlerini kullanmaktı r. Modülü bitirdiğinizde anlamadı ğınız yerleri
tekrar okuyup, uygulayını
z.

Bu modül programlama temelleri modüllerinin ilk dört modülünde gösterilen


konuların bir araya gelmişhâlidir. Takı ğ
ldıı
nız yerlerde eski modüllerdeki bilgilere (diziler,
veri yapı
ları, döngüler…) geri dönerek uygun konulara göz atını
z.

1
2
ÖĞRENME FAALİ
YETİ
–1
ÖĞRENME FAALİ
YETİ
-1
AMAÇ
Programda sı
ralama ile ilgili kı

mlarıyazabileceksiniz.

ARAŞ
TIRMA

Bu faaliyet öncesinde hazı


rlı
k amaçlıaş
ağı
da belirtilen araş

rma
faaliyetlerini yapmalı
sınız.

 Kitaplı ğı
nızda karı şı
k hâlde bulunan ansiklopedilerinizi veya dergilerinizi nasıl
sıralıhâle getirirsiniz? Düzenli olarak durması nı
n faydalarıneler olabilir?
 Bir yerden bir yere gitmek için birçok alternatifiniz olabilir. En avantajlıyolu
nası l seçersiniz? En kısa yol bulma problemi ile ilgili
araş tırma yapı nız. Örneğ in IETT sitesini ve “Google
Earth” programları nıinceleyebilirsiniz.
 Doğ ada bulunan motifler, simetri ve fraktal hakkı nda
araş tırma yapı nız. Mesela Fibonacci sayıdizisi ile
ayçiçeğinin çekirdekleri aynış ekilde sı
ralanı r.

1. SIRALAMA

Genellikle sı ralama (sorting) işlemlerini veritabanında kullanı rız.


İsim bilgileri harf sı rası
nda, telefon bilgileri alan kodları
na sıralıolarak
istenebilir. Programı mı z bu olanaklarısağ lamalı dı
r. Çok gerekli olan bu
işlemlerin algoritmasıkarmaş ık olabilir. Programı nızı
n sı
ralama hı zıda
önemlidir. Örneğ in 15 ismin sı
ralanması dakikalarca sürmemelidir.
3
ş
Bu bölümde göreceğiniz bilgisayar bilimi çalımaları sa sürede en etkili ş
, en kı ekilde

ralama için düzenlenmiş
tir.

Büyük O Gösterimi

Bir algoritmanın etkinliğ


ini ölçmek için bilgisayar programcıları“Büyük O
Gösterimi”ni tasarlamışlardı
r. Büyük O, bir algoritmanı n yönetmesi gereken bilgi
miktarını
n işlenme hızı
nıölçer.

Programcı lar genellikle aynımiktardaki verinin, farklıalgoritmalardaki iş


lem süresini
bilmek isterler. Ortalama ve en kötü durum senaryosu üretirler. “Büyük O” sayesinde
program için en uygun algoritma seçilir.

Mesela isimlerin sı
ralanacağ ıbir algoritmada, isimlerin sayı
sıprogramın hı zı

etkiler. Bu O(n) ile gösterilir. “O” sıralama büyüklüğü, “n” de nesne sayı sı
dır. “n”
boyutundaki bir problemin çözümünde geçen adı m sayı sıT(n) = 4n² - 2n + 2 olarak
bulunabilir.

1.1. Ekleme Sı
ralaması
Ekleme sı ralaması(insertion sort) aslı
nda bir kart oyunundaki kartları
n sı ralanmasına
benzetilebilir. Dağı nı
k durumdaki kartlardan iki tanesini elinize alı rsınız, üçüncüsünü
diğerlerinin yanı nda uygun bir yere eklersiniz. Her kart aldı ğınızda diğ erlerinin içinden
uygun olan yere eklersiniz. Böylece kartlar sı
ralı
hâle gelir.

Bu yöntem ile basitçe program, karı şı


k olan sayılarışu adımlar ile sı
ralar:
1. İlk iki eleman listeden alı
nı p, karşı
laştırı

r, gerekirse yerleri değ
iştirilir.
2. Bir sonraki eleman alı nıp, önceki sıralıelemanlar içinde uygun yere eklenir.
3. İkinci adı m sı
ralama bitene dek tekrar edilir.

Resim 1.1: Ekleme sı


ralamasıyöntemi

4
Ekleme sı ralaması nda önce diziye* rastgele değerler yükleriz. Dizinin ikinci
elemanı ndan baş layan bir ana döngü içinde programıyazarı z. Bir sonraki dizi elemanıgeçici
olarak bir değ işkene aktarı ldıktan sonra, bu değeri aktif dizi elemanıile karş ılaştı


z. Eğ er
“geçici değ er” küçük ise baş ka bir döngüde, sı
ralıolan kı sımda bu değ erin yeri bulunur. Dizi
sıralanana dek bu iş lem devam eder.

“Ekleme Sı
ralaması
” programı
nı şş
n 5 elemanlıdizi için akı ağı
emasıaş daki gibidir:

Resim 1.2: “Ekleme Sı


ralaması
”nı
n ekran görüntüsü

Ekleme sı
ralamasıörneğ
inin sahte kodları
nıyazı
nız.

*
Diziler, programlama dillerinde genellikle 0 veya 1 indis değeri ile baş
larlar.
5
Resim 1.3: Ekleme sı
ralamasıakı
şşeması

6
1.2. Balon Sı
ralaması
Balon sı nda (bubble sort) karı
ralaması şı
k durumdaki sayı lar suyun içindeki balonlar
gibi hareket ederek yerlerini bulurlar. Sayı
lar tekrarlıolarak kontrol edilerek yakı
n sayılar bir
araya getirilir.

1. İlk iki eleman karş ılaştı


rılı
r, gerekirse yerleri değiş
tirilir.
2. ı
Listede bir sonraki elemana gidilerek, bir önceki eleman ile karşlaş



r.
3. Liste sonuna kadar 2. adı m tekrar edilir.
4. 1 ve 3. adı m, tüm listenin sıralamasıbitene dek tekrar edilir.

Resim 1.4: Balon sı


ralamasıyöntemi

Önce veri listesi hazırlanır. Ön ş artlıbir ana döngü içine, sı nı


rlarıilk elemandan
sondan bir önceki elemana kadar olan bir döngü yapı lır. Seçili elemanın değeri ile dizinin
sonraki elemanının değeri karşılaştırılı
r. Eğer büyük ise iki dizi elemanıyer değiş tirilir. Dizi
sonuna kadar tarama ve yer değiş tirme işlemleri devam eder. Bu döngü tekrar edilir ve
değişiklik kalmamışise ana döngü sonlandı rılı
r.

Balon sı
ralamasıörneğinin sahte kodları
nıyazı

z.

Resim 1.5: “Balon sı


ralaması
”nı
n ekran görüntüsü, 13 rakamı
na dikkat ediniz
7
Resim 1.6: Balon sı
ralamasıakı
şşeması

Her iki algoritmanı


n iş
lem adı
mları ı
nıkarşlaş


nı ş
z. Karıı
k listenin kaç adı
mda
sı ğı
ralandı nıbulunuz.

Dizilerin maksimum sı
nırları
nıdeğ
iştirerek, kaç adı
mda sı
ralamanı
n bittiğ
ini test
ediniz.
1.3. Kabuk Sı
ralaması
Karı ş
ık durumdaki listede, en sondaki elemanıen baş a getirmek zaman kaybı

r. Bu
sebeple programcılar kabuk sıralaması(shell sort) algoritmasınıgeliştirmiş
lerdir.

“Böl ve yönet” mantı ğıile tüm dizinin sı ralanmasıyerine, küçük parçalar halinde dizi

ralanır. Küçük listeler sı
ralandı ktan sonra, listeler birleş
tirilir.

8
Aslı
nda kabuk sı ralaması balon ve ekleme sı ralaması
nı hı
zlandı
rmak için
geliş
tirilmiş
tir. Yani farklıbir sı
ralama algoritmasıdeğ
ildir.

1. Büyük liste küçük listelere bölünür.


2. Küçük liste balon veya ekleme sı ralamasıile sı ralanır.
3. Resim 1.7’deki örnekte 15 ve 29 rakamısı ralanması na gerek yoktur. 16 ve 4
rakamısı ralanır, 78 ise işleme girmez.
4. 3. adımda sadece 4 ve 16’nı n yeri değişir, tekrar dizi küçük listelere bölünür.
5. Dizide 15, 78 ve 16 sı ralanır, 4 ve 29 rakamları nın sıralanması na gerek yoktur.
6. Liste sı
ralamasıtamamlanana kadar 2 ve 4. adı mlar tekrarlanır.

Resim 1.7: Kabuk sı


ralamasıyöntemi

Kabuk sı ağı
ralamasısahte kodlarıaş şş
daki gibidir. Akı eması
nıhazı
rlayı
nız.

Resim 1.8: Kabuk sı


ralamasıekran görüntüsü

9
Başla
Sayısal Dizi Veriler(5)
Sayısal i, Geçici, Dur, Geç, X, Sınır

Yaz; "Sıralanacak veriler:"


Döngü i = 1, 5, 1
Veriler(i) = Rasgele(100)
Yaz; Veriler(i)
Döngü Bitti
X = tamsayı(5 / 2)
İken (X > 0)
Dur = 0
Sınır = 5 – X
İken (Dur = 0)
Geç = 0
Döngü i = 1, Sınır, 1
Eğer (Veriler(i) > Veriler(i + X)) İse
Geçici = Veriler(i)
Veriler(i) = Veriler(i + X)
Veriler(i + X) = Geçici
Geç = 1
Eğer Bitti
Döngü Bitti
Sınır = Geç – X
Eğer Geç = 0 İse Dur = 1
İken Bitti
X = tamsayı(X / 2)
İken Bitti
Yaz; "Sıralı liste:"
Döngü i = 1, 5, 1
Yaz; Veriler(i)
Döngü Bitti
Bitir

1.4. Hı
zlı
Sıralama
Hı ralama (quick sort) diğ
zlısı er yöntemlere göre daha çok kullanılır. Bu yöntemde
listenin ortasından bir eleman alınır, elemanı n değerine göre sol veya sağ
daki değ erler yer
değ iştirir.

Resim 1.9: Hı
zlısı
ralama yöntemi

10
Liste yarı
ya bölündükten sonra, her ayrılan parça tekrar yarı ya bölünür. Alt parçalar
kendi araları
nda sı
ralanı
r. Küçük parçalar birleş
tirilerek tüm listenin sıralıhali oluş
turulur.

1. Listenin ortası ndan bir eleman seçilir. Seçili elemandan büyük olan elemanlar
sağ a, küçük olanlar sola yer değiş tirilir.
2. 1. adı m listenin her yarı sıiçin tekrar edilir.
3. Küçük listeler birleş tirilir, sı
ralıliste elde edilir.

Kendini tekrar eden fonksiyonlara “tekrarlamalı- recursive” fonksiyon denir. Basit


olarak fonksiyonun kendini çağı rması
dır. “Hızlısı ralama”da bu yöntem kullanılıyor. Bu
sebeple sı
ralama için alt program yapmamı z gereklidir.

Resim 1.10: Hı
zlıSı
ralama ekran görüntüsü
Hı
zlısı
ralamanı
n sahte kodları
nıyazı
nız.

Akı
şşeması
nıtest ediniz. Kendiniz 5 adet rastgele rakam seçerek, bu değerleri adı
m
adı
m deneyiniz.

Sı ralama yönünü “büyükten küçüğe” doğ şş


ru yapmak için akı eması
nda ne gibi bir
değ
işiklik yapılmalı
dır?

Resim 1.11.a: Hı
zlısı
ralamanı
n ana programı

11
Resim 1.11b: Hı
zlısı
ralama yönteminin akı
şşeması

1.5. Sı
ralama Algoritmaları
Ekleme, balon, kabuk ve hı zlısı ş
ralama yöntemleri ile karıı
k listelerin değiş
ik
metotlar ile sı
ralanabildiğ
ini gördünüz.

Genellikle küçük listelerde ekleme sı ralaması , neredeyse sıralıolan bir listede balon
sıralaması , hız gerektiren yerlerde hı zlısıralama kullanı lı
r. Fakat kodlamak için gereken
zamandan tasarruf etmek için, programcı lar dilin içine “hazı r” bulunan sıralama komutları nı
tercih ederler. Örneğin, şuşekilde bir komut olabilir:

sırala diziAdi, ilkEleman, sonEleman

Dilin kendi komutunu kullanmanı


z tavsiye edilir, fakat komut yavaşğ
lıa neden oluyor
ise, kendi algoritmanı
zıoluşturunuz.

12
Resim 1.12: Hazı
r komut kullanarak sı
ralama iş
lemi

Hazı
r sı
ralama yönteminin sahte kodunu yazı
nız.

Resim 1.13: Hazı


r sı
ralama komutu ile liste sı
ralamak

13
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ

İş lem Basamakları Öneriler


1. 5 adet karı şı
k hâlde tam sayıdeğ
er Aş ağı daki tablodan belli bir sütunu
seçiniz. seçebilirsiniz.
2. Değ erlerin hangi yöntem ile Genellikle küçük listelerde “balon sı ralaması ”,
sıralanacağ ına karar veriniz. daha uzun listelerde “eklemeli ve hı zlısıralama”
tercih edilir.
ş
3. Karıı
k haldeki sayı
ları
sıralayı

z. Akı şş eması nıçizerek, seçtiğiniz değ erleri
sıralayı nız.
4. Ekrana sayı
larılisteleyiniz. Listedeki en büyük ve en küçük değerleri
istatistik amaçlı belirtebilirsiniz.
Sayı ların ortalama ve toplamları nı bulma
işlemlerini yapabilirsiniz.
5. Programıyazarak kaç adı
mda Diğer algoritmalar ile iş lemlerin bitmesi için
sıralandığ
ınıbulunuz gereken adı m sayı sıkarş ılaştırı
labilir.

Örnek alı
nabilecek değerler:
Sözcük Resim Sayfa Araştı
rma Örnekler
Modül 1 8664 65 54 44 14
Modül 2 8048 29 52 52 36
Modül 3 6261 29 41 22 15
Modül 4 4700 31 36 19 10
Modül 5 5608 27 39 16 12

14
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME

OBJEKTİ
F TESTLER (ÖLÇME SORULARI)

Aş ağıdaki sorulardan; sonunda parantez olanlar doğ ru / yanlışsorularıdır. Verilen


ifadeye göre parantez içine doğ şise “Y” yazı
ru ise “D”, yanlı z. Şı
nı klısorularda uygun şıkkı
işaretleyiniz.

1. (…) Bilgisayardaki dosya ve klasörler diskte isimlerine göre sı şolarak tutulur.


ralanmı

2. (…) Kı ı
sa algoritmalar karmaşk algoritmalardan daha hı ş
zlıçalıı
r ve hemen sonucu
bulur.

3. (…) Listenin tamamı


nıtarayan sı
ralama yöntemine balon sı
ralamasıdenir.

4. Aşağ ı
daki sı
ralama yöntemlerinden hangisi hemen hemen sı
ralıdeğerler için tercih
edilir?
A) Eklemeli
B) Balon
C) Kabuk
D) Hı zlı

5. Aşağ ıdaki sı
ralama yöntemlerinden hangisi diğer sı
ralama yöntemlerinden birini
kullanır?
A) Eklemeli
B) Balon
C) Kabuk
D) Hı zlı

6. Aşağıdaki sı
ralama yöntemlerinden hangisi genellikle en az adı
mda iş
lemi tamamlar?
A) Eklemeli
B) Balon
C) Kabuk
D) Hızlı

15
ÖĞRENME FAALİ
YETİ
–2

ÖĞRENME FAALİ
YETİ
-2
AMAÇ
Programda arama ile ilgili kı

mlarıyazabileceksiniz.

ARAŞ
TIRMA

Bu faaliyet öncesinde hazı


rlı
k amaçlıaş
ağı
da belirtilen araş

rma
faaliyetlerini yapmalı
sınız.

 Bilgisayarını zdaki dosya ve klasörlerin aranması nınası l


yapıyorsunuz? Dosya içindeki bilgileri de arayabilir
misiniz? Daha hı zlınasıl arama yapılabilir?
 İnternet sayfalarında arama imkânınası l sağlanı
yor? Arama
motorları nın gelişmişarama seçeneklerini inceleyiniz.
 Elektronik posta adreslerine gereksiz mesajlar gelebilir. Bu
tür mesajlarıbulan algoritmalarıaraş tı
rı nız. Mesela
“Bayesian Filtreleme Algoritması ” gibi…

2. ARAMA

Sıralama adımı ndan sonra en önemli konu “arama” iş lemidir. İ


sim ve adres bilgilerini
saklayan bir programda, bilgilerin sı
ralanmasıve aranmasıalgoritmaları na ihtiyaç duyulur.
Örneğ in; Ankara’da yaşayan “F” harfi ile baş
layan isimlerin listelenmesi istenebilir.

Arama iş leminin hı zlıolmasıiçin genellikle programlar verileri önce sı ralarlar.


Sıralama ve arama işlemleri, uygun algoritma seçilerek hı zlıve etkin olarak yapılı
r. Ayrı ca

ralılistede minimum ve maksimum değer otomatik olarak bulunmuşolur. Listenin en
başındaki eleman en küçük değ ere, liste sonundaki eleman ise en büyük değere sahiptir.

2.1. Sı
ralı
(Ardı
şı
k) Arama
Sıralıarama (sequential search) listedeki tüm bilgileri tarama yöntemidir. Liste, bağ

liste veya dizi olabilir.

16
Evinizin kapıanahtarı nıkaybettiğinizde, sı
ralıarama yöntemini kullanarak anahtarı
aramak istersek, apartmandaki tüm odalarıtek tek arama yolu ile yapabiliriz. Eğ
er anahtar ilk
odalarda ise hı zlıbir şekilde anahtarını zıbulursunuz. Yani küçük listelerde bu arama
yönteminin yavaş ğı
lı nıhissetmezsiniz bile. Tüm şehri aramanı z gerektiğini düşünün, arama
hızıçok yavaşolurdu.

Aramayıister başlangıçtan, isterseniz listenin sonundan baş


latabilirsiniz. Aranan bilgi
bulunduğunda arama işlemi sona erer.

Resim 2.1: Sı
ralıarama yöntemi

17
Sı
ralıarama yönteminin sahte kodları
nıhazı
rlayı

z.

Resim 2.2: Sı
ralıarama programı
nın ekran görüntüsü
2.2. İ
kilik Arama
İ
kilik arama† (binary search) sıralıhaldeki bir listede hı
zlı
ca arama yapmamızısağ lar.
Uzun liste ikiye bölünür, aranan bilgi hangi yarı da ise, o yarıiçinde arama yapılı
r. Sayı
bulunana kadar liste yarı
ya bölünerek arama işlemi devam eder.

Resim 2.3: İ
kilik arama yöntemine bir örnek

On elemanlıdizide 37 rakamı
nıbulmak için, önce dizinin ortası
ndaki eleman olan 30
ile aramaya baş lanı
r. 37 rakamı30’dan büyük olduğ u için sağtaraftaki yarı da arama
yapılacaktır.


İ
kilik arama sadece sı
ralıhâldeki listeler içindir.
18
Kalan beşsayı da ortadaki 59 ile aranan sayıolan 37 karş ılaş


r. Bu sefer de sol
tarafta arama yapı lacaktır. Elimizde iki sayıkaldı. Listedeki ilk eleman aranan sayıile
karş ılaştı

lır. 37 rakamıüçüncü adı mda bulunmuşoldu. Sı ralıarama yönteminde olsaydı
altıncıadı mda arama bitecekti.

İ şş
kilik arama yönteminin akı eması şş
nıçiziniz. Test değerleri seçip, akı emanı

deneyiniz.

“Yari” değiş keninin değeri bulunmasında bir açı


k vardı r. Eğer “Sol ve Sağ”
değişkenlerinin toplamıtam sayıdeğ işkenin sı

rları
nıgeçerse, program hata verip kapanı
r.
Bu sorunu nası l çözebilirisiniz?
Çözüm önerisi: (tamsayı () komutu ondalı
klısayı
nın tam sayıkı
smı
nıverir.)
Yari = Sol + tamsayı((Sol - Sag) / 2)

Resim 2.4: İ
kilik arama programı
nın ekran görüntüsü

2.3. Kı
yma (Hashing) Yöntemi
Kıyma veya kı yım yöntemi (hashing search) yeri hemen hemen bilinen değ erleri
bulmak için yapı lmı ştı
r. Mesela, evinizin anahtarı
nıgenellikle belli bir yere koyarı z veya bir
yere asarız. Böylece bulmamı z kolaylaşı
r. Programda aramayıkolaylaş tırmak için elimizdeki
değerleri dizide belli yerlere atacağız.

2.3.1. Kı
yma Fonksiyonu

Bir veri yapı


sı(dizi veya bağlıliste) içine değerler için, kı
yma veya kıyım değeri
(hash value) hesaplanır. Kıyma değeri, kı yma fonksiyonu (hash function) yardı mıile
bulunur. Kıyma fonksiyonu sayesinde, “aranan değer” tüm listede aranmasıyerine, belli bir
yerde aranarak bulunur. Örneğin bir arananDeger adlıtam sayı yıdizide aradığ ımı zı
düşünelim; önce “kı
yma değeri” bulunur:

KıymaDegeri = arananDeger % 5
//mod bulmak için başka bir yöntem:

KıymaDegeri = arananDeger – (tamsayı(arananDeger / 5) * 5)

19
Bu formül bize sayı nın beşe bölümünden kalan sayı yı“kıyma değeri” olarak verir.
Hangi sayısaklanmı şolursa olsun kıyma değerleri 0, 1, 2, 3 veya 4 olabilir. Mesela 26
rakamı nı n 5’e bölümünden kalan değeri 1 olduğu için, 26 değ erini dizinin 1. elemanına
atayabiliriz.

Resim 2.5: Kı
yma yöntemi ile değerleri yerleş
tirmek

Uzun listelerde kı zlıbir ş


yma yöntemi ile arama çok hı ekilde yapı
labilir.

2.3.2. Kı
yma Yönteminde Çakı
şmalar

Kıyma fonksiyonu ile tek olan değ ere sahip bir sayıüretilir. Farklıliste elemanları
nın
aynıkı
yma değeri olabilir. Mesela, 7 ve 32 değ erlerinin 5 ile bölümünden kalan sayı2’dir.

Aynıkı yma değeri birden fazla sayıda ise, buna çakı ş


ma (collision) denir. Çakış
maları
kontrol altı
na almak için, aynıkı yma değ erine sahip olan elemanlar bir yapı r. İ
da toplanı ki
boyutlu bir dizi veya bağ ş
lıliste içine çakıanlar tutulabilir.

Dizi veya bağ


lıliste büyüyebilir veya hafı
zada fazla yer kaplamamasıiçin

saltı
labilir.

Resim 2.6: Kı
yma yönteminde çakı
şmalarıengelleme
2.3.3. Kı
yma Yönteminde Arama

Değ erler listeye kaydedildikten, sonra arama işlemi kı yma fonksiyonu ile rahatlı
kla
yapı
labilir. Aynıkı yma değerine sahip elemanlar da kendi araları
nda taranı
r.
20
Eğer her elemanı n kendi tek (unique) kı yma değeri var ise, kı yma fonksiyonu
sayesinde tek adı
mda arama iş lemi tamamlanı r. Birden fazla kı
yma değeri olan elemanlar ise
en azından küçük bir liste halinde olduğ undan, arama iş lemi fazla zaman kaybına neden
olmaz. Bu küçük listede sı
ralı
veya ikilik yöntemleri ile arama yapılabilir.

Resim 2.7: Kı
yma yönteminin program ekran görüntüsü

Kı yma arama yönteminde oluş


an alt listelerde nası
l arama yapı
labilir? Hangi arama
yöntemini tercih edersiniz?

Kı ralıarama”, hı
sa listelerde kolay kodlanabilen “sı z gerektiren daha büyük
listelerde “ikilik arama” tercih edilir.

Çok büyük verilerde “kı yma yöntemi” seçilebilir, ama kodlamasızordur. Önceden
değ erleri veri yapısına yerleş tirme gerekliliğ
i ve alt listede farklıalgoritma ile arama
kullanı lmasıgerektiği için kod yazımıuzun zaman alır.

21
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ

İ
şlem Basamakları Öneriler
ş
1. 5 adet karıık halde tam sayıdeğ er Aş ağı daki tablodan belli bir sütunu
seçiniz. seçebilirsiniz.
2. Aramayıkolaylaş tırmak için veriyi Genellikle küçük listelerde “balon
sıralayı
nı z. sıralaması ”, daha uzun listelerde “eklemeli
ve hı zlısı ralama” tercih edilir.
3. Uygun algoritmayıseçerek arama Akı şş eması nıçizerek daha kolay program
programınıyazı nız. yazı labilir.
4. Arama değerleri girerek, programı Seçtiğ iniz değeri listede arayabilirsiniz.
deneyiniz.

Örnek alı
nabilecek değerler:
Sözcük Resim Sayfa Araştı
rma Örnekler
Modül 1 8664 65 54 44 14
Modül 2 8048 29 52 52 36
Modül 3 6261 29 41 22 15
Modül 4 4700 31 36 19 10
Modül 5 5608 27 39 14 12

22
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME

OBJEKTİ
F TESTLER (ÖLÇME SORULARI)

Aşağ ıdaki sorulardan; sonunda parantez olanlar doğru / yanlı ş


sorularıdır. Verilen ifadeye göre parantez içine doğ şise
ru ise “D”, yanlı
“Y” yazı nız. Şı
klısorularda uygun ş ıkkıiş aretleyiniz.

1. ş
Karıı
k bir listede sadece sayı
lar için arama yapabiliriz. ( )

2. Küçük listelerde sı
ralıarama yöntemi ile hı
zlı
ca aranan değeri buluruz. ( )

3. Çok büyük değerlere sahip olan sayı


larıarama iş
lemi daha yavaş

r. ( )

4. Kı
yma fonksiyonu sayesinde bir değ
eri ilk denemede buluruz. ( )

5. Aşağ ıdaki arama yöntemlerinden hangisi tüm listeyi tarayı


p iş
lemi tamamlar?
A) Sıralı
B) İkilik
C) Kı yma
D) Hiçbiri

6. Aşağ ıdaki yöntemlerden hangisi listeyi ikiye bölerek arama yapar?


A) Sıralı
B) İkilik
C) Kı yma
D) Hiçbiri

23
ÖĞRENME FAALİ
YETİ
–3

AMAÇ
ÖĞRENME FAALİ
YETİ
-3
Programı
n derlenmesini ve kod yazı
mınıdaha iyi hâle getirebileceksiniz.

ARAŞ
TIRMA
Bu faaliyet öncesinde hazı
rlı
k amaçlıaş
ağı
da belirtilen araş

rma
faaliyetlerini yapmalı
sınız.
 Bilgisayarınızın yazılım ve donanı m olarak daha iyi çalı şmasıiçin neler
yapı yorsunuz? Mesela disk birleş tirici ile ayda bir disklerin birleştirilmesi
gibi…
 Bilgisayarınızda kurulu bir program artı k çalışmamaya baş larsa veya iş letim
sisteminde problemler meydana gelmişise ne gibi önlemler alabilir, tamir
etmek için neler yaparsı
nız?

3. KOD İ
YİLEŞTİ
RME

Program çalışı
r hâle geldikten, hatalar elinden geldiğ
ince giderildikten sonraki istenen
yazılı
mın sürümünün oluş turulması veya kodları tirilmesidir. İ
n iyileş yileştirme ile
lmak istenen ş
anlatı unlardır:
1. Programı daha da hızlandırmak
2. Programın kapladığıdisk alanınıazaltmak
3. Program için gereken bellek miktarı
nıazaltmak
Programı n ilk sürümü 1.0 olarak piyasaya sürüldükten belli bir süre sonra, yazı lı
m
firmalarıküçük güncellemeler yaparak 1.01 gibi yeni sürümler oluş tururlar. Genellikle
sonradan bulunan böcekler giderilmişolur, çok büyük yenilik yapı lmaz. Yepyeni yapı lan
değ iş
ikliklerle 2.0 gibi daha büyük sürüm numarasıilerlemesi yapı
lır.

3.1. Doğ
ru Veri Yapı

nıSeçmek
Her programı n veri saklama ihtiyacıvardı r. Bunun için doğ ru yöntemi seçmelisiniz.
Bir dizi yapmak çok kolay gözükebilir, ama dizinin eleman sayı sınıbilmeniz gereklidir.
Küçük bir dizi yaptı ysanı z, programınız daha fazla bilgi saklamak istediğ inde çökebilir;
büyük bir dizi yaptıysanız, ana bellekte gereksiz alan kaplayan içi boşdeğ işkenler oluşur.
Gereğinden fazla bellekte yer kaplayan diziden uzak durulmalıdır.
Seçtiğ iniz veri yapısıkullandığınız sıralama ve arama algoritması nıetkiler. Bir dizi
yerine bağ lıliste kullanı
rsanı
z, daha etkin ve hızlıolarak veriler içinde yer değ
iştirme işlemi
yapabilirsiniz.
24
3.2. Doğ
ru AlgoritmayıSeçmek
Algoritma ile bir problemin nası l aş ılacağıayrı ntı lıolarak anlatı lı
r. Mesela
arkadaşınıza evinizi tarif etmeniz gerekirse, kısa olsun diye ara sokaklardan veya kolay olsun
diye ana yoldan gitmeyi anlatabilirsiniz. Ara sokakları n anlatı
lmasızordur, ana yolun tarifi
de kolay ama yolu uzatı yor olabilir.
50.000 kişinin listelendiğ
i bir veri yapı sında “hı zlısı ralama” yerine, “balon
sıralaması” yapmak çok uzun zaman alır. Sı
ralama yapı ralı
lan listede arama yapmak için, “sı
arama” yöntemi çok uzun zamanda sonuçlanı r, “ikilik arama” yöntemi seçilerek daha hı zlı
tamamlanabilir.
Bir oyundaki en yüksek 10 rekor bilgisi saklanı yor diyelim, ilk kez oyun oynandı ğında
10 adet rekor bilgisi boş
tur. Her oyun oynandı ğında rekora yeni değerler eklenir. Burada en
uygun sı ralama yöntemi “ekleme sı ralaması ” olabilir. Yeni yüksek rekor yapı ldı
kça listede
uygun yere bilgi eklenir. Eğer “balon sı ralaması ” ile rekor bilgilerini sıralamak isterseniz,
her oyun sonunda bilgiler defalarca taranarak sıralanı r.
Yazdı ğınız programda, doğru algoritmayıseçerek programı
n daha hı ş
zlıçalıması

sağ
layabilirsiniz.

3.3. Kaynak Kodu İ


yileş
tirmek
Doğru veri yapı sı tirme (code optimizing)
nıve algoritmayıseçseniz bile kodu iyileş
gerekebilir. Programı nı zın belli kısı
mları
nıtekrar yazarak daha hızlandırabilir ve daha az
bellek harcar hale getirebilirsiniz.
Öneriler:
 “Eğer” komutunda birden fazla ş
artı“Ve / Veya” iş
leçleri ile bağlayı
nız.
Örnek:
Eğer (şart1) Ve (şart2) İse
Komutlar
Eğer Bitti

Burada birinci ş
art eğ
er Hayı er ş
r (False) ise ikinci veya diğ artlara bakı
lmaz. Bu
sayede program fazladan iş
lem yapmaz. Zaman kazanı rı
z ve program biraz daha
hı ş
zlıçalıır.
 İ rken Evet (True) olmasımuhtemel ş
ç içe “Eğer” kullanı artıönce yazınız.
“Durum” komutunda da buna dikkat ediniz. Böylece diğer şartlarıboş
una
taramak gerekmez.
Örnek:
Eğer şart1 İse
Komutlar
Değilse Eğer şart2 İse
Komutlar
Eğer Bitti
Eğer birinci şart doğru ise ikinci ş
arta bakı lmaz. Eğer çoğ u zaman birinci şart Hayı
r
(False) ikinci ş art Evet (True) oluyor ise ş artların yerlerini değiştirerek, zaman ve hız
kazanabilirsiniz.
25
 “Döngü” komutu ile gereksiz fazladan döngü yapmayı nı
z. Döngüler programda
çok zaman yitirilmesine sebep olabilir. Döngü belli sayı da iç kısmındaki
komutlarıçalı ştı

r. Mesela dizide aranan değ er daha ilk eleman ise, diğ er
elemanlar taranmaya devam edilmemelidir. Zaman kaybıolmamasıiçin gerekli
yere “Döngüden Çı k” komutu yerleştirerek döngüden hedefe ulaşı
lınca çı

lır.
Bulundu = 0
Döngü J = 1, 300, 1
Eğer Dizi(J) = Aranan İse
Bulundu = 1
Döngüden Çık //döngüden çıkılacak
Eğer Bitti
Döngü Bitti
Eğer bulundu = 0 İse
Yaz; "Aranan değer bulunamadı!"
Değilse
Yaz; "Aranan değer bulundu: " & J
Eğer Bitti

 Döngü içine gereksiz kod yazmayı


nız. Döngü ile alakasıolmayan satı
rları
ş
döngü dıına alı
nız.
Döngü J = 1, 5000, 1
I = 0
Eğer Dizi(J) = 55 İse
Yaz; Dizi(J)
Eğer Bitti
Döngü Bitti

Arama yapı lı rken fazladan yazı


lan “I = 0” satı ş
rı5.000 kez çalıtırılacaktı
r. Bu
gereksiz satı r, az da olsa döngünün yavaşlamasına sebep olacak, sonuç olarak
programı nızıyavaş latacaktı
r.
İç içe döngü yaparken içteki döngüye gereksiz kod yazmayı nı z. İç döngü
yavaşlar ise, dı şdöngü de yavaşlar.
 Bellek tasarrufu için değ işkenlerin veri türünü doğ ru seçiniz. Tam sayıbir
değ işken içine küçük değ er aktarılarak kullanılı
yor ise “Short – Kısa”, büyük
değ erler aktarı larak kullanılıyor ise “Long – Uzun” seçebilirsiniz. Kı sa tam
sayı nın alabileceğ i değer aralığıyaklaş ık 64.000 iken, uzun tam sayının değer
aralığıyaklaş ık 4 milyardır. Short türünde bir tam sayı2 Byte, Long ise 8 Byte
bellek alanıkaplar.
 Mümkün olduğ unca programlama dilinin kendi komutlarıile hesaplama
yapı
nız. Genellikle bu komutlar daha hı ş
zlıçalıtı


rlar.
Sayi = Sayi + 1 //komutu yerine
Sayi++; //C dilinde
Inc(Sayi); //Pascal dilinde
Dilin kendi komutları ı
nıkullanmak kodun anlaşlı
r olması
nıengeller. Diğ
er
programcılar kodu anlayamayabilirler.

26
 Daha hı zlıbir programlama diline geçiniz. En hı zlıprogramlama dili makine
dilidir. Sonra C ve C++ dilleri gelir. Birçok programcıbasit ve yavaşolan
Visual Basic’te prototip olarak programıhazı rlar, daha sonra asıl programlama
diline kodlarıtaş ırlar. Aslı nda bu zahmetli ve riskli bir iş
lemdir. Yeni kodları
n
çalışacağ ıgaranti değ ildir.
Öyleyse ikinci bir yol, tüm programıyazmak yerine görüntü olarak basit bir
dilde hazı rlamak, asıl dile sonra geçmek olabilir.
Birden fazla dil kullanı larak program yazı lı
yor ise, her dilin kendi avantajı
kullanı labilir. Birbiri ile çalı şabilen dillerde program yazmak, farklı
programlama dilleri bilen programcı n takı
ları m halinde bir proje üzerinde
çalışmaları nısağlar.

 Derleyicinizi daha iyi hâle getiriniz. Daha hızlıbir dil yerine daha performanslı
bir derleyici seçilebilir.
Derleyicinin ayarları nıinceleyerek, daha iyi hâle getirebilirsiniz. Ayarları
değ iştirirken dikkatli olunuz, programıhızlandırmak isterken, hata ve çökmelere
karş ıdaha zayı f hâle getirebilirsiniz.

27
Resim 3.1: Delphi, VB2005 ve C derleyici seçenekleri

28
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ

İşlem Basamakları Öneriler


1. Programı
n bitiminde kodlarıiyileş
tiriniz. Öneriler kı smı ndaki maddelere göre bir
örnek programıiyileş tiriniz.
2. Kod satırları
nıdaha okunaklıhale Yaptı ğını
z programı diğer programcı ları
n
getiriniz. rahat anlamasıiçin okunaklı hâle getirmeniz
ş
iyi bir alıkanlıktı
r.
3. Program için daha hı zlıbir dile kodları QBasic gibi bir dilde yazı lan programıdaha
dönüş türünüz. performanslıolan C gibi bir dile çeviriniz.
4. Derleyici seçeneklerini iyileştiriniz. Programlama dilinin derleme seçeneklerini
inceleyiniz.

29
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME

OBJEKTİ
F TESTLER (ÖLÇME SORULARI)

Aş ağıdaki sorulardan; sonunda parantez olanlar doğ ru / yanlışsorularıdır. Verilen


ifadeye göre parantez içine doğ şise “Y” yazı
ru ise “D”, yanlı z. Şı
nı klısorularda uygun şıkkı
işaretleyiniz.

1. Programları
n sürüm numaralarıher zaman 1.0 ile baş
lar. ( )

2. Programları
n sürüm numaralarısadece çok büyük değ
işikliklerde ilerler. ( )

3. Basit mantı
k kullanı
larak yapı
lan algoritmalar, programı
n performansı
nıartı

r. ( )

4. Derleyici ayarlarıdeğiş
tirilerek programı ş
n hiç hata vermeden çalımasısağ
lanabilir,
fakat programı n çökme ihtimali daha da artar. ( )

5. Aşağ ı
dakilerden hangisi programı n çalışmasınıhiç etkilemez?
A) Programdaki gereksiz açıklama satı rları
nısilmek
B) Programda iç içe döngüleri çok kullanmak
C) Programda “Eğer” yerine “Durum” komutunu kullanmak
D) Programdaki değiş kenlerin türünü doğru seçmek

6. Aşağ ı
dakilerden hangisi kodu iyileş tirme ile ilgili değildir?
A) Programıdaha hı zlandı rmak
B) Programı n kapladığı disk alanınıazaltmak
C) Programı n yardım dosyası nıhazırlamak
D) Program için gereken bellek miktarı nıazaltmak

30
MODÜL DEĞERLENDİ
RME
MODÜL DEĞERLENDİ
RME
PERFORMANS TESTİ(YETERLİ
K ÖLÇME)

Modül ile kazandığınız yeterliğ


i, öğretmeniniz iş lem basamakları
na göre
nda olacak ş
0 ile 9 puan arası eklinde değ erlendirecektir.

DEĞERLENDİ
RME KRİ
TERLERİ Puan
5 adet karış ı
k hâlde tam sayıdeğ er seçme
Değ erlerin hangi yöntem ile sı ralanacağı na karar verme
Karışık hâldeki sayı larısıralama
Programıyazarak kaç adı mda sı raladı ğınıbulma
Aramayıkolaylaş tı
rmak için veriyi sı ralama
Uygun algoritmayıseçerek arama programı nıyazma
Arama değ erleri girerek, programıdeneme
Programı n bitiminde kodlarıiyileş tirme
Kod satı rlarınıdaha okunaklı hâle getirme
Program için daha hı zlıbir dile kodlarıdönüş türme
Derleyici seçeneklerini iyileş tirme
Toplam (en fazla 99 puan olabilir)

DEĞERLENDİ
RME

ğı
Yaptı nı
z değ
erlendirme sonucunda eksikleriniz varsa öğ
renme faaliyetlerini
tekrarlayı
nız.

Modülü tamamladı nı z, tebrik ederiz. Öğ retmeniniz size çeş


itli ölçme araçları
uygulayacaktı
r, öğ
retmeninizle iletiş
ime geçiniz.

31
CEVAP ANAHTARLARI
CEVAP ANAHTARLARI
ÖĞRENME FAALİ
YETİ
-1 CEVAP ANAHTARI

1 Y
2 Y
3 D
4 B
5 C
6 D

ÖĞRENME FAALİ
YETİ
-2 CEVAP ANAHTARI

1 Y
2 D
3 Y
4 Y
5 A
6 B

ÖĞRENME FAALİ
YETİ
-3 CEVAP ANAHTARI

1 Y
2 Y
3 Y
4 D
5 A
6 C

Cevapları
nızı ı
cevap anahtarlarıile karşlaş

rarak kendinizi değ
erlendiriniz.

32
SÖZLÜK

SÖZLÜK
İ
sim Okunuş Anlam
sign sayn iş
aret, signature – imza
simulate simyuleyt benzetmek (simulation - benzetim)
slot slot yuva, kart takı
lan yarı
klar
specify spesifay tanı
mlamak, belirtmek
speech spiiç konuş
ma
sprite sprayt grafik programcığı
lı nda kullanı
lan hareketli nesneler
SQL es kyu el Structured Query Language – Yap ı
sal Sorgulama Dili
stack stek ğı
yı n, geçici bellek alanı
status steytı
s durum; statement – deyim, komut
structure strakçı
r yapı
subdirectory sabdayrektöri alt dizin, klasör
substitute sabstityut baş
kası
nın yerine koymak
success sı
kses baş
arı
supervisor supı
vayzı
r yetkili
support sı
port destek
surface söfı
s yüzey, görünüş
suspend sı
spend askı
ya almak
switch sviç anahtar, yer değ
iştirmek
terminal törminı
l son, uçbirim
thread tred kanal
toggle togl iki ş
eyin birbirleri ile yer değiş
tirmeleri (swap)
track trek iz, fiziksel disk dairesi
true tru mantı
ksal doğ
ru
truetype trutayp boyutu değiş
tirilebilir yazıtipi
try tray denemek
tutorial tyutı
riı
l öğretici
unit yunit kod yazı
lan alan
utility yutiliti yardı
mcıprogramlar
variable verayı
bl değ
işken
virus vayrı
s virüs
volume volyum sürücü
warning worning uyarı
watch voç ş
çalıma anı
nda değiş
kenleri seyretmek

33
KOD ÖRNEKLERİ

KOD ÖRNEKLERİ
Visual Basic dilinde ekleme sıralaması örneği
Private Sub Button1_Click
'Kurulum kısmı
Dim Maksimum As Integer = 5
Dim Dizi(Maksimum) As Integer
Dim i, j, DiziDongusu, Gecici, Dur, Dur2, Sayac As Integer
Dim metin As String
'Rasgele komutu için Randomize() ekledik
Randomize()
ListBox1.Items.Clear()
'İlk değerler atanıyor
metin = ""
For i = 1 To Maksimum
Dizi(i) = Rnd(1) * 99 + 1
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
'Sıralama döngüsü açılıyor
For DiziDongusu = 2 To Maksimum
Gecici = Dizi(DiziDongusu)
Dur = 0 : Sayac = 1 : Dur2 = 0
While (Dur2 = 0)
If Gecici < Dizi(Sayac) Then
For j = DiziDongusu To Sayac Step -1
Dizi(j) = Dizi(j - 1)
Next j
Dizi(Sayac) = Gecici
Dur = 1
End If
Sayac = Sayac + 1
If (Dur = 1) Or (Sayac = DiziDongusu) Then Dur2 = 1
End While
'Ekrana ara değişiklikler yansıtılıyor
metin = ""
For i = 1 To Maksimum
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
Next DiziDongusu
End Sub

34
Visual Basic dilinde balon sıralaması örneği
'Kurulum kısmı
Dim Maksimum As Integer = 5
Dim Dizi(Maksimum) As Integer
Dim i, j, Gecici, Dur, Gec, Degistirme As Integer
Dim metin As String
'Rasgele komutu için Randomize() ekledik
Randomize()
ListBox1.Items.Clear()
'İlk değerler atanıyor
metin = ""
For i = 1 To Maksimum
Dizi(i) = Rnd(1) * 99 + 1
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
'Sıralama döngüsü açılıyor
Gec = 1
Dur = 0
While (Dur = 0)
Degistirme = 1
For i = 1 To (Maksimum - Gec)
If Dizi(i) > Dizi(i + 1) Then
Gecici = Dizi(i)
Dizi(i) = Dizi(i + 1)
Dizi(i + 1) = Gecici
Degistirme = 0
End If
Next i
metin = ""
For j = 1 To Maksimum
metin = metin & Dizi(j) & " "
Next j
ListBox1.Items.Add(metin)
If Degistirme = 1 Then Dur = 1
End While

35
Visual Basic dilinde kabuk sıralaması örneği
'Kurulum kısmı
Dim Maksimum As Integer = 5
Dim Dizi(Maksimum) As Integer
Dim i, Gecici, Dur, Gec, X, Sinir As Integer
Dim metin As String
'Rasgele komutu için Randomize() ekledik
Randomize()
ListBox1.Items.Clear()
'İlk değerler atanıyor
metin = ""
For i = 1 To Maksimum
Dizi(i) = Rnd(1) * 99 + 1
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
'Sıralama döngüsü açılıyor
X = Int(Maksimum / 2)
While X > 0
Dur = 0
Sinir = Maksimum - X
While (Dur = 0)
Gec = 0
For i = 1 To Sinir
If Dizi(i) > Dizi(i + X) Then
Gecici = Dizi(i)
Dizi(i) = Dizi(i + X)
Dizi(i + X) = Gecici
Gec = i
End If
Next i
Sinir = Gec - X
If Gec = 0 Then Dur = 1
End While
metin = ""
For i = 1 To Maksimum
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
X = Int(X / 2)
End While

36
Visual Basic dilinde hızlı sıralama örneği
Public Class Form1
'Kurulum kısmı (global değişkenler)
Dim Maksimum As Integer = 5
Dim Dizi(Maksimum) As Integer

Sub hizliSirala(ByVal Baslangic, ByVal Bitis)


'Alt programımız
Dim metin As String
Dim i, J, k, X, Gecici As Integer
i = Baslangic : J = Bitis
X = Dizi(Int((i + J) / 2))
While i <= J
While Dizi(i) < X
i = i + 1
End While
While Dizi(J) > X
J = J - 1
End While
If i <= J Then
Gecici = Dizi(i): Dizi(i) = Dizi(J): Dizi(J) = Gecici
i = i + 1
J = J - 1
End If
End While
metin = ""
For k = 1 To Maksimum
metin = metin & Dizi(k) & " "
Next k
ListBox1.Items.Add(metin)
'Alt program kendini çağırıyor
If J > Baslangic Then hizliSirala(Baslangic, J)
If i < Bitis Then hizliSirala(i, Bitis)
End Sub

Private Sub Button1_Click


'Sırala düğmesi kodları (ana program)
Dim metin As String
Dim i As Integer

Randomize()
ListBox1.Items.Clear()
'İlk değerler atanıyor
metin = ""
For i = 1 To Maksimum
Dizi(i) = Rnd(1) * 99 + 1
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
'Sıralama alt programı çağrılıyor
hizliSirala(1, Maksimum)
metin = ""
For i = 1 To Maksimum
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
End Sub

37
Visual Basic dilinde hazır sıralama komutu örneği
Dim Maksimum As Integer = 5
Dim Dizi(Maksimum) As Integer
Dim i As Integer
Dim metin As String

Randomize()
ListBox1.Items.Clear()
'İlk değerler atanıyor
metin = ""
For i = 1 To Maksimum
Dizi(i) = Rnd(1) * 99 + 1
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)
'hazır komut kullanıyoruz
Array.Sort(Dizi, 1, Maksimum)
metin = ""
For i = 1 To Maksimum
metin = metin & Dizi(i) & " "
Next i
ListBox1.Items.Add(metin)

38
Visual Basic dilinde sıralı arama örneği
Dim Maksimum As Integer = 4
Dim Dizi(), I, Bulundu, Aranan As Integer

Private Sub Form1_Load


'Programın açılış anında çalışan komutlar

Dim Metin As String


ReDim Dizi(Maksimum)

Randomize()
Dizi(0) = Int(Rnd(1) * 10) + 1
Metin = Dizi(0)
TextBox1.Text = Metin
For I = 1 To Maksimum
Dizi(I) = Dizi(I - 1) + Int(Rnd(1) * 10) + 1
Metin = Metin & " " & Dizi(I)
Next I
Label2.Text = Metin
End Sub

Private Sub Button1_Click


'Bul düğmesinin komutları

Aranan = TextBox1.Text
Bulundu = 0
For I = 0 To Maksimum
If Dizi(I) = Aranan Then
Bulundu = 1
MsgBox(I + 1 & ". elemanda bulundu")
Exit For
End If
Next I
If Bulundu = 0 Then MsgBox("Aranan değer bulunamadı.")
End Sub

39
Visual Basic dilinde ikilik arama örneği
Dim Maksimum As Integer = 9
Dim Dizi(), I, Aranan As Integer

Private Sub Form1_Load


'Programın açılış anında çalışan komutlar
Dim Metin As String
ReDim Dizi(Maksimum)

Randomize()
Dizi(0) = Int(Rnd(1) * 10) + 1
Metin = Dizi(0)
For I = 1 To Maksimum
Dizi(I) = Dizi(I - 1) + Int(Rnd(1) * 10) + 1
Metin = Metin & " " & Dizi(I)
Next I
Label2.Text = Metin
TextBox1.Text = Dizi(Int(Rnd(0) * Maksimum))
End Sub

Private Sub Button1_Click


'Bul düğmesinin komutları
Dim Dur, Sol, Sag, Yari As Integer
Aranan = TextBox1.Text
Sol = 0
Sag = Maksimum
Dur = 0
While Dur = 0
Yari = Int((Sol + Sag) / 2)
If Aranan < Dizi(Yari) Then
Sag = Yari - 1
Else
Sol = Yari + 1
End If
If (Aranan = Dizi(Yari) Or Sol > Sag) Then
Dur = 1
Exit While
End If
End While
If (Aranan = Dizi(Yari)) Then
MsgBox(Yari + 1 & ". elemanda bulundu")
Else
MsgBox("Aranan değer bulunamadı.")
End If
End Sub

40
Visual Basic dilinde kıyma arama örneği
Dim Maksimum As Integer = 5
Dim Dizi(,) As Integer
Dim i, j, Aranan As Integer

Private Sub Form1_Load


ReDim Dizi(Maksimum, Maksimum)
Dim kiymaDegeri, Sayac, Saklanan, Dur As Integer
Dim metin As String

Randomize()
For i = 1 To Maksimum 'dikey değerler
For j = 1 To Maksimum 'yatay değerler
Dizi(i, j) = 0
Next j
Next i
DataGridView1.Rows.Add(5)
Sayac = 1 : metin = ""
For J = 1 To Maksimum
Dur = 0
Saklanan = Int(Rnd(1) * 100) + 1
kiymaDegeri = Saklanan - (Int(Saklanan / 5) * 5)
While Dur <> 1
If Dizi(Sayac, kiymaDegeri) = 0 Then
Dizi(Sayac, kiymaDegeri) = Saklanan
Dur = 1
Else
Sayac += 1
End If
DataGridView1.Item(kiymaDegeri, Sayac - 1).Value = Saklanan
End While
metin &= Saklanan & Space$(1)
Next J
Label2.Text = metin
End Sub

Private Sub Button1_Click


Dim kiymaDegeri, Aranan As Integer
Aranan = TextBox1.Text
kiymaDegeri = Aranan - (Int(Aranan / 5) * 5) + 1
If Dizi(1, kiymaDegeri) = 0 Then
MsgBox("Aranan değer bulunamadı.")
Else
MsgBox(kiymaDegeri & ". sütunda bulundu")
End If
End Sub

41
ÖNERİ
LEN KAYNAKLAR
ÖNERİ
LEN KAYNAKLAR
 blogs.borland.com/corbindunn/archive/2004/09/29/1483.aspx
 en.wikipedia.org/wiki/Fractal
 fraktaller.tripod.com
 googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
 main.linuxfocus.org/Turkce/March2003/article273.shtml
 ostermiller.org/ti82
 ozguryazilim.org
 tr.wikipedia.org/wiki/Big-O
 tr.wikipedia.org/wiki/Google_Earth
 tr.wikipedia.org/wiki/Seyyar_satıcı_problemi
 www.algosort.com
 www.automatedqa.com/products/aqtime
 www.ba.infn.it/~zito/plaw.html
 www.belgeler.org/howto/acik-kod-yazilimcisi.html
 www.codeproject.com
 www.cs.ubc.ca/~harrison/Java
 www.developerfusion.co.uk/show/3824
 www.devx.com/vb2themax/Article/19900?type=kbArticle&trk=MSCP
 www.e-optimization.com
 www.iett.gov.tr
 www.ileriseviye.org/Makale/lisperati-tr
 www.ileriseviye.org/arasayfa.php?inode=kadinlar.html
 www.inner-smile.com/delphifaq.phtml
 www.iti.fh-flensburg.de/lang/algorithmen/sortieren
 www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci
 www.papatya.info.tr/bilisimAnsiklopedisi.htm
 www.paulgraham.com/spam.html
 www.softwarefederation.com/fractal.html
 www.techtoolblog.com/archives/195-free-online-programming-books
 www.telekom.gov.tr
 www.turkyol.com
 www.yazilimci.org/content/view/29/31

42
KAYNAKÇA
KAYNAKÇA
 BAĞRIYANIK Tarı k, Programlama Ders Notlarıve UygulamalıGenel
Programlama Kitabı(www.yunus.projesi.com)

 WALLACE Wang, Beginning Programming for Dummies, Wiley Bası


mevi,
Indianapolis, 2004

43

You might also like