Herkese merhabalar arkadaşlar,
Akış diyagramı dediğimiz -algoritma geliştirmekte kullanılan - diyagramı, özellikle görsel şekilde rahat anlamamıza yardım eder, "Flowgorithm" programı ile bir örnekle yapacağız. Anlamanız açısından biraz basit seviye de tutacağım.
PROGRAMI EDİNME
Flowgorithm isimli uygulamayı ediniyoruz. Web sitesi burada: Flowgorithm - Download
Yükleme yapmadan çalıştırılabilir dosyayı indirdim. Arayüzümüz budur.
Öncelikle diyagramlardaki şekillerden bahsedeceğiz.
Başla - Bitir olan kenarlı oval dediğimiz dikdörtgen ile gösterilir.
İşlemler dikdörtgen ile gösterilir.
Girdi, çıktı ise parelel kenar ile gösterilir.
Baklava dilimi şartları belirtir kısaca.
Örnek olması adına ilk diyagram ile başlayalım.
BASİT DİYAGRAM
Program başlar. Değişken tanımlar. Girdi alır, çıktı verir ve kapanır.
Popüler dillerin çoğu burada bulunur. Yukarıdaki Ruby'ye tıklayıp değiştirebilirsiniz.
Akış diyagramlalarındaki olay aslında görselliğin güzelliği oluyor. Bir programı dümdüz düşünmeden yazmak yani atılgan şekilde yazmak kodu okuyanlar için veyahut ilerlediğimizde bizler için sorun oluşturur. Kodlarda tekrarlamaya düşmek, tıkanmak ve biraz da bilgisayar başında bunalımdan kaçmak gibi.
BÖLENLERİ BULAN PROGRAM YAZMAK
Bir sayının bölenleri sayıyı böldüğünde kalan bırakmayan sayılardır. Matematiksel bir tanım değil, bana ait bir tanım Bir sayının bölenleri adedini bulmak için:
Örneğin on ikinin bölenlerini bulalım.
12 = 1, 2, 3, 4, 5, 6, 12.
Basitti. 5400'ün bölenleri bulalım. Sayısını formülle biraz uğraşacak çekebilirsiniz. 16 bin 492 sayısına bakalım bir de. Ve evet artık elle uğraşmak istemiyoruz.
Sizin için bulan programdan cevaplar:
1 2 3 4 5 6 8 9 10 12 15 18 20 24 25 27 30 36 40 45 50 54 60 72 75 90 100 108 120 135 150 180 200 216 225 270 300 360 450 540 600 675 900 1080 1350 1800 2700 5400.
1 2 4 7 14 19 28 31 38 62 76 124 133 217 266 434 532 589 868 1178 2356 4123 8246 16492
2. sinin böleni daha az gördüğünüz gibi çünkü onu oluşturan sayılardan kaynaklı. 7, 19, 31 gibi asallar içeriyor. Daha kısa ama daha bölenli bir sayı yazmak gerekirse 6270;
1 2 3 5 6 10 11 15 19 22 30 33 38 55 57 66 95 110 114 165 190 209 285 330 418 570 627 1045 1254 2090 3135 6270
Vs.
Şimdi herhangi bir programlama dilinde bunu yazmak dili bilince zor olmaz ama nasıl yazacağız kısmı bizi biraz zorlayacak. Burada önce yolu bulmalıyız. Diyagramı da oluşturacağız.
Bir sayının bölenleri nasıl bulunur diye biraz düşünelim. Bölen sayısını veren formül var ancak çarpanlarına ayırmak gerekiyor. Sayı büyüdükçe bizi uğraştırabilir. Çarpanlara ayırınca da gözden kaçırmadan önce çarpanların kendisini kabul edeceğiz, daha sonra birinci çarpan ile geri kalan çarpanları çarpıp ekler, diğerleri için de bunu yapar, sonra birden fazla kez birbiriyle çarpar... Kendimizi biraz kandırmayalım diyorum. Bunu program da veya defter de uğraşmak istemeyiz. Açıkçası bu sayıları bize getiren formül tarzı bir şey de yok. Bunu da kütüphanesiz yapacağız.
Herhangi bir programlama dili ile önce 1 sayısıyla bölmeye başlayıp, kalan 0 sa bölenlere dahil etmek bana en kolay yol görünüyor. Daha sonra +1 şeklinde devam eder. Kısaca deneme yanılma ama programlama da. Diyagram oluşturmak için şöyle düşünüyorum:
* Programı çalıştır.Akış diyagramı dediğimiz -algoritma geliştirmekte kullanılan - diyagramı, özellikle görsel şekilde rahat anlamamıza yardım eder, "Flowgorithm" programı ile bir örnekle yapacağız. Anlamanız açısından biraz basit seviye de tutacağım.
PROGRAMI EDİNME
Flowgorithm isimli uygulamayı ediniyoruz. Web sitesi burada: Flowgorithm - Download
Yükleme yapmadan çalıştırılabilir dosyayı indirdim. Arayüzümüz budur.
Öncelikle diyagramlardaki şekillerden bahsedeceğiz.
Başla - Bitir olan kenarlı oval dediğimiz dikdörtgen ile gösterilir.
İşlemler dikdörtgen ile gösterilir.
Girdi, çıktı ise parelel kenar ile gösterilir.
Baklava dilimi şartları belirtir kısaca.
Örnek olması adına ilk diyagram ile başlayalım.
BASİT DİYAGRAM
Program başlar. Değişken tanımlar. Girdi alır, çıktı verir ve kapanır.
Popüler dillerin çoğu burada bulunur. Yukarıdaki Ruby'ye tıklayıp değiştirebilirsiniz.
Akış diyagramlalarındaki olay aslında görselliğin güzelliği oluyor. Bir programı dümdüz düşünmeden yazmak yani atılgan şekilde yazmak kodu okuyanlar için veyahut ilerlediğimizde bizler için sorun oluşturur. Kodlarda tekrarlamaya düşmek, tıkanmak ve biraz da bilgisayar başında bunalımdan kaçmak gibi.
BÖLENLERİ BULAN PROGRAM YAZMAK
Bir sayının bölenleri sayıyı böldüğünde kalan bırakmayan sayılardır. Matematiksel bir tanım değil, bana ait bir tanım Bir sayının bölenleri adedini bulmak için:
Örneğin on ikinin bölenlerini bulalım.
12 = 1, 2, 3, 4, 5, 6, 12.
Basitti. 5400'ün bölenleri bulalım. Sayısını formülle biraz uğraşacak çekebilirsiniz. 16 bin 492 sayısına bakalım bir de. Ve evet artık elle uğraşmak istemiyoruz.
Sizin için bulan programdan cevaplar:
1 2 3 4 5 6 8 9 10 12 15 18 20 24 25 27 30 36 40 45 50 54 60 72 75 90 100 108 120 135 150 180 200 216 225 270 300 360 450 540 600 675 900 1080 1350 1800 2700 5400.
1 2 4 7 14 19 28 31 38 62 76 124 133 217 266 434 532 589 868 1178 2356 4123 8246 16492
2. sinin böleni daha az gördüğünüz gibi çünkü onu oluşturan sayılardan kaynaklı. 7, 19, 31 gibi asallar içeriyor. Daha kısa ama daha bölenli bir sayı yazmak gerekirse 6270;
1 2 3 5 6 10 11 15 19 22 30 33 38 55 57 66 95 110 114 165 190 209 285 330 418 570 627 1045 1254 2090 3135 6270
Vs.
Şimdi herhangi bir programlama dilinde bunu yazmak dili bilince zor olmaz ama nasıl yazacağız kısmı bizi biraz zorlayacak. Burada önce yolu bulmalıyız. Diyagramı da oluşturacağız.
Bir sayının bölenleri nasıl bulunur diye biraz düşünelim. Bölen sayısını veren formül var ancak çarpanlarına ayırmak gerekiyor. Sayı büyüdükçe bizi uğraştırabilir. Çarpanlara ayırınca da gözden kaçırmadan önce çarpanların kendisini kabul edeceğiz, daha sonra birinci çarpan ile geri kalan çarpanları çarpıp ekler, diğerleri için de bunu yapar, sonra birden fazla kez birbiriyle çarpar... Kendimizi biraz kandırmayalım diyorum. Bunu program da veya defter de uğraşmak istemeyiz. Açıkçası bu sayıları bize getiren formül tarzı bir şey de yok. Bunu da kütüphanesiz yapacağız.
Herhangi bir programlama dili ile önce 1 sayısıyla bölmeye başlayıp, kalan 0 sa bölenlere dahil etmek bana en kolay yol görünüyor. Daha sonra +1 şeklinde devam eder. Kısaca deneme yanılma ama programlama da. Diyagram oluşturmak için şöyle düşünüyorum:
* Bölenleri bulunacak sayı seç.
* 2'ye böl, kalan 0 sa yaz. 3'e böl, kalan 0 sa yaz. 1 arttırarak devam et.
* 1 arttırarak sayının kendisine ulaşırsak programı kapat.
Bölenleri bulunacak sayıyı dışarıdan alalım ve hadi koda dökelim.
Okumanızda sorun olmayacaktır umuyorum. Şimdi sol taraf diyagramımız, sağ üst python da kod hali, sol alt ise sonuçlarımız.
Diyagram kısmı bizi ilgilendiriyor. En baştan aşağı doğru:
* Değeri sayı olacak "getnum" değişkeni tanımla.
* Değeri sayı olacak "kontrolsay" değişkeni tanımla.
* "kontrolsay" değişkeninin değerini 2 yap. (1 yapmanın alemi yok, her sayıyı bölebildiği için 2 ile başladık."
* Kullanıcıdan sayı al diyoruz. "getnum" 'a atayacak onu.
Döngü görmekteyiz. "do" döngüsü isimli bu döngü C de falanda vardı. Önce içindeki komutu yalnızca 1 kere için çalıştırır daha sonra ise şartını kontrol eder, duruma göre tekrar içindeki komutu çalıştırır.
* "kontrolsay = kontrolsay + 1" ifadesi, soldan sağa doğru okunur. "kontrolsay" değişkenini eşitle; "kontrolsay" değişkenin değeri ve onun bir fazlasına.
* "getnum != kontrolsay" ifadesi döngüyü sağlar. "getnum" eşit değilse "kontrolsay" a ki bu program çalıştığında "True", doğrudur. Eşit olunsa "False" yani yanlış dönecek ve okun "False" yönüne gidiyoruz.
* "tamam." ifadesini ise ben bastırdım.
* Program kapanır.
** Türkçe çevirisinde kullanayım dedim ama sonra aklıma yatmadı.
Aynı programın C hali: GitHub - Ustrif/Bolenler-C: Ortak bolenler.
Örnek bir algoritmayı kafamızda tasarlayıp diyagrama dökmüş olduk. Okları takip ederek görmüş olduğunuz. İç içe döngülerin ve koşulların geçtiği döngülerde gerçekten hayat kurtarıcı olabilir.
Okuduğunuz için teşekkürler.
Görseller: Flowchart.rar dosyasını indir - download
VT: VirusTotal
Son düzenleme: