PROBLEM ÇÖZME YAKLAŞIMLARI
Ortaöğretim bilgisayar dersi konusu. Problem, problem çözümünün düzenlenmesi, problem analiz çizelgesi, modüller ve girdi süreç çıktı çizelgesi.
Problem Nedir?
Problem, teoriler oluşturularak veya belli kurallar çerçevesinde çözülmesi istenen sorudur.
Bilgisayar yazılım terminolojisinde problem, yazılım dillerini kullanarak bilgisayara yaptırılması istenen bir hesap veya iştir.
Burada probleme bir örnek verelim.
Bir kırtasiyeci her yıl belli ürün türlerini aldığını bu ürünlerden kaç tane aldığını ve kaç tane sattığını bilgisayar ortamında saklamak istediğini söylüyor. Bu bir problemdir.
Bir kırtasiyeci bilgisayar programlama ve ileri matematikten çok fazla anlayamayacağından sadece bu isteğini yani ne yapmak istediğini programcıya söyler. Şimdi programcının önünde bir problem vardır. Programcı oturup düşünecek, kafasında kırtasiyecinin istediği programın nasıl çalışabileceğini neler içereceğini tasarlayacak ve programı yazmaya başlayacaktır.
Problem Çözümünün Düzenlenmesi
Problem çözümünde yardımcı olabilecek bazı araçlar aşağıda verilmiştir.
1- Problem Analiz Çizelgesi
2- Girdi - Süreç- Çıktı Çizelgesi
3- Etkileşim Çizelgesi
4- Algoritmalar
5- Akış şemaları
Problem Analiz Çizelgesi
Problem analiz çizelgesi dört bölümden oluşur.
1- Eldeki veriler
2- Problemin çözüm süreci
3- Beklenen sonuç
4- Çözüm seçenekleri
Şimdi örnek bir soru üzerinde bu bölümlerin herbirini inceleyelim.
6 adet sayının ortalamasını bulmak istiyoruz.
1- Eldeki veri
Elimizdeki veriler ortalamasını alacağımız 6 adet sayıdır.
2- Beklenen sonuç
Beklenen sonuç bu altı sayının ortalamasıdır.
3- Problemin çözüm süreci
On sayının ortalaması matematiksel olarak aşağıdaki gibi bulunur.
Ort = (sayı1 + sayı2 + …. + sayı6)/6
Çözüm sürecinde bilgisayar bu işlemleri yapacaktır.
4- Çözüm Seçenekleri
6 adet değişken tanımlanır ve bu değişkenler kullanıcı tarafından klavyeden girilecek değerlere atanır. Daha sonra bu değerler ile matematiksel işlemler yapılır.
Etkileşim Çizelgesi
Etkileşim çizelgesi bir programın belirli işleri yapan bölümlerine verilen addır. Örneğin sayıları alan kısım bir modül, bunların toplamını yapan kısım bir modül, toplamdan ortalamayı bulan kısım bir modül olabilir.
Örneğin, kullanıcının gireceği 6 sayıyı toplayıp sonucu ekrana yazdıran programı aşağıdaki gibi yapabiliriz.

Yukarıdaki şekilde görüldüğü gibi kontrol grubu yapılacak tüm işlemlerin komutlarının verildiği bölümdür. Diğer modüller kendilerine verilen iş parçalarını yaparlar ve kontrol modülünün alt modülleridir.
Büyük programlar yüzlerce modüllerden oluşabilmektedir.
Girdi – Süreç – Çıktı Çizelgesi
Programa verilerin girilmesi, gerekli hesaplamaların yapılması ve sonucun ekrana yazılması veya bağlı bir cihaza bir işlem yaptırılması adımlarının hepsine birden, Girdi – süreç – çıktı denilmektedir.
Bu çizelge problem analiz çizelgesindeki verileri detaylandırır ve düzenler.
Girdi – süreç çıktı çizelgesi üç bölümden oluşur.
1- Girdi
Girdi kısmı, program için gerekli olan tüm verilere denilir. Bunlar ortalama bulma örneğinde 6 adet sayı, toplama örneğinde toplanacak olan tüm sayılar, çarpma işleminde çarpılacak olan tüm sayılardır.
2- Süreç ve Modül Referansı
Programın adım adım verilen komutları işlemesine süreç denilir. Modül referansı farklı birimlere iş yaptırıldığında bu bölümlerin yapacağı işlerdir.
Süreç Modül Referansı
Ortalama bulma programında süreç aşağıdaki gibi işler.
Sayıları Oku
Sayıları topla
Sayıları 6’ya böl
Sonucu ekrana yaz
Programı bitir
3- Çıktı
Program sonucu çıktıdır. Çıktı ortalama bulma örneğinde sayıların ortalamasıdır.
Aşağıda C++ programlama dili ile yazılmış bir ortalama bulma örneği verilmiştir.
#include <iostream>
using namespace std;
int main()
{
//Kontrol modülü
//Başlangıç modülü. Değişkenler tanımlanıyor
double dizi[6];
double toplam =0;
double ortalama = 0;
char karar ='D';
//Değişken tanımlama bitti
while(karar=='D')
{
//kullanıcıdan sayılar alınıyor. Girdilerin alındığı bölüm
//Burası aynı zamanda okuma modülüdür
for(int i = 1; i<=6; i++)
{
cout<<i<<". ci sayiyi giriniz: ";
cin>>dizi[i];
}
//Okuma modülünün bitişi
//Kullanıcının girdiği sayılar toplanıyor
//Burası 1. hesaplama modülüdür aynı zamanda süreç modülü
for(int k =0; k<=6; k++)
{
toplam = toplam + dizi[k];
}
//Hesaplama - 1Modülünün bitişi
//Hesaplama-2 modülü. Aynı zamanda süreç modülü
ortalama= toplam/6;
// Hesaplama-2 modülünün bitişi
//Yazdırma Modülünün başlangıcı
cout<<" Girdiginiz sayilarin ortalamasi "<<ortalama <<" dir"<<endl;
cin.get();
//Yazdırma modülünün bitişi
//Kullanıcının tercihine göre program sonlanacak veya devam edecek
cout<<"Yeni bir hesap yapmak icin D, cikmak icin farkli bir karakter giriniz: ";
cin>>karar;
}
return 0;
//Kontrol Modülü Sonu
//Program Bitimi
}
Okuma hesaplama ve yazdırma modülleri ana gövde dışında fonksiyon veya sınıf olarak yazılabilir. Bu modüller aldığı değer göre bir sonuç döndürerek programdan bağımsız çalışabilirler. Bunlar daha sonraki konulardır. Modüller ayrı bir fonksiyon veya sınıf olarak verildiğinde ana gövde kalabalık olmaz. Programın düzenlemesi kolaylaşır. İleri derslerde bunlara örnekler verilecektir.
Problem Çözme Süreci -1
Akış Diyagramları Konu Anlatımı ve Örnekler
SANATSAL BİLGİ
26/11/2017