Kazanımlar
2.1. Çözümü istenen problemi kavrar
2.2. Çözüm için gereksinimlerini belirler.
2. ÜNİTE: ALGORİTMA İLE PROBLEM ÇÖZME VE AKIŞ DİYAGRAMI
Ünite Açıklaması Akış diyagramları, bir sürecin işlem adımlarını sıralı bir şekilde özetlemek için semboller kullanan görsel şemalardır. Akış diyagramları programcıların en verimli kodlamayı geliştirmelerine ve programcıların potansiyel sorunlu alanın nerede olduğunu anlamalarına yardımcı olur.
Bu ünitede sırasıyla; programlamanın önemi, programlama dillerinin gelişimi, algoritma kavramı, çözümü istenen bir problemin kavranması, gereksinimleri ve çözümü için gerekli olan en doğru algoritmanın yazımı, akış diyagramının nerelerde kullanıldığı, akış diyagramı şekilleri ve elemanlarının listesi, var olan akış diyagramından problemin kavranması ve bir problemin akış diyagramının tasarlanması üzerinde durulur.
2.1. Problem Çözme Kavramları ve Yaklaşımlar
Bu ders ile birlikte bilgisayarın çalışma mantığını anlamaya çalışacağız. Öncelikle hayatımızda karşımıza çıkan problemler ve bunların çözümlerini inceleyeceğiz. Çünkü bilgisayar programlaması tıpkı günlük hayattaki problemlere bulduğumuz çözümlere benzer.
Peki problem nedir?
Problem Nedir?
Problem; günlük hayatımızda karşılaştığımız, çözüm aranması gereken ve çözümü için bilgi, mantık, deneyim ya da dikkat isteyen durumları ifade eder.
Programlama ile Problem Çözmenin Ortak Yönü Nedir?
Programlama ile Problem Çözmenin Ortak Yönü Nedir?
Bilgisayarlar ve diğer bilişim araçlarının çalışma mantığında kodlama vardır. Kodlama diğer adıyla programlama, kelime anlamıyla belirli şartlara, düzene, problemlerin çözümüne göre yapılması gereken işlemlerin bütünü anlamına gelir. Bu da bizi problem çözme metotlarını bilmeye yaklaştırır.
Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?
Bu düşünme şekli matematiğin, mühendisliğin ve doğa bilimlerinin bazı özelliklerini birleştirmektedir. Bilgisayar bilimcileri genel olarak matematiksel sembolleri, işlemleri ve formülleri kullanır, mühendisler gibi tasarım yaparak farklı sistemler oluşturur ve bilim insanları gibi deney yaparak teknoloji desteği ile çözüm üretir.
Bilgisayar Bilimcileri ve Problem Çözme Becerileri
Bir bilgisayar bilimcisi için en önemli beceri problem çözme becerisidir. Problem çözme; problemleri formüle edebilme, farklı ve yaratıcı çözüm yolları önerebilme, çözümü kesin ve doğru biçimde ifade edebilme becerisidir. Programlamayı öğrenme sürecinde yalnızca problem çözme becerisi yeterli değildir çünkü programlama aynı zamanda bir düşünme biçimidir.
3.1. Problem Çözme Teknikleri
İncelediğimiz problemleri çözerken çözüm sürecine destek olan bazı yaklaşımları kullandığımızı fark etmişsinizdir. Programlama sürecinde de problemin çözümüne yönelik yol ve yaklaşımları belirlemek gerekir ama öncelikle genel kural ve teknikleri bilmek yararlıdır.
Bazı genel kurallar neredeyse tüm problemler için kullanılabilir. Bu nedenle, bu kuralları içselleştirir ve düşünme sürecinizin bir parçası hâline getirebilirseniz herhangi bir problemi çözmeye çalışırken mutlaka bir fikriniz olur.
3.1.1. Her Zaman Bir Plan
Belirsiz bir durumu yaşamak yerine her zaman bir planınız olmalıdır. Bu, en önemli kuraldır. Belki oluşturduğunuz çözüm planı ilk denemelerde sonuç vermeyecek ama her seferinde sizi çözüme biraz daha yaklaştıracak ipuçları elde etmenizi sağlayacaktır.
Denediğiniz yaklaşım ne olursa olsun (doğru ya da yanlış), fikir üretmemekten ve deneme yapmamaktan her zaman daha iyidir. Planlama yapmak aynı zamanda hedef belirlemek ve bu hedefe ulaşmak anlamına gelir.
Planınız olmazsa tek bir hedefiniz olur; o da problemi çözmektir. Bu durumda problemi çözene kadar herhangi bir başarı kaydetmiş olmazsınız. Dahası sadece nihai hedefe ulaşmaya çalışmak, her başarısızlıkta moralin bozulmasına neden olabilir. Ama küçük hedeflerden bile oluşan bir plan yaparsanız çözüme yönelik adımlar attığınızı ve zamanı etkili biçimde kullandığınızı göreceksiniz. Her bir adımda kendinize güveniniz artacak ve çözüme bir adım daha yaklaşmış olacaksınız.
3.1.2. Problemi Tekrar İfade Edin
Önceki problemlerde de gördüğümüz üzere bazen problemi tekrar ifade etmek, göremediğimiz bir ayrıntıyı görmemizi ya da problemi daha kolay çözmek adına bir ipucu yakalamamızı sağlayabilir.
Hatta bazen probleme ilişkin bir yanlış anlamanın ortaya çıkmasına ya da hedefin daha iyi anlaşılmasına neden olur. Problemi farklı biçimlerde sunmak çözüm sürecine ışık tutmasa bile bazen yalnızca problemi doğru anlayıp anlamadığımızı bile teyit etmek açısından önemlidir. Ayrıca tekrar ifade ederek problemi küçük alt parçalara ayırmak gibi yaygın işlemleri de kolaylaştırmış olabiliriz.
3.1.3. Problemi Küçük Parçalara Ayırın
Verilen problemi adımlara ya da bölümlere ayırmak, çözümü kolaylaştırır. Bir problemi iki bölüme ayırdığımız düşünüldüğünde, her bir parçanın çözümünün tümünü çözmeye göre yarı yarıya kolaylaştığını düşünebiliriz.
Soru:
Aklınızda tuttuğunuz ve parçalara ayırdığınız neler var??
3.1.4. Önce Bildiklerinizden Yola Çıkın
Programlama yaparken öncelikle bildiklerimiz ile başlamalı ve sonra yeni çözümler arayışına girmeliyiz. Problemi küçük parçalara bölerek çözebildiğiniz parçadan başlayınız. Bu parçaları çözerken diğer parçalarla ilgili olarak aklınıza yeni fikirler geldiğini ve aynı zamanda kendinize olan güvenin arttığını göreceksiniz.
Programlama süreci boyunca çoğu zaman çok iyi olduğunuz konular, zorlandığınız konular ve henüz öğrenmediğiniz konular olacaktır. Bir problemin mevcut becerilerinizle çözülüp çözülemeyeceğine karar vermek için problemi çok iyi incelemeniz gerekir. Böylece bilgi dağarcığınızda olmayan ama çözüm için gerekli olan işlemlerin farkına varabilirsiniz.
3.1.5. Problemi Basitleştirin
Çözmekte zorlandığınız bir problemle karşılaşırsanız problemin kapsamını daraltmayı deneyebilirsiniz. Bunun için koşulları azaltmayı ya da çözebileceğiniz biçime dönüştürmeyi, değişkenleri azaltmayı ya da problemin kapsama alanını küçültmeyi düşünebilirsiniz.
Temel amacınız problemi basitçe ifade etmeye çalışmak olmalıdır. Çözüm için denediğiniz yaklaşımlar, size gerçek çözüm için yol gösterecektir. Problemi basitleştirmek size aslında problemdeki zorluğun neden kaynaklandığını da gösterecektir.
3.1.6. Benzerlikleri Arayın
Burada ele aldığımız benzerlik kavramı, çözülmesi istenen problemle önceden çözülen problem arasındaki olası örtüşme ya da yeni çözüme ilham verme olarak tanımlanabilir. Benzerlik, farklı biçimlerde karşımıza çıkabilir. Bazen problemler aynı, değişkenler ya da veriler farklıdır. Bazen problemin belirli bir bölümü başka bir problemle benzerlik gösterebilir.
Problem çözme sürecinde hızınızı ve becerinizi arttıracak en önemli yaklaşım, benzerliklerin farkına varmaktır ancak bu, aynı zamanda kazanılması en zor beceridir. Buradaki zorluk, benzerliklerin farkına varacak kadar problem çözmek ve deneyim kazanmak gereğinden ortaya çıkmaktadır.
Bu nedenle programlamaya yeni başlayanlar için bir problemi çözerken hazır yazılmış bir kodu bulmak ve onu güncelleyerek problemi çözmeye çalışmak son derece yanlıştır. Bir çözümü kendiniz üretmezseniz tamamen anlayamaz ve içselleştiremezsiniz. Ayrıca çalışan her bir program, problemin çözümü olduğu kadar, daha sonraki problemleri çözmek için kazandığınız deneyimlerdir. Şu anda ne kadar yazılmış kodlar kullanarak problemleri çözerseniz gelecekte de sürekli bu yaklaşımı kullanacaksınız demektir.
3.1.7. Deneme Yapın
Bazen bir problemi çözmenin en kolay yolu denemek ve sonuçlarını gözlemlemektir. Bu, tahmin etmekten çok farklıdır. Bir çözümü tahminen öngörmek ile kodu yazarak denemek ve sonuçlarını incelemek çok farklı sonuçlar verir. Böylece problemi çözebilmek için gereken ipuçlarını elde edebilirsiniz. Denemek, ara yüz tasarlarken, çizim yaparken ya da kütüphaneleri kullanırken yararlı bir yaklaşımdır. Diğer yandan hata ayıklama süreci de bir tür deneysel yaklaşımdır. Bir problemin çıktılarına bakarak sorunun nereden kaynaklandığını anlayabilir ve problemi çözebiliriz. Bu nedenle programda önemli noktalara gözlemek amacıyla değer verebiliriz. Değerlerin değişimini gözleyerek çözüme daha hızlı ulaşabiliriz.
3.2. Problem Çözme Adımları
Problem çözme sürecinde en iyi kararı verebilmek için izlenmesi gereken 6 adım vardır (Şekil 1.7:): 1.
Araştırma:
Problemi çözme adımlarını araştırınız ve bununla ilgili 2 sayfalık bir metin hazırlayın.
Problem Çözme Adımları
Problemi Tanımlama: Problemi çözmeye başlamadan önce problemin açık, anlaşılır ve çok doğ- ru bir şekilde tanımlanmış olması gerekir. Problemin ne olduğunu bilemezseniz onu çözemezsiniz.
2. Problemi Anlama: Çözüme doğru yol almadan önce problemi çok iyi anladığınızdan emin olmanız gerekir. Problemin neler içerdiğini ve kapsamını doğru anlamalısınız. Ayrıca problemi çözmeniz gereken insan ya da sistemin bilgi tabanında neler olduğunu da çok iyi anlamalısınız. Mevcut bilgi tabanında olmayan herhangi bir kavram ya da yönergeyi problemin çözüm sürecinde kullanamazsınız. Bu konuda klasik ve önemli bir söz vardır: “Problemi anlamak, problemi yarı yarıya çözmek demektir.
3. Problemin Çözümü İçin Farklı Yol ve Yöntemler Belirleme: Problemin çözümü için olabildi- ğince farklı yol ve yöntem belirlemeli ve bu listenin, tüm olasılıkları içerdiğinden emin olmalısınız. Bunun için konu hakkında farklı kişilerin görüşlerini alabilirsiniz. Farklı çözümler kabul edilebilir olmalıdır. Problem çözmek için tek bir yol yoktur; pek çok yol vardır.
4. Farklı Çözüm Yolları Listesi İçerisinden En İyi Çözümü Seçme: Bu adımda her bir çözümün olumlu ve olumsuz yönlerini ortaya koymalısınız. Bu nedenle değerlendirme yapabilmek için ölçütler oluşturmalısınız. Bu ölçütler her bir çözüm yolunu değerlendirmek için size rehber olacaktır. Problem çözmek için tek bir yol yoktur; en iyi yol vardır.
5. Seçilen Çözüm Yolu ile Problemi Çözmek İçin Gerekli Yönergeleri Oluşturma: Bu adımda numaralandırılmış ve adım adım yönergeler oluşturmanız gerekir. Bu yönergelerin ikinci adımda belirtilen bilgi tabanı kapsamında olmasına dikkat ediniz. Bu durum, özellikle bilgisayarlar ile çalışırken son derece kısıtlı davranmanıza neden olabilir.
6. Çözümü Değerlendirme: Çözümü test etmek ya da değerlendirmek, sonucun doğruluğunu kontrol etmek anlamına gelir. Sonucun doğru olması ve problemi olan bireyin beklentilerini karşılama düzeyi önemlidir. Sonuç yanlış çıkmış ya da bireyin beklentilerini karşılamamış ise problem çözme sürecine baştan başlamak gerekir.
Ödev:
Problem Çözme Adımları ile ilgili ile ilgili bir afiş hazırlayarak aşağıdaki mail adresine gönderiniz.
Maile isim soy isim, sınıf ve okul numarası bilgilerinizi yazmayı unutmayınız.
egitimdebil@gmail.com
Önerilen program: Microsoft Publisher
Bilişim Teknolojileri Öğretmeni: İshak BEZCİ
Son gün ve saat : Pazar gece 12.00
Comments