Bu makalemizde programlama derslerinde verilen ve matematik dünyasında ünlü olan fibonacci serilerini inceleyeceğiz. Öncelikle fibonacci serisinin ne olduğundan, mantığından bahsedeceğiz. Bu konular anlaşıldıktan sonra ise serinin algoritmik olarak nasıl bulunacağı incelenecektir. Bu makaleyi okumak ve yapılanları uygulamak sadece fibonacci serisinin programını yazmaya değil, aynı zamanda programlama konusunda da gelişmenize yardımcı olacaktır. Ayrıca bu konuyu yazılım dünyasına yeni başlamış kişilerin okuyacağını dikkate alarak yazılım konusunda da birkaç tüyo vererek makalemi yazmaya çalışacağım…
Öncelikle önemli olan bir konudan bahsetmek istiyorum. Size verilen bir problemi çözmek istiyorsanız öncelikle verilen problemi çok iyi anlamanız gerekir. Mesela burada fibonacci serileri ile ilgili bir algoritma yazacaksak öncelikle matematiksel olarak sorunu ortaya koyabilmemiz lazım. Bu iş hayatınızda da karşılaştığınız sorunlarda aynıdır. Eğer sorunu iyi ortaya koyarak analiz edemezseniz ürettiğiniz çözümler de çözmek istediğiniz sorunun çözümü olmayabilir.
Bizim makalemizin ana teması fibonacci serileri olduğu için öncellikle konuyu anlamamız lazım. Fibanacci serisi bazı kaynaklarda 0 1 den, bazı kaynaklarda da 1 1 den başlayarak sonraki sayı önceki iki sayınının toplamıdır şeklinde devam eder. Biz algoritmamızı 1 1 den başlayacak şekilde yazdık. Fibonacci serisi için sonraki degerler 1, 1, 2, 3, 5, 8, 13 ... şeklinde devam eder.
Zannediyorum ki, anlattığım kısa açıklama ile fibonacci serilerini anlamış oldunuz. Burdan sonra önemli olansa fibonacci serisinin algoritmasını yazmaktır. Eğer fibonacci serisi mantığını iyi anladıysanız algoritmasını yazmak sadece programlama mantığınızı ve biraz da kullandığınız programlama diline kalmış durumda.
Ben algoritmayı yazmak için C# programlama dilinde yazacağım. Tabi ki önemli olan algoritmanın mantığıdır ve bu mantık tüm programlama dillerinde aynıdır. İster javascript, ister java, ister python kullanın farketmez. Bu algoritma mantığını kullandığınız programlama diline uyarlayabilirsiniz. Çünkü hepsinde hemen hemen mantık aynıdır. Sadece ufak yazım değişiklikleri olacaktır.
Konuyu anlatabilmek açısından öncelikle C# programlama dilinde Fibonacci Algoritması kodlarını vereceğim. Belirtmem gerekiyor ki bu programda örneğin 10 değerini girdiysek fibonacci serisinin 10-cu elemanına kadar olan değerler sıralanır. Bundan sonra da program üzerinden devam ederek kodları açıklamaya çalışacağım. Programı geliştirmek için windows form uygulaması yaptım. Bu form uygulamasının ekran görüntüsüna resimden bakabilirsiniz.
Fibonacci Serisi Algoritması(C# program Kodları)
Kod içerisinde önemli olan nokta aslında aşağidaki kodlardır.
result.Add(1);
result.Add(1);
for (int i = 1; i < girilenDeger-1; i++)
{
double deger = result[i] + result[i - 1];
result.Add(deger);
}
Bu yüzden de programın bu kısmını açıklamam sanırım kodların tamamını anlamanız için en önemli noktadir. Programın çalıştığı fonksina dikkat ederseniz burada geri dönüş değeri olarak List türünde değer döndüğünü görebilirsiniz. Bu da hesaplanacak fibonacci seri değerlerinin bir listeye atanacağını göstermektedir. Bu işlemlerden sonra geri döndürülecek listeye ilk değerler olan 1 1 değerlerini gönderiyoruz. Bu işlemden sonra ise girilen değere gere döngüyü çalıştırıp bir önceki iki değerin toplamını hesaplayarak listeye tekrar ekliyoruz. Yeni programlama öğrenenler için biraz zorlayıcı bir yazılım şekli olduğu için algoritmanın çalışması ile ilgili örnek vermek istiyorum. Örneğin 3 değeri girdiysek ilk önce Listemize iki tane 1 ekliyoruz. Bu bizim sıfırıncı ve birinci indexli değerlerimizdir. Döngü 1 den başlayarak 1 defa işlem yapar ve birle biri toplayarak sonucun 2 olduğunu bulur ve Listeye 2 değerini ekler. Böylece girilen 3 değer için cevabımız 1,1,2 şeklinde olur. Konunun ve anlatımın zor geldiğini düşünüyorsanız zor olan kısım sadece list kullanımı ve döngülerin başlangıç ve bitiş noktasının ayarlanma konularıdır. Bu konular için mutlaka araştırma yapın. Çünkü diyebilirim ki bu konular programlamanın temelini oluşturur.
Umarım makalem ve anlatımım faydalı olmuştur. Yinede anlamadığın konular kısımlar olursa lütfen sormaktan çekinmeyin. En kısa sürede sorularınızı yanıtlamaya çalışacağım...
Öncelikle önemli olan bir konudan bahsetmek istiyorum. Size verilen bir problemi çözmek istiyorsanız öncelikle verilen problemi çok iyi anlamanız gerekir. Mesela burada fibonacci serileri ile ilgili bir algoritma yazacaksak öncelikle matematiksel olarak sorunu ortaya koyabilmemiz lazım. Bu iş hayatınızda da karşılaştığınız sorunlarda aynıdır. Eğer sorunu iyi ortaya koyarak analiz edemezseniz ürettiğiniz çözümler de çözmek istediğiniz sorunun çözümü olmayabilir.
Bizim makalemizin ana teması fibonacci serileri olduğu için öncellikle konuyu anlamamız lazım. Fibanacci serisi bazı kaynaklarda 0 1 den, bazı kaynaklarda da 1 1 den başlayarak sonraki sayı önceki iki sayınının toplamıdır şeklinde devam eder. Biz algoritmamızı 1 1 den başlayacak şekilde yazdık. Fibonacci serisi için sonraki degerler 1, 1, 2, 3, 5, 8, 13 ... şeklinde devam eder.
Zannediyorum ki, anlattığım kısa açıklama ile fibonacci serilerini anlamış oldunuz. Burdan sonra önemli olansa fibonacci serisinin algoritmasını yazmaktır. Eğer fibonacci serisi mantığını iyi anladıysanız algoritmasını yazmak sadece programlama mantığınızı ve biraz da kullandığınız programlama diline kalmış durumda.
Ben algoritmayı yazmak için C# programlama dilinde yazacağım. Tabi ki önemli olan algoritmanın mantığıdır ve bu mantık tüm programlama dillerinde aynıdır. İster javascript, ister java, ister python kullanın farketmez. Bu algoritma mantığını kullandığınız programlama diline uyarlayabilirsiniz. Çünkü hepsinde hemen hemen mantık aynıdır. Sadece ufak yazım değişiklikleri olacaktır.
Konuyu anlatabilmek açısından öncelikle C# programlama dilinde Fibonacci Algoritması kodlarını vereceğim. Belirtmem gerekiyor ki bu programda örneğin 10 değerini girdiysek fibonacci serisinin 10-cu elemanına kadar olan değerler sıralanır. Bundan sonra da program üzerinden devam ederek kodları açıklamaya çalışacağım. Programı geliştirmek için windows form uygulaması yaptım. Bu form uygulamasının ekran görüntüsüna resimden bakabilirsiniz.
Fibonacci Serisi Algoritması(C# program Kodları)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Fibonacci
{
public partial class MainScreen : Form
{
public MainScreen()
{
InitializeComponent();
}
private void buttonHesapla_Click(object sender, EventArgs e)
{
double girilenDeger = 0;
var parseResult=double.TryParse(textBox1.Text, out girilenDeger);
if (!parseResult)
{
textBox2.Text = "Hesaplanacak değer sayı olmalıdır...";
}
else
{
textBox2.Text = "";
var algorithnResult = FibonacciHesapla(girilenDeger);
foreach (var item in algorithnResult)
{
textBox2.Text += item.ToString() + ", ";
}
}
}
private List<double> FibonacciHesapla(double girilenDeger)
{
var result = new List<double>();
if (girilenDeger == 0)
{
return result;
}
if (girilenDeger == 1)
{
result.Add(1);
}
if (girilenDeger == 2)
{
result.Add(1);
result.Add(2);
}
else
{
result.Add(1);
result.Add(1);
for (int i = 1; i < girilenDeger-1; i++)
{
double deger = result[i] + result[i - 1];
result.Add(deger);
}
}
return result;
}
}
}
Kod içerisinde önemli olan nokta aslında aşağidaki kodlardır.
result.Add(1);
result.Add(1);
for (int i = 1; i < girilenDeger-1; i++)
{
double deger = result[i] + result[i - 1];
result.Add(deger);
}
Bu yüzden de programın bu kısmını açıklamam sanırım kodların tamamını anlamanız için en önemli noktadir. Programın çalıştığı fonksina dikkat ederseniz burada geri dönüş değeri olarak List
Umarım makalem ve anlatımım faydalı olmuştur. Yinede anlamadığın konular kısımlar olursa lütfen sormaktan çekinmeyin. En kısa sürede sorularınızı yanıtlamaya çalışacağım...
Yorumlar
Yorum Gönder