C++ Dilinde Bazı Temel Algoritmalar Bazı eşyalar için her eve lazım derler. Az sonra bahsedeceğimiz algoritmalar da her kodcuya lazım cinsten. Sayının tek mi çift mi olduğuna karar veren programdan, çarpım tablosu yapan programa kadar karşımıza çok sık çıkan bazı algoritmalardan bahsedeceğiz. Önce akış şeması ile programın algoritmasını ardından C++ kodunu ve en son olarak programın ekran çıktısını vereceğiz. Tek-Çift Sayı Bulma Girilen bir sayının tek veya çift olduğuna dair karar vermenin en basit yolu sayıyı 2 ye bölmek ve bölümden kalan sayının 0 a eşit olup olmadığına bakmaktır. Yani sayının 2 ye göre modunu aldığımızda sonuç 0 ise sayı çift eğer değilse tektir. Şimdi algoritmayı akış şeması ile gösterelim [crayon-59e4e45eddd03556054290/]
Tam Bölünebilirliği Ölçme Bu algoritmanın amacı kullanıcıdan alınan 2 sayıdan ilk sayının ikinci sayıya tam bölünüp bölünmediğine karar vermektir. Bu algoritmada da mod kavramını kullanacağız. Yani ilk sayı ikinci sayıya tam bölünürse mod=0 olacaktır. [crayon-59e4e45eddd1b537700158/]
Çarpım Tablosu Yazdırma Çarpım tablosunda 1 den 10 a kadar tüm sayıları sırasıyla birbirleri ile çarpıp ekrana yazacağız. Önce x=1 yazılır 1 den 10 a kadar olan y değerleri ile çarpılır. Bu şekilde x tek tek arttırılarak x=10 olana kadar devam eder. Bunun için iç içe for döngüsü kullanacağız.
[crayon-59e4e45eddd26155935751/]
En Büyük Sayı Bulma Kullanıcının girdiği N kadar sayının en büyüğünü bulmak için en büyük sayıyı saklayacağımız enbuyuk isimli değişken bir de sayac tanımlamalıyız ve kullanıcıdan N adet sayı almalıyız. Daha sonra program girilen sayı ile daha önceki en büyük sayıyı karşılaştırır eğer yeni sayı daha büyükse yer değiştirir. Böylece en büyük sayı her zaman enbuyuk değişkeninde saklanmış olur. [crayon-59e4e45eddd2f262255343/]
Asal Sayı Belirleme Asal sayı demek 1 ve kendisinden başka sayıya bölünemeyen sayı demektir. Bir sayının asal olup olmadığını bulmak için sayıyı 1 ve kendisi hariç, kendisinden önceki tüm sayılara bölünüp bölünemeyeceğini kontrol etmeliyiz. Eğer sayı kendisinden önceki bir sayıya tam bölünürse sayımızın asal olmadığını anlarız.
[crayon-59e4e45eddd3d274366038/]
Rastgele Sayı Üretme Sayısal lotoda 1 den 49 a kadar 6 farklı sayı gereklidir. Bu algoritmada da kendi sayısal lotomuz için 1-49 arası birbirinden farklı 6 sayı üreteceğiz. C++ dilinde rastgele sayı üretmek için rand() ve her üretimde farklı sayı elde etmek için srand(time(null) ifadesini kullanacağız. time(null) kullanabilmek için <ctime> kütüphanesini eklememiz gerekiyor. [crayon-59e4e45eddd46430595618/] Üçgen Alanı Hesaplama Üçgenin alanını önce taban ile yüksekliği çarparız sonra sonucu ikiye bölerek buluruz. Yani formülümüz (a*h)/2 dir.
[crayon-59e4e45eddd50256682782/] Daire Alan Hesaplama İşlemleri Dairenin alanı pi sayısını verilen yarıçapın karesi ile çarparak bulunuz yani formülü pi*r*r dir. Eğer dairenin tamamı değilde bir diliminin alanı istenirse. O dilimin a açısına ihtiyaç vardır. Bu sefer alan formülümüz a*pi*r*r/360 olur.
[crayon-59e4e45eddd5c632704313/] Kombinasyon Hesaplama N elemanlı bir kümenin r li kombinasyonu C(n,r)n!/r!(n-r)! formülü ile hesaplanır. Burada bir kaç tane faktöriyel işlemi olduğu için gerektiğinde kullanmak üzere bir faktöriyel fonksiyonu yazmak faydalı olur.
[crayon-59e4e45eddd65027029194/] Fibonacci Sayı Serisini Yazdırma Fibonacci sayıları 0,1,1,2,3 şeklinde başlayarak her eleman önceki iki sayının toplamı olarak devam eder. Fibonacci dizisinin ilk N terimini yazdıran algoritma şu şekildedir:
[crayon-59e4e45eddd6d338576185/]
Girilen Kelimenin Tersten Yazılması Bu algoritmada string veri tipinin bize sunduğu dizi özelliği için dizinin elemanlarını sondan başak yazdıracağız.
[crayon-59e4e45eddd76900884641/] Herkese İyi Kodlamalar Hazırlayan: Ömer KOYUNCU Bu yazı Fahrettin Erdinç in Mühendislik Öğrencileri İçin Temel Kılavuz C / C++ adlı kitabı referans alınarak hazırlanmıştır. Kaynakça: ERDİNÇ Fahrettin, Mühendislik Öğrencileri İçin Temel Kılavuz C / C++, Abaküs Kitap, İstanbul, 2016
Algoritma ve Akış Şemaları Algoritma : Bir sorunu çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı düzenli mantıksal adımlara algoritma denir. Algoritma aslında bir işi optimum düzeye minimize ederek en iyi şekilde çalıştırmayıda amaçlar. Algoritmanın başlangıcı ve bitişi belli olmalıdır. Açık ve anlaşılır olmalıdır. Günlük yaşantımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Örneğin ; Algoritma Örneği 1 : /* Otobüse binme algoritması tasarlayınız. (BURDUR için) */ A1: Başla A2: Evden çıkmak için hazırlan A3: Evden çık A4: Durağa yürü A5: Durakta otobüsü bekle A6: Eğer otobüs durağa geldiyse bin değilse beklemeye devam et A7: Eğer kartında para var ise kartını okut değilse ücreti nakit olarak öde A8: Eğer etrafta boş yer varsa otur değilse ayakta bekle A9: Eğer otobüs durağa yaklaşırsa düğmeye bas değilse bekle A10: Eğer otobüs gideceğin durağa vardıysa in değilse ineceğin yere gitmesini bekle
A11: Otobüsten düğmeye bastığın kapıdan in A12: Bitir Algoritma Örneği 2 : /* iki sayının toplamını yapan algoritmayı tasarlayınız. */ A1: Başla A2: a,b,sonuc Oku A3: sonuc = a + b ; A4: sonuc u yaz A5: Bitir Algoritma Örneği 3 : /*Dışarıdan okunan iki sayıdan büyük olanının tek sayı mı, çift sayı mı olduğunu belirleyen bir işin algoritmasını tasarlayınız*/ A1:Başla A2:a,b Oku A3:Eğer a>b ise A4 git, Değilse A5 ya git A4:Eğer a%2==0 ise cift yaz, Değilse tek yaz A5:Eğer b%2==0 ise cift yaz, Değilse tek yaz A6:Bitir Algoritma Örneği 4 : /* Hesap makinesi algoritmasını tasarlayınız. */ A1: Başla A2: a,b,toplama,cikarma,bolme,carpma Oku
A3: toplama = a + b A4: cikarma = a b A5: carpma = a * b A6: bolme = a / b A7: toplama Yaz A8: cikarma Yaz A9: carpma Yaz A10: bolme Yaz A11: Bitir Algoritma Kriterleri: Etkinlik Anlaşılır, basit, kesin olmalı Sonluluk Başla bitiş noktası olmalı Kesinlik Aynı veri için her yeni çalıştırımda aynı sonucu vermeli Giriş/Çıkış Giriş / Çıkış değerleri olmalı Başarım/Performans Çalışma süresi az başarım ve performansı yüksek olmalı Algoritma 2 şekilde ifade edilir; 1. 2. Metin olarak Pseudo Code (Kaba Kod) olarak Sonuç olarak algoritmayı hayatımızın bir parçası olarak kullanmaktayız. Yaptığımız işler düzenli ve sıralı olarak mantık çerçevesinde yapmaktayız. Algoritmayı da tasarlarken amacınız basit, anlaşılabilir, düzenli, sıralı bir algoritma
yapmaktır. Akış Şeması Akış şemaları algoritmalarda verilen her adımın görsel olarak anlatılması amacıyla kullanılan yöntemlerden birisidir. Başla : Programın nereden başlayacağını belirtir. Dur/Bitir : Programın nerede sonlanacağını gösterir. Giriş Simgeleri : Klavye, kart okuyucu gibi birimler üzerinden program içerisine veri/bilgi aktarmak için kullanılır. Çeşitli giriş simgeleri vardır. Çıkış Simgeleri : Ekranda göstermek, yazıcıdan kağıda çıkış almak gibi işlemlerde kullanılır. İşlem Simgesi : Dikdörtgen şeklindeki simgenin içine yapılacak işlemler yazılır. Karşılaştırma Simgesi : Koşullu ifade simgesidir. Koşula göre farklı işlem yapılacağı zaman kullanılır. Simgenin içine koşul yazılır ve evet ve hayır olmak üzere 2 yöne dallanır. Döngü Simgesi : Belirli bir grup işin birden çok sayıda yinelenmesi gerektiğinde kullanılır. Yapılacak işlem simgenin içine yazılır. Fonksiyon Çağırma : Daha önce yazılmış algoritmaların, o andaki algoritmanın içerisine koyulmadan kullanılması için kullanılır. Dosyayı Saklama Simgeleri : Elde edilen bilgi cd, bellek, harddisk gibi saklama birimlerinde saklanması veya daha önceden saklanmış birimleri okunması için kullanılır. Akış Yönü : Bir işlem bittikten sonra program akışının nereye dallanacağını belirtir.
Bağlantı Simgeleri : Akış şema çizimi yapılırken sayfaya sığmazsa çizimin başka bir yerden devam edilmesi için kullanılır. İlk C dersimizde görüşmek üzere Yazar : Ömer Can Eskicioğlu