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İ
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 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
ii
Gİ
RİŞ
Gİ
RİŞ
Sevgili Öğ
renci,
Programlama bir hünerdir. Bazıinsanlar doğal olarak diğ erlerinden daha iyidir, ama
herkes pratik yaparak iyi olabilir. Başaramamaktan korkmak yerine, kendinizi bu maharete
vererek, öğrenmek için uğ raş ın. Programlama eğlencelidir, fakat 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.
1
2
ÖĞRENME FAALİ
YETİ
–1
ÖĞRENME FAALİ
YETİ
-1
AMAÇ
Programda sı
ralama ile ilgili kı
sı
mlarıyazabileceksiniz.
ARAŞ
TIRMA
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
Büyük O Gösterimi
Mesela isimlerin sı
ralanacağ ıbir algoritmada, isimlerin sayı
sıprogramın hı zı
nı
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.
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ı
rı
rı
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:
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.
Balon sı
ralamasıörneğinin sahte kodları
nıyazı
nı
z.
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ı
dı
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
sı
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.
Kabuk sı ağı
ralamasısahte kodlarıaş şş
daki gibidir. Akı eması
nıhazı
rlayı
nız.
9
Başla
Sayısal Dizi Veriler(5)
Sayısal i, Geçici, Dur, Geç, X, Sınır
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.
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.
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:
12
Resim 1.12: Hazı
r komut kullanarak sı
ralama iş
lemi
Hazı
r sı
ralama yönteminin sahte kodunu yazı
nız.
13
UYGULAMA
UYGULAMAFAALİYETİ
FAALİ
YETİ
Ö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)
2. (…) Kı ı
sa algoritmalar karmaşk algoritmalardan daha hı ş
zlıçalıı
r ve hemen sonucu
bulur.
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ı
sı
mlarıyazabileceksiniz.
ARAŞ
TIRMA
2. ARAMA
2.1. Sı
ralı
(Ardı
şı
k) Arama
Sıralıarama (sequential search) listedeki tüm bilgileri tarama yöntemidir. Liste, bağ
lı
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.
Resim 2.1: Sı
ralıarama yöntemi
17
Sı
ralıarama yönteminin sahte kodları
nıhazı
rlayı
nı
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ş
tı
rı
r. Bu sefer de sol
tarafta arama yapı lacaktır. Elimizde iki sayıkaldı. Listedeki ilk eleman aranan sayıile
karş ılaştı
rı
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ı
zı
deneyiniz.
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
KıymaDegeri = arananDeger % 5
//mod bulmak için başka bir yöntem:
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
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.
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ı 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)
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. ( )
4. Kı
yma fonksiyonu sayesinde bir değ
eri ilk denemede buluruz. ( )
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ş
tı
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ı
sı
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ı
nı
sağ
layabilirsiniz.
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ı
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 çı
kı
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
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İ
29
ÖLÇME
ÖLÇMEVE
VEDEĞ
DEĞERLENDİRME
ERLENDİ
RME
OBJEKTİ
F TESTLER (ÖLÇME SORULARI)
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ı
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)
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.
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ş
tı
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
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
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
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
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
40
Visual Basic dilinde kıyma arama örneği
Dim Maksimum As Integer = 5
Dim Dizi(,) As Integer
Dim i, j, Aranan As Integer
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
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)
43