Sol Reklam
Sağ Reklam

Rehber Fonksiyon Kullanımı

Durum
Mesaj gönderimine kapalı.

Deichor

Creeper Evimi Patlattı

Discord:

deichor

Katılım
18 Ağustos 2017
Mesajlar
392
Elmaslar
213
Puanlar
13.820
Yer
Bursa
Minecraft
Deichor
Eğitim hakkında:
Bu eğitici rehber serisinde Skript'in ne olduğunu ve en doğru kullanım şeklini öğreneceksiniz. Çok fazla buna benzer yabancı içerik ve Türkçe içerik mevcut olmasına rağmen seriyi yapma amacım Minecraft üzerinde basitçe yazılım yapmak isteyen kişilere olabildiğince yardımcı olmaktır. Seri hakkında kafanızda oluşan soruları olabildiğince cevaplamaya çalışacağım. Eğer bir eksiklik görürseniz konu yorumlarında belirtmeyi unutmayınız.

Eğitim serisine katkıda bulunanlar:
Henüz kimse katkıda bulunmadı.

SKRİPT'DE FONKSİYONLAR VE FONKSİYON KULLANIMI
Bildiğiniz üzere Skript Minecraft kodlama dili, Java ile oluşan karmaşık sözdizimi(syntax), interface kullanımı, metot, class kullanımı gibi şeylerle uğraşmadan basitçe Minecraft için Bukkit kütüphanesi de kapsayan sizi bu dertlerden kurtarmak üzere ortaya çıkmış bir kodlama dilidir.

Aslında fonksiyonlar bir nevi Java dilinde ki metotlara denk geliyor diyebiliriz. Tabii daha basit ve daha az karmaşık haliyle diyebiliriz. Java üzerinde metotlarınıza erişim belirleyiciler tanımlayabiliyorken Skript üzerinde fonksiyonlarınıza erişim belirleyici tanımlayamazsınız. Skript fonksiyonlarınıza metotlarda da olduğu gibi parametre tanımlayabilirsiniz. Fonksiyonlarınızdan dönüt alabilirsiniz. Fonksiyonlar sayesinde kodunuzun tekrarlanmasını ve spagetti hal almasını önleyebilirsiniz. Gelin hep beraber nasıl kullanacağınızı inceleyim.

Fonksiyon sözdizimi:
Fonksiyon sözdizimine geçmeden önce fonksiyon isimlendirmelerinizi camelCase¹ şeklinde yapmanızı tavsiye ederim. Bu kullanım ile kodunuzu inceleyecek olan diğer kişilerin kodunuzu okumasını kolaylaştırmış olursunuz.
Java:
function fonksiyonİsmi(parametre isimleri: parametre türleri) :: döndürülecek veri:
Evet parametre tanımıyla ilk defa karşılaşıyoruz, peki nedir bu parametrenin anlamı? Parametre aslında Skript'in tanımladığı tüm veri türleridir. Örnek vermek gerekirse player nesnesi, number verisi gibi... Yani en başta tanımladığınız parametre ismini yazıyorsunuz ve ardından parametrenizin alabileceği değeri tanımlıyorsunuz. Parametrenizin bu değer dışında değer alamayacağını unutmayın. function deneme(sayi: number) örneğinde de gördüğünüz gibi sayi parametresi yalnızca number verisini almaktadır.
Diğer gördüğümüz kelime ise döndürülecek veri kısmıdır. Fonksiyonunuz return komut satırı ile döndüreceği verinin türünü tanımlamanızı sağlar. Yani fonksiyonunuz function deneme(sayi: number) :: player: ise yalnızca player nesnesini döndürebilir. Fonksiyonunuz bir veri döndürmek zorunda değildir. Eğer bir veri döndürmemesini istiyorsanız veri tanımlamamanız yeterlidir. Her iki kullanımın farklı bir alanı vardır.
Mevcut parametreler virgül ile çoğaltılabilir veya hiç parametre girilmeyebilir. Örnek vermek gerekirse function deneme(sayi: number, tamSayi: integer, oyuncu: player) şeklinde daha fazla parametre tanımlayabilirsiniz veya function deneme() şeklinde hiç parametre tanımlamayabilirsiniz. Tanımladığınız parametre isimleri otomatik olarak değişken olarak tanımlanır ve fonksiyonun altında kullanabilirsiniz. Parametrelere = ile varsayılan değer de tanımlayabilirsiniz. Örneğin function deneme(sayi: number = 5.2) ile sayi parametresinin varsayılan değerini 5.2 yapmış olursunuz. Varsayılan değerler fonksiyonunuzu kullanırken eğer o parametre için değer girmezseniz çalışır.

Fonksiyon çağırmak:
Fonksiyonları kullanabilmeniz için fonksiyonu kullanacağınız yerde çağırmanız gerekmektedir. Fonksiyonunuza tanımladığınız parametre türlerini girmezseniz veya eksik girerseniz hata ile karşılaşırsınız. Direkt kod satırı olarak fonksiyon çağırabilirsiniz. Örneğin function deneme(p: player) diye bir parametre tanımladığınızı var sayalım. Bunu kullanacağınız yerde deneme(player) yazmanız yeterli olacaktır. Tabii player kısmı değişiklik gösterebilir. O kısıma player nesnesi yazmalısınız.

Fonksiyon kullanımları:
Parametresiz fonksiyonun kullanım alanı parametre gerekmeyen kullanımlardır. Kodunuzda sürekli tekrarlayan ve herhangi bir parametre gerektirmeyen kısımlar için bunu tercih edebilirsiniz. Örnek bir parametresiz kullanım:
Java:
function ornekKullanim():
    set {database} to "...database bilgileri..."
Fonksiyonunuzun yalnızca belli parametreleri aldığında çalışmasını sağlamak istiyorsanız bu kullanımı tercih etmelisiniz.
Java:
function enBuyukSayiYazdir(sayi1: number, sayi2: number, broadcast: boolean = false):
    if {_broadcast} is true:
        broadcast "en büyük sayı: %max({_sayi1}, {_sayi2})%" # Burada Skript'in hali hazırda bulunan max fonksiyonundan faydalandık.
Yapacağınız işlemlerden sonra fonksiyondan bir değer almak istiyorsanız bu kullanımı gerçekleştirmelisiniz.
Java:
function hepsiniTopla(sayilar: numbers) :: number:
    loop {_sayilar::*}:
        set {_toplam} to (loop-value + ({_toplam} otherwise 0))
    return {_toplam}

command /test:
    trigger:
        set {_toplam} to hepsiniTopla(1, 2, 3, 4, 55, -5, 3.2)
        broadcast "sayıların toplamı: %{_toplam}%"

Bunları unutmayın!
  • Fonksiyon isimleri boşluk veya ?, -, _ gibi karakterler içermemelidir.
  • Fonksiyonlarınızı olabildiğince stabil ve performanslı hale getirin.
  • Fonksiyonlar ileriye dönük programlamanın temelini oluşturmaktadır.
  • Fonksiyonlar sayesinde kodunuzda değişiklik yaptığınızın zaman bir sürü yerden değiştirmeniz gerekmez.
  • Fonksiyonlar kodunuzun karmaşıklığını en aza indirger.

Sözlük
[1] Değişken, sınıf, metot veya fonksiyonun kelimeleri bitişik ve küçük harfle başlayacak devamındaki kelimelerin baş harfi büyük harf olacak şekilde yazılmasıdır.
 
Son düzenleme:

Teraofficiql

Bir Kömür Göründü Kaptanım!

Discord:

Teraaofficiql

Katılım
12 Temmuz 2022
Mesajlar
147
Elmaslar
58
Puanlar
1.220
Yaş
17
Yer
Tampere / Finland
Minecraft
Teraofficiql
Eğitim hakkında:
Bu eğitici rehber serisinde Skript'in ne olduğunu ve en doğru kullanım şeklini öğreneceksiniz. Çok fazla buna benzer yabancı içerik ve Türkçe içerik mevcut olmasına rağmen seriyi yapma amacım Minecraft üzerinde basitçe yazılım yapmak isteyen kişilere olabildiğince yardımcı olmaktır. Seri hakkında kafanızda oluşan soruları olabildiğince cevaplamaya çalışacağım. Eğer bir eksiklik görürseniz konu yorumlarında belirtmeyi unutmayınız.

Eğitim serisine katkıda bulunanlar:
Henüz kimse katkıda bulunmadı.

SKRİPT'DE FONKSİYONLAR VE FONKSİYON KULLANIMI
Bildiğiniz üzere Skript Minecraft kodlama dili, Java ile oluşan karmaşık sözdizimi(syntax), interface kullanımı, metot, class kullanımı gibi şeylerle uğraşmadan basitçe Minecraft için Bukkit kütüphanesi de kapsayan sizi bu dertlerden kurtarmak üzere ortaya çıkmış bir kodlama dilidir.

Aslında fonksiyonlar bir nevi Java dilinde ki metotlara denk geliyor diyebiliriz. Tabii daha basit ve daha az karmaşık haliyle diyebiliriz. Java üzerinde metotlarınıza erişim belirleyiciler tanımlayabiliyorken Skript üzerinde fonksiyonlarınıza erişim belirleyici tanımlayamazsınız. Skript fonksiyonlarınıza metotlarda da olduğu gibi parametre tanımlayabilirsiniz. Fonksiyonlarınızdan dönüt alabilirsiniz. Fonksiyonlar sayesinde kodunuzun tekrarlanmasını ve spagetti hal almasını önleyebilirsiniz. Gelin hep beraber nasıl kullanacağınızı inceleyim.

Fonksiyon sözdizimi:
Fonksiyon sözdizimine geçmeden önce fonksiyon isimlendirmelerinizi camelCase¹ şeklinde yapmanızı tavsiye ederim. Bu kullanım ile kodunuzu inceleyecek olan diğer kişilerin kodunuzu okumasını kolaylaştırmış olursunuz.
Java:
function fonksiyonİsmi(parametre isimleri: parametre türleri) :: döndürülecek veri:
Evet parametre tanımıyla ilk defa karşılaşıyoruz, peki nedir bu parametrenin anlamı? Parametre aslında Skript'in tanımladığı tüm veri türleridir. Örnek vermek gerekirse player nesnesi, number verisi gibi... Yani en başta tanımladığınız parametre ismini yazıyorsunuz ve ardından parametrenizin alabileceği değeri tanımlıyorsunuz. Parametrenizin bu değer dışında değer alamayacağını unutmayın. function deneme(sayi: number) örneğinde de gördüğünüz gibi sayi parametresi yalnızca number verisini almaktadır.
Diğer gördüğümüz kelime ise döndürülecek veri kısmıdır. Fonksiyonunuz return komut satırı ile döndüreceği verinin türünü tanımlamanızı sağlar. Yani fonksiyonunuz function deneme(sayi: number) :: player: ise yalnızca player nesnesini döndürebilir. Fonksiyonunuz bir veri döndürmek zorunda değildir. Eğer bir veri döndürmemesini istiyorsanız veri tanımlamamanız yeterlidir. Her iki kullanımın farklı bir alanı vardır.
Mevcut parametreler virgül ile çoğaltılabilir veya hiç parametre girilmeyebilir. Örnek vermek gerekirse function deneme(sayi: number, tamSayi: integer, oyuncu: player) şeklinde daha fazla parametre tanımlayabilirsiniz veya function deneme() şeklinde hiç parametre tanımlamayabilirsiniz. Tanımladığınız parametre isimleri otomatik olarak değişken olarak tanımlanır ve fonksiyonun altında kullanabilirsiniz. Parametrelere = ile varsayılan değer de tanımlayabilirsiniz. Örneğin function deneme(sayi: number = 5.2) ile sayi parametresinin varsayılan değerini 5.2 yapmış olursunuz. Varsayılan değerler fonksiyonunuzu kullanırken eğer o parametre için değer girmezseniz çalışır.

Fonksiyon çağırmak:
Fonksiyonları kullanabilmeniz için fonksiyonu kullanacağınız yerde çağırmanız gerekmektedir. Fonksiyonunuza tanımladığınız parametre türlerini girmezseniz veya eksik girerseniz hata ile karşılaşırsınız. Direkt kod satırı olarak fonksiyon çağırabilirsiniz. Örneğin function deneme(p: player) diye bir parametre tanımladığınızı var sayalım. Bunu kullanacağınız yerde deneme(player) yazmanız yeterli olacaktır. Tabii player kısmı değişiklik gösterebilir. O kısıma player nesnesi yazmalısınız.

Fonksiyon kullanımları:
Parametresiz fonksiyonun kullanım alanı parametre gerekmeyen kullanımlardır. Kodunuzda sürekli tekrarlayan ve herhangi bir parametre gerektirmeyen kısımlar için bunu tercih edebilirsiniz. Örnek bir parametresiz kullanım:
Java:
function ornekKullanim():
    set {database} to "...database bilgileri..."
Fonksiyonunuzun yalnızca belli parametreleri aldığında çalışmasını sağlamak istiyorsanız bu kullanımı tercih etmelisiniz.
Java:
function enBuyukSayiYazdir(sayi1: number, sayi2: number, broadcast: boolean = false):
    if {_broadcast} is true:
        broadcast "en büyük sayı: %max({_sayi1}, {_sayi2})%" # Burada Skript'in hali hazırda bulunan max fonksiyonundan faydalandık.
Yapacağınız işlemlerden sonra fonksiyondan bir değer almak istiyorsanız bu kullanımı gerçekleştirmelisiniz.
Java:
function hepsiniTopla(sayilar: numbers) :: number:
    loop {_sayilar::*}:
        set {_toplam} to (loop-value + ({_toplam} otherwise 0))
    return {_toplam}

command /test:
    trigger:
        set {_toplam} to hepsiniTopla(1, 2, 3, 4, 55, -5, 3.2)
        broadcast "sayıların toplamı: %{_toplam}%"

Bunları unutmayın!
  • Fonksiyon isimleri boşluk veya ?, -, _ gibi karakterler içermemelidir.
  • Fonksiyonlarınızı olabildiğince stabil ve performanslı hale getirin.
  • Fonksiyonlar ileriye dönük programlamanın temelini oluşturmaktadır.
  • Fonksiyonlar sayesinde kodunuzda değişiklik yaptığınızın zaman bir sürü yerden değiştirmeniz gerekmez.
  • Fonksiyonlar kodunuzun karmaşıklığını en aza indirger.

Sözlük
[1] Değişken, sınıf, metot veya fonksiyonun kelimeleri bitişik ve küçük harfle başlayacak devamındaki kelimelerin baş harfi büyük harf olacak şekilde yazılmasıdır.
Ellerine sağlık. Yeni başlayanlar ve öğrenmek isteyenler için uygun
 

yunanmadenci

Eküidistans

Discord:

yunanmadenci

Katılım
28 Şubat 2022
Mesajlar
807
Elmaslar
328
Puanlar
3.580
Yaş
18
Yer
İzmir, Selçuk
Minecraft
yunanmadenci
Çok güzel bir rehber olmuş, ellerinize sağlık. Fonksiyonların ne işe yaradıkları hakkında birkaç kod örneğinde bulunabilirsiniz, örneğin ada seviyesi en güzel örnek olabilir.
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı