Fibonacci Serisi

Pazartesi, 31 Ağustos 2009 17:29 by ikivanc
Fibonacci serisini duymuşsunuzdur. Wikipedia daki tanımıyla Hintli matematikçiler tarafından bulunmuş olan bu sayı dizisi Liber Abaci kitabında tavşanların üremesiyle ilgili problemin hesaplanması sonucu Fibonacci tarafından 1202 yılında ortaya konmuş olan bir dizi.

Fibonacci Serisi: 0, 1,1,2,3,5,8,13,21,34,55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, … vb. şeklinde devam eden, her sayının kendisinden önce gelen iki sayının toplamının eşit olduğu dizidir. Bu durumda genel olarak n'inci Fibonacci sayısı F(n) şu şekilde ifade edilir.

Şimdide IronPython da bu seriyi oluşturan bir uygulama geliştirelim. Gireceğimiz sayıya kadar olan Fibonaci serisini yazdıralım.

app.xaml

    1 <UserControl
    2   xmlns="http://schemas.microsoft.com/client/2007"
    3   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    4   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    5   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    6   x:Class="System.Windows.Controls.UserControl"
    7   mc:Ignorable="d">
    8   <Grid x:Name="layout_root">
    9     <Grid.Background>
   10       <RadialGradientBrush>
   11         <GradientStop Color="#FF25A995"/>
   12         <GradientStop Color="#FF0D3F41" Offset="1"/>
   13         <GradientStop Color="#FF0D3F41" Offset="1"/>
   14       </RadialGradientBrush>
   15     </Grid.Background>
   16     <ListBox Width="173" x:Name="Fibonacci_Liste" HorizontalAlignment="Left" Margin="142,25,0,0" Height="267" VerticalAlignment="Top" Foreground="White" BorderBrush="#FF987C7C">
   17       <ListBox.Background>
   18         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
   19           <GradientStop Color="#FF239398"/>
   20           <GradientStop Color="#FF2CCBD0" Offset="0.216"/>
   21           <GradientStop Color="#FF1D9296" Offset="0.216"/>
   22           <GradientStop Color="#FF0D3F41" Offset="1"/>
   23         </LinearGradientBrush>
   24       </ListBox.Background>
   25     </ListBox>
   26     <Button Margin="8,60,0,0" Width="125" Height="30" x:Name="Buton" Content="Seri Olustur" HorizontalAlignment="Left" VerticalAlignment="Top" d:LayoutOverrides="HorizontalAlignment, Height"/>
   27     <TextBox x:Name="sayi" Height="28" HorizontalAlignment="Left" Margin="8,27,0,0" VerticalAlignment="Top" Width="125" TextWrapping="Wrap" d:LayoutOverrides="HorizontalAlignment"/>
   28     <TextBlock Height="17" HorizontalAlignment="Left" Margin="8,6,0,0" VerticalAlignment="Top" Width="77" Text="Sayı Girin:" TextWrapping="Wrap" Foreground="White" d:LayoutOverrides="HorizontalAlignment"/>
   29     <TextBlock Height="17" HorizontalAlignment="Left" Margin="142,6,0,0" VerticalAlignment="Top" Width="146" Text="Fibonacci Serisi:" TextWrapping="Wrap" Foreground="White"/>
   30   </Grid>
   31 </UserControl>

app.py

    1 from System.Windows import Application
    2 from System.Windows.Controls import UserControl
    3 proje = Application.Current.LoadRootVisual(UserControl(), 'app.xaml')
    4 
    5 def fibonacci(deger):
    6     a, b = 0, 1
    7     while a < deger:
    8         yield a
    9         a, b = b, a+b
   10 
   11 def onClickButton(sender, args):
   12     for n in fibonacci(int(proje.sayi.Text)):
   13         proje.Fibonacci_Liste.Items.Add(n)
   14 
   15 proje.Buton.Click += onClickButton


Bu makalemizde Fibonacci serisini ve IronPython ile uygulamasını gördük. Kodları ve örnek canlı uygulamayı aşağıdaki linklerden erişebilirsiniz.

Hepinize Kolay gelsin. Sorularınızı ve takıldığınız yerleri ik@ibrahimkivanc.com mail adresime iletebilirsiniz.



Çalışır canlı uygulama için > Fibonacci Serisi

Makalenin PDF Hali için > 23 - IronPyton Fibonacci Serisi