Algoritma
Bu maddenin biçim olarak Vikikitap standartlarına ulaşması için elden geçirilmesi gerekmektedir. Düzenleme yapıldıktan sonra bu açıklama silinmelidir. |
Algoritma; belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisidir.
Program yazma süreci
[değiştir]- Problemin farkına varmak,
- Problemi analiz etmek,
- Çözüm yolları düşünmek,
- İyi çözüm yolları seçip algoritma oluşturmak,
- Akış diyagramı çizmek,
- Uygun bir dilde kodlamak,
- Programı test etmek,
- Programı dağıtmak.
- Programı başka programlarla karşılaştırıp farklı çözüm yolları bulmak,
Problem çözme
[değiştir]Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara ayırılmaladır. Descartes tarafından 'discourse on method' isimli kitabında anlatılan problem çözme teknikleri şunlardır:
- Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçının.
- Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün.
- Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyiniz.
- Olaya bakışınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar kusursuz ve eksiksiz olsun. Kolay gelsin
Programın kalitesini belirleyen ölçütler
[değiştir]- Program işini doğru yapmalı
- Mümkün olduğunca hızlı çalışmalı
- Sistem kaynaklarını gereksiz yere harcamamalı
- Program kodu okunabilir ve anlaşılabilir olmalı
- Birbirinden bağımsız modüllerin minimum inter aktivitesinden oluşmalı
- Bakım ve güncellenmesi kolay olmalı
- Hatalar lokal olmalı. (Bir bölümde oluşacak bir hata tüm programı etkilememeli)
- Verilen süre içinde tamamlanmalı
- Gerekli yazılı dokümanlar hazırlanmış olmalı. (Kullanma kılavuzu, yardım dosyaları vs.)
Algoritmanın tanımı - özellIkleri
[değiştir]- Algoritma, herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir. Çözüm için yapılması gereken işlemler hiçbir alternatif yoruma izin vermeksizin sözel olarak ifade edilir. Algoritma hazırlanırken,çözüm için yapılması gerekli işlemler,öncelik sıraları gözönünde bulundurularak ayrıntılı bir biçimde tanımlanmalıdırlar.
- Algoritmalar, matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemlerdir .
- Algoritma verilerin bilgisayara hangi çevre biriminden girileceğinin,problemin nasıl çözüleceğinin,hangi basamaklardan geçirilerek sonuç alınacağının,sonucun nasıl ve nereye yazılacağının sözel olarak ifade edilmesi biçiminde tanımlanabilir.
Önemli Algoritma Türleri
[değiştir]- Sözderastsal sayı üreteci,
- Sıralama Algoritmaları,
- Kütük İşlemleri,
- Grafik Algoritmaları,
- Arama Algoritmaları,
- Birleştirme Algoritmaları,
- Kripto Algoritmaları,
- Dijital Sinyal İşleme Algoritmaları,
- Kombinasyon Algoritmaları.
Algoritmaların sağlaması gereken kriterleri
[değiştir]- Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli,
- Çıktı: En azından bir değer üretilmeli,
- Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli,
- Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli,
- Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.
- NOT: Bir program için 4. özellik geçerli değil. İşletim sistemleri gibi programlar sonsuza dek çalışırlar.
Ek bilgi: Algoritma sözcüğü Ebu Abdullah Muhammed İbn Musa el Harezmi adındaki İranlı âlimden kaynaklanır. Bu âlim 9. yüzyılda cebir alanındaki algoritmik çalışmalarını kitaba dökerek matematiğe çok büyük bir katkı sağlamıştır. "Hisab el-cebir ve el-mukabala (حساب الجبر و المقابلة)" kitabı dünyanın ilk cebir kitabı ve aynı zamanda ilk algoritma koleksiyonunu oluşturur. Latince çevirisi Avrupa'da çok ilgi görür - âlimin ismini telaffuz edemeyen Avrupalılar "algorizm" sözcüğünü "Arap sayıları kullanarak aritmetik problemler çözme kuralları" manasında kullanırlar. Bu sözcük daha sonra "algoritma"ya dönüşür ve genel kapsamda kullanılır,
Günlük örnekler
[değiştir]1- Bir çay demleme algoritması:
[değiştir]- Mutfakta değilsen mutfağa git.
- Çayı kontrol et, çay yoksa
- Markete git çay al
- Çaydanlığa bak dolu değilse su doldur
- Çakmak veya kibritin olup; olmadığını kontrol et
- Ocağı yak.
- Ve çaydanlığı ateşin üstüne koy,
- Suyun kaynamasını bekle.
- Su kaynadıktan sonra,çaydanlıkta kaynayan sudan arzu edilen miktarda demliğe koy
- Çaydanlıktaki suyun üzerine su ekle ve tekrar ateşin üzerine koy
- Demliği çaydanlığın üzerine koy
- Demlikteki çayın oturması için 20 dakika bekle.
- Su kaynadığında ateşi kapat.
- Çay bardağını al çayını doldur.
- Çayına istediğin kadar şeker at ve karıştır.
- Geldiğin odaya geri dön
- Ve çayı yudumla…
2- Bir futbol maçını canlı olarak izlemek istiyoruz. Burada hedef maçı baştan sona canlı olarak izlemek ve keyif almaktır. Bu işe yönelik işlemler şunlar olabilir:
[değiştir]- Evden, stadın bulunduğu bölgeye ulaşmak,
- Stada girip, numaralı koltuğa ulaşmak,
- Maçı izlemek,
- Stattan çıkmak,
- Eve ulaşmak
Bu örnekte bazı işlemlerin sırası değişemez durumdayken bazılarının sırası değişebilmektedir. Örneğin "evden, stadın bulunduğu bölgeye ulaşmak," maddesi ile "stada girip, numaralı koltuğa ulaşmak," maddesi asla yer değiştiremez, zira stadın bulunduğu bölgeye ulaşmadan stada giremeyiz. Oysa "bilet almak," maddesi ile "evden, stadın bulunduğu bölgeye ulaşmak," maddesinin sıraları değişebilir, zira bileti önceden almak yerine stadın bulunduğu yerdeki gişelerden de alabiliriz.
3- Yataktan kalkıp,işe gidene kadar yapılacak işlemleri anlatacak bir algoritmayı inceleyelim:
[değiştir]- Yataktan kalk
- Pijamalarını çıkar
- Banyoya git
- Duş al
- Kurulan
- Giyin
- Mutfağa git
- Kahvaltı yap
- Lavoboya git
- Dişlerini fırçala
- İşe doğru yola çık
Şimdi de aynı işlemlerin farklı bir sırada uygulanacağını düşünelim.
- Yataktan kalk
- Pijamalarını çıkar
- Giyin
- Duş al
- Kahvaltı yap
- İşe doğru yola çık
Bu algoritma uygulanırsa işe ıslak elbiselerle gidilir. Bir programda, yapılacak işlemlerin sırasını belirlemeye program kontrolü denir.
4- Bu örneğimiz; bilgisayarı kullanacak kişilerin tuş takımı ile yazacakları üç sayının toplamını bulup ekrana yazdıran işin işlemlerini yazdırsın.
[değiştir]Bu işe yönelik işlemler şunlar olabilir:
- başla, (Algoritma başlangıcını ifade eder)
- A sayısını al, (Bilgisayara, kullanıcıdan sayı bilgisi istediğini belirtmesi ve A'ya aktarması isteniyor)
- B sayısını al,
- C sayısını al,
- D = A + B + C
- yaz D, (toplam sonucunu barındıran D değerini ekrana yazması isteniyor)
- dur (Algoritma sonunu ifade eder)
Bir önceki örneğimizde her sayı için bir değişken (bilgisayarın işlemleri yapması sırasında kullandığı hafıza bölgesini simgeleyen harfler) kullanıldı ve toplam sonucu da D isimli diğer bir değişkene aktarıldı. Oysa bilgisayar sayı bilgisini aldıktan sonra toplam değeri tutacağı D değişkenine aktarabilir ve aynı değişken ile ikinci ve üçüncü sayı değerlerini de isteyebilirdi. Örneğin; değişkenleri birer su kovasına ve bilgileri de kovalara doldurulan suya benzetirsek, D kovasına toplanacak suları A kovası ile kullanıcıdan isteyebilir ve her aldığımız suyu (bilgiyi) D kovasında biriktirebiliriz.
Şimdi aynı örneği iki değişkenle yapma yöntemine bakalım.
- başla,
- A sayısını al,
- D = D + A (D değişkenine D nin önceki değeri ve A toplanır, yani D değerine A değeri eklenir)
- A sayısını al,
- D = D + A
- A sayısını al,
- D = D + A
- yaz D,
- dur
Bu örnek yine bir öncekinde olduğu gibi aynı sonuca ulaşır ancak dört yerine iki tane değişken kullanılmıştır. Az sayıda değişken kullanımı bilgisayar belleğinin de verimli kullanımı anlamına gelmektedir zira çok değişken çok sayıda bellek bölgesini işgal etmek demektir. Eğer toplanması gereken sayı değeri çok daha fazla olsaydı 2. ve 3. adımdaki işlemleri o miktarda çoğaltmak gerekirdi. Bu durumda satır sayısı çok artacak, kontrol etmek ve düzenlemek güç belki de olanaksız hale gelecektir. Bu tür durumlarda aynı işlem çok sayıda tekrar ediyorsa "döngü" dediğimiz bir yöntemle bu sorunu aşabiliriz.
Döngü: Tekrar eden işlemleri belirli kurallar ve kontroller çerçevesinde otomatik olarak yaptıran programlama mantığıdır. Döngü işleminde karar verme noktası vardır. Bu noktada bir mantıksal karşılaştırma yapılarak döngünün devam edip etmeyeceği kararı verilir.
Yukarıda verilen toplama örneğini üçüncü bir yöntemle, döngü kullanarak yapalım.
- başla,
- K = 0 (K kontrol değişkenidir ve döngünün tekrar sayısını hesaplamak için kullanılır)
- A sayısını al,
- D = D + A
- K = K + 1 (Her sayı alma ve toplama işlemini sayar, yani değerini bir artırır)
- K < 3 ise git 3 (K değeri 3 ten az ise üzere 3. satıra yönlendirir.)
- yaz D,
- dur
Bu örneğimizdeki kontrol değişkeninin değerini test ettiğimiz 6. satır döngü tekrar sayısını belirleyen satırdır. Burada K < 40 şeklinde bir koşul belirlemiş olsaydık döngü tekrar sayımız 39 olacaktı.
Sahte kodlar (Pseudocode)
[değiştir]Sahte Kodlar, bir programcının algoritma yazmada kullandığı yapay ve mantıksal dildir. Her gün konuştuğumuz dile oldukça yakındır. Bu kodlar programcıya, program hakkında düşünme fırsatını verir. Sahte kodlar sadece işlem ifadelerini içerir. İşlem ifadeleri, sahte kodlar C’ye çevrildiğinde, C’de çalıştırılabilecek ifadelerdir. Bildirimler, çalıştırılabilir ifadeler değildir. Bunlar, derleyiciye gönderilen mesajlardır. Örneğin;
- int i;
bildirimi, derleyiciye i değişkeninin tipini bildirir ve derleyiciden, hafızada bu değişken için yer almasını ister. Ancak bu bildirim, program çalıştırıldığında giriş, çıkış ya da hesaplama gibi bir işleme sebep olmaz.
Akış şemaları (diyagramları) / Flowchart
[değiştir]Algoritmanın görsel olarak simge ya da sembollerle ifade edilmiş şeklidir. Akış şemalarının algoritmadan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin ve yönünün oklar ile gösterilmesidir.
Programın saklanacak esas belgeleri olan akış şemalarının hazırlanmasına, sorun çözümlenmesi sürecinin daha kolay anlaşılır biçime getirilmesi, iş akışının kontrol edilmesi ve programın kodlanmasının kolaylaştırılması gibi nedenlerle başvurulur. Uygulamada çoğunlukla, yazılacak programlar için önce programın ana adımlarını (bölümlerini) gösteren genel bir bakış akış şeması hazırlanır. Daha sonra her adım için ayrıntılı akış şemalarının çizimi yapılır.
- Adım 1- Başla
- Adım 2- Birinci sayıyı oku
- Adım 3- İkinci sayıyı oku
- Adım 4- İki sayıyı tut
- Adım 5- Son
Algoritma hazırlanırken, çözüm için yapılması gerekli işlemler, öncelik sıraları gözönünde bulundurularak ayrıntılı bir biçimde tanımlanmalıdırlar. Yanda algoritma hazırlanmasına ilişkin bir örnek yer almaktadır. Verilen iki sayının toplamının bulunmasının algoritması yandaki gibi yazılır. Algoritmaya dikkat edilirse işlemlerin sıralanmasında, işlem önceliklerinin göz önünde bulundurulduğu görülür. Ayrıca algoritma yazımı sorun çözümünün başladığını gösteren "BAŞLA" ifadesi ile başlamakta ve işlemlerin bittiğini belirten "DUR" ifadesi ile sona ermektedir.
Akış şemalarının hazırlanmasında aşağıda yer alan simgeler kullanılır.
Başla/Dur: Programın başladığı ve bittiği konumu gösterir. Her programda başla ve dur şemaları mutlaka olmalıdır.
Giriş/Okuma: Klavye aracılığı ile giriş ya da okuma yapılacağını gösterir.
Çıkış: Yazıcı(printer) aracılığı ile çıkış yapılacağını gösterir.
Giriş: Kart okuyucu aracılığıyla giriş yapılacağını gösterir.
Girdi/Çıktı: Çevre birimleri (ekran,yazıcı,çizici,okuyucu,...) ile yapılan bilgi alışverişini simgeler. Bu türde işlemlerde kullanılır ve işlen şekil içerisine yazılır.
İşlem/Atama: Değişkenlere değer atamaları ve matematiksel veya dizgisel işlemlerin yapıldığı aşamalarda kullanılır. İşlem veya işlemler bu şekil içerisine öz olarak yazılır.
Karşılaştırma ve karar: Karşılaştırma işlemi ve sonuçta varılan karar durumuna göre akış yönünü belirleyen işlemlerde kullanılır. Kıyaslama ifadesi şekil içine yazılır, karar E (evet) veya H (hayır) simgesi ile belirtilen bir uçtan çıkan akış ile başka bir düğüme gider.
Disk : Diskten okuma ya da diskete yazmayı gösterir.
Disket: Disketten okuma ya da diskete yazmayı gösterir.
Teyp kütüğünü gösterir.
Döngü: Birden çok tekrar gerektiren durumlarda kullanılan döngü kurgusunu simgeler. Döngü tamamlanmamışsa gidilecek düğüme ulaşan akış çıkışı vardır.
Akış diyagramında iki nokta arası ilişkiyi gösterir. Döngü sonunu göstermek için ya da diyagramın çizilemediği durumlarda kulllanılır. Burada i herhangi bir sembol olabilir.
Akış yönü: Şemada şekiller arasındaki akışı gösterirler. Ok yönü akış yönünü gösterir.
Bağlantı: Bir sayfaya sığmayan şemalarda veya aynı sayfa içinde karmaşık akışları engellemek için akış noktalarını bağlayan şekildir. Şekil içerisine harf veya simgeler yazılarak aynı iki harfin birbirine bağlı olduğu ifade edilir.
Alt süreç: Bir işin tamamlanması için alt süreçler ve uygulamalar varsa bu süreçleri simgeler. Sürecin kendisi değil ancak tanımı şekil içine yazılır.
Akış şemaları içerik ve biçimlerine göre genel olarak üç grupta sınıflandırılabilirler:
- Doğrusal
- Mantıksal
- Yinelemeli
1) DOĞRUSAL AKIŞ ŞEMALARI
İş akışları, giriş, hesaplama, çıkış biçiminde olan akış şemaları bu grup kapsamına girer.
Akış Şeması
Örnek- 1: İki sayının çarpımının bulunmasıyla ilgili algoritma ve akış şeması:
Değişkenler
A: Birinci sayıyı, B: İkinci sayıyı, C: İki sayının çarpımını(A*B) göstersin.
Algoritma
Adım 1-Başla Adım 2-A'yı oku Adım 3-B'yi oku Adım 4-C=A*B yi hesapla Adım 5-C'yi yaz Adım 6-Dur
Algoritma adımlarında kullanılması gereken semboller yukarıdaki şekilde görülmektedir. Örneğin "DUR" ve "BAŞLA" işlemleri için aynı sembol kullanılmaktadır.Adım 2 ve 3 için kullanılan sembol, bilgisayara değerlerin dışarıdan girildiğini gösterir. Oklar ise işin akış yönünü gösterir. Adım 4'te kullanılan sembol C=A*B gibi aritmetik işlemler için kullanılır.
Örnek- 2: İki sayının farkını ve bölümünü bulup yazıcı ile yazan algoritma ve akış şeması: Akış Şeması
Değişkenler
A: Birinci sayı B: İkinci sayı D: İki sayının farkı (A-B) E: İki sayının bölümü (A-B)
Algoritma
Adım 1-Başla Adım 2-A'yı oku Adım 3-B'yi oku Adım 4-D=A-B Adım 5-E=A/B Adım 6-D'yi yaz Adım 7-E'yi yaz Adım 8-Dur
Örnek- 3: İki sayının toplamlarının karesini ve küpününü hesaplayıp yazan akış şeması:
Değişkenler
BIRSA: Birinci sayıyı, IKISA: İkinci sayıyı, TO: Toplamı, TOKA: Toplamın karesini, TO3: Toplamın küpünü gösterir.
Akış Şeması
Algoritma
Adım 1-Başla Adım 2-BIRSA ve IKISA'yı oku Adım 3-TO=BIRSA+IKISA
TOKA=TO^2 TO3 =TO^3
Adım 4-TOKA, TO3'ü yaz Adım 5-DUR
Örnek- 4: Terminalden okunan bir sayının 10 fazla ve 10 eksiğini bulup yazan programın algoritma ve akış şeması:
Değişkenler
SAYI=Okunacak sayı F10=Sayının 10 fazlası E10=Sayının 10 eksiğini göstersin. Akış Şeması
Algoritma
Adım 1-Başla Adım 2-Terminalden SAYI oku Adım 3-F10=SAYI+10 Adım 4-E10=SAYI-10 Adım 5-DUR
2) MANTIKSAL AKIŞ ŞEMALARI
Geniş ölçüde mantıksal kararları içeren akış şemalarıdır. Hesap düzenleri genellikle basittir.
Örnek- 5: Klavyeden girilen bir sayının pozitif, negatif veya sıfıra eşit olma durumunu hesaplayıp yazdıran algoritma ve akış şeması:
Algoritma
(S : Sayı) A1 : Başla A2 : Oku S A3 : Eğer S > 0 ise “Pozitif” yaz, A4 : Eğer S < 0 ise “Negatif” yaz, A5 : Eğer S = 0 ise “Sıfıra eşit” yaz,
A6 : Dur
Akış Şeması
Örnek- 6: A ve B gibi iki sayıdan büyüğünü printerle yazdıran algoritma ve akış şeması:
Algoritma
Adım 1-Başla Adım 2-A,B'yi oku Adım 3-A=B ise Adım 7'ye git Adım 4-A>B ise Adım 6'ya git Adım 5-B'yi yaz Adım 8'e git Adım 6-A'yı yaz Adım 8'e git Adım 7-"A ve B eşit"mesajını yaz Adım 8-DUR Örnek- 7: 100 kişilik bir sınıfta 18-22 arası her yaş grubunda kaç öğrencinin bulunduğunu belirleyip yazan programın akış çizelgesi:
Değişkenler
OSA: Öğrenci sayısını, I18: 18 yaşında olan öğrencilerin sayısını I19: 19 yaşında olan öğrencilerin sayısını I20: 20 yaşında olan öğrencilerin sayısını I21: 21 yaşında olan öğrencilerin sayısını I22: 22 yaşında olan öğrencilerin sayısını IYOS: İşlem yapılan öğrenci sayıaını göstersin. Akış Şeması
Algoritma
Adım 1-Başla Adım 2-I18=0 I19=0 I20=0 I21=0 I22=0 IYOS=0 Adım 3-OSA oku Adım 4-OSA=18 ise I18'i arttır, Adım 9'a git Adım 5-OSA=19 ise I19'u arttır, Adım 9'a git Adım 6-OSA=20 ise I20'yi arttır,Adım 9'a git Adım 7-OSA=21 ise I21'i arttır,ADım 9'a git Adım 8-OSA=22 ise I22'Yİ arttır,Adım 9'a git Adım 9-IYOS<100 ise Adım 3'e git Adım 10-I18,I19,I20,I21,I22,yaz Adım 11-DUR
3) YİNELİ (İTERATİF, ÇEVRİMLİ, DÖNGÜLÜ) AKIŞ ŞEMALARI
Sorunun çözümü için, çözümde yer alan herhangi bir adım ya da aşamanın birden fazla kullanıldığı akış şemalarına denir. İş akışları genel olarak giriş ya da başlangıç değeri verme, hesaplama, kontrol biçiminde olmaktadır.
Örnek- 8: Klavyeden girilen bir yazıyı 5 kez yazdıran algoritma ve akış şeması:
Algoritma
( Y : Yazı, S : Sayaç ) A1 : Başla A2 : Oku Y A3 : Yaz Y A4 : S = S + 1 A5 : Eğer S < 5 ise A3 e git
A6 : Dur
Değişkenler
ONOT:Öğrencinin notunu, INOT:Notların toplamını, NORT:Notların ortalamasını ISAYI:Öğrenci sayısını göstersin
Algoritma
Adım 1-Başla Adım 2-INOT=0 Adım 3-ISAYI=0 Adım 4-ONOT oku Adım 5-INOT=INOT+ONOT Adım 6-ISAYI=ISAYI+1 Adım 7-ISAYI<3ise Adım 4'e git Adım 8-NORT=INOT/3 Adım 9-NORT YAZ Adım 10-DUR Örnek- 9: 3 öğrencinin bir sınavdan aldıkları notların ortalamasını bulan ve yazan bir programın algoritma ve akış şeması:
Akış Şeması
Görüldüğü gibi, Adım 2 ve 3'te INOT ve ISAYI ismi ile iki değişken için bellekte yer ayrılmış, ayrılan yerlerede ilk değer olarak sıfır atanmıştır. Adım 4'te herhangi bir öğrencinin sınavdan almış olduğu notun değeri okutulmaktadır. Adım 5'te notların toplamının bulunması işlemi yer almaktadır. İşlemde ONOT, INOT ile toplanmakta ve bulunan toplamda INOT'a aktarılmaktadır. Adım 6'da öğrenci sayısını gösteren ISAYI değişkeninin değeri, "bir öğrenci için işlem yapıldı" anlamında 1 arttırılmaktadır. Adım 7'de ISAYI'nın değeri 3 (toplam öğrenci sayısı) ile karşılaştırılmaktadır. Eğer sayı<3 ise Adım 4'e dönülmektedir. Eğer işlem 3 öğrenci içinde yapılmışsa yani ISAYI=3 ise ya da ISAYI>3 ise ortalamanın hesaplandığı Adım 8'e geçilmektedir. Adım 9 da, bulunan ortalamanın yazılması ile ilgilidir.
Örnek- 10: N sayısını ekrandan okutarak faktöriyelini hesaplayan ve yazan akış şeması:
Değişkenler NFAK=N faktöriyel (N!) değerini, ISAYI=1'den N'e kadar sayıları göstersin, Akış Şeması
Algoritma Adım 1-Başla Adım 2-N'i ekrandan oku Adım 3-NFAK=1 Adım 4-ISAYI=1 Adım 5-ISAYI=ISAYI+1 Adım 6-NFAK=NFAK*ISAYI Adım 7-Eğer ISAYI Adım 8-NFAK yaz Adım 9-Dur
KARMA ÖRNEKLER
Örnek- 11: Klavyeden girilen, bir öğrencinin numarasını, ismini ve 3 vize sınavından aldığı notları okuyan, bu notların aritmetik ortalamasını bulan, eğer ortalaması 50'ye eşit veya 50'den büyükse yazıcıya numara, isim, notlar ve vize notlarının ortalamasını, küçükse numara, isim ve "tekrar" mesajı yazan programın algoritma ve akış şeması:
Değişkenler
INO: öğrencinin numarasını, AD: öğrencinin ismini, VIZE1: 1.vize sınavını, VIZE2: 2.vize sınavını, VIZE3: 3.vize sınavını, VIZORT: üç vize sınavının aritmetik ortalamasını, VIZTO: üç vizenin toplamını göstersin. Akış Şeması
Algoritma
Adım 1-Başla Adım 2-INO,AD,VIZE1,VIZE2,VIZE3,oku Adım 3-VIZTO=(VIZE1+VIZE2+VIZE3)
ve VIZORT=VIZTO/3 bul.
Adım 4-Eğer VIZORT>=50
ise Adım 6'ya git.
Adım 5-INO,AD ve "TEKRAR" yaz
ve Adım 7'ye git.
Adım 6-INO, AD, VIZE1, VIZE2, VIZE3, VIZORT yaz Adım 7-DUR
Akış Şeması
Örnek- 12: Bir okulda bulunan 10 sınıftaki otuzar öğrencinin herbirinin on ikişer dersten aldıkları notların ortalamasını bulan ve öğrenci ismi ile not ortalamasını yazan programın,algoritması ve akış şeması:
Değişkenler
ISS: Sınıf sayacı, IOS: Öğrenci sayacı, DN: Ders notu, DNS: Ders notu sayacı, DNT: Ders notlarının toplamı, DNO: Ders notlarının ortalaması, OGAD: Öğrencinin adı
Algoritma
Adım 1-Başla Adım 2-SS=0 Adım 3-IOS=0 Adım 4-DNS=DNT=0 Adım 5-OGAD oku Adım 6-DN oku Adım 7-DNS=DNS+1(ders notu sayacı 1 artır.) Adım 8-DNT=DNT+DN(notları topla) Adım 9-Eğer DNS<12 ise adım 6'ya git Adım 10-DNO=DNT/12(ortalamayı hesapla) Adım 11-OGAD,DNO yaz Adım 12-IOS=IOS+1(öğrenci sayacını bir artır) Adım 13-Eğer IOS<30 ise adım 4'e git Adım 14-ISS=ISS+1(sınıf sayacını bir artır) Adım 15-Eğer ISS<10 ise adım 3'e git. Adım 16-Dur
Örnek- 13: 300 elemanlı bir veri grubunda bulunan pozitif, sıfır ve negatif değerlerin sayısını bulup yazan programın algoritması ve akış şeması:
Değişkenler
SS: Okunan sayı adedi PSS: pozitif sayı adedi NSS: Negatif sayı adedi SSS: Sıfır sayı adedi Akış Şeması
Algoritma
Adım 1-Başla Adım 2-SS=PSS=NSS=SSS=0 Adım 3-Sayı oku Adım 4-SS=SS+1 Adım 5-Eğer SS>300 ise dur Adım 6-Eğer sayı<0 ise adım 9'a git Adım 7-Eğer sayı=0 ise adım 10'a git Adım 8-PSS=PSS+1 hesapla, adım 3'e git Adım 9-NSS=NSS+1 hesapla, adım 3'e git Adım 10-SSS=SSS+1 hesapla, adım 3'e git
Örnek- 14: Bir sınıfta bulunan belirsiz sayıdaki öğrencilerin numarasını, adını ve soyadını yazan programın algoritması ve akış şeması: Akış Şeması
Değişkenler JNO: Öğrencinin numarası AD: Öğrencinin adı SAD: Öğrencinin soyadı Algoritma Adım 1-Başla Adım 2-Eğer okuma bittiyse Adım 6'ya git Adım 3-JNO, AD, SAD oku Adım 4-JNO, AD, SAD yaz Adım 5-Adım 2'ye git Adım 6-Dur
Örnek- 15: Selection Sort (seçme sıralama) sıralamanın algoritma, akış şeması:
Algoritma Akış Şeması
1. Başla 2. Oku n, a[i] 3. i = 1 den n-1'e döngü 4. min = 1 5. j = i+1 den n'e döngü 6. eğera[ j] < a[min] ise min = j 7. t = a[min] 8. a[min] = a[i] 9. a[i] = t 10. Döngü sonu (j) 11. Döngü sonu (i) 12. k = 1 den n'e döngü 13. Yaz a[k] 14. Son
E
H
Örnek- 16: Quick Sort (hızlı sıralama) sıralamanın algoritma, akış şeması :
Algoritma 1. Başla 2. Oku dizi, A 3. Dizinin başlangıç ve bitiş değerlerini sayaç değişkenlerine, dizinin ortanca elemanının değerini orta değişkenine ata, 4. (A[K] < Orta) ve (K<Sağ) iken K değişkenini bir artır, (Dizinin ortanca elemanından küçük ve dizinin ortanca elemanından daha solda olan elemanı sağa kaydır) 5. (Orta < A[J]) ve (J>Sol) iken J değişkenini bir azalt (… elemanı sola kaydır) 6. K'nın değeri J'ye eşit ya da küçükse A[K] ile A[J] yer değiştir. 7. (Sol < J) ise sıralamayı tekrarla 8. (K < Sağ) ise sıralamayı tekrarla 9. Sıralanmış diziyi yaz 10. Bitiş
AKIŞ ŞEMASI
Örnek- 17: f(x) fonksiyonu x'in çeşitli değerlerine göre aşğıdaki şekilde değişmektedir. x değeri sıfır ile 5 arasında 0.5 aralıkla arttığına göre her bir x değeri için f(x) fonksiyonunu hesaplayan ve x ile f(x) değerlerini yazan programın akış şeması:
Akış Şeması
ÖRNEK- 18: Programın C dili ile yazılıp çalışır hâle getirilmesi sürecindeki algoritma:
1. Programı bilgisayara gir 2. Kaynak dosya olarak kaydet 3. Kaynak dosyayı derle (compile)
4. Derleme sonucunda hata var ise 5. 1 Hataları düzelt 6. 2 3. Adıma git
7. Oluşan amaç dosyasına diğer dosyaları bağla (link) 8. Bağlama sonucunda hata var ise 9. 1. Hataları düzelt 10. 2. Hatalar kaynak dosya ile ilgili ise 2. adıma aksi halde 5. adıma git
11. Programımız çalıştırılmaya hazır