GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi
28 Kasım 2024, 14:48:26

Temel Giriş

Başlatan Alimşah, 03 Mart 2017, 15:45:04

« önceki - sonraki »

0 Üye ve 4 Ziyaretçi konuyu incelemekte.

Alimşah

Öncelikle şans eseri gördüm bu forumu. Kimin neyidir, nesidir en ufak fikrim yok. Baktım ki yeni forum katkım olsun dedim.  :şeytan:

Bu anlatımda sadece pawn değil, diğer programlama dillerinin mantığını kapsayan detaylı bir anlatım olacak.Bu anlatımı anlamanız için elimden geldiğince yalın bir dil kullanmaya çalışıcam. Eğer mantığı kaparsanız, diğer dillere çok rahat uyum sağlayabilirsiniz.

Öncelikle pawn nedir, ne deyildir ona bir göz atalım.



Pawn


Pawn aslında bir programlama dili değildir. Türkçe karşılığı eklenti anlamına gelen bir scripting dildir. Platform'dan bağımsız çalışabilir, microcontroller gibi devrelerin logic (mantık) programlamalarında kullanılabilir. Derlediğiniz tüm kodlar P-Code (bytecode) olarak derlenir. Ayrıca amx32.dll ile beraber C#, C, C++ vb. programlarınıza entegre ederek, programlarınızın dışarıdan 3. şahıslar tarafından yapılan scriptler ile genişletebilirsiniz (Örn: C# ile yapmış olduğunuz bir editör var ve pawn desteği eklediniz ve yayımladınız. Dışarıdan herhangi biri pawn ile editörünüz için plug-in yazabilir ve entegre ederbilir)


1: Syntax


Pawn syntax yapısı C diline benzer bir yapıya sahiptir. Bazı tanımlamalar haricin'de syntax yapısını C dilinden almaktadır.


2: Değişkenler & Veri Yapıları


Gelelim en civcivli bölüme. Bir kısır benim için ne ise, tüm programlama/scripting dilleri içinde değişkenler odur. Değişkenler olmadan, hiçbir programın işlevi olmaz. İşte bu yüzden değişkenleri bilmeniz ve hakim olmanız gerekmektedir.

Pawn dilinde bir değişken tanımlamak için new anahtar kelimesini kullanırız ve değişkenimize isim tanımlarız. Verdiğimiz değişken isimlerinin özel karakter veya rakamlarla başlamadığına çok dikkat edin. Çünkü hiç bir zaman değişken isimleri özel karakter veya rakamlarla başlamaz.

Pawn dilinde 4 farklı veri yapısı bulunur. Bunlar;


  • String

  • Integer

  • Float

  • Boolean



Bu veri türleri, bellekte tutmak istediğiniz verilerin türüdür. Değişkende sayısal bir verimi veya metinsel bir verimi tutmak istediğinizde kullanılır. Detaylı açıklayacak olursak

String


Metinsel/karaktersel verileri tutmanızı sağlar ve bellekte saklanır.

Integer


Sadece tam sayılar'dan oluşan sayısal verileri saklamanızı sağlar

Float


Ondalık sayısal verilerin saklanmasında kullanılır

Boolean


Sadece mantıksal verilerin saklanmasında kullanılır (true-false)


Şimdi değişkenleri ve veri yapılarını örneklerle bekiştirelim. Önce string veri yapısını tanıyalım. Bir değişkenin string değişken olduğunu tanımlamanız için değişken isminin sonuna [] taglarını eklemeniz yetecektir.
PAWN Kodu: Seç

new benimIsmim[] = "Alimşah Yıldırım";
new seninIsmin[32] = "İskende Tereyağlı Sos";


Şimdi yukarıda iki tane string değişken örneği verdik. Ancak tanımlamaları dikkat ederseniz farklı. Peki benimIsmim[] ile seninIsmin[32] değişkenleri arasındaki fark ne?

benimIsmim değişkeninde tutulacak maksimum karakter sayısı verilmedi. Bu sayede derleyici, scripti derlerken sadece bellekte 17 karakterlik bir yer ayıracak. Eğer tanımlamayı şu şekilde yapsaydım;

PAWN Kodu: Seç

new benimIsmim[32] = "Alimşah Yıldırım";

Bellekte boşu boşuna 15 karakterlik yer israfı yapıp, performansı düşürecektim. Şimdi gelelim seninIsmin değişkenine. Bu değişkende maksimum karakter limiti 32 olarak belirlenmiş. Yani gireceğiniz herhangi isim veya metin maksimum 32 karakter içermek zorunda. 32 karakterden fazlası girildiğinde derleyici tarafından hata alırsınız. Ayrıca şunu unutmayın. Her bir karakter bellekte 1 byte yer kaplamaktadır. Bir string değişkenin bellekte ayıracağı alanı şu formülle hesaplayabilirsiniz.

Ayrılan bölüm = 1 * maksimum limit;

Örn: Ayrılan bölüm = 1 * 32 = 32 byte

Bu yüzden dialoglarınız'da yazacak olan mesajlara limit koymak yerine dinamik yaparsanız, bellekte fazladan yer tutmaz ve performans'da artış görebilirsiniz.


Şimdi gelelim integer değişkenlere. Integer değişkenler sadece ve sadece tam sayılardan oluşan sayısal verileri saklamak için kullanılır (Örn: ...., -3, -2, -1, 0, 1, 2, 3,.....). new anahtar kelimesi ile değişken ismi tanımlamak yeterlidir

PAWN Kodu: Seç

new pozitifDeger = 10;
new negatifDeger = -10;


Float ondalık veriler için değiken isminin başına Float: tagını eklemeniz yeterlidir.
PAWN Kodu: Seç

new Float:ondalikVeri = 45.5;
new Float:ondalikVeri2 = 88.7658;


Gelelim son olarak boolean değişkenlere. Boolean değişkenler sadece true ve false mantıksal değerleri alırlar. Bir değişkenin boolean değişkeni olarak tanımlamak için başına bool: yazmanız yeterli olacaktırç
PAWN Kodu: Seç

new girisYaptimi = true;
new cikisYaptimi = false;


Değşkenlerin pawn'da tanımlamaları, tuttukları veriler bu şekildedir. Değişkenler üzerinde işlem yapmamız için operatörleri ve koşulları kullanırız


Koşullar & Operatörler


Değişkenlere değer atamalarında operatörler, değişkenlerin kontrollerinde koşullar kullanılır. Operatörler ve koşulları scriptin mantıklı işleyişinde kullanırız.

Operatörler ile değişkenler üzerinde aritmetik işlemler yapmamızın yanı sıra, koşullarda şartları belirleyici etken olarak kullanırız. Mesala bir değişkenin diğer değişkenden farklı olup olmadığı veya değişkenin mevcut değerinin kontrolü buna bir örnek olabilir. Bu bölümde ilk olarak operatörleri gösterip, ne işe yaradıklarını ne zaman kullanmamız gerektiğinin'den bahsedicem.


=


Eşittir (=) operatörü, bir değişkene değer ataması yapacağımız zaman kullandığımız bir operatördür. Bunun örneğini yukarıda bulunan Değişkenler & Veri Yapıları bölümün'de görebilirsiniz. Bu operatör sayesinde, değeri daha önceden girilmiş olan değişkenin değerini, yeni bir değişken oluşturmadan yeni değeri atayabilirsiniz.

Detaylı örnek:

PAWN Kodu: Seç

new degiskenim = 10; // 1. satır burası farz edelim ve varsayılan değerini 10 olarak atayalım
...
degiskenim = 20; // Burayıda 400. satır olarak farz edin. 1. satırda değerini  10 olarak tanımladığımız değişkenin değerini artık 20 olarak değiştirdik

Bu operatörün önüne veya arkasına başka bir operatör gelmediği sürece başka bir numarası yoktur. Önüne veya arkasına gelen diğer operatörler'den bahsedicem az sabır.  :P

+


Artı (+) operatörü, pawn dilinde sadece sayısal değişkenlere değer eklemek için kullanılır (Diğer programlama dillerinde metin birleştirmede de kullanılır). Mevcut olan bir değişkene değer eklemek istediğimiz zaman bu operatörü kullanırız.

Örneğin

PAWN Kodu: Seç
new degiskenim = 10;
degiskenim = degiskenim + 10;

Bu örnekte, degiskenim isimli değişkenin değerine +10 daha ekleyerek tekrardan değişkene tanımlama yaptık. Sonuç olarak değişkenimizin değeri 20 olmuş oldu


-


Eksi (-) operatörü, Artı (+) operatörü gibi kullanımı aynıdır. Bu sefer değişkenin değerini arttırmak yerine, varolan değerini düşürmek için kullanırız
PAWN Kodu: Seç
new degiskenim = 10;
degiskenim = degiskenim - 10;

Örnekde görmüş olduğunuz gibi değeri 10 olan değişkenimiz'den -10 daha çıkartarak değişkenin değerini sıfıra eşitledik


/


Bölü (/) operatörü, matematik gibi sayısaları bölmeye yarar. bir değişkenin değerini istediğiniz bir sayıya bu operatör sayesinde gerçekleştirebilirsiniz.
PAWN Kodu: Seç

new sayi = 50;
sayi = sayi / 2; // Sonuc = 25




*


Çarpı (*) operatörü, pawn dilinde sayıları birbirine çarpmaya yarar. Ancak bazı programlama dillerinde bu operatör çarpma işlemi haricinde Pointer tanımlarında kullanılabilmektedir. Kullanımı anlaşılacağı üzere kolaydır.
PAWN Kodu: Seç

new sayi = 5;
sayi = sayi * 2;




--


Eksi eksi (--) operatörü, integer değişkenin'de bulunan değeri 1 düşür.
PAWN Kodu: Seç

new sayi = 100;

sayi--; // 100 den 1 düşürdü. Değişkenin değeri 99 oldu




++


Bu operatör ise değişkenin var olan değerini 1 arttırır
PAWN Kodu: Seç

new sayi = 99;

sayi++; // Değişkenin değerini 1 arttırdık. Yeni değeri 100 oldu

Devamı gelicek silmeyin  :D
Son düzenlenme: 04 Mart 2017, 18:31:10 alimsahy
Senior Software Engineer

Quintel

Gayet başarılı ! Teşekkürler, forumda kalmanızı isterim.


EvoturK

Yeni başlayanlar için güzel anlatım. Devamını bekleriz :)


ExO

Devamını Bekleriz :D

birileri demiş öldü şimdi yazsınlar kral geri döndü

Hwang

Anlatım başlangıç için yararlı olmuş. Konu için teşekkürler. Sabitlendi. :helal:


TheHunter

Anlarım güzel ama biraz daha basitleştirirmisin

Bazıları gelip krallık ilan etmiş....

Unutma sen kısa paçalı don ile gezerken, biz piyasada Tanrıydık, sen yokkende biz vardık, sen gittikten sonrada burada olacağız.

-TheVeKToRs

SHIFT

Güzel bir anlatım olmuş. Emeğine sağlık devamını bekliyorum :)


Toretto

Okunması gereken güzel bir yazı olmuş. Devamı gelirse süper olur! :helal:

Ücretli pawno, grafik istekleriniz için özel mesaj atınız.

Silver

Anlatım güzel olmuş. Emeğine sağlık :helal:

U Roleplay | root >> WEB

ByHgGlryz


-
SA-MP:
[MAP]Çete Mekanı (Basit Map) - [ADD]Wasted (Basit Pawn Kod)
-
SA-MP Server IP:   91.121.87.14:2214

Kaneki

Anlatım çok güzel olmuş, devamını bekliyoruz. :)


Xchatt

Alıntı yapılan: alimsahy - 03 Mart 2017, 15:45:04

Öncelikle şans eseri gördüm bu forumu. Kimin neyidir, nesidir en ufak fikrim yok. Baktım ki yeni forum katkım olsun dedim.  :şeytan:

Bu anlatımda sadece pawn değil, diğer programlama dillerinin mantığını kapsayan detaylı bir anlatım olacak.Bu anlatımı anlamanız için elimden geldiğince yalın bir dil kullanmaya çalışıcam. Eğer mantığı kaparsanız, diğer dillere çok rahat uyum sağlayabilirsiniz.

Öncelikle pawn nedir, ne deyildir ona bir göz atalım.



Pawn


Pawn aslında bir programlama dili değildir. Türkçe karşılığı eklenti anlamına gelen bir scripting dildir. Platform'dan bağımsız çalışabilir, microcontroller gibi devrelerin logic (mantık) programlamalarında kullanılabilir. Derlediğiniz tüm kodlar P-Code (bytecode) olarak derlenir. Ayrıca amx32.dll ile beraber C#, C, C++ vb. programlarınıza entegre ederek, programlarınızın dışarıdan 3. şahıslar tarafından yapılan scriptler ile genişletebilirsiniz (Örn: C# ile yapmış olduğunuz bir editör var ve pawn desteği eklediniz ve yayımladınız. Dışarıdan herhangi biri pawn ile editörünüz için plug-in yazabilir ve entegre ederbilir)


1: Syntax


Pawn syntax yapısı C diline benzer bir yapıya sahiptir. Bazı tanımlamalar haricin'de syntax yapısını C dilinden almaktadır.


2: Değişkenler & Veri Yapıları


Gelelim en civcivli bölüme. Bir kısır benim için ne ise, tüm programlama/scripting dilleri içinde değişkenler odur. Değişkenler olmadan, hiçbir programın işlevi olmaz. İşte bu yüzden değişkenleri bilmeniz ve hakim olmanız gerekmektedir.

Pawn dilinde bir değişken tanımlamak için new anahtar kelimesini kullanırız ve değişkenimize isim tanımlarız. Verdiğimiz değişken isimlerinin özel karakter veya rakamlarla başlamadığına çok dikkat edin. Çünkü hiç bir zaman değişken isimleri özel karakter veya rakamlarla başlamaz.

Pawn dilinde 4 farklı veri yapısı bulunur. Bunlar;


  • String

  • Integer

  • Float

  • Boolean



Bu veri türleri, bellekte tutmak istediğiniz verilerin türüdür. Değişkende sayısal bir verimi veya metinsel bir verimi tutmak istediğinizde kullanılır. Detaylı açıklayacak olursak

String


Metinsel/karaktersel verileri tutmanızı sağlar ve bellekte saklanır.

Integer


Sadece tam sayılar'dan oluşan sayısal verileri saklamanızı sağlar

Float


Ondalık sayısal verilerin saklanmasında kullanılır

Boolean


Sadece mantıksal verilerin saklanmasında kullanılır (true-false)


Şimdi değişkenleri ve veri yapılarını örneklerle bekiştirelim. Önce string veri yapısını tanıyalım. Bir değişkenin string değişken olduğunu tanımlamanız için değişken isminin sonuna [] taglarını eklemeniz yetecektir.
PAWN Kodu: Seç

new benimIsmim[] = "Alimşah Yıldırım";
new seninIsmin[32] = "İskende Tereyağlı Sos";


Şimdi yukarıda iki tane string değişken örneği verdik. Ancak tanımlamaları dikkat ederseniz farklı. Peki benimIsmim[] ile seninIsmin[32] değişkenleri arasındaki fark ne?

benimIsmim değişkeninde tutulacak maksimum karakter sayısı verilmedi. Bu sayede derleyici, scripti derlerken sadece bellekte 17 karakterlik bir yer ayıracak. Eğer tanımlamayı şu şekilde yapsaydım;

PAWN Kodu: Seç

new benimIsmim[32] = "Alimşah Yıldırım";

Bellekte boşu boşuna 15 karakterlik yer israfı yapıp, performansı düşürecektim. Şimdi gelelim seninIsmin değişkenine. Bu değişkende maksimum karakter limiti 32 olarak belirlenmiş. Yani gireceğiniz herhangi isim veya metin maksimum 32 karakter içermek zorunda. 32 karakterden fazlası girildiğinde derleyici tarafından hata alırsınız. Ayrıca şunu unutmayın. Her bir karakter bellekte 1 byte yer kaplamaktadır. Bir string değişkenin bellekte ayıracağı alanı şu formülle hesaplayabilirsiniz.

Ayrılan bölüm = 1 * maksimum limit;

Örn: Ayrılan bölüm = 1 * 32 = 32 byte

Bu yüzden dialoglarınız'da yazacak olan mesajlara limit koymak yerine dinamik yaparsanız, bellekte fazladan yer tutmaz ve performans'da artış görebilirsiniz.


Şimdi gelelim integer değişkenlere. Integer değişkenler sadece ve sadece tam sayılardan oluşan sayısal verileri saklamak için kullanılır (Örn: ...., -3, -2, -1, 0, 1, 2, 3,.....). new anahtar kelimesi ile değişken ismi tanımlamak yeterlidir

PAWN Kodu: Seç

new pozitifDeger = 10;
new negatifDeger = -10;


Float ondalık veriler için değiken isminin başına Float: tagını eklemeniz yeterlidir.
PAWN Kodu: Seç

new Float:ondalikVeri = 45.5;
new Float:ondalikVeri2 = 88.7658;


Gelelim son olarak boolean değişkenlere. Boolean değişkenler sadece true ve false mantıksal değerleri alırlar. Bir değişkenin boolean değişkeni olarak tanımlamak için başına bool: yazmanız yeterli olacaktırç
PAWN Kodu: Seç

new girisYaptimi = true;
new cikisYaptimi = false;


Değşkenlerin pawn'da tanımlamaları, tuttukları veriler bu şekildedir. Değişkenler üzerinde işlem yapmamız için operatörleri ve koşulları kullanırız


Koşullar & Operatörler


Değişkenlere değer atamalarında operatörler, değişkenlerin kontrollerinde koşullar kullanılır. Operatörler ve koşulları scriptin mantıklı işleyişinde kullanırız.

Operatörler ile değişkenler üzerinde aritmetik işlemler yapmamızın yanı sıra, koşullarda şartları belirleyici etken olarak kullanırız. Mesala bir değişkenin diğer değişkenden farklı olup olmadığı veya değişkenin mevcut değerinin kontrolü buna bir örnek olabilir. Bu bölümde ilk olarak operatörleri gösterip, ne işe yaradıklarını ne zaman kullanmamız gerektiğinin'den bahsedicem.


=


Eşittir (=) operatörü, bir değişkene değer ataması yapacağımız zaman kullandığımız bir operatördür. Bunun örneğini yukarıda bulunan Değişkenler & Veri Yapıları bölümün'de görebilirsiniz. Bu operatör sayesinde, değeri daha önceden girilmiş olan değişkenin değerini, yeni bir değişken oluşturmadan yeni değeri atayabilirsiniz.

Detaylı örnek:

PAWN Kodu: Seç

new degiskenim = 10; // 1. satır burası farz edelim ve varsayılan değerini 10 olarak atayalım
...
degiskenim = 20; // Burayıda 400. satır olarak farz edin. 1. satırda değerini  10 olarak tanımladığımız değişkenin değerini artık 20 olarak değiştirdik

Bu operatörün önüne veya arkasına başka bir operatör gelmediği sürece başka bir numarası yoktur. Önüne veya arkasına gelen diğer operatörler'den bahsedicem az sabır.  :P

+


Artı (+) operatörü, pawn dilinde sadece sayısal değişkenlere değer eklemek için kullanılır (Diğer programlama dillerinde metin birleştirmede de kullanılır). Mevcut olan bir değişkene değer eklemek istediğimiz zaman bu operatörü kullanırız.

Örneğin

PAWN Kodu: Seç
new degiskenim = 10;
degiskenim = degiskenim + 10;

Bu örnekte, degiskenim isimli değişkenin değerine +10 daha ekleyerek tekrardan değişkene tanımlama yaptık. Sonuç olarak değişkenimizin değeri 20 olmuş oldu


-


Eksi (-) operatörü, Artı (+) operatörü gibi kullanımı aynıdır. Bu sefer değişkenin değerini arttırmak yerine, varolan değerini düşürmek için kullanırız
PAWN Kodu: Seç
new degiskenim = 10;
degiskenim = degiskenim - 10;

Örnekde görmüş olduğunuz gibi değeri 10 olan değişkenimiz'den -10 daha çıkartarak değişkenin değerini sıfıra eşitledik


/


Bölü (/) operatörü, matematik gibi sayısaları bölmeye yarar. bir değişkenin değerini istediğiniz bir sayıya bu operatör sayesinde gerçekleştirebilirsiniz.
PAWN Kodu: Seç

new sayi = 50;
sayi = sayi / 2; // Sonuc = 25




*


Çarpı (*) operatörü, pawn dilinde sayıları birbirine çarpmaya yarar. Ancak bazı programlama dillerinde bu operatör çarpma işlemi haricinde Pointer tanımlarında kullanılabilmektedir. Kullanımı anlaşılacağı üzere kolaydır.
PAWN Kodu: Seç

new sayi = 5;
sayi = sayi * 2;




--


Eksi eksi (--) operatörü, integer değişkenin'de bulunan değeri 1 düşür.
PAWN Kodu: Seç

new sayi = 100;

sayi--; // 100 den 1 düşürdü. Değişkenin değeri 99 oldu




++


Bu operatör ise değişkenin var olan değerini 1 arttırır
PAWN Kodu: Seç

new sayi = 99;

sayi++; // Değişkenin değerini 1 arttırdık. Yeni değeri 100 oldu

Devamı gelicek silmeyin  :D


Gayet başarılı dostum devam ettirmen dileğiyle :)

Sa-Mp 2014-2020

Leture

Süper bir anlatım, anlamasam da  :D


LargeBoy

Yararlı devamı gelirse memnun olurum. :helal: :helal: :helal: :helal: :helal:


Creature

Yararlı konu ellerinize sağlık.