Variables

Değişken, bir veri parçasının depolandığı yerdir. Bir adı, değeri ve türü vardır. Örneğin, bu ifade ( bildirim olarak adlandırılır):

int pin = 13;

adı pin olan, değeri 13 olan ve türü int olan bir değişken oluşturur. Daha sonra programda, bu değişkene ismiyle başvurabilirsiniz, bu noktada değeri aranacak ve kullanılacaktır. Örneğin, bu ifadede:

pinMode(pin, OUTPUT);

pinMode () işlevine iletilecek pin (13) değeridir. Bu durumda, aslında bir değişken kullanmanıza gerek yoktur, bu ifade de aynı şekilde çalışır:

pinMode(13, OUTPUT);

Bu durumda bir değişkenin avantajı, pimin gerçek sayısını yalnızca bir kez belirtmeniz gerekir, ancak bunu birçok kez kullanabilirsiniz. Bu nedenle, daha sonra pin 13'ten pin 12'ye geçmeye karar verirseniz, koddaki sadece bir noktayı değiştirmeniz gerekir. Ayrıca, değişkenin önemini netleştirmek için açıklayıcı bir ad kullanabilirsiniz (örn. RGB LED'i kontrol eden bir program redPin, greenPin ve bluePin adı verilen değişkenlere sahip olabilir).

Değişkenin sayı gibi bir değere göre başka avantajları vardır. En önemlisi, (eşittir işaretiyle gösterilir) bir ödevi kullanarak bir değişkenin değerini değiştirebilir. Örneğin:

pin = 12;

değişkenin değerini 12 olarak değiştirir. Değişkenin türünü belirtmediğimize dikkat edin: atama tarafından değiştirilmez. Yani, değişkenin adı bir türle kalıcı olarak ilişkilidir; sadece değeri değişir. [1] Bir değişkeni değer atamadan önce bildirmeniz gerektiğini unutmayın. Yukarıdaki ifadeyi yukarıdaki ilk ifadeyi içermeyen bir programa eklerseniz, şöyle bir mesaj alırsınız: "error: pin bu kapsamda bildirilmedi".

Bir değişkeni diğerine atadığınızda, değerinin bir kopyasını oluşturursunuz ve bu kopyayı diğer değişkenle ilişkili bellekte depolarsınız. Birini değiştirmenin diğeri üzerinde hiçbir etkisi yoktur. Örneğin, sonra:

int pin = 13; int pin2 = pin; pin = 12;

sadece pim 12 değerine sahiptir; pim2 hala 13.

Merak ediyor olabilirsiniz, yukarıdaki hata mesajındaki "kapsam" kelimesi ne anlama geliyordu? Programınızın değişkenin kullanılabileceği kısmını ifade eder. Bu, beyan ettiğiniz yere göre belirlenir. Örneğin, programınızda herhangi bir yerde bir değişken kullanmak istiyorsanız, kodunuzun üst kısmında bildirebilirsiniz. Buna küresel değişken denir; İşte bir örnek:

int pin = 13; void setup() { pinMode(pin, OUTPUT); } void loop() { digitalWrite(pin, HIGH); }

Gördüğünüz gibi, pin hem setup () hem de loop () işlevlerinde kullanılır. Her iki işlev de aynı değişkene atıfta bulunur, böylece bir tanesini değiştirmek diğerinde sahip olduğu değeri etkiler:

int pin = 13; void setup() { pin = 12; pinMode(pin, OUTPUT); } void loop() { digitalWrite(pin, HIGH); }

Burada, loop () işlevinden çağrılan digitalWrite () işlevine 12 değeri verilecektir, çünkü bu, setup () işlevindeki değişkene atanan değerdir.

Tek bir işlevde yalnızca bir değişken kullanmanız gerekiyorsa, bunu orada bildirebilirsiniz, bu durumda kapsamı bu işlevle sınırlı olacaktır. Örneğin:

void setup() { int pin = 13; pinMode(pin, OUTPUT); digitalWrite(pin, HIGH); }

Bu durumda, değişken pim yalnızca setup () işlevinin içinde kullanılabilir. Böyle bir şey yapmaya çalışırsanız:

void loop() { digitalWrite(pin, LOW); // wrong: pin is not in scope here. }

öncekiyle aynı iletiyi alırsınız: "hata: 'pin' bu kapsamda bildirilmedi". Yani, programınızda bir yere sabitlenmiş olduğunuzu bildirmiş olsanız bile, onu kapsamının dışında bir yerde kullanmaya çalışıyorsunuz.

Neden tüm değişkenlerinizi küresel hale getirmeyeceğinizi merak ediyor olabilirsiniz? Sonuçta, nerede bir değişkene ihtiyacım olabileceğini bilmiyorsam, neden kapsamını tek bir işlevle sınırlamalıyım? Cevap, ona ne olduğunu bulmayı kolaylaştırabilmesidir. Bir değişken globalse, değeri kodun herhangi bir yerinde değiştirilebilir, yani değişkene ne olacağını bilmek için tüm programı anlamanız gerekir. Örneğin, değişkeninizin beklemediğiniz bir değeri varsa, değişkenin sınırlı bir kapsamı varsa değerin nereden geldiğini bulmak çok daha kolay olabilir.

[blok kapsamı] [değişkenlerin boyutu]

[1] Python gibi bazı dillerde, türler değişken adları ile değil değerlerle ilişkilidir ve bir değişkene herhangi bir türde değerler atayabilirsiniz. Buna dinamik yazım denir.