Page 31 - Bilgisayar Bilimi | Kur 1
P. 31
Problemler çözülmeye çalışırken dikkate alınması gereken sınırlılıklar ve koşullar ile uyulması gere-
ken kurallar vardır. Tüm bu veriler dikkate alınmaz ise doğru çözüme ulaşılamaz ya da problem geçici
olarak göz ardı edilmiş olabilir. Bir problemi yazılım geliştirerek çözerken de çeşitli sınırlılıklar vardır:
Kullandığınız programlama dili, çalıştığınız ortam (kişisel bilgisayar, tablet vb.) ve performans (kullan-
dığınız işlemci, hafıza, disk vb.). Bu nedenle programcılar için problem çözme, “bir dizi işlemi, belirtilen
sınırlılıklara uygun biçimde gerçekleştirebilen programın yazılması” anlamına gelir. Programlamaya
yeni başlayanlar işlemleri gerçekleştirip hedefe ulaşma konusunda daha fazla istekli olduklarından ge-
nellikle belirtilen sınırlılıklara uyma konusunda zorluk yaşayabilirler. Bu nedenle böyle programlar, is-
tenilen işlemleri yalnızca “belli şartlarda” (sadece 2 basamaklı sayılar için, tek bir döngü için vb.) yerine
getirebilen programlara dönüşebilir. Bu nedenle bu tür uygulama hatalarından kaçınarak tüm detayları
dikkatli bir şekilde işe koşarak programlama yapmamız son derece önemlidir.
2.1.5. Problem Çözme Süreci
Problem çözme farklı biçimlerde düşünmeyi gerektiren bir eylemdir. Öncelikle klasikleşmiş bazı
klasik bulmacaları ve bu bulmacaların çözümlerini inceleyelim.
2.1.5.1. Tilki, Kaz ve Mısır
Konuşacağımız ilk klasik problem, beraberindeki nesneleri nehrin karşısına taşıması gereken bir çift-
çiyle ilgili bir bulmaca. Bu çiftçinin bir tilkiyi, bir kazı ve bir mısır çuvalını nehrin karşısına geçirmesi
gerekmektedir. Çiftçinin bu işlemi gerçekleştirmek için küçük bir teknesi var ancak bu teknede çiftçi
ile birlikte en fazla bir nesneye daha yer var. Ne yazık ki tilki ve kaz açtır. Bu yüzden tilki kaz ile yalnız
kalamaz çünkü tilki kazı yiyebilir. Aynı şekilde kaz ve mısır torbası yalnız bırakılamaz çünkü kaz mısırı
yiyebilir. Bu koşullarda çiftçi nehrin karşısına tilki, kaz ve mısırı sorunsuz bir şekilde nasıl geçirebilir?
Bu soru Şekil 1.1’de görülmektedir. Bu soruna daha önce hiç rastlamadıysanız, burada durun ve
çözmek için birkaç dakika harcayın. Bu bilmeceyi daha önce duyduysanız ve çözdüyseniz nasıl çözüm
bulduğunuzu hatırlamaya çalışın.
30