Algoritma Programlama Blm 3 Ak emalar ile Alogritma
Algoritma & Programlama Bölüm 3. Akış Şemaları ile Alogritma Örnekleri Sayfa: 41 -85, www. abakuskitap. com Dr. Bülent Çobanoğlu
Bölüm 3. Akış Şema Örnekleri Bu bölümde genel olarak klavye/konsol aracığı ile dışarıdan veri girilmesi (veri okuma işlemi) ve bu verilere basit işlemler uygulanarak ekran ve/veya çıkış biriminden çıktı alınması (veri yazma işlemi) şeklinde olan bazı problemlerin çözüm algoritmalarını akış şemaları ile göstereceğiz. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
1. Gündelik Hayattan Algoritma Örnekleri Örnek 3. 2. Bir su ısıtıcısı (Kettle) içerisindeki suyu 100 dereceye kadar ısıtan programın algoritmasını oluşturup, akış şemasını çiziniz. 1. Başla/Start 2. Çalıştır/Aç Isıtıcıyı (ISITICI=ON veya ISITICI=1) 3. Oku, suyun sıcaklığını (Derece); 4. Eğer (Derece<100) ise Isıtıcıyı çalıştırmaya devam et (ISITICI=ON); ve 2. Adıma Git Değilse Kapat Isıtıcıyı ISITICI=OFF); 5. Dur/Stop C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 2. Bir su ısıtıcısı (Kettle) içerisindeki suyu 100 dereceye kadar ısıtan programın algoritmasını oluşturup, akış şemasını çiziniz. (ON=1, OFF=0 anlamındadır) C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 4. Verilen ücret tarifesine göre otoparkta kalan araçlardan alınacak park ücretini hesaplayan programın algoritmasının akış şemasını çiziniz? C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
2. Sayısal Hesaplamalarla ilgili Algoritma Örnekleri Örnek 3. 11. Girilen bir sayının tek mi çift mi olduğunu bulan programın algoritmasını oluşturup, akış şemasını çiziniz. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 9 Verilen bir X değerine göre şekildeki gibi tanımlanan F(x) fonksiyonunu hesaplayan programın algoritmasını oluşturup akış şemasını çiziniz? C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 9 Verilen bir X değerine göre şekildeki gibi tanımlanan F(x) fonksiyonunu hesaplayan programın algoritmasını oluşturup akış şemasını çiziniz? C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
İki Değişkenin İçeriğini Birbirine Aktarma (Yer değiştirme İşlemi) İki değişkenin içeriklerini birbirine aktarma işlemi yer değiştirme olarak isimlendirilir. Bunun için üçüncü bir değişkene (geçici değişken) ihtiyacımız vardır. Bos=Su; Su=Sut; Sut=Bos; C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 14. A, B ve C isimli üç arkadaşın boylarını küçükten büyüğe doğru sıralayan ve sıralı hali ekranda gösteren programın algoritmasını akış şeması ile gösteriniz. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Algoritması: 1. Başla 2. Değişkenlere başlangıç Örnek 3. 15. Bilgisayara değerlerini ata ( Sayac=1; Fakt=1); girilen bir sayının 3. Gir, bir sayı (N) faktöriyelini alan (N!) programın algoritmasını 4. Hesapla, Faktöriyeli (Fakt) oluşturup, akış şemasını {Fakt=Fakt*Sayac} çiziniz. 5. Sayac değerini 1 artır {Sayac=Sayac + 1 veya Sayac++}; 6. Eğer Sayac <=N ise 4. adıma git 7. Yaz, faktöriyel sonucunu C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu {Fakt};
Örnek 3. 15. Bilgisayara girilen bir sayının faktöriyelini alan (N!) programın akış şeması: C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Sorularla Soluklanalım? ? ? Çalışma Sorusu-1: Bir önceki (Örnek 3. 15) faktöriyel alma programını 4!=4*3*2*1; şeklinde hesaplatmak için programda ne gibi değişiklik yapmak gerekir, düşününüz! Çalışma Sorusu-2: Aynı faktöriyel alma programını döngüsel akış şeması ile nasıl gerçekleştiririz? C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Döngüsel Akış Şeması C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 24. Fibonacci dizisinin/serisinin ilk iki elemanın değeri 1’ dir. Üçüncü ve daha sonraki elemanlarının değerleri kendisinden önce gelen iki elemanın toplamı {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233 …} olarak elde edilir. Bu dizinin ilk 13 elemanının değerlerini bulup yazdıran programın algoritmasını akış şeması ile gösteriniz. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 24. Fibonacci dizisi ve Debug işlemi Açıklama: Bu tip sorularda algoritmanızın doğru çalışıp çalışmadığı sınamak için değişken takibi yapmayı ihmal etmeyiniz. Değişken takibi ile başka bir ifade ile programın adım çalıştırılması ile hata takibi işlemi yapılarak programın her aşamasında hangi sonuçları ürettiği görülür. Değişken takibi işlemi, matematikteki sağlama işlemine, programlama dillerinde ise DEBUG işlemine karşılık gelir. DEBUG ile bir programda değişkenlerin aldığı değerler adım izlenerek hata takibi yapılır. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 3. 27. Girilen iki sayının en büyük ortak bölenlerini (OBEB) bulan programın akış şeması aşağıda verilmiştir. A=12 ve B=15 değerlerini aldığında bu iki sayının OBEB’ini değişken takibi yaparak gösteriniz. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Sorularla Soluklanalım? ? ? Çalışma Sorusu-1: OBEB'i Öklid algoritmasına göre hesaplayan programı akış şemaları ile gösteriniz. Öklid algoritması: OBEB(A, B)'nin bulunması için Öklid Algoritması şu şekildedir: Eğer A=0 ise, OBEB(0, B)=B olacağı için OBEB(A, B)=B olur ve bu noktada durabiliriz. Eğer B=0 ise, OBEB(A, 0)=A olacağı için OBEB(A, B)=A olur ve bu noktada durabiliriz. A sayısını bölüm ve kalan formunda yazın (A=B⋅Q+R) OBEB(A, B)=OBEB(B, R) olduğu için, OBEB(B, R)'yi Öklid Algoritmasını kullanarak bulun C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 4. 9. Verilen 10 tabanındaki herhangi bir sayıyı ikilik tabana (ikilik sayı sistemine) çeviren programın algoritmasını (akış şemasını) oluşturunuz. Çözüm. Onluk sistemdeki bir sayıyı ikilik sisteme çevirme işlemini birden fazla yöntemle çözebiliriz. En temel çözüm, girilen sayının ikiye bölümünün kalanını alma (mod alma işlemi) şeklindedir. Bu işleme bölünen sayı sıfır olana kadar devam edilir. Bölümden kalanlar bir dizide tutularak daha sonra bir döngü aracılığı ile tersten yazdırılır. C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
Örnek 4. 9. Verilen 10 tabanındaki herhangi bir sayıyı ikilik tabana (ikilik sayı sistemine hazır çevirme fonksiyonu kullanmadan) çeviren programın algoritmasını (akış şemasını) oluşturunuz. 1. yol: 2. Yol (Tersten yazdırma fonksiyonu ile) C/C++ ve Java Dilleriyle ALOGRİTMA & PROGRAMLAMA Dr. Bülent Çobanoğlu
- Slides: 20