3 Mayıs 2019 Cuma

Pygame Grid Oluşturma

drawGrid fonksiyonu oluşturuldu. Sonrasında hem x hem de y için iki tane for loop kullanıldı. draw.line ile çizgi çizildi.
def drawGrid():
    for x in range(0, 640, 32):
        pygame.draw.line(screen, white_C, (x,0), (x, 480), 1)
    for y in range(0, 480, 32):
        pygame.draw.line(screen, white_C, (0,y), (640, y), 1)

Pygame İlk Uygulama

# pygame kütüphanesi dahil edilir ve başlatılır
import pygame
pygame.init()

# renkler tanımladı RGB modu
black_C = (0,0,0)
white_C = (255,255,255)

# ekran ayarları
size = (640, 480)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("first app")

# döngü anahtarı
run = True

# ekran güncelleme süresinin ayarlanması için tanımlanır
clock = pygame.time.Clock()

# program döngüsü
while run:
    # olay yakalayıcı döngüsü
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    
    # çiz ya da boya
    screen.fill(black_C)

    # ekran güncelle
    pygame.display.flip()

    # FPS
    clock.tick(30)

# çıkış
pygame.quit()

19 Eylül 2017 Salı

Sınıflar ve Nesneler

Python nesneye dayalı bir programlama dilidir. İngilizce kaynaklarda Object Oriented olarak bahsedilir. Python'da aslında her şey bir nesnedir. Tanımladığınız fonksiyonlar, değişkenler, veri tipleri aklınıza gelen her şey. Peki sınıf ve nesne kavramı nedir? Bunu bir örneklendirme ile anlatmaya çalışalım. Ülkelere baktığımızda her ülkenin aynı özelliklere, farklı değerlerde sahip olduğunu görüyoruz. Bu özellikler ülke nüfusu, gelişmişlik düzeyi, insan gücü, yönetim biçimi gibi sayılabilir. Bu özellikler her ülkede vardır. Ancak bu özelliklerin değerleri ülkeden ülkeye değişiklik gösterir. Kanada'nın nüfusu 36 milyon iken, Finlandiya'nın 5 milyondur. Bu yaptığımız örneklendirmeye göre ülke aslında bir sınıf, Kanada ve Finlandiya ise bu sınıfın nesneleridir. Şimdi bir sınıf oluşturalım:
class Ulke():
    nufus = 1000000
    gelismislik_duzeyi = "Yüksek"
    insan_gucu = 45000
    yonetim_bicimi = "Demokrasi"

14 Eylül 2017 Perşembe

Modül (Built-in) Kullanımı

Örneğin, sys modülünü kullanmak istiyoruz. Aşağıdaki gibi dahil ediyoruz.
import sys
Tüm built-in modülleri görmek için:
>>> sys.builtin_module_names
Modül içerisindeki sınıf ve fonksiyonları görmek için:
dir(sys)
Modül ismini değiştirmek için:
import sys as sistem
Modül hakkında yardım almak için:
help(sys)
Modül içerisindeki bir fonksiyonu (örneğin random modülündeki uniform fonksiyonu) kullanmak için:
>>> import random
>>> random.uniform(1,9)
4.20331931453323
Tek başına kullanıldığında alınan hata:
>>> uniform(1,8)
Traceback (most recent call last):
  File "", line 1, in 
    uniform(1,8)
NameError: name 'uniform' is not defined
Farklı şekilde modülü programa dahil etme:
from random import *
#modül içerisindeki tüm sınıf ve fonksiyonlar dahil edildi.
Bu sefer modül içerisindekifonksiyonu mdülü belirtmeden kullanabiliriz.
>>> uniform(1,9)
8.968796526517735
Belirli fonksiyon veya fonksiyonları dahil etmek için yapılması gereken:
from random import uniform
#sadece uniform fonksiyonu kullanılabilir.

9 Eylül 2017 Cumartesi

Lambda Fonksiyonu

Lambda fonksiyonu, anonymous(anonim) fonksiyonu olarak da bilinir. Peki nedir lambda fonksiyonu? Fonksiyonlar yazısında fonksiyonun def anahtar kelimesi ile tanımlandığından bahsetmiştik. Lambda fonksiyonu ise bir fonksiyonu tek satırda tanımlamamıza olanak sağlar. Lambda ise bir anahtar kelimedir. Lambda fonksiyon yapısını inceleyelim.
lambda parametreler: ifade
Şimdi normal şekilde iki sayının toplamını alan fonksiyon yazalım.
def topla(x,y):
    print(x+y)
Aynı fonksiyonu, lambda fonksiyonu hali ile yazalım
topla = lambda x,y: print(x+y)
Yukarıdaki iki kod örneği de aslında aynı işi yapıyor. Ancak yukarıdaki örnek kodda lambda fonksiyonu kullanımı amacın dışında olmuş gibi. Lambda fonksiyonu, anonymous yani isimsiz bir fonksiyondur. Lambda fonksiyonları, gömülü fonksiyonlar içerisinde kullanıldığı zaman ne kadar işe yaradığını anlayabiliriz. Şimdi bir örnek ile ne demek istendiğini anlamaya çalışalım.

Elimizde bir sayı listesi olsun ve bu sayı listesinden çift sayı olanları filter() gömülü fonksiyonu ile süzelim.
liste = [2,3,54,37,42,5,56,7,43,6]

cift = list(filter(lambda x:x%2==0, liste))

print(cift)
#ekran çıktısı: [2, 54, 42, 56, 6]
Yukarıdaki işlemi list comprehension ile de gerçekleştirebiliriz. List Comprehensions Nedir?
cift = [x for x in liste if x%2==0]
Şimdilik anonim fonksiyonlardan bu kadar bahsettim. Zamanı olduğunda tekrar güncellenecektir.

8 Eylül 2017 Cuma

Hata Yakalama

Program kullanımı sırasında kullanıcının programa göre alabileceği bazı hatalar olabilir. Hatalardan kastımız kullanıcının programı gerektiği gibi kullanmaması veya matematik kurallarına aykırı bir durum olabilir. Bu gibi durumlarda kullanıcıyı bilgilendirme amaçlı hata yakalamak için try..except bloğu kullanılır.

Kullanıcı toplama yapan bir programda gerekli veriyi girmezse, ValueError hatası alacaktır. Bir bölme işleminde bir sayıyı sıfıra bölmeye çalışırsa ZeroDivisionError hatası alacaktır. String bir değer ile int türü bir değeri toplamaya çalışırsa TypeError hatası alacaktır. Diğer standart hatalar için tıklayınız. Ancak kullanıcının bu hataları anlaması için program kodu içerisinde hata yakalama yapmalıyız. Aşağıdaki örnekte olduğu gibi:
try:
    result = 3 / 0
    print(result)
except ZeroDivisionError:
    print("Sayı Sıfıra Bölünemez!")

finally

finally bloğu içerisindeki kod, program hata yakalasa dahi çalışacaktır.
try:
    result = 3 / 0
    print(result)
except ZeroDivisionError:
    print("Sayı Sıfıra Bölünemez!")
finally:
    print("her zaman çalışır.")

7 Eylül 2017 Perşembe

Fonksiyonlar

Fonksiyon belirli bir görevi geçekleştiren ifade veya ifadelerin oluşturduğu gruptur.

Fonksiyon mantığı, program kodu içerisinde sürekli tekrar etmeyi engeller. Bir işlemi kodun gerekli yerlerinde sürekli yazmak yerine, işlemi bir fonksiyon olarak tanımlayarak o fonksiyonu gerekli yerlere çağırabiliriz. Bu sayede program kodu sadeleşmiş olur.

Pyhton programlama dilinde fonksiyonlar iki türe ayrılır:

  • Gömülü Fonksiyonlar
  • Kullanıcı Tanımlı Fonksiyonlar
Gömülü fonksiyonlar Python ile beraber gelen fonksiyonlardır, Kullanıcı tanımlı fonksiyonlar ise programcının özel olarak tanımladığı fonksiyonlardır.

Fonksiyon Tanımlama
def fonksiyonAdi(parametreler):
        #kod
Fonksiyon adı tanımlanırken değişkenlerde olduğu gibi tanımlanan ad benzersiz olmalıdır. Parametreler ise fonksiyona gönderilen bağımsız değişkenlerdir. Kullanımı zorunlu değildir. İsteğe bağlı olarak değer döndürmek için return deyimi kullanılabilir.

Fonksiyon Çağırma
def text(example):
        print(example)

text("Bu bir denemedir.")

#ekran çıktısı : Bu bir denemedir.
Ayrıca değer döndüren fonksiyona örnek olarak, aşağıdaki kod örneğini inceleyelim.
def fakt(num):
        if num == 0:
            return 1
        else:
            return num * fakt(num-1)

print(fakt(5))
#ekran çıktısı : 120