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

IronPython-Urls

Pazartesi, 31 Ağustos 2009 15:31 by ikivanc
Sizlere IronPython ile ilgili mükemmel derlemelerin bulunduğu bir site tanıtacağım; Dinamik Diller MVP'si ve "IronPython in Action" kitabının yazarı olan Micheal Foord'un resmi blogu olan ironpython-urls.blogspot.com.

İçerik olarak çok güzel olan Micheal Foord tarafından sürekli IronPython ile alakalı güzel linkler sunulan bir site.

Geçtiğimiz günlerdeki girdisinde de beni ve yazdığım makaleleri de tanıtan bu siteyi takip eden binlerce kişi mevcut.

http://ironpython-urls.blogspot.com/2009/08/ironpython-and-silverlight-in-turkish.html

takip etmeniz tavsiye ederim ;)



IronPython If , Elif , Else Deyimleri

Cumartesi, 29 Ağustos 2009 19:34 by ikivanc
If karşılaştırma deyimi, bazı koşullu yapıları kontrol etmek için kullanılır. Eğer anlamında koşulun doğru olduğu durumda içeriğindeki kodu çalıştırır. Tek bir şartın sağlanmasında tek “if” yapısı kullanılırken, birden fazla şartın karşılaştırılmasında da “elif” yapısı kullanılır. Bu şartlardan hiç birinin sağlanmadığı durumlarda da “else” deyimi kullanılır. Bu karşılaştırma deyimleri genel olarak aşağıdaki yapıdadırlar.

if <koşul>:
    <durum>
elif <koşul>:
    <durum>
elif <koşul>:
    <durum>
...
else:
    <durum>

If deyiminin kullanımına bakacak olursak. Bir koşulun sağlanması durumunda işlenecek durumu belirtir. Buradaki karşılaştırma koşulunun sonucu boolean olacağı için istersek karşılaştırma istersek de boolean bir değer ile kullanabiliriz.

Şimdi de Silverlight bir proje üzerinde denetleme deyimlerini inceleyelim

Projenin Genel kodları aşağıdaki gibidir:

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="Listt" HorizontalAlignment="Left" Margin="8,8,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="240,62,0,0" Width="75" Height="30" x:Name="Buton" Content="Karsilastir" HorizontalAlignment="Left" VerticalAlignment="Top" d:LayoutOverrides="Width, Height"/>
   27     <TextBox x:Name="sayi" Height="28" HorizontalAlignment="Left" Margin="190,29,0,0" VerticalAlignment="Top" Width="125" TextWrapping="Wrap"/>
   28     <TextBlock Height="17" HorizontalAlignment="Left" Margin="190,8,0,0" VerticalAlignment="Top" Width="77" Text="Sayi:" TextWrapping="Wrap" Foreground="White"/>
   29     <TextBlock Height="17" HorizontalAlignment="Left" Margin="190,96,0,0" VerticalAlignment="Top" Width="39" Text="Sonuç:" TextWrapping="Wrap" Foreground="White"/>
   30     <TextBlock x:Name="text_sonuc" HorizontalAlignment="Left" Margin="190,117,0,134" Width="117" TextWrapping="Wrap" Foreground="White" FontWeight="Bold" FontSize="13.333"/>
   31   </Grid>
   32 
   33 </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 onClickButton(sender, args):
    6     if 3<5:
    7         proje.text_sonuc.Text = "3<5: Dogru"
    8         proje.Listt.Items.Add("3<5: Sonuc Dogru")
    9 
   10 proje.Buton.Click += onClickButton

Simdi de bu deyimlerin kullanım örneklerine geçelim. If deyimi koşul doğru ise altındaki kodu çalıştırır.

•    If kontrolü ile 5’in 3ten büyük ise button’a tıklanınca sonuç kısmına ve listbox’a “3<5: Dogru” şeklinde yazdıralım.

def onClickButton(sender, args):
    if 3<5:
        proje.text_sonuc.Text = "3<5: Dogru"
        proje.Listt.Items.Add("3<5: Sonuc Dogru")
 


“Else” deyimi gerçekleşir if ile birlikte kullanıldığı zaman ilk şartın gerçekleşmediği tüm durumlarda gerçekleşir.

•    If kontrolü ile “raptors” kelimesi ile “magic” kelimesi eşit mi string olarak karşılaştıralım ve sonucu listbox ve sonuç kısmına yazdıralım.

def onClickButton(sender, args):
    if "raptors"=="magic":
        proje.text_sonuc.Text = "raptors ile magic ayni"
        proje.Listt.Items.Add("raptors ile magic ayni")
    else:
        proje.text_sonuc.Text = "raptors ile magic farkli"
        proje.Listt.Items.Add("raptors ile magic farkli")
 

•    If kontrolü boolean olarak da denetleme imkanı sağlar, listbox ve sonuç’a çıktıyı yazdıralım.

def onClickButton(sender, args):
    if True:
        proje.text_sonuc.Text = "Durum: True"
        proje.Listt.Items.Add("Durum: True")
 
•    İf ve else deyimlerinin kullanımını gördük şimdi de elif deyimi ile birlikte kullanımı nasıl olur ona bir göz atalım. Sırası ile -2, 0 ve 4 sayılarını girelim.

def onClickButton(sender, args):
    sayi = int(proje.sayi.Text)
    if sayi == 0:
        proje.text_sonuc.Text = "Sayi: 0"
        proje.Listt.Items.Add("Sayi: 0")
    elif sayi<0:
        proje.text_sonuc.Text = "Sayi: Negatif"
        proje.Listt.Items.Add("Sayi: Negatif")
    elif sayi>0:
        proje.text_sonuc.Text = "Sayi: Pozitif"
        proje.Listt.Items.Add("Sayi: Pozitif")

İf deyimini aynı zamanda listenin içeriğini denetlemek için de kullanabiliriz. Herhangi bir elemanın liste içerisinde bulunup bulunmadığını kontrol edebiliriz.

•    Örneğimizde fenerbahce oyuncu dizisinde Carlos’un varlığını denetleyelim. Sonucu Listbox ve sonuç’a yazdıralım

def onClickButton(sender, args):
    fenerbahce = ["dos Santos","Guiza","Alex","Carlos","Lugano","Emre"]
 
    if ("Carlos" in fenerbahce):
        proje.text_sonuc.Text = "carlos hala takimda"
        proje.Listt.Items.Add("carlos hala takimda")

•    Şimdi de örneğimize Textbox ile oyuncu sorgulama özelliği ekleyelim. Liste içerisinde kayıtlı oyuncuları sorgulayarak. Oyuncu varsa “oyuncu hala takımda” takım listesinde yoksa “oyuncu artık takımda değil” yazsın.

def onClickButton(sender, args):
    oyuncu = proje.sayi.Text.ToString()
    fenerbahce = ["dos Santos","Guiza","Alex","Carlos","Lugano","Emre"]
 
    if (oyuncu in fenerbahce):
        proje.text_sonuc.Text = oyuncu + " hala takimda"
        proje.Listt.Items.Add(oyuncu + " hala takimda")
    else:
        proje.text_sonuc.Text =oyuncu + " artik takimda degil"
        proje.Listt.Items.Add(oyuncu + " artik takimda degil")


Simdi de deyimlerin boolean operatörle ile kullanım örneklerine geçelim.  Birden fazla koşulun aynı anda karşılaştırılmasını istiyorsak “and” operatörünü kullanırız. Tüm boolean operatörleri kullanabiliriz.

•    If kontrolü ile 5’in 3ten büyük olma şartı ile 10’un 9dan büyük olma şartını karşılaştıralım. İkisi de doğru olduğu için “And” operatörünün sonucu doğru olarak dönecektir.

def onClickButton(sender, args):
    if (3<5) and (10>9):
        proje.text_sonuc.Text = "3<5 ve 10>9: Dogru"
        proje.Listt.Items.Add("3<5 ve 10>9: Dogru")
 

Bir denetleme deyiminde birden fazla koşuldan herhangi birinin doğru olması durumunda da “or” operatörünü kullanırız.

•    If kontrolü ile 5’in 3ten büyük olduğu durum veya 10’un 11’den büyük olma durumunu karşılaştıralım. İlk karşılaştırma doğru olduğu için sonuç doğru olarak dönecek.

def onClickButton(sender, args):
    if (3<5) or (10>11):
        proje.text_sonuc.Text = "3<5 veya 10>11: Dogru"
        proje.Listt.Items.Add("3<5 veya 10>11: Dogru")

Örnek olarak, önceden belirlenmiş bir sayıyı tahmin etme deyimi yazalım;

•    Şimdi de if, elif ve else deyimlerini bir arada kullanan bir örnek yapalım. Belirlinmiş sayımız 100 olsun. 100den  küçük sayılar girildiğinde bize 'Daha büyük bir sayı giriniz...' diye uyarı yapsın.  Eğer 100’den büyük bir sayı girersek 'Daha küçük bir sayı giriniz...' uyarısı gelsin. Eğer girdiğimiz karakter sayı değilse 'Yanlış karakter! Lütfen sayı giriniz.' Uyarısı gelsin. 100 sayısını doğru olarak girdiğimizde de 'Tahmininiz doğru! 100!'  şeklinde bir uyarı versin. Sırasıyla 70, 150 ve 100 sayılarını girelim.

def onClickButton(sender, args):
    sayi = int(proje.sayi.Text)
    if sayi<100:
        proje.text_sonuc.Text = "Daha buyuk bir sayi giriniz..."
        proje.Listt.Items.Add("Daha buyuk bir sayi giriniz...")
    elif sayi>100:
        proje.text_sonuc.Text = "Daha kucuk bir sayi giriniz..."
        proje.Listt.Items.Add("Daha kucuk bir sayi giriniz...")
    elif sayi==100:
        proje.text_sonuc.Text = "Tahmininiz doğru! 100"
        proje.Listt.Items.Add("Tahmininiz doğru! 100")
    else:
        proje.text_sonuc.Text = "Yanlis karakter! Lutfen sayi giriniz."
        proje.Listt.Items.Add("Yanlis karakter! Lutfen sayi giriniz.")
 

Bu makalemizde tüm detayları ve güzel örnekleriyle if, elif ve else denetleme yapılarını inceledik. Bu karşılaştırmaları canlandırırken bu sefer farklı bir silverlight renk tasarımı ile görselleştirdik. Son örneğimizin de proje kodlarını aşağı dosyaya ekledim.

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



Makalenin PDF Hali için > 22 - IronPyton If Elif Else Deyimleri

Farklı Bir Deneyime Hazır Mısınız?

Çarşamba, 26 Ağustos 2009 18:39 by ikivanc



Çok yakında...


Zaman Serileri - Dynamic Time Warping

Çarşamba, 26 Ağustos 2009 18:20 by ikivanc
Bu sene staj deneyimi olarak Üniversitemizdeki bölümümüzden Yar. Doç. Dr. Mete ÇELİK ve Yar. Doç Dr. Filiz ÇELİK ile beraber akademik bir çalışma üzerine çalıştım. Akademik bir makalenin yazılmasında aktif olarak görev aldım.

Herkesin sorduğu soru özel sektör deneyimim varken neden üniversitede stajı seçtiğimdi. Bu zamana kadar hep özel sektörde deneyim yaşamıştım fakat herhangi bir akademik çalışmam ve akademik deneyimim olmamıştı. Bu staj tam da bu eksiğimi gidermek için mükemmel oldu. Gelecek sene için vereceğim bazı kararların  netleşmesini sağladı.

Stajımı Verimadenciliği konusunda zaman serileri üzerine yaptım ve benim için gerçekten mükemmel bir deneyim oldu. Bu yazımda zaman serilerinden Dynamic Time Warping hakkında bilgi vereceğim.


Zaman serileri veri madenciliğinin temellerini oluşturan en önemli bileşenlerdir. Bu serilerin yorumlanması ile ortaya bir kural veya sonuç çıkarılmaya çalışılır. Tekrar etme, belli bir düzeyde azalarak devam etme veya belirli bir cycle ile devam etmesi sonuçları bu zaman serilerinin incelenmesi ile elde edilir.

Zaman Serilerinin incelenmesinde pek çok yöntem kullanılmaktadır. Bunlar durumlarına göre avantaj ve dezavantajlı konumda olabilir.

Araştırma konumuz boyunca Dynamic Time Warping methodunu kullandım.  Bu method zaman axisinde bire bir eşleştirme değil, küçük toleranslar ve değişiklikler mevcutsa bunları yorumluyarak iki zaman serisinin birbirinin benzeri olup olmadığını belirlemek için kullanılır. Özellikle clasification (sınıflandırma) yaparken bu method çok kullanılır.


Dynamic Time Warping başta;
    - imza doğrulama
    - robotic
    - ses işleme
    - imalat
    - biyoloji
    - tıp sektöründe kullanılmaktadır.
    
Bu yöntem sayesinde zaman serileri üzerinde esneklik sağladı. Bire bir lineer olmayan durumların karşılaştırılıp eşleştirilmesi için bize güzel bir örnek sunuyor. Ayrıca bu yöntem O(n^2) karmaşıklığı ile de  en iyi çözümlerden birisini sunmakta.
 
Ben de staj sürem boyunca bu tekniği Microsoft'un yeni teknolojilerinde kullandım, Belki de bu yeni teknolojilerle kullanılan da ilk projeydi bu açıdan:
Visual Studio 2010 & .NET 4.0 Beta
LINQ
C# 4.0
MS SQL Server 2008

Kola Molası 2

Çarşamba, 19 Ağustos 2009 17:14 by ikivanc
Yine Ben :)

- Niyeyse hala 3G kampanyalarından tırsıyorum.

- 3G karşıtı sloganım: insanın başına ne gelirse meraktan...

- Forumlardaki admin olma hırsına hiç şahit oldunuz mu?

- Dos Santos'un sol ayağı.

- Hoşuma gitti: Başımızda Akşemsettin mi var ki İstanbul'u fethedelim?

- Tanıdığım iki kişinin akraba olduğunu öğrendiğimde neden bu kadar şaşırırım ki?

- Erkek gibi yetişen kızların hanımefendi olma çabalarına çok üzülüyorum.

- Tarihin Arka Odası'nda Pelin Batu'nun "dokiman" deyişi beni düşündürüyor.

- Deviantartta hesabı olana hep bir saygım olmuştur nedense.

- Eskiden Gece yarısı trafik eğitim programları olurdu.

- Uykum kaça kaça tüm kuralları 1 haftada öğrenmiştim.

- Fotokritik'teki tırt muhabbetler için üyelerin eğitim aldığını düşünmeye başladım.

- Birinin bana sabaha kadar kolanın zararları hakkında nutuk atmasından korkuyorum.

devamı yazdığımda...
Tags:  
Categories:   Kola Molası
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (4) | Comment RSSRSS comment feed

Microsoft Student Partner 2009-2010

Çarşamba, 19 Ağustos 2009 07:55 by ikivanc
Benim de 2008-2009 yılında katıldığım bu program dahilinde güzel deneyimler yaşadım geçen sene bunları da zaman zaman blogumda paylaştım. 2009-2010 yılı için Microsoft Student Partner başvuruları başladı.


MSP olmak isteyenler ve bu konuda bilgi almak isteyenler için detaylı bilgi burada, başvuranlarda ne gibi vasıflar aranıyor buradaki başvuru formuna bakarak bilgisahibi olabilirsiniz. Formu kendinizi tanıtan bir videonuz ile göndermeniz şart. Ne diyeyim Yıldızınız parlasın :)

Kola Molası 1

Pazartesi, 17 Ağustos 2009 17:12 by ikivanc
Bundan sonra artık böyle kısa kısa anlatacam anlatacaklarımı ki rahat rahat okuyun diye kola molamda :)

- Lig başladı yine herkes ofsayt profesörü oldu.

- 90 dakikalık maçı özetleriyle 240 dk olarak izlemeyi özlemişim.

- Tatilde Kitap okumak kendini bulmakmış bunu farkettim.

- Galatasarayın mor forması beni alp dağlarına götürüyor nedense.

- İtalyadaki Loto insanın ağzını sulandıran cinsten, ama beni sarmıyor pek.

- Durun kazanacak rakamları söyleyeyim 3,7,26,52,54,66 :)

- Bir durak öncesinden tedirgin bir şekilde hazırlanmayı özlemişim.

- Evrim için arageçiş formu sayılacak insanlar gördüm zamanında.

- Tarkan'ın Kurt'u gibi sadık birşeye ihtiyacım var sanırım.

- Facebook nedense birden komik video paylaşım sitesi oluverdi.

- Her kanalda bikinili sahil görüntüleri beni tvye soğuttu.

- İyi ki siyah beyaz televizyon zamanlarını görmedim.

- 3G kampanyalarında bunda bir iş var ya hadi hayırlısı gözü ile bakıyorum.

- Ama yine de 3G modem hayatımı çok ama çook kolaylaştırıyor.

devamı yazdığımda...

Tags:  
Categories:   Kola Molası
Actions:   E-mail | del.icio.us | Permalink | Yorumlar (2) | Comment RSSRSS comment feed

IronPython Silverlight While Döngüsü

Cumartesi, 15 Ağustos 2009 18:11 by ikivanc
IronPython içerisindeki while döngüsünü anlamak ve somutlaştırmak için Silverlight ile kullanarak, listbox bileşeni ile birlikte inceleyeceğiz.

While döngüsünün işleyişini görmek için butonların altında “while döngüsünü” event olarak yazarak listbox içerisinde canlandıracağız. While  döngüsünün çeşitli kullanımlarını göreceğiz şimdi de.

While döngüleri temelinde bir şart sağlanılana kadar devam edecek durumlarda kullanılır. Örneklerde kullanacağımız projenin kalıp kodları aşağıdaki gibidir.

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="#FF56A8D6"/>
   12         <GradientStop Color="#FF15628E" Offset="1"/>
   13       </RadialGradientBrush>
   14     </Grid.Background>
   15     <ListBox Width="173" x:Name="Listt" HorizontalAlignment="Left" Margin="8,8,0,0" Height="251" VerticalAlignment="Top" Foreground="White">
   16       <ListBox.Background>
   17         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
   18           <GradientStop Color="#FFA3AEB9" Offset="0"/>
   19           <GradientStop Color="#FF8399A9" Offset="0.228"/>
   20           <GradientStop Color="#FF718597" Offset="0.228"/>
   21           <GradientStop Color="#FF627786" Offset="1"/>
   22         </LinearGradientBrush>
   23       </ListBox.Background>
   24     </ListBox>
   25     <Button Margin="185,8,0,0" Width="75" Height="30" x:Name="Buton" Content="Calistir" HorizontalAlignment="Left" VerticalAlignment="Top" d:LayoutOverrides="Width, Height"/>
   26   </Grid>
   27 </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 onClickButton(sender, args):
    6     sayi=1
    7     while sayi<50:
    8         proje.Listt.Items.Add(sayi)
    9         sayi = sayi +1
   10 
   11 proje.Buton.Click += onClickButton

1den başlayıp 50’ye kadar olan sayıları while döngüsü içerisinde listbox’a ekleyelim.

def onClickButton(sender, args):
    sayi=1
    while sayi<50:
        proje.Listt.Items.Add(sayi)
        sayi = sayi +1

 
0’dan 7ye kadar olan sayıları listbox’a ekleyelim.

def onClickButton(sender, args):
    sayi=0
    x=7
    while sayi < x:
        proje.Listt.Items.Add(sayi)
        sayi += 1


0’dan başlayıp 7de dahil olmak üzere olan sayıları listbox’a ekleyelim.

def onClickButton(sender, args):
    sayi=0
    x=7
    while sayi <= x:
        proje.Listt.Items.Add(sayi)
        sayi += 1


Şimdi de projemize bir textblock ekleyip, buraya isim girildiği takdirde listbox’a girilen ismi ekleyecek olan bir uyguluma yapalım.

def onClickButton(sender, args):
    isim=""
    while not isim:
        isim=proje.isim.Text.ToString()
        proje.Listt.Items.Add("Merhaba, %s!" %isim )

Bu makalemizde IronPython da while döngüsünün değişik kullanımlarını silverlight ile inceledik.

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

Makalenin PDF Hali için > 21 - IronPyton While Döngüsü

IronPython Silverlight For Döngüsü

Cuma, 14 Ağustos 2009 17:54 by ikivanc
IronPython içerisindeki for döngüsünü anlamak ve somutlaştırmak için Silverlight ile kullanarak, listbox bileşeni ile birlikte inceleyeceğiz.

For döngüsünün işleyişini görmek için butonların altında “for döngüsünü” event olarak yazarak listbox içerisinde canlandıracağız. For ’un çeşitli kullanımlarını göreceğiz şimdi de.

For döngüleri temelinde sürekli tekrarlanacak durumları, belirli kurallar ve şartlar altında otomatik olarak gerçekleştirmesidir. Projenin genel kodları aşağıdaki gibidir.

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="#FF56A8D6"/>
   12         <GradientStop Color="#FF15628E" Offset="1"/>
   13       </RadialGradientBrush>
   14     </Grid.Background>
   15     <ListBox Width="173" x:Name="Listt" HorizontalAlignment="Left" Margin="8,8,0,0" Height="251" VerticalAlignment="Top" Foreground="White">
   16       <ListBox.Background>
   17         <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
   18           <GradientStop Color="#FFA3AEB9" Offset="0"/>
   19           <GradientStop Color="#FF8399A9" Offset="0.228"/>
   20           <GradientStop Color="#FF718597" Offset="0.228"/>
   21           <GradientStop Color="#FF627786" Offset="1"/>
   22         </LinearGradientBrush>
   23       </ListBox.Background>
   24     </ListBox>
   25     <Button Margin="185,8,0,0" Width="75" Height="30" x:Name="Buton" Content="Calistir" HorizontalAlignment="Left" VerticalAlignment="Top" d:LayoutOverrides="Width, Height"/>
   26   </Grid>
   27 </UserControl>


app.py

    1 from System.Windows import Application
    2 from System.Windows.Controls import UserControl
    3 
    4 proje = Application.Current.LoadRootVisual(UserControl(), 'app.xaml')
    5 
    6 def onClickButton(sender, args):
    7     for sayilar in range(5):
    8         proje.Listt.Items.Add(sayilar)
    9 
   10 proje.Buton.Click += onClickButton

range()
range() komutu bizim için otomatik dizi oluşturmaya yarayan bir komuttur. Bizim için parametreyi alır ve istediğimiz bir koşulda bir liste oluşturur.  Bu range komutunu genellikle for döngüleri içersinde başlangıç ve bitiş iterasyonları için kullanacağız.

range(bitiş)
Tekli formda kullanırsak range komutunu 0'dan başlayarak bitiş sayısına kadar birer artan bir dizi oluşturur.
döngü içerisinde kullanmak bize çok kolaylıklar sağlar;

bitişi 5 olan bir dizi boyutunda döngü oluşturalım ve listbox’a aktaralım.

def onClickButton(sender, args):
    for sayilar in range(5):
        proje.Listt.Items.Add(sayilar)
 
range(başlangıç,bitiş,artış)
range komutunun bir değişik kullanımı da yukarıdaki formdadır. Başlangıç bitiş ve artış parametrelerini girdikten sonra otomatikman listeyi ona göre oluşturur.
1den 15e kadar tek sayıları listbox’a yazdıralım:

def onClickButton(sender, args):
    for sayilar in range(1,15,2):
        proje.Listt.Items.Add(sayilar)

5ten -5e kadar sayıları birer azaltarak listbox’a yazdıralım:

def onClickButton(sender, args):
    for sayilar in range(5, -5, -1):
        proje.Listt.Items.Add(sayilar)

81 sayısından 0’a kadar bir sayının karesi olan sayıları listbox’a yazdıralım:

from System.Windows import Application
from System.Windows.Controls import UserControl
from math import sqrt
proje = Application.Current.LoadRootVisual(UserControl(), 'app.xaml')
 
def onClickButton(sender, args):
    for sayilar in range(81,0,-1):
        kok=sqrt(sayilar)
        if kok==int(kok):
            proje.Listt.Items.Add((kok).ToString() + "^2 = " + (sayilar).ToString())
 
proje.Buton.Click += onClickButton

range(başlangıç,bitiş)
bu from da sayilar başlangıçtan bitişe kadar tek tek artar.
10dan 14e kadar olan sayıları listbox’a aktaralım.

def onClickButton(sender, args):
    for sayilar in range(10,14):
        proje.Listt.Items.Add(sayilar)

For döngüsünün dizilerle kullanımına bakacak olursak:

def onClickButton(sender, args):
    for sayilar in [1, 2, 3, 4, 5, 6, 7]:
        proje.Listt.Items.Add(sayilar)

Şimdi de bir metin üzerinde birer harf atlatarak listbox’a aktaralım

def onClickButton(sender, args):
    metin = "ironpython"
    for sayilar in range(0, len(metin), 2):
        proje.Listt.Items.Add(metin[sayilar])

IronPython da For döngüsünün değişik türlerini silverlight ile inceledik.

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

Makalenin PDF Hali için > 20 - IronPyton Silverlight For Döngüsü