top of page

BİLGİSAYAR BİLİMİ KUR 1 - 1. DÖNEM 11. HAFTA

ÜNİTE:


1.2. PROBLEM ÇÖZME VE ALGORİTMALAR


KAZANIMLAR:


1.2.4.1. Verilen bir programı modüllere böler.

1.2.4.2. Farklı modüllerin işlevlerini açıklar.





5. PROGRAMLAMA YAPISI



Bu bölümde;


  •  Yapılandırılmış problemin önemini kavrayacak,


  •  Bağlantı için modül ve fonksiyonların nasıl tasarlanması gerektiğini açıklayabilecek,


  •  Değişken türlerini ve aralarındaki farkı açıklayabilecek,


  •  Parametrelerin nasıl kullanıldığını anlatabilecek,


  •  Dört mantık yapısının (doğrusal, döngüsel, karar ve durumsal) neler olduğunu sayabileceksiniz 



5.1. Programlama Yapısına Giriş 


Bir önceki bölümde anlatılan yaklaşımlar, problem çözümlerinin organize edilmesi için yardımcı olarak kullanılan araçlardı. Bu bölümden itibaren çözümleri bilgisayarın daha iyi anlayıp işleyebilmesi için kullanılan teknikler anlatılacaktır. Diğer bir ifade ile bu teknikler, algoritmayı oluşturan yönergeleri farklı biçimlerde yazmanıza olanak sağlayacaktır.



5.1.1. Göstergeler


Bilgisayarlar; problemleri çözmek, işlerimizi kolaylaştırmak, daha hızlı ve etkili çözümler üretmek için kullanılır. Gerçekten yeterli çözümler üretebilmek için aşağıdaki göstergeleri önemsemek gerekir.


1. Bütünü, her biri anlamlı işlemler içeren parçalara bölünüz, modülleri kullanınız.


2. Farklı satırlar arasında bağlantı kurmak yerine mantıksal yapıları kullanınız. 


a) Doğrusal yapı, işlemleri sıra ile çalıştırır. Aşağıda, klavyeden girilen iki sınav puanının aritmetik ortalamasını hesaplayan yapı görülmektedir:



b) Karar yapısı, iki olasılıktan birini seçmek ve ona göre devam etmek için kullanılır. Aşa- ğıda, klavyeden girilen iki sınav puanının ortalamasını bularak öğrencinin dersten geçip geçmediğini kontrol eden yapı görülmektedir.



c) Döngüsel yapı, bir dizi işlemi tekrarlamak için kullanılır. Aşağıda, 20 öğrencilik bir sını- fın bir dersten aldığı iki not üzerine sınıf ortalamasını hesaplayan yapı görülmektedir.




ç) Durumsal yapı ise belirli bir duruma göre farklı işlemlerin yapılmasına olanak sağlar. Aşağıda, klavyeden girilen sayıya göre haftanın gününü yazan yapı görülmektedir.



  • 3. Tekrarlayan işlemlerin tekrar tekrar yazılmasını önlemek için modüler yapı kullanınız.


  • 4. Okunabilirliği ve anlaşılırlığı artırmak için anlamlı değişken isimleri seçiniz ve çok iyi dokümantasyon hazırlayınız. 





Düşünelim/Deneyelim


1. Klavyeden ismini giren kişiyi “Merhaba ‘İsim’ ” şeklinde selamlayan algoritma ve akış şemasını oluşturunuz.


2. Bir marketteki bir paket çayın fiyatı 10 TL’dir. Müşteri 10 ile 49 arasında paket aldığında %5, 50 - 99 adet arası paket aldığında %10; 100 üzeri paket aldığında %15 indirim uygulanmaktadır. Faturaya uygulanacak KDV %8’dir. Müşterinin aldığı paket sayısına göre ödeyeceği ücreti hesaplayan algoritma ve akış şemasını yazınız.


3. Klavyeden, uzunlukları girilen üç doğru parçasının bir üçgen oluşturup oluşturamayacağını hesaplayan algoritma ve akış şemasını oluşturunuz. (Bir üçgenin iki kenarının uzunluğu toplamı, üçüncü kenardan büyük olmalıdır.)


4. Klavyeden, X karakteri girilene kadar girilen isimlere kaçıncı kişi olduğunu yazan algoritma ve akış şemasını oluşturunuz.


5. Klavyeden, girilen sıcaklık derecesine göre suyun katı/sıvı/gaz hâllerinden hangisinde olduğunu yazan algoritma ve akış şemasını oluşturunuz.


6. Klavyeden, 0 girilene kadar kaç adet negatif; kaç adet pozitif sayı girildiğini hesaplayan algoritma ve akış şemasını oluşturunuz.


7. Klavyeden, girilen sayıya kadar olan sayıların çift olanlarının toplamını hesaplayan ve yazdıran algoritma ve akış şemasını yazınız.


8. Girilen iki değer arasındaki sayıların toplamını bulan ve ekrana yazdıran algoritma ve akış şemasını oluşturunuz.


9. Bir öğrencinin ortalama ve devamsızlık bilgisine göre geçme/kalma durumunu kontrol ediniz ve ekrana yazdıran algoritma akış şemasını oluşturunuz.


10. Aşağıdaki şekilleri, ekrana yazdıran algoritma akış şemasını oluşturunuz.



11. Klavyeden, girilen ay bilgisine göre kuzey yarım kürede hangi mevsimin yaşandığını ekrana yazdıran algoritma akış şemasını oluşturunuz.


12. Klavyeden, bir üçgene ait kenar uzunluğu ve o kenarın yükseklik bilgisinin girişi yapıldıktan sonra ekrana üçgenin alanını yazan programın akış diyagramının doğru oluşabilmesi için şeklin üzerine satır numaralarını yazınız.




13. Aşağıdaki problemde, ortalaması girilen bir öğrencinin dersten başarılı ya da başarısız olduğunu ekrana yazabilmesi için boşlukları doldurunuz.


1. Başla


2. Gir ……………………….


3. Eğer ort>=50 ise yaz ………………………


4. Değilse ……………………………


5. ………………………… 



14. Klavyeden, girilen sıcaklık bilgisine göre aşağıdaki durumların kontrolünün yapılması istenmektedir. Gerekli algoritmanın oluşabilmesi için boşlukları doldurunuz.


• Sıcaklık 0 oC’nin altındaysa “Çok Soğuk”


• Sıcaklık 0 oC – 20 oC arasındaysa “Serin”


• Sıcaklık 20 oC üzerindeyse “Sıcak” olmalı. 




1. …………………..


2. Oku ……………………….


3. Eğer …………………….. Yaz “Çok Soğuk”


4. ……………………………………………… “Serin”


5. Değilse Yaz ………………………….


6. Bitir. 





15. Aşağıdaki akış diyagramında öğrenci sayısı klavyeden girildikten sonra öğrenci yaşları okunarak, sınıf yaş ortalaması bulunup ekrana yazdırılmaktadır. Bu amaçla, aşağıda verilen adımların madde numaralarını, akış diyagramında uygun yerlere yerleştiriniz.


1. ortalama


2. ogrSayisi


3. sayac = sayac + 1


4. ortalama = yasToplam/ogrSayisi


5. yasToplam = yasToplam + ogrYas


6. Başla


7. ogrSayisi > sayac


8. Evet


9. Hayır


10. Bitir


11. ogrYas 






5.1.2. Modüller ve İşlevleri 


Bir yazarın, kitabını yazmaya başlamadan önce konuyu ve bölümleri düşünmesi, bir aşçının menüyü hazırlamaya başlamadan önce yemek türlerini, malzemeleri ve miktarları düşünmesi gibi bir programcı da programı yazmaya başlamadan önce detaylı bir biçimde problemi irdelemeli ve işlemleri gruplandırmalıdır. Ne zaman modüller etkileşim çizelgesinde doğru sıralanmış ise programcı her bir modül için kodu yazmaya başlayabilir. İyi bir programcı algoritmayı her bir modül için test eder, sorunlar varsa hemen çözüm üretir. Büyük bir program yerine küçük parçaları kontrol etmek daha kolaydır ve bu, zamandan kazanç sağlar. Modülleri oluştururken aşağıdaki noktalara dikkat edilmesi önerilir.


1. Her bir modül başlar, işlemleri yapar ve biter. Süreç içerisinde modüller arasında dallanma olmaz.


2. Her bir modülün tek bir işlevi vardır: yazdırma, karekök bulma, büyük harfe çevirme vb.


3. Her modül rahat anlaşılabilecek ve kolayca güncellenebilecek kadar kısa olmalıdır.


4. Modülün uzunluğu işlevine ve yönerge sayısına göre değişebilir.


5. Modüller süreç akışlarını kontrol etmek için oluşturulur. 



Çok sık kullanılan modül türleri şu şekilde sıralanabilir: 


• Kontrol modülü programın genel akışını gösterir.


• Başlama modülü program ilk başladığında yalnız bir kez yapılması gereken işlemleri gerçekleştirir (ilk değerlerin atanması).


• Süreç modülleri bir ya da birden fazla belirli bir işlemi yapmak için kullanılır (hesaplama, veri


okuma, yazdırma vb.).


• Bitiş modülü ise program bitmeden önce yapılacak son işlemleri içerir.



Farklı modüller bir problemin çözümü için bir araya gelebilir. Program yönetimini kolaylaştırmak için bir modül birden fazla modülden de oluşabil




5.1.3. Bağlılık ve Birleşim


Problem çözme sürecindeki en zor adım, çözümü parçalara ayırmaktır. Her bir modülün hangi işlemlerden oluşması gerektiği önemli bir karardır. Modüller hem farklı işlemleri yürütecek kadar birbirinden bağımsız olmalı hem de aynı veriler ile çalışacak kadar birleşik olmalıdır. Birbirine zıt bu iki kavram bağlılık ve birleşim olarak adlandırılır. “Bağlılık” bir modülün diğer modüllerden bağımsız çalışabilme yeteneğidir. Her bir modül, bağımsız olarak tanımlanmış işlem setini çalıştırır ve sonucu gönderir. Ancak modüller çalışırken verileri almaları ve sonucu göndermeleri sürecinde bilgi paylaşır. Bu veri paylaşımı sürecinde “birleşim” yaşanır. Birleşim, modüller arası iletişim oluşmasını sağlar.


“Bağlılık”, bir modül içerisindeki fonksiyonların birbiri ile ne derece ilişkili oldu- ğunun ölçümüdür. Eğer fonksiyonlar birbiri ile yakın ilişki içerisinde ise modülün yüksek bağlılık düzeyi olduğu söylenir. Benzer durumda birleşim düzeyi düşük olacaktır. Yüksek bağlılık ve düşük birleşim genellikle iyi yapılandırılmış bir tasarım demektir. Böyle tasarlanmış bir program daha anlaşılır, güvenilir ve tekrar kullanılabilir olacaktır. “Birleşim” ise modüllerin birbirine bağımlı olma düzeyidir. Düşük düzey birleşim her zaman tercih edilir çünkü bu durum modülün yönetimini ve okunabilirliğini arttırır.


Yüksek bağlılık düzeyi programın daha anlaşılır, güvenilir ve tekrar kullanılabilir olması açısından çok önemlidir. “Birleşim” ise modüllerin birbirine bağımlı olma düzeyidir. Düşük düzey birleşim her zaman tercih edilir çünkü bu durum modülün yönetimini ve okunabilirliğini arttırır.








Comments


bottom of page