Algoritmalar
(Algoritms)
Problem
 Bir işlemin, otomasyonun yada bilimsel hesaplamanın
bilgisayarla çözülmesi fikrinin ortaya çıkmasına
problem denir. Bu tip fikirlerde insanların bu sorunları
beyinle çözmeleri ya imkansızdır ya da çok zor ve
zaman alıcıdır. Bu tip bir sorunu bilgisayarla çözebilme
fikrinin ortaya çıkması bir bilgisayar probleminin ortaya
çıkmasına neden olmuştur.
Problem Çözümü
•
Problemi Çözebilmek için öncelikle sorunun çok net olarak
programcı tarafından anlaşılmış olması gerekir. Tüm ihtiyaçlar ve
istekler belirlenmelidir. Gerekiyorsa bu işlem için birebir
görüşmeler planlanmalı ve bu görüşmeler gerçekleştirilmelidir.
•
Problemin Çözümüne ilişkin zihinsel alıştırmalar yapılır. Bu
alıştırmaların bilgisayar çözümüne yakın olması hedeflenmelidir. Bir
sorunun tabii ki birden fazla çözümü olabilir. Bu durumda
bilgisayar ile en uygun çözüm seçilmelidir. Çünkü bazen pratik
çözümler bilgisayarlar için uygun olmayabilir.
•
Oluşturulan Çözüm Algoritma dediğimiz adımlarla ifade
edilmelidir.
•
Bu algoritmanın daha anlaşılabilir olması için Akış Çizgesi
oluşturulmalıdır.
•
Uygun bir programlama dili seçilmeli ve oluşturulan algoritma ve
akış çizgesi bu programlama dili aracılığı ile bilgisayar ortamına
aktarılmalıdır.
Program
Problem Çözümü kısmında anlatılan
adımlar uygulandıktan sonra ortaya
çıkan ve sorunumuzu bilgisayar
ortamında çözen ürüne Program
denir.
Bazı durumlarda bu ürüne yazılım
denebilir.
Programlama
Çok iyi tanımlanmış bir
sorunun çözümüne dair
adımlar ile çözümün
oluşturulup bunun bir
programlama dili ile
bilgisayar ortamına
aktarılması Programlama
olarak adlandırılır.
Programlama Dili
 Bir problemin algoritmik
çözümünün bilgisayarda yazılmasını
sağlayan kurallar dizisidir.
Bazı programlama dilleri
• MATLAB, Delphi, Pascal, Fortran,
Lisp
• C, C++, C#, Visual Basic, Java
Algoritma
 Bir sorunu (problemi) çözebilmek için gerekli olan sıralı
mantıksal adımların tümüne Algoritma denir.
 Algoritma doğal dille yazıldığı için formal değildir.
 Bir algoritma için aşağıdaki ifadelerin mutlaka
doğrulanması gereklidir.
 Her adım son derece belirleyici olmalıdır. Hiç bir şey şansa
bağlı olmamalıdır.
 Belirli bir sayıda adım sonunda algoritma sonlanmalıdır.
 Algoritmalar karşılaşılabilecek tüm ihtimalleri ele
alabilecek kadar genel olmalıdır.
Algoritma(devamı)
 “İşine gitmek üzere uyanan birinin yapması
gereken işler” algoritması:
1.
2.
3.
4.
5.
6.
Yataktan kalk
Pijamalarını çıkar
Duş al
Elbiselerini giy
Kahvaltını yap
Arabana bin ve işe git
 Sıra önemli. 3 ve 4 nolu adımlar yer değiştirirse
mesela? (Kim ıslanmak ister? )
Sözde Kod (Pseudo Code)
 Pseudo Code (Sözde Kod), bir algoritmanın yarı
programlama dili kuralı, yarı konuşma diline dönük olarak
ortaya koyulması/ tanımlanmasıdır. Bu şekilde gösterim
algoritmayı genel hatlarıyla yansıtır.
 Örnek:
–assign (ilkdeğer) value (100)
–if (sayı<x)
then (ilk satıra git)
else (son satıra git)
–while (döngü<girilen_değer)
do assign (toplam) value (toplam+döngü)
Gerçek Kod (Real Code)
 Real Code (Gerçek Kod), algoritmanın herhangi bir
programlama diliyle, belirli bir veri yapısı üzerinde
gerçekleştirilmiş halidir.
 Bir algoritmanın gerçek kodu, yalnızca tasarlandığı veri
yapısı üzerinde koşar; veri yapısı değiştirildiğinde
algoritmanın gerçek kodu üzerinde oynamalar
yapılmalıdır.
Programlama Dili
 Bir Problemin Algoritmik çözümünün Bilgisayara
anlatılmasını sağlayan, son derece sıkı-sıkıya kuralları
bulunan kurallar dizisidir.
 Programlama Dilleri için; Farklı problem alanlarına göre
farklı dillerden söz etmek mümkündür. Dilin seçimi bu
yüzden önemli olabilir. Probleme uygun dilin seçilmesi
programın geliştirilmesinde kolaylık ve hızlıçalışma
sağlayabilir.
Derleyici
 Bir programlama dili ile bilgisayara aktarılan programın
bilgisayarın anlayabileceği Makine Diline çevirmeyi
sağlayan ve yazılan programda söz dizim hatalarının
olup olmadığını bulan yazılımlardır.
 Her Programlama dili için bir derleyici olması
gerekmektedir.
Derleyici Programları
 Her bir programlama dilinde kod yazmak için
geliştirilmiş çok sayıda derleyici programı vardır.
Örneğin C programlama dilinde kod yazmak için dev
c++, Turbo C, Borland C, Microsoft Visual Studio gibi…
Kaynak ve Amaç Program
Programın, bir programlama diline
bağlı olarak hazırlanan simgesel
kodlardan oluşan kısmına kaynak
program (source code) adı verilir.
Bu kaynak programın derlenip
bilgisayarda çalışabilecek makine
kodlarına çevrilmiş koduna ise
amaç program ismi verilir.
Algoritma Yazımı
 Sözde kod yada diğer deyimle algoritma hazırlanırken bazı
kullanımlar vardır. Bunlar şunlardır:
 BAŞLA-DUR: Algoritmanın ilk ve son adımıdır.
 OKU: Veri girişinin yapılacağını belirler.
 EĞER…İSE…DEĞİLSE….: Şart belirtmek için kullanılır.
 GİT… : Belirli bir adıma yönlendirmek için kullanılır.
 DÖN..DEN:
 DÖNGÜ SONU: Döngüleri belirtmek için kullanılır.
 YAZ : Ekrana mesaj yazmak için kullanılır.
Yukarıdaki gösterimlerin ingilizce karşılıkları da algoritma hazırlamada
kullanılmaktadır.
Tanımlayıcı(değişken)
 Program yazan kişi tarafından düşünülüp oluşturulan ve
programdaki değişkenleri, sabitleri, kayıt alanlarını, alt
programları, vs.. adlandırmak için kullanılan kelimelere
tanımlayıcı denir.
 Bu kelimeler isimlendirilirken kurallara dikkat edilmelidir:
İngiliz alfabesindeki A-Z veya a-z arası 26 harf kullanılabilir.
0-9 rakamları kullanılabilir.
Sembollerden alt çizgi kullanılabilir. (
_
)
Tanımlayıcı ifadeleri harf veya altçizgi ile başlayabilir ama
rakamla başlamaz.
İsimler oluşturulurken boşluk kullanılmamalıdır.
maaş katsayısı
değil
maas_katsayisi
Algoritmada Yapılan İşlemler
 Aritmetiksel işlemler
toplama, çıkarma, ..
 Mantıksal işlemler (LOGİC)
ve, veya , değil
Aritmetiksel işlemler
 Toplama
a+b
 Çıkarma
a-b
 Çarpma
a*b
 Bölme
a/b
 Üs alma
a^b
İşlem önceliği
Matematiksel işlemler içeren kümenizin
içindeki matematiksel işaretlerin bir işlem önceliği
vardır.
 İşlem Önceliği Sırası
1. Parantezler
(
)
2. Üs alma a^b
3. Çarpma ve bölme a*b veya a/b
4. Toplama ve çıkarmaa+b veya a-b
 Aynı önceliğe sahip işlemler yan yana bulunuyorsa
işlem önceliği genelde soldan sağa doğrudur.
X=2*3/6+2
Karşılaştırma İşlemleri
Eşittir
=
Eşit değildir
<>
Büyüktür
>
Küçüktür
<
Büyük eşittir
>=
Küçük eşittir
<=
Mantıksal İşlemler
 Programlarda, birden fazla karşılaştırma ifadesi bir anda
kullanılmak istenebilir. Bu gibi durumlarda mantıksal ifadeler
kullanılması zorunludur.
MANTIKSAL
KOMUTLAR
İŞLEMLER
 VE
AND
 VEYA
OR
 DEĞİL
NOT
Mantıksal İşlem Sonuçları
Sonuç
Doğru
Yanlış
Rakam olarak
1
True
0
Bilgisayar Dilinde
(1)
False
(0)
Örnek
Bir işyerinde çalışan işçiler arasından yalnızca yaşı
23’ün üzerinde olup maaş olarak asgari ücret alanların
isimleri istenebilir. Burada iki koşulun da doğru olması
gerekmektedir. (Asgari ücret >=500)
1nci koşul
Eğer Yaş>23
2nci koşul
ve Maaş>=Asgari ücret
ise
Yaz İsim
Örnek
 Bir sınıfta Bilgisayar dersinden 65 in üzerinde
not almış olup Seçmeli Yabancı Dil (İngilizce)
veya Seçmeli Yabancı Dil (Almanca)
derslerinin herhangi birinden 65 in üzerinde
not alanların isimleri istenmektedir.
 Eğer Bilgisayar notu > 65
VE
(İngilizce > 65 VEYA Almanca > 65) ise
Yaz “Öğrencinin ismini”
Örnek Algoritma
1.
2.
3.
4.
5.
6.
7.
Başla
A sayısını gir
B sayısını gir
Eğer A>B ise Yaz “A sayısı, B sayısından büyüktür”
Eğer A<B ise Yaz “A sayısı, B sayısından küçüktür”
Eğer A=B ise Yaz “A sayısı, B sayısına eşittir”
Dur
Girilen A sayısı
3
Girilen B sayısı
7
Ekrana yazılan sonuç
A sayısı, B sayısından küçüktür.
Aktarma
Herhangi bir ifadenin sonucunu başka bir
değişkende göstermedir.
degisken = ifade
ifade kısmında matematiksel, mantıksal veya
harfsel (alfasayısal) ifade olabilir.
= sembolü atama operatörüdür. Bu
operatör, sağda hesaplanan ifadenin
değerini değişken içine (sola) iletir.
Örnek 1
Klavyeden girilen üç sayının toplamını bulan
algoritma.
1. Başla
2. t=0
3. OKU a
4. t=t+a
5. OKU b
6. t=t+b
7. OKU c
8. t=t+c
9. Yaz t
10. Dur
Örnek-2
Kenar uzunlukları verilen
dikdörtgenin alan hesabını yapan
programa ait algoritmanın
hazırlanması.(Kenar uzunlukları
negatif olarak girildiği durumda
veri girişi tekrarlanacaktır)
Örnek 2 - Cevap
Girdi: Kısa kenar (a), Uzun Kenar (b)
Çıktı: Alan
1.
BAŞLA
2.
OKU a
3.
a < 0 İSE GİT 2.Adım
4.
OKU b
5.
b < 0 İSE GİT 4.Adım
6.
Alan = a*b
7.
YAZ Alan
8.
BİTİR
Örnek-3
Bir öğrencinin bilgisayar
programlama dersinin 2 yazılı
sınavından aldığı notları klavyeden
okuyan, bu notların ortalamasını
bulan, eğer ortalaması 45’e eşit
veya 45’den büyükse “geçti”, aksi
halde “kaldı” mesajı yazan
programın algoritma şu şekildedir.
Örnek-3 Cevap
Girdi 1. sınav notu (s1), 2. sınav notu (s2)
Çıktı Sınav ortalaması (so)
1.
BAŞLA
2.
OKU s1,s2
3.
so = (s1 + s2) / 2
4.
EĞER so>45 veya so=45 İSE YAZ “Geçti”
5.
DEĞİLSE YAZ “Kaldı”
6.
BİTİR
Örnek 4
Aracın otopark ücretinin
hesaplanması. Araçların en fazla
24 saat kaldığını varsayın.
(Ücretlendirme: 0 - 2 saat 150 bin,
2 - 8 saat 300 bin, 8-24 saat 500
bin)
Örnek 4 Cevap
1.
BAŞLA
2.
OKU saat
3.
EĞER saat>0 ve saat <= 2 ise
ücret=150 TL.
4.
EĞER t<=8 ve t>2 ise ücret = 300 TL
5.
DEĞİLSE ücret = 500 TL
6.
YAZ ücret
7.
BİTİR
Döngü
 Bazı işlemler belli ardışık değerlerle veya belli sayıda
gerçekleştirilmektedir.
 Programda belirli komut bütünlerini belirli sayıda yaptırabilmek
için döngüler kullanılır.
 Algoritma yazarken döngü akış işlemlerinde genellikle
sayaç kullanılır.
 Döngüsel işlemler akış diyagramı bölümünde daha detaylı
anlatılacaktır.
Aşağıdaki algoritma nasıl bir
çıktı verir?
1.
Başla
2.
sayac=0
3.
Eğer sayac>4 ise Git 7
4.
sayac=sayac+1
5.
Yaz sayac
6.
Git 3
7.
Dur
Aşağıdaki algoritma ne iş
yapmaktadır?
1.
Başla
2.
sayac=0
3.
OKU sayi
4.
Eğer sayi=0 ise Git 7
5.
Eğer mod(sayi,2)=0 ise sayac=sayac+1
6.
Git 3
7.
Yaz sayac
8.
Dur
Örnek:
123456
23456
3456
456
56
6
Bu çıktıyı veren algoritmayı tasarlayınız.
Cevap
1.basla
2.baslangic=1
3.i=baslangic
4.Yaz i
5.i=i+1
6.eğer i<=6 git 4
7.alt satıra geç
8.baslangic=baslangic+1
9.eğer baslangic<=6 git 3
10.Dur
Soru-1
 Klavyeden girilen not bilgisinin 0 ile 100
arası olup olmadığını kontrol eden
programı yapınız.
Soru1-Cevabı
1. Başla
2. Oku sayi
3. Eğer (sayi>=0 ve sayi<101) ise yaz sayi değilse git a2
4. Dur
Soru-2
Klavyeden girilen 20 tam sayı
değerin en büyük ve en küçük
arasındaki farkı bulup ekrana
yazan programın algoritmasını
yazınız.
Soru2- Cevabı
1. Başla
2. oku a
3. enb=a
4. enk=a
5. Dön i=1,19,1
6. Oku a
7. Eğer a>enb ise enb=a
8. Eğer a<enk ise enk=a
9. Döngü sonu
10. Yaz enb-enk
11. Dur
Soru-3
Klavyeden girilen bir tam sayı eğer
1 ile 5 veya 7 ile 10 arasında ise,
ekrana “Sayınız doğru yerdedir.”,
değilse “Sayınız yanlış yerdedir.”
yazan algoritamyı yazınız.
 (Aralık belirten sayılar da aramaya
dâhildir.)
Soru3 Cevabı
1. Başla
2. Oku a
3. Eğer ((a>=1 ve a<=5) veya (a>=7 ve a<=10)) ise
Yaz "sayınız doğru yerdedir"
Değilse
Yaz "Sayınız yanlış yerdedir"
4. Dur
Soru-4
 Aşağıda verilen algoritmadaki değişkenlerin aldıkları
değerleri tek tek belirtiniz.
 BAŞLA
 Sayi1=15
 Sayi2=30
 Yaz Sayi1, Sayi2
 Gecici=Sayi1
 Sayi1=Sayi2
 Sayi2=Gecici
 Yaz Sayi1, Sayi2
 dur
Soru-5
 2-16 arasındaki çift sayıların ortalamasını bulan
programın algoritmasını yazınız?
Soru5-Cevabı
1. Başla
2. Toplam=0
3. Sayac
4. Dön i=2,16,2
5. Toplam=Toplam+i
6. Sayac=Sayac+1
7. Döngü Sonu
8. Yaz Toplam/Sayac
9. Dur
Soru-6
 Klavyeden girilen 10 tabanındaki sayıyı ikilik tabana
çeviren programın algoritmasını yazınız.
Soru6-Cevabı
1. Başla,
2. Oku Sayi
3. Sonuc=mod(sayi,2)
4. Yaz Sonuc
5. Sayi=Sayi/2
6. Eğer Sayi>0 ise git Adım3
7. Dur
Soru-7
 Bir aracın otopark ücretinin hesaplamasını aşağıdaki
kurallara göre yapan programın algoritmasını yazınız.
 Kurallar:
 Araçların en fazla 24 saat kaldığı varsayılacak.
 Küçük araçlariçin 1 büyük araçlar için 2 değeri
girilecek(Örn:Otomobil için 1, kamyon otobüs için:2)
 Ücret tarifesi
 0 - 2 saat Küçükler için:4 TL Büyükler için: 6 TL
2 - 8 saat Küçükler için:7 TL Büyükler için: 10 TL
8-24 saat Küçükler için:12 TL Büyükler için: 16 TL
Soru7-Cevabı
1. Başla
2. Oku saat
3. Oku tip
4. Eğer tip=1 ise git adım 5 değilse git adım 8
5. Eğer saat>=0 ve saat<2 ise yaz "4 TL": Dur
6. Eğer saat>=2 ve saat<8 ise yaz "7 TL": Dur
7. Eğer saat>=8 ve saat<=24 ise yaz "12 TL": Dur
8. Eğer tip=2 ise git adım 9 değilse git adım 12
9. Eğer saat>=0 ve saat<2 ise yaz "6 TL": Dur
10. Eğer saat>=2 ve saat<8 ise yaz "10 TL": Dur
11. Eğer saat>=8 ve saat<=24 ise yaz "16 TL": Dur
12. Yaz "Yanlış Seçim"
13. Dur
Soru-8
 10 ile 3000 arasındaki sayılardan 3 ve 10 ile tam
bölünenlerin toplamını bulan algoritmayı oluşturunuz?
Soru-9
 Girilen bir tamsayının asal sayı(sadece 1'e ve kendisine
tam bölünebilen olup olmadığını bulan programın
algoritmasını yazınız.
 Örnek;Girilen sayı 5 ise;"5 asal
sayıdır" yazmalı .... Girilen sayı 6 ise;"6 asal sayı değildir“
yazmalı
Soru 10
 Girilen 2 basamaklı tamsayıyı yazıyla yazan programın
algoritmasını yazınızz?
 Örnek;Girilen sayı 52 ise;"Elli İki" yazmalı
Soru10-Cevabı
 Başla
 Oku sayi
 Birlerbas=mod(sayi,10)
 Onlarbas=sayi/10
 Eğer Onlarbas=1 ise yaz "On "
 Eğer Onlarbas=2 ise yaz "Yirmi"
 Eğer Onlarbas=3 ise yaz "Otuz "
 Eğer Onlarbas=4 ise yaz "Kırk "
 Eğer Onlarbas=5 ise yaz "Elli "
 Eğer Onlarbas=6 ise yaz "Altmış"
 Eğer Onlarbas=7 yaz "Yetmiş "
 Eğer Onlarbas=8 yaz "Seksen "
 Eğer Onlarbas=9 yaz "Doksan "
Soru10-Cevabı
 Eğer Birlerbas=1 ise yaz "Bir"
 Eğer Birlerbas=2 ise yaz "İki"
 Eğer Birlerbas=3 ise yaz "Üç"
 Eğer Birlerbas=4 ise yaz "Dört"
 Eğer Birlerbas=5 ise yaz "Beş"
 Eğer Birlerbas=6 ise yaz "Altı"
 Eğer Birlerbas=7 ise yaz "Yedi"
 Eğer Birlerbas=8 ise yaz "Sekiz"
 Eğer Birlerbas=9 ise yaz "Dokuz"
 Dur
Soru-11
 Girilen iki adet tamsayının çarpımını toplama işlemi
kullanarak yapan programın algoritmasını yazınız.
Soru11-Cevabı
 Başla
 Oku s1,s2
 Sonuc=0
 Dön i=1;s1;1
 Sonuc=Sonuc+s2
 Döngü sonu
 Yaz Sonuc
 Dur
Download

Algoritmalar - enverbagci.net