18
Algoritma ve Akış Şemaları Günlük hayatta problem olduğunun dahi farkına varmadan sürekli problemlerle karşılaşır ve bunlara çözüm üretiriz. Sabah kalkar kalkmaz otomatik olarak, mevcut koşulları değerlendirir kararlar vermeye başlarız. Ve büyük çoğunlukla yaptığımız işlemler belirli bir sırada gerçekleşir. Örneğin, kahvaltıda çay içeceksek, çay yapmak için belirli bir sırada ki adımları otomatik takip ederiz. Çay yapmanın belirli koşulları vardır. Su, çay, çaydanlık ve ocak olması gerekir. Bunlardan biri yoksa bu işlemden vazgeçeriz ve hemen alternatifler üretiriz. Varsa, sıralı olarak adımları uygular ve çayı içmeye hazır hale getiririz. Sıralı olarak yaparız çünkü suyu kaynatmadan çaya su eklemememiz gerekir veya suyu koyup ocağın altını yakmazsak istediğimiz sonucu elde edemeyiz. Bunun gibi bizi elde edilmek istenen çözüme ya da sonuca ulaştıran adımlara Algoritma diyoruz. İstediğimiz sonuca ulaşmak için çoğu zaman birden fazla yol olabildiği için bulunan bu yollara genel olarak algoritmik çözümler diyoruz. Günlük hayatta karşılaştığımız bazı sorunlara kendimiz çözüm bulamadığımız zaman internetten veya çevremizden yardım alırız. Örneğin çamaşır makinesinin nasıl kullanıldığını bilmiyorsunuz ve elinizde kullanma kılavuzu var diyelim. Burada yapmanız gereken, işlemleri kılavuzdan öğrenip sırasıyla adımları uygulamaktır. Eğer kılavuzda hata varsa deterjan ve yumuşatıcı gözü yanlış yazılmışsa muhtemelen sizde aynı hatayı yaparsınız. Herhangi bir konuda algoritmayı yani işlem basamaklarını yazarken, onu okuyacak ve oradaki adımları sırasıyla yapacak kişinin okuma yazma haricinde hiç bir şey bilmediği farz edilmelidir ve en ufak ayrıntısına ve olasılığına kadar düşünülmeli ve öyle yazılmalıdır. Bu yüzden, algoritmalar yani bizi sonuca götüren işlem basamakları; Basit ve anlaşılır olmalı, Nerede başlayıp nerede bittiği net olmalı, Bizi çözüme en kısa yoldan götürmeli ve Her zaman ve koşulda bizi problemin çözümüne götürmelidir. İnsan gibi hareket edebilen bir robota odadan çıkıp mutfağa gitmesini istediğinizde vereceğiniz komut “Mutfağa git” olamaz. Çünkü mutfağın nerede olduğunu ve oranın mutfak olduğunu siz biliyorsunuz o değil. Robot siz hangi komutu verirseniz onu yapar. Kapının önünde duran bir robota kapı kapalı demez. Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-1 olduğu halde 5 metre ileri git derseniz onu yapmaya çalışır. Yani size gidemem kapı kapalı

BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Algoritma ve Akış Şemaları Günlük hayatta problem olduğunun dahi farkına varmadan sürekli problemlerle karşılaşır ve bunlara çözüm üretiriz.

Sabah kalkar kalkmaz otomatik olarak, mevcut koşulları değerlendirir kararlar vermeye başlarız. Ve büyük çoğunlukla yaptığımız işlemler belirli bir sırada gerçekleşir.

Örneğin, kahvaltıda çay içeceksek, çay yapmak için belirli bir sırada ki adımları otomatik takip ederiz. Çay yapmanın belirli koşulları vardır. Su, çay, çaydanlık ve ocak olması gerekir. Bunlardan biri yoksa bu işlemden vazgeçeriz ve hemen alternatifler üretiriz. Varsa, sıralı olarak adımları uygular ve çayı içmeye hazır hale getiririz. Sıralı olarak yaparız çünkü suyu kaynatmadan çaya su eklemememiz gerekir veya suyu koyup ocağın altını yakmazsak istediğimiz sonucu elde edemeyiz.

Bunun gibi bizi elde edilmek istenen çözüme ya da sonuca ulaştıran adımlara Algoritma diyoruz. İstediğimiz sonuca ulaşmak için çoğu zaman birden fazla yol olabildiği için bulunan bu yollara genel olarak algoritmik çözümler diyoruz.

Günlük hayatta karşılaştığımız bazı sorunlara kendimiz çözüm bulamadığımız zaman internetten veya çevremizden yardım alırız.

Örneğin çamaşır makinesinin nasıl kullanıldığını bilmiyorsunuz ve elinizde kullanma kılavuzu var diyelim. Burada yapmanız gereken, işlemleri kılavuzdan öğrenip sırasıyla adımları uygulamaktır. Eğer kılavuzda hata varsa deterjan ve yumuşatıcı gözü yanlış yazılmışsa muhtemelen sizde aynı hatayı yaparsınız.

Herhangi bir konuda algoritmayı yani işlem basamaklarını yazarken, onu okuyacak ve oradaki adımları sırasıyla yapacak kişinin okuma yazma haricinde hiç bir şey bilmediği farz edilmelidir ve en ufak ayrıntısına ve olasılığına kadar düşünülmeli ve öyle yazılmalıdır.

Bu yüzden, algoritmalar yani bizi sonuca götüren işlem basamakları;

Basit ve anlaşılır olmalı, Nerede başlayıp nerede bittiği net olmalı, Bizi çözüme en kısa yoldan götürmeli ve Her zaman ve koşulda bizi problemin çözümüne götürmelidir.

İnsan gibi hareket edebilen bir robota odadan çıkıp mutfağa gitmesini istediğinizde vereceğiniz komut “Mutfağa git” olamaz. Çünkü mutfağın nerede olduğunu ve oranın mutfak olduğunu siz biliyorsunuz o değil.

Robot siz hangi komutu verirseniz onu yapar. Kapının önünde duran bir robota kapı kapalı

demez.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-1

olduğu halde 5 metre ileri git derseniz onu yapmaya çalışır. Yani size gidemem kapı kapalı

Page 2: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Bilgisayar için de durum bundan ibarettir. Bilgisayarlar sadece komutlarla çalışırlar. Bu komutlar ya kullanıcı olan bizler tarafından verilirler ya da yazılım dediğimiz komutlardan oluşan programlar tarafından.

Bilgisayar için bir program yazmak istediğimizde öncelikle yapılmak istenen işlemlerin neler olduğunun, bilgisayarın neyi nasıl yapması istendiği adım adım belirtildiği algoritmayı hazırlamak gerekir.

Örnek: Ekranda “Ahmet nasılsın” yazan bir program için algoritma hazırlayalım.

Adım 1 Başla Adım 2 Ekranda “Ahmet nasılsın” mesajını görüntüle Adım 3 Bitir

Biz bilgisayarda herhangi bir programı çalıştırdığımızda aslında o programın ilk komutu olan “Başla” komutunu veriyoruz ve programı kapattığımızda da veya programın işi bittiğinde de ona “Bitir” komutu verilmiş oluyor. Bu nedenle yazacağımız bütün algoritmaların ilk adımı için “Başla” ve son adımı için “Bitir” yazıyoruz.

Bu algoritmaya göre program yazarsak programı kullanan herkese “Ahmet” diye hitap edecektir. Bu yüzden bu algoritmayı biraz daha geliştirelim ve kullanıcının adını öğrenip ona “nasılsın” desin.

Adım 1 Başla Adım 2 Kullanıcının adını öğren Adım 3 Ekranda öğrendiğin kullanıcı adıyla birlikte “nasılsın” mesajını

görüntüle Adım 4 Bitir

Burada 2. adımda kullanıcının adını öğrenmesini istiyoruz ama bilgisayar kullanıcı adını nasıl ve nereden öğreneceğini bilmiyor. Bu yüzden daha net anlaşılır hale getirmemiz gerekiyor.

Biz insanlar bilgiyi 5 duyu organımızla alıyoruz ama bilgisayarın dışarıdan bilgiyi alabileceği yerler kısıtlıdır. Klavye, mikrofon, tarayıcı gibi donanım parçalarından ağ üzerinden (internet gibi) veya CD, DVD, Flash Bellek gibi harici ya da kendi içinde bulunan sabit disk gibi bilgi depolama donanımlarında ki dosyalardan bilgiyi alabilir.

Bu yüzden bu 2. Adımı biraz daha düzenleyelim ve bilgiyi nereden alacağını belirtelim.

Adım 1 Başla Adım 2 Klavyeden girilen Kullanıcının adını oku Adım 3 Ekranda girilen kullanıcı adıyla birlikte “nasılsın” mesajını

görüntüle Adım 4 Bitir

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-2

Page 3: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Bu şekilde yazdığımızda artık bilginin nereden geleceğini biliyor. Ama söyle bir sorun var; Biz insanlar dışarıdan gelen bilgiyi hafızamıza alıyor ve gerektiğinde hafızamızda bu bilgiyi çağırıp kullanıyoruz.

Örneğin birinin adını öğrenip ona adıyla hitap edebilmek için; önce adını öğrenip yani hafızamıza kaydedip, sonra o hafızadaki bilgiyi çağırıp sese dönüştürüyoruz. Bilgisayarında hafızası var ve algoritmayı yazarken bu bilgiyi nasıl ve nerede saklayacağını da söylememiz gerekiyor.

Bilgisayar sizden aldığı bilgiler ya da yaptığınız işlemler gibi tüm bilgiler için hafıza da bir alan ayırır, oraya bir isim verir ve o bilgileri ayrı ayrı o alanlara kaydeder. Bu alanlara “değişken” adı verilir. Bu alana verilen isme de “değişken ismi” denir.

Bu konunun daha iyi anlaşılması için kafe ya da lokantalardaki sitemi ele alalım. Kafe ya da lokanta gibi yerlerde her masanın bir numarası vardır ve verdiğiniz siparişler o numaraya yazılır. Diyelim ki bir bardak çay istediniz ve çayın fiyatı 2 TL. Dolayısıyla çıkışta ödeyeceğiniz hesap 2 TL olur ve her sipariş verişinizde ödenecek hesap artar. Hesabı ödemeye kasaya gittiğinizde de direk masa numarasını söylersiniz ve hesabı ödersiniz.

Burada ki masa numarasını değişken ismi, masaya ait hesabı da değişken olarak düşünebilirsiniz. Masaya her gün onlarca müşteri oturur ve dolayısı ile o masanın hesabı sürekli değişir.

Bilgisayar için de durum buna yakındır. Program içeresindeki herhangi bir bilgi daha sonra kullanılacaksa onun hafızada tutulması gerekir. Bu yüzden yukarıda ki örnekten devam edecek olursak, o bilgi için bir masa ayrılır ve o masadaki bilgi diğerleriyle karışmasın diye ona bir numara ya da isim verilir. Hafızada tutulacak bilgi için ayrılacak alanın yani masanın ismini biz programı yazacak olanlar veririz. Bu isimleri verilirken uyulması gereken kurallar vardır; sayı ile başlamaması, ismin içinde boşluk olmaması gibi. Şimdilik bu iki kurala uymamız yeterli.

Şimdi algoritmamızı biraz daha düzenleyelim.

Adım 1 Başla Adım 2 Klavyeden oku, Ad Adım 3 Ekrana yaz, Ad + “ nasılsın” Adım 4 Bitir

Buradaki 2. Adım ile bilginin nereden alınacağını ve o bilginin hafıza da nasıl saklanacağını söylemiş oluyoruz. Klavyeden okuduğu bilgiyi hafızada ki Ad adlı değişken alanının içinde saklayacak. 3. Adımda ise; ekranda Ad isimli değişken alanındaki bilgiyi getirip yanına “nasılsın” yazacak. ( Aradaki “+” işaretinin görevi ilerleyen konularda açıklanacaktır.)

Bilgisayarımız içinde tek ya da çift tırnak işareti arasında yazılan sayılar dâhil tüm sembolleri alfanümerik/karakter olarak tanır. Algoritmamızda “ nasılsın” yerine tırnak

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-3

Page 4: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

işaretleri kullanmadan nasılsın yazsaydık bilgisayarımız nasılsın kelimesinin de bir değişken ismi olduğunu sanacak ve hafızasında böyle bir yer tanımlanmış olmadığından hata verecektir. Kafe örneğinde olduğu gibi boş bir masanın hesabını ödemek isterseniz kasiyer bir yanlışlık olmalı diyerek sizi uyaracaktır.

Artık algoritmamız hazır. İstersek bu algoritmayı istediğimiz bir programlama dilinde komutlara dönüştürerek “Kullanıcının adını öğrenip ona nasıl olduğunu soran bir program” yazabiliriz.

Uygulama: Kullanıcının tutuğu takımı öğrenip “En Büyük <tutulan takım>” yazan bir programın algoritmasını tasarlayalım.

Örnek: Kısa ve uzun kenarı girilen bir dikdörtgenin alanını hesaplayan bir programın algoritmasını inceleyelim.

Adım 1 Başla Adım 2 Klavyeden oku, Kenar1 Adım 3 Klavyeden oku, Kenar2 Adım 4 Dikdörtgenin alanını hesapla Adım 5 Ekrana hesaplanan alanı yaz Adım 6 Bitir

Burada klavyeden okunan bilgilerin saklanacağı Kenar1 ve Kenar2 isminde iki değişken (hafıza alanı) belirliyoruz. 4. Adımında dikdörtgenin alanını hesapla diyoruz ama tabi ki bilgisayar bunun nasıl yapılacağını bilmiyor. O yüzden biraz daha düzenleyelim.

Matematikte kullandığımız sembolleri ve formülleri bilgisayarda aynen kullanamıyoruz. Örneğin biz çarpma işlemlerinde “.” ya da “x” işaretlerini kullanabiliyorken bilgisayara çarpma işlemini yaptırabilmek için “*” işaretini kullanabiliyoruz. Bilgisayarda hesaplama işlemleri yaptırırken kullanılan bu sembollere operatör ya da işleç adı veriliyor ve hesaplama işlemleri tek bir satırda yazılması gerekiyor.

Operatör Sembolü Örnek

İşlem Sonuç Toplama + 4 + 10 14 Çıkarma - 4 - 10 -6 Çarpma * 4 * 10 40 Bölme / 14 / 4 3,5 Tam Sayı Bölme // 14 // 4 3 MOD (Bölümden Kalan) % 14 % 4 2 Kuvvet Alma ** 2 ** 3 8

−𝐚 + 𝐛. 𝐜

𝟐. 𝒂+ 𝒅𝟐

Örneğin yukarıdaki gibi bir denklemi (-a + b * c) / 2 * a + d ** 2 şeklinde yazabiliriz.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-4

Page 5: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Adım 1 Başla Adım 2 Klavyeden oku, Kenar1 Adım 3 Klavyeden oku, Kenar2 Adım 4 Hesapla, Kenar1*Kenar2 Adım 5 Ekrana hesaplanan alanı yaz Adım 6 Bitir

Adım 4 ile Kenar1*Kenar2 diyerek hesaplama işlemini bilgisayara yaptırabiliyoruz. Ama çıkan sonucun hafızada tutulmasını sağlamıyoruz. Yani bilgisayarımız hesaplamayı yapıp bitiriyor, sonucunu saklamıyor. Kafe örneğini düşünürsek, garson size siparişlerinizi getiriyor ama hesaba yazmayı unutuyor gibi düşünebilirsiniz. Bu nedenle de 5. Adımda bu bilgiyi ekranda yazdıramayız.

Bunu düzeltmenin yolu, hesaplama işleminin sonucunu bir değişkene aktarıp hafızada tutulmasını sağlamaktır. Şimdi biraz daha düzenleyelim.

Adım 1 Başla Adım 2 Klavyeden oku, Kenar1 Adım 3 Klavyeden oku, Kenar2 Adım 4 Alan = Kenar1*Kenar2 Adım 5 Ekrana yaz, Alan Adım 6 Bitir

Değişkenleri oluşturup içerisine bilgi aktarma yollarından biri Adım 1 ve Adım 2 ‘deki gibidir. Bir diğer yolu da “ = ” sembolünü kullanmaktır. 4. adımda Alan isimli değişken oluşturup içerisine Kenar1*Kenar2 işleminin sonucunu aktarıyoruz. Böylece 5. adımda Alan değişkeninin içindeki bilgiyi ekrana yazdırabiliyoruz.

Örnek: Kısa ve uzun kenarı girilen bir dikdörtgenin alanını ve çevresini hesaplayan bir programın algoritmasını inceleyelim.

Adım 1 Başla Adım 2 Klavyeden oku, Kenar1 Adım 3 Klavyeden oku, Kenar2 Adım 4 Alan = Kenar1*Kenar2 Adım 5 Çevre = 2 * ( Kenar1 + Kenar 2) Adım 6 Ekrana yaz, Alan Adım 7 Ekrana yaz, Çevre Adım 8 Bitir

Bir önceki örnek de sadece Alanı hesaplamıştık. Bu örnekte hem alanı hem de çevreyi hesaplıyoruz. Adım 5 ’e dikkat ettiyseniz matematikteki hesaplamalarda kullanılan işlem önceliği kuralı burada da geçerli. Önce parantez içindeki işlemler sonra çarpma ve bölme ve en son olarak da toplama çıkarma işlemleri yapılır.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-5

Page 6: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Örnek: Yarıçapı girilen çemberin alnını ve çevresini hesaplayan bir programın algoritmasını inceleyelim;

Adım 1 Başla Adım 2 Klavyeden oku, Yarıçap Adım 3 Alan = 3.14 * Yarıçap ** 2 Adım 4 Çevre = 2 * 3.14 * Yarıçap Adım 5 Ekrana yaz, Alan Adım 6 Ekrana yaz, Çevre Adım 7 Bitir

Bir önceki örmekteki aynı mantığı bu örnek için de kullanıyoruz. Önce kullanıcıdan yarıçap değerini öğreniyoruz sonra alan ve çevreyi hesaplatarak sonuçlarının ekranda görünmesini sağlıyoruz.

Örnek: İsmi girilen kişiye “Merhaba <isim> bugün nasılsın?” diye sorun bir programın algoritmasını inceleyelim;

İlk sayfalardaki örneklere benzer bir algoritma yazacağız.

Adım 1 Başla Adım 2 Klavyeden oku, İsim Adım 3 Ekrana yaz, “Merhaba” + İsim + “bugün nasılsın?” Adım 4 Bitir

Adım 3 ‘de matematiksel işlemlerde toplama işlemleri için kullanılan “+” operatörünün farklı bir kullanımını görüyorsunuz. Diğer matematiksel operatörlerden farklı olarak “+” operatörü aynı zamanda karakterlerden oluşan bilgileri birleştirmek için de kullanılabilmektedir.

Bu algoritmamız da kullanıcının ismi de karakterlerden oluşacağı için üç farklı karakter bilgiyi “+” işaretiyle birleştiriyoruz. Diyelim ki bu algoritmaya göre hazırlanan programı kullanıcı çalıştırdı ve ismini “Hakan” olarak girdi. Adım 3 ‘de üç farklı karakter bilgi olan “Merhaba”, “Hakan” ve “bugün nasılsın?” birleştirilerek “Merhaba Hakan bugün nasılsın?” mesajını ekranda görüntüleyecektir.

Örnek: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan mesajı inceleyelim.

Adım 1 Başla Adım 2 ad = “Ali” Adım 3 ad = ad + “ Bey” Adım 4 mesaj = “Merhaba “ + ad Adım 5 mesaj = mesaj + “ tanıştığımıza memnun

oldum” Adım 6 Ekrana yaz, mesaj Adım 7 Bitir

Merhaba Ali Bey tanıştığımıza memnun oldum

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-6

Page 7: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Uygulama: İki notu girilen öğrencinin ortalamasını bularak sonucu ekranda gösteren programın algoritmasını tasarlayınız. Uygulama: Fiyatı ve KDV oranı girilen bir ürünün KDV’li satış fiyatını hesaplayan bir programın algoritmasını tasarlayınız. ( Satış Fiyatı = Fiyat + Fiyat * KDV/100 ) Uygulama: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan bilgi nedir?

Adım 1 Başla Adım 2 X = 100 Adım 3 X = 200 Adım 4 X = 50 Adım 5 Ekrana yaz, X Adım 6 Bitir

Uygulama: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan bilgi nedir?

Adım 1 Başla Adım 2 X = 100 Adım 3 X = X + 100 Adım 4 X = 50 + X Adım 5 Ekrana yaz, “X in son değeri :”, X Adım 6 Bitir

Uygulama: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan bilgi nedir?

Adım 1 Başla Adım 2 Mesaj = “Bugün hava soğuk olacak” Adım 3 İsim = “Selim” Adım 4 Ekrana yaz, İsim + “ bey” + Mesaj Adım 5 Bitir

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-7

Page 8: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Örnek: Klavyeden girilen iki sayının bölümünü hesaplayan bir programın algoritmasını tasarlayınız.

Adım 1 Başla Adım 2 Klavyeden oku, Bölünen Adım 3 Klavyeden oku, Bölen Adım 4 Sonuç = Bölünen / Bölen Adım 5 Ekrana yaz, Sonuç Adım 6 Bitir

Bu örnek de; Adım 2 ve 3 ‘de Kullanıcının klavyeden girdiği bilgiler Bölen ve Bölünen değişkenlerine aktarılıyor. Adım 4 ‘de Bölünen / Bölen işlemi yapılıp sonucu Sonuç değişkenine aktarılıyor. Adım 5 ‘de Sonuç değişkenindeki bilgi ekrana yazdırılıyor.

Bu örnekteki algoritma her zaman doğru sonucu üretir gibi duruyor.

Bilgisayarın verdiğimiz komutlar neyse onları sırayla sorgusuz sualsiz yaptığını biliyoruz. Bu örnekteki gibi bir programı bilgisayarda yazdığımızı düşünelim. Programı kullanan kullanıcıda bölme işlemini daha yeni öğrenmeye başlayan ilkokul 2. Sınıf öğrencisi olduğunu düşünelim, bölünen olarak 15 ve bölen olarak da 0 girerse ne olur?

Biz biliyoruz ki bir sayı sıfıra bölünemez. Ama biz algoritmamızda bölenin sıfır olup olmadığına bakmadan Bölünen / Bölen işlemini yap dediğimiz için bilgisayarda 15 sayısını sıfıra bölmeye çalışacaktır ve tabi ki program çalışamaz hale gelecek ve bilgisayarımız Hata verecektir.

Bu tarz programın çalışması esnasında çıkan hatalara “Çalışma zamanı hatası” denir. Aslında bilgisayarımızı kullanırken programların verdiği hataların büyük çoğunluğu bu tarz programcı tarafından düşünülmemiş, hesaba katılmamış durumların yaşanmasıdır.

Şimdi bu örnekteki oluşabilecek hatanın önüne geçmek için yeni bir algoritma yazalım ama bu sefer kullanıcı sıfır girerse hesaplama yapılmasın.

Adım 1 Başla Adım 2 Klavyeden oku, Bölünen Adım 3 Klavyeden oku, Bölen Adım 4 Eğer Bölen == 0 ise;

Ekrana yaz, “Bir sayı sıfıra bölünemez” Değilse; Sonuç = Bölünen / Bölen Ekrana yaz, Sonuç

Adım 5 Bitir

Burada karşılaştırma yapıyoruz Bölen değişkeninin içindeki bilgi sıfıra eşitse ekrana “Bir sayı sıfıra bölünemez” yazıyor ve Adım 5 ’e gelerek program bitiyor. Eğer sıfıra eşit değilse hesaplama yapılıyor ve ekrana bu işlemin sonucu yazılıyor ve Adım 5 ’e gelerek program bitiyor.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-8

Page 9: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Bu algoritma ile programı bir birini takip eden sıralı işlemler olarak değil de duruma göre karar vererek yön değiştirebilen adımlar halinde olmasını sağladık.

Bilgisayarımızda yapılan karşılaştırma işlemleri için aşağıdaki tabloda gösterilen operatörler kullanılır. Bu şekilde yapılan karşılaştırma işlemlerinin soncu ya Doğru ya da Yanlış olarak çıkar.

Operatör Sembolü Örnek

İşlem Sonuç Eşit == 25 == 32 Yanlış Eşit Değil != 25 != 32 Doğru Küçüktür < 26 < 26 Yanlış Küçük ya da Eşit <= 26 <= 26 Doğru Büyüktür > 50 > 80 Yanlış Büyük ya da Eşit >= 50 >= 50 Doğru

Yukarıdaki algoritmamızda Bölen == 0 bir karşılaştırmadır. Sonucu Doğru çıkarsa “Bir sayı sıfıra bölünemez” yazacak. Sonuç Yanlış çıkarsa Sonuç = Bölünen / Bölen hesaplamasını yapıp ekrana Sonuç değişkenindeki bilgiyi yazacaktır.

Buna benzer algoritmaları daha iyi anlayabilmek, nerede ne yapıldığını daha iyi görebilmek için Akış şemaları kullanılır. Algoritmaların semboller ile görselleştirilmiş hallerine Akış şeması denir.

Yukarıdaki örneğin akış şeması aşağıdaki gibidir;

Akış Şemaları sayesinde;

Birbiri ile ilgili adımlar arasındaki mantıksal ilişkiyi gösterirler.

İzlenmesi ve anlaşılması kolaydır.

Şartlara bağlı olarak ortaya çıkan olayların takip edilmesi mümkündür.

Belli bir standarda göre hazırlandıklarından herkesçe anlaşılabilir ve birden fazla kişi aynı şema üzerinde çalışabilir.

Akış şemasında her sembolün bir anlamı vardır ve bu semboller ufak tefek değişiklikler dışında tüm dünyada kullanılmaktadır.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-9

Page 10: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Başla / Bitir Okuma (Bilgi Girişi)

Yazma (Bilgi Çıkışı)

İşlem / Değişkene Bilgi Atama

Karar verme

(Denetim) Tekrarlayan

İşlemler (Döngü) Akış Yönü Bağlaç

Hem algoritmanın hem de akış şemasının kullanıldığı bir örnek ile devam edelim.

Örnek: Girilen iki sayıdan büyük olanını ekrana yazan bir programın algoritmasını ve akış şemasını tasarlayalım.

Adım 1 Başla Adım 2 Klavyeden oku, Sayı1 Adım 3 Klavyeden oku, Sayı2 Adım 4 Eğer Sayi1 > Sayi2 ise;

Ekrana yaz, “En büyük sayı : ” + Sayi1 Değilse; Ekrana yaz, “En büyük sayı : ” + Sayi2

Adım 5 Bitir

Yukarıdaki algoritmayı dikkatle incelediğimizde iki sayı birbirine eşit olsa bile yine de ekrana “En büyük sayı : ” + Sayi2 yazacağını görürüz. Bu tarz çalışırken hiçbir sorun yaratmayan ama sonucun yanlış verilebildiği durumlara “Mantık Hatası” denir. Şimdi bunu düzeltelim.

Yanlış Doğru

Bitir

Başla

Sayi1, Sayi2

Sayi1 > Sayi2 “En büyük sayı :” + Sayi1 “En büyük sayı :” + Sayi2

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-10

Page 11: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Adım 1 Başla Adım 2 Klavyeden oku, Sayı1 Adım 3 Klavyeden oku, Sayı2 Adım 4 Eğer Sayi1 > Sayi2 ise;

Ekrana yaz, “En büyük sayı : ” + Sayi1 Adım 5 Eğer Sayi2 > Sayi1 ise;

Ekrana yaz, “En büyük sayı : ” + Sayi2 Adım 6 Eğer Sayi1 == Sayi2 ise;

Ekrana yaz, “Birbirine eşittir” Adım 7 Bitir

Hazırlanan algoritmaların doğru sonuçları verip vermediğini anlamanın en iyi yolu sanki algoritmayı programı dönüştürmüş ve birisi kullanıyormuş gibi düşünerek değişkenlere değerler vermektir.

Örnek algoritmamızdaki olasılıklardan biri için düşünürsek;

Sayı1 = 10, Sayı2 = 5 olsun;

Adım 4’e geldiğinde Sayi1>Sayi2 karşılaştırması yapar. Sonucu Doğru olacağından ekrana “En büyük sayı: 10” yazar. Adım 5’e gelir. Sayi2>Sayi1 karşılaştırmasını yapar. Sonucu Yanlış olduğundan Adım 6’ya geçer. Sayi1==Sayi2 karşılaştırmasının sonucu da Yanlış çıkacağı için Adım 7’ye gelir ve program sona erer. Bu tarz bütün olasılıkların test edildiği problem çözme yöntemine düz mantık ile problem çözme de diyebiliriz. Bu örnek de, Her bir olasılık işin karşılaştırma yaptık, koşul doğru ise işlem yapıldı yanlış ise programımız bir sonraki koşul ile devam etti.

Uygulama: Girilen sayının negatif, pozitif veya sıfır olduğunu gösteren programın algoritmasını ve akış şemasını tasarlayınız.

Uygulama: Doğum Yılı girilen bir kişinin reşit olup olmadığını bulan programın algoritmasını yazınız.

Uygulama: Girilen sayının tek mi çift mi olduğunu gösteren programın algoritmasını ve akış şemasını tasarlayınız. ( Not: Matematiksel operatörlerden “%” operatörünü inceleyiniz.)

Doğru

Yanlış

Yanlış

Yanlış

Doğru

Doğru

Bitir

Başla

Sayi1, Sayi2

Sayi1 > Sayi2 “En büyük sayı :” + Sayi1

Sayi2 > Sayi1 “En büyük sayı :” + Sayi2

Sayi1 == Sayi2 “Birbirine eşittir”

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-11

Page 12: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Örnek: Girilen sıcaklık derecesine göre suyun katı/sıvı/gaz hallerinden hangisinde olduğunu yazan programın algoritması ve akış şemasını tasarlayalım.

Suyun sıcaklığı 100 C° den fazla ise su gaz halinde, 0 ile 100 C° arasında ise sıvı halde ve 0 C° nin altında ise katı haldedir.

Birisi size suyun sıcaklığının 80 C° olduğunu söylediğine; Söylenen sıcaklık sıfırdan küçük mü? Sıfırdan büyük mü? Büyük ise 100 den küçük mü? Gibi karşılaştırmaları farkında olmadan yaparız ve suyun hangi durumda olduğunu biliriz.

Algoritmamızı da aynen bu düşünce biçimine göre yazabiliriz. Kullanıcıdan gelen derece bilgisine göre; sıfırdan büyük mü? Kontrol ederiz. Büyükse 100 dereceden de mi büyük bakarız. Eğer 100 dereceden de büyükse ekrana “Gaz halinde” yazdırırız. Eğer 100 derecenin altında ise demek ki 0 ile 100 arasındadır. Bu durumda ekrana “Sıvı halde” yazdırırız. Sıfırdan büyük değilse zaten başka seçenek kalmadığı için ekrana “Katı halde” yazdırırız.

Adım 1 Başla Adım 2 Klavyeden oku, Derece Adım 3 Eğer Derece >= 0 ise;

Eğer Derece >100 ise; Ekrana yaz, “Gaz halinde” Değilse; Ekrana yaz, “Sıvı halinde” Değilse; Ekrana yaz, “Katı halde”

Adım 4 Bitir

Daha önceki örnekte olduğu gibi her bir koşul için düz mantık ile tek tek karşılaştırma yapmak yerine karşılaştırma işlemlerini bu örnekte olduğu gibi istediğimiz kadar içi içe kullanabiliriz. Bu sayede daha az karşılaştırma adımı ile aynı sonuca ulaşmış oluruz.

Doğru

Yanlış Yanlış

Doğru

Bitir

Başla

Derece

Derece >= 0 Derece > 100 “Gaz Halde”

“Sıvı Halde” “Katı Halde”

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-12

Page 13: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Bilgisayarla çözülen problemlerin çoğu zaman birden fazla çözüm yolu vardır. Bütün çözüm yolları aynı sonuca ulaşabilir olsa da bu tamamen algoritmayı hazırlayan kişiye bağlıdır.

Bu örnek problemin başka bir çözüm yoluna göz atalım.

Adım 1 Başla Adım 2 Klavyeden oku, Derece Adım 3 Eğer Derece < 0 ise;

Ekrana yaz, “Katı halde” Değilse; Eğer Derece >100 ise; Ekrana yaz, “Gaz halinde” Değilse; Ekrana yaz, “Sıvı halinde”

Adım 4 Bitir

Bu algoritmada bir öncekinden biraz daha farklı olsa da tamamen aynı çözüme ulaşıyor. Aynı problem için isterseniz yine başka çözüm yolu bulabilirsiniz. Yukarıdaki iki örnekte ilk olarak sıfırdan büyük olup olmama durumuna baktık. Bunun yerine ilk olarak 100 ‘den büyük olup olmama durumuna da bakılabilirdi. Bu tamamen algoritmayı yazanın tercihine ve düşünme şekline kalmış bir şeydir.

Örnek: 100 ’lük sistemde girilen notu 5 ’lik sisteme çeviren programın algoritması ve akış şemasını inceleyelim.

Adım 1 Başla Adım 2 Klavyeden oku, Not Adım 3 Eğer Not >=85 ise;

Ekrana yaz, “5” Değilse; Eğer Not >=70 ise; Ekrana yaz, “4” Değilse; Eğer Not>=60 ise; Ekrana yaz, “3” Değilse; Eğer Not>=50 ise; Ekrana yaz, “2” Değilse; Ekrana yaz, “1”

Adım 4 Bitir

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-13

Page 14: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Bu algoritmamız ile Not 85 ve üzeri ise “5” yazdırıyoruz, Not 85 ve üzeri değilse demek ki daha küçük bir sayıdır. Bu nedenle bu sefer Not 70 ve üzeri mi diye bakıyoruz, doğru ise “4” yazdırıyoruz. Not 70 ve üzeri değilse yine aynı mantıkla bu sefer 60 ve üzeri mi diye kontrol ederek devam ediyoruz. Bu şekilde istediğimiz tüm koşulları kapsayacak şekilde istediğimiz kadar iç içe eğer kullanabiliriz.

Algoritmamızda yaptığımız işlemlerin akış şemasını yan taraftaki gibidir.

Bu örnekte dikkat ederseniz kullanıcı not olarak 100 den fazla bir sayı girse bile “5” yazacaktır. Bunu düzeltmek için algoritmamızda ufak bir değişiklik yapalım.

Adım 1 Başla Adım 2 Klavyeden oku, Not Adım 3 Eğer Not > 100 ise;

Ekrana yaz, “Not 100’den büyük olamaz” Değilse; Eğer Not >=85 ise Ekrana yaz, “5” Değilse; Eğer Not >=70 ise; Ekrana yaz, “4” Değilse; Eğer Not>=60 ise; Ekrana yaz, “3” Değilse; Eğer Not>=50 ise; Ekrana yaz, “2” Değilse; Ekrana yaz, “1”

Adım 4 Bitir

Yanlış

Yanlış

Doğru

Bitir

Başla

Not

Not >= 85 “5”

Yanlış

Doğru Not >= 70 “4”

Yanlış

Doğru Not >= 60 “3”

Yanlış

Doğru Not >= 50 “2”

“1”

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-14

Page 15: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Uygulama: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan bilgi nedir?

Adım 1 Başla Adım 2 Şehir = “Antalya” Adım 3 Eğer Şehir == ”Eskişehir” ise;

Ekrana yaz, “ Şehir Eskişehir’dir ” Adım 4 Bitir

Uygulama: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan bilgi nedir?

Adım 1 Başla Adım 2 Maaş = 500 Adım 3 Avans = 300 Adım 4 Eğer Maaş < 500 ise;

Eğer Maaş < 800 ise; Maaş = Maaş + Avans / 2 Değilse; Maaş = Maaş + Avans / 3 Değilse; Ekrana yaz, “Maaşınız :”, Maaş

Adım 5 Bitir

Uygulama: Aşağıdaki algoritmanın sonucunda ekrana yazılacak olan bilgi nedir?

Adım 1 Başla Adım 2 Sayi = 455 Adım 3 Eğer Sayı > 100 ise;

Ekrana yaz, “100 den büyük”

Adım 4 Eğer Sayı > 200 ise; Ekrana yaz, “200 den büyük”

Adım 5 Eğer Sayı > 400 ise; Ekrana yaz, “400 den büyük”

Adım 6 Ekrana yaz, “500 den büyük”

Adım 7 Bitir

Bazı durumlarda birden fazla koşula aynı anda bakıp karar vermemiz gerekebilir. Bunun için aşağıdaki örneği inceleyelim.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-15

Page 16: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Örnek: Bir otopark için girilen saate göre park eden araçların otopark ücretlerini hesaplayan bir programın algoritmasını ve akış şemasını tasarlayalım. Araçların en fazla 24 saat kaldığını varsayın. (Ücretlendirme: 0 - 2 saat 5 TL, 2 - 8 saat 15 TL, 8-24 saat 40 TL)

Adım 1 Başla Adım 2 Klavyeden oku, “Araba kaç saat otopark da kaldı ?”, Saat Adım 3 Eğer Saat >= 0 AND Saat <=2 ise;

Ücret = 5 Değilse; Eğer Saat > 2 AND Saat <= 8 ise; Ücret = 15 Değilse; Ücret = 40

Adım 4 Ekrana yaz, “Toplam ücret”, Ücret, “TL’dir”

Adım 5 Bitir

Tüm programlama dillerinde bu tarz birden fazla karşılaştırmayı aynı anda yapabilmemizi sağlayan operatörler bulunur. Örneğimizde hem Saat >= 2 karşılaştırmasını hem de Saat<=2 karşılaştırmasını aynı anda tek bir karşılaştırma yapıyormuş gibi kullanabiliyoruz. AND (ve) operatörü ile eğer ikisinin sonucu da Doğru ise sonuç Doğru, eğer ikisinden en az birinin sonucu Yanlış ise sonuç Yanlış çıkıyor. AND operatörü haricinde OR (veya) ve NOT (değil) operatörlerini de bu tarz karşılaştırmalar için kullanabiliyoruz.

Örnek: Kullanıcının klavyeden girdiği sayı 3’ e ve 5’ e tam bölünüyorsa ekrana tam bölünüyor yazan bölünmüyor ise bölünmüyor yazan programın algoritmasını tasarlayalım. Adım 1 Başla Adım 2 Klavyeden oku, Sayı Adım 3 Eğer Sayı % 3 == 0 AND Sayı % 5 == 0 ise;

Ekrana yaz, “Bölünüyor” Değilse; Ekrana yaz, “Bölünmüyor”

Adım 4 Bitir

Bir sayının bölümden kalanını bulmak için “%” operatörünü kullanıyoruz ve sonuç sıfır olursa o sayı tam bölünüyor demektir. Bu nedenle Sayı % 3 işleminin sonucu sıfır ise girilen sayı 3 ’e tam bölündüğü anlaşılır. Bu şartın sağlanıp sağlanamadığını Sayı % 3 == 0 karşılaştırması ile kontrol ediyoruz.

Hem Sayı % 3 == 0 hem de Sayı % 5 == 0 karşılaştırmalarının sonucu Doğru ise, sayı hem 3‘e hem de 5‘e tam bölünüyor demek olacağı için ekrana “Bölünüyor” mesajını yazacak. Eğer iki şarttan biri sağlanmıyorsa ekrana “Bölünmüyor” yazacaktır.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-16

Page 17: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Örnek: Kenar uzunlukları girilen bir üçgenin türünü bulan bir programın algoritmasını ve akış şemasını tasarlayınız.

Adım 1 Başla Adım 2 Klavyeden oku, A, B, C Adım 3 Eğer A == B AND A==C AND B==C ise;

Ekrana yaz, “Eşkenar üçgen” Değilse; Eğer A == B OR A==C OR B==C ise; Ekrana yaz, “İkizkenar üçgen” Değilse; Ekrana yaz, “Çeşitkenar üçgen”

Adım 4 Bitir

AND, OR, NOT gibi mantıksal operatörleri kullanarak algoritmamızı daha basit ve daha az adımda yazabiliyoruz.

Bu öreğimizde; A == B AND A==C AND B==C karşılaştırması ile normalde üç tane kullanmak durumunda kaldığımız Eğer karşılaştırmasını tek bir Eğer ile yapabiliyoruz. Aynı şekilde; A == B OR A==C OR B==C karşılaştırması içinde üç tane Eğer yazmamız gerekiyordu. Bu karşılaştırmada kullanılan OR (veya) operatörü sayesinde üç şarttan en az birinin sonucu Doğru ise sonuç Doğru, üçünün de sonucu Yanlış ise sonuç Yanlış çıkıyor.

Uygulama: Katsayıları girilen birinci dereceden denklemin köklerini bulan ve ekranda görüntüleyen programın algoritmasını ve akış şemasını tasarlayınız.

Not: Birinci dereceden denklemler ax + b = 0 şeklinde yazılır ve denklemin kökü x = -b/a şeklinde hesaplanır.

Uygulama: Girilen üç sayıdan en büyüğünü bulan ve ekranda görüntüleyen programın algoritmasını ve akış şemasını tasarlayınız. Uygulama: Hazırlayacağımız programın kullanıcı adı “Yönetici” ve şifresi “4758” olsun. Kullanıcının girdiği kullanıcı adı ve şifreyi kontrol edip yanlış ise ekranda “Programı kullanmaya yetkiniz yok”, doğru ise “Hoş geldiniz” mesajını görüntüleyen programın algoritmasını ve akış şemasını tasarlayınız. Uygulama: Bir markette bir paket çayın fiyatı 10 TL’dir. Müşterinin aldığı paket sayısı 10 ile 49 arasında ise %5, 50 ile 99 arasında ise %10, 100 ve üzerinde ise %15 indirim uygulanmaktadır. Faturaya uygulanacak KDV oranı %8’dir. Müşterinin aldığı paket sayısına göre ödeyeceği ücreti hesaplayan bir programın algoritmasını ve akış şemasını tasarlayınız.

Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-17

Page 18: BB- Memin - Algoritma ve AkıŠŞeması - Devam 4barbarosanadolulisesi.meb.k12.tr/meb_iys_dosyalar/34/27/... · 2017. 12. 13. · Title: Microsoft Word - BB- Memin - Algoritma

Eskişehir/Tepebaşı Mehmetçik Anadolu Lisesi – Bilgisayar Bilimi (Kur1) Ders Notları Sayfa-18

Uygulama: Bir fabrikada asgari ücret ile çalışan işçiler aile durumlarına göre maaş almaktadırlar. Çocuk sayısı 1 ise maaşının %5’i kadar, çocuk sayısı 2 ise %10’u kadar, 3 ve daha fazla ise %15’i kadar aile yardımı almaktadır. Asgari ücret 1.400 TL’dir.

Buna göre girilen çocuk sayısına göre işçinin alacağı maaşı hesaplayan programın algoritmasını ve akış şemasını tasarlayınız. Uygulama: Çalışılan gün ile günlük ücret klavyeden girildiğinde aşağıdaki kurallara göre o kişinin eline geçecek net aylık ücreti hesaplayan algoritmayı ve akış şemasını tasarlayınız.

Aylık brüt gelir = günlük ücret * çalışılan gün sayısı Gelir vergisi = aylık brüt gelir * vergi oranı Net aylık ücret = Aylık brüt gelir – Gelir vergisi

Kurallar:

Çalışılan gün sayısı 31 den fazla olmamalı Gelir vergisi oranı aylık brüt gelirin % 20 si olarak uygulanmalı. Ancak aylık geliri

5000 TL den fazla olanlar için % 25 olarak uygulanmalı