15 Şubat 2013 Cuma

İkinci Temel Ödev ve Python ile Çözümü

Daha önceki yazımda (Bkz. Python Programlama Dili) Python programlama dilinden kısaca bahsetmiş ve  ilgili yazıda Windows ortamında çalıştırılabilir (*.exe) biçimine çevrilmiş (py2exe ile) ufak bir program örneği de paylaşmıştım. Şimdi o programın kaynak kodlarına birlikte bakalım ve daha sonra da bu programı py2exe ile nasıl exe biçimine dönüştürebileceğimizi görelim.

Öncelikle programın kaynak kodlarına göz atacak olursak:

# coding=utf-8
import math

# Giris

print """\n\tSEMT-MESAFE HESAPLAYICISI
\tErtan Taner Tunc - www.ettunc.tk"""

# Girdiler

print "\n1. Noktanin koordinatlarini (m) giriniz :\n"

Y1=float(raw_input("Y1 = "))
X1=float(raw_input("X1 = "))

print "\n2. Noktanin koordinatlarini (m) giriniz :\n"

Y2=float(raw_input("Y2 = "))
X2=float(raw_input("X2 = "))

# Hesaplamalar

dy=Y2-Y1 # Y farki.
dx=X2-X1 # X farki.

# Aci Hesabi
aci=(200/math.pi)*(math.atan(dy/dx))

# Bolge Analizi

if dy>0 and dx>0:
    aci=aci
elif dy>0 and dx<0:
    aci=aci+200
elif dy<0 and dx<0:
    aci=aci+200
elif dy<0 and dx>0:
    aci=aci+400
elif dx==0 and dy>0:
    aci=100
elif dx==0 and dy<0:
    aci=300
elif dx>=0 and dy==0:
    aci=0
elif dx<0 and dy==0:
    aci=200
else:
    print "Yanlis giris yaptiniz!"

# Mesafe Tayini

mesafe=math.sqrt((math.pow(dy,2))+math.pow(dx,2))

# Ciktilar

print "\nSemt Acisi = %.5f gon"%(aci)
print "\nAra Mesafe = %.4f m"%(mesafe)

# Cikis
raw_input("\n\t Cikis = Enter")

# ile başlayan satırlar yorum satırlarıdır ve işlemler hakkında bilgi vermektedir.

Programı kısaca açıklayacak olursak. İlk satırda karakter kodlaması hakkında bilgi vermekteyiz. Biz burada UTF-8 kullanmışız. İkinci satırda ise Math modülünü programımıza eklemiş yani import etmişiz. Bunun amacı çeşitli matematiksel işlemler için hazır fonksiyonlardan (math.atan gibi) yararlanmak. Math modülü ile daha fazla bilgi almak için http://www.istihza.com/py2/math.html adresini ziyaret ediniz.

Daha sonra iki noktanın koordinatlarını kullanıcıdan girdi olarak almışız. Sonra da bu koordinatlardan ilgili bağıntılar yardımıyla açı değeri ve mesafe değeri elde etmişiz.

Son olarak da bu elde ettiğimiz değerleri ekrana yazdırmışız.

Not: %5.f, %4.f vs. ile çıktı hassasiyeti belirlenmiştir. %x.f virgülden sonra x haneli çıktı vermeye yarar.

Programın .py (semtmesafe.py) dosyasını indirmek için tıklayınız.

Py2Exe Nasıl Kullanılır?

Py2Exe ile oluşturduğunuz Python programlarınızı (.py, .pyw vs.) Windows ortamında direk çalıştırılabilir hale (*.exe) sokmaya yarayan bir Python modülüdür.

Modüle http://www.lfd.uci.edu/~gohlke/pythonlibs/ adresinden ulaşabilirsiniz. İlgili sayfada Ctrl+F ile py2exe araması yapın ve kendinize uygun paketi indirin. Yine aynı sayfada birçok Python modülü de bulunmaktadır. Python programlama ile ilgileniyorsanız bu sayfayı favorilerinize almanızı öneririm.

Şimdi işleme geçersek. Programınızın bulunduğu klasörde bir setup.py oluşturun. İçeriğini:

from distutils.core import setup

import py2exe

setup(console=['hello.py'])

şeklinde düzenleyip kaydedin. Daha sonra klasör içine Shift'e basılı tutarak farenin sağ tuşu ile tıklayın. Komut penceresini burada aç deyin ve:

python setup.py py2exe

yazıp Enter'a basın. Aynı klasör içinde build ve dist adında iki klasör oluşması gerekir. dist klasörüne girin. Programınız aynı isimle ve exe biçimde sizi bekliyor olacak.

Not: Bana kalırsa bunlara hiç gerek yok. Windows ortamında programınızı çalıştıracak olan kullanıcı ilgili Python sürümünü bilgisayarına yüklerse sizin Python ile oluşturduğunuz programlarınızı zaten direk olarak açabilir. Ücretsiz ve düşük boyutlu olduğu için son kullanıcı da zahmetsizce yükleyebilir. Linux ortamında zaten birçok popüler dağıtımda (Ubuntu, Linux Mint vs.) Python önyüklü olarak gelmektedir. Dolayısıyla biçim değiştirmek yerine bu yolu tercih etmenizi öneririm. Bu sayede oluşturduğunuz programlar tüm platformlarda (Windows, Linux, Mac) çalışacaktır.

Görüldüğü üzere Python giriş seviyesi programcılık için oldukça hızlı sonuçlar verir. Öğrenmesi çabuk ve pratiktir. Bu yönüyle bu işle benim gibi hobi düzeyinde ilgilenen kullanıcılar için bence en iyi programlama dilidir.

Hiç yorum yok:

Yorum Gönder