13 Ağu 2009 Saat 17:25 
 

C – Problem Çözme ve Algoritma hazırlama

 

C programlama hakkında geçenler de bir yazı yazmıştım. Giriş yazısı olarak basit ve açıklayıcı olan yazıdan sonra ilk dersimiz olan Problem Çözme ve Algoritma hazırlama işlemlerine değineceğiz.

Bilgisayarlar, işlemciler, çekirdekler -Hiyerarşik olarak-, bilindiği kadarıyla insanlardan daha hızlı işlem yapabilme gücüne sahip olsalar dahi, yapılan işin arkasında her zaman bir insan gücünün bulunduğu inkar edilmez. En basitinden bilgisayarın zeka’sı dahilinden kendisinden herhangi bir aritmetik işlem yapmasını istememiz komik bir durumdan öteye gitmeyecektir. Zira bilgisayarların zekalarından sözetmemiz mümkün değildir -Son dönemdeki “Yapay Zeka” projeleri haricinde-.

Bilgisayardan herhangi bir işlem için istekte bulunmadan önce yapılması gereken işlemin ayrıntılarının tarafımızdan hazırlanması ve bilgisayarı bu işlem için uyarmamız, bilgilendirmemiz, en yaygın anlamıyla Programlama‘mız gerekmektedir. “Problem Çözme” bu aşama da devreye girmektedir.

Problem Çözme esasları

Problem çözme esasları ile ilgili olarak izlenmesi gereken yollara biraz değinecek olursak,

» Problemin tanımı: Yapılması istenen işlemin adımlarında öncelikle problemin açık bir şekilde belirlenmesi gerekir, Tanımlanması gereken problem en ince ayrıntılarıyla anlaşılmalıdır ki sonrasında çıkacak ufak bir detayın büyük sorunlara yolaçmasının önüne geçebilmek ancak bu şekilde mümkün olabilir. Daha sonra da çözülecek problemin hangi aşamalardan geçmesi gerektiğine karar verilir.

Problem tanımının önemi!

» Çözüm yollarının tespiti: Problem çoğu zaman tek bir çözüm yolu izlenerek çözülebiliyor olsa da bazen birden fazla çözüm yolu ortaya çıkabilir, bu gibi durumlar da en iyi, en sade, en anlaşılır çözüm yolunun seçilmesi;

  • Bilgisayarın yükünü hafifletir,
  • Programcının yükünü hafifletir,
  • Çözüm yolunda çıkacak olan problemlerin onarılmasını kolaylaştırır.
Bir problemin çözüm yolu tespit edilirken;

» Algoritmanın hazırlanması: Algoritma hazırlamak, program yazmanın sadece kalem-kağıt kullanılarak yapılması işlemidir. Algoritmasını hazırladıktan problemin %51′inin bittiğini rahatlıkla söyliyebiliriz, bundan sonrası sadece istenilen programlama diliyle hazırlanan algoritmanın bilgisayarın anlayacağı dile çevrilmesi ile ibarettir.

Algoritma hazırlama aşamaları;

Algoritma uygulamalarında işlem akışı yukarıdan aşağıya doğru adım adım ilerlenmesi ile sonuçlanır. Eğer akış içerisinden birden fazla kullanılacak adımlar var ise, bu adımlara Geri dönüş‘ler yapılabilir. Akış diyagramlarında her adımın bir numara ile belirtilmesi gerekmektedir.

Örnek bir algoritma - İki sayının toplamını hesaplayan algoritma

Basit bir algoritma olduğu için çok fazla ayrıntıya girilmesine gerek duyulmadan, kısa bir şekilde Problemin tanımı, Çözüm yolunun tespiti ve Algoritmanın hazırlanması‘nı yapmış bulunuyoruz. Burada dikkatinizi çekebilecek olan parantez içlerinde bulunan A, B, T=A+B, gibi ifadeler olabilir. Programlama dillerinde dışarıdan alınan veya program içerisinde kullanılacak veriler ya da değerler için belirli atamalar yapılmaktadır. Bu atama işlemlerinde verilerin ya da değerlerin atandığı ifadeler Değişken adını alır.Yani yukarıdaki algoritma da kullanıcıdan istendiği varsayılan 2. işlem basamağındaki Birinci sayı, program içerisinde A değişkenine atanmıştır. Değişkenler ile ilgili detaylı bilgiye ileriki bölümlerde değineceğiz. Şimdi aynı şekilde bir de içerisinde Geri Dönüş aşaması bulunduran algoritma hazırlayalım.

Örnek bir algoritma - Girilen 10 sayının toplam ve ortalamasını hesaplayan algoritma

Önceki algoritmadan biraz daha detaylı bir algoritma hazırlamış olduk, burada da dikkatinizi çekecek bir iki nokta olabilir. Bunlardan ilki ikinci aşama‘daki yapılan işlem yukarıda bahsetitiğimiz Değişken kavramında, değişkene değer atama işlemi‘dir. Sağdaki değer, soldaki ise değişkendir. Diğer bir değişle sağdaki değer soldaki değişkene atanır. Bazı programlama dillerinde değişkenler tanımlandığında atama yapılmaması dahilinde programlama dili otomatik atamalar yapabilmektedir, bu şekilde çıkabilecek karışıklıklara yol açmamak için değer atamaları kesinlikle atlanılmaması gereken bir konudur. Bir diğer nokta ise altıncı adım‘da yapılan işlem basamağı olan Döngü sistemi‘dir. Algoritmayı ilk başta gördüğünüzde çözüm yolu için girilecek her sayı için bir adet değişken yani toplamda on adet ayrı değişken tanımlamak bir çözüm yolu olabilir. Fakat çözüm yolu belirlenirken bahsettiğimiz bir diğer konu ise en etkili ve kısa olan çözüm yolunun benimsenmesi olduğunu da unutmamak gerekir. Burada da programlama dillerinde vazgeçilmez bir unsur olan Döngü sistemi devreye girmektedir.

Döngü sistemi program içerisinde birden fazla yapılacak işlemlerin tekrar tekrar ifade edilmesi yerine, bir sefer ifade edilip daha sonra Geri dönüş ile aynı ifadenin tekrar işlemden geçmesi işlemine dayanan bir sistemdir. Programlama dili ifadesi ile; Birden fazla kullanılacak kod satırları bir defa yazılıp daha sonra bir döngü içerisinde tekrar ettirilerek istenilen miktarda aynı kod satırı üzerinde işlem yapılabilmesi işlemidir.

İşte yukarıdaki algoritmamızda kullandığımız döngü sistemi bu işlemlerden ibarettir. Döngü sistemini inceleyecek olursak, ikinci adımda 0 (sıfır) değerini atadığımız ( S ) değişkenine, beşinci adımda bir arttıma işlemi uyguluyoruz -Değişkene değer atama-. 0=0+1 şeklinde atanan işlem sonucunda S değişkenini değeri 1 oluyor, bir sonraki işlemde 1=1+1′den S değişkenini değeri 2 oluyor ve bu şekilde artarak devam ediyor ta ki altıncı adımdaki Eğer S<10 ise 3 no’lu adıma git şartına kadar bu adımda neler olduğuna biraz daha ayrıntılı bir şekilde bakalım;

» S değişkeni 9 olduğunda 3 no’lu adıma gidiyor,
» Tekrar bir sayı alıyor,
» Alınan sayı toplam değerine dahil ediliyor,
» S değişkeni bir arttırılıyor,
» Altıncı adımda S<10 ifadesi doğru olmadığından yani 10<10 yanlış olduğundan -10, 10′dan küçük müdür ?- altıncı adımdan yedinci adıma geçiliyor ve döngü sona ermiş oluyor. Daha sonra da
» Ortalama değeri hesaplanıyor,
» Toplam değeri ile ortalama değeri çıktı olarak veriliyor.

Döngü sistemlerine daha sonraki konularımızda detaylı olarak değineceğiz…

Cystem Enginarı'nın notu
If you enjoyed this post, make sure you subscribe to my RSS feed!
Tags Etiketler: , , , , , , ,
Kategoriler: Yazılım
Yazar:: Hakan AKSÜZEK
Son Düzenleme: 11 Eyl 2009 Saat 16:08

Birisine gönderKalıcı bağlantı
» Yazı hakkında yorumunu bildirirsen, başkaları da faydalanabilir. Teşekkürler...
 

Bu yazıya yapılan yorumlar » (Yok)

 

Yorum yazacaksan önce haketmelisin :)

Dikkat!: Yorumlariniz onaylandiktan sonra gosterilecektir, tekrar tekrar yazmaniza gerek yoktur...

 Yorum için kullanabilecekleriniz:
RSS Yorumlara abone olma
TrackBack URI

İstatistikler



    No Child Pages.

Abone Ol



    No Child Pages.

İletişim



    No Child Pages.

Indirilebilir!



    No Child Pages.

Hakkımda !



    No Child Pages.
欢迎光临~
初音