Değişken ve atama
x ← x + 1 matematikte saçma, algoritmada en doğal şey.
Değişken bir kutu, atama o kutuya yeni değer koymaktır. Sözde kodda ok (←) kullanırız: toplam ← toplam + sayı. Bu bir denklem değil, bir emir: "toplamın şu anki değerine sayıyı ekle, sonucu yine toplam kutusuna koy."
Takas: en klasik tuzak
İki kutunun içeriğini yer değiştirmek istiyorsun: a ← b yazınca a'nın eski değeri gider; b'ye artık ne koyacaksın? Çözüm üçüncü bir kutu:
Programlamada değişkenlerin o anki değerini takip etmek için izleme tablosu tutarız. Aşağıdaki adım adım izlemeye bak; her satırda hangi kutu değişiyor?
flowchart TD A([Başla]) --> B[a = 3, b = 7] B --> C[gecici = a] C --> D[a = b] D --> E[b = gecici] E --> F[/a ve b'yi yaz/] F --> G([Bitir])
1a ← 32b ← 73gecici ← a4a ← b5b ← gecici6YAZ a, b
1int a = 3, b = 7;2int gecici = a;3a = b;4b = gecici;5Console.WriteLine(a + " " + b);
Kutuların her adımdaki değeri. Kağıtta izleme tablosu tutarken tam bunu yaparsın.
| # | satır | a | b | gecici | not |
|---|---|---|---|---|---|
| 1 | a ← 3, b ← 7 | 3 | 7 | — | Başlangıç |
| 2 | gecici ← a | 3 | 7 | 3 | a'nın kopyası saklandı |
| 3 | a ← b | 7 | 7 | 3 | a'nın eski değeri gitti; kopyası gecici'de |
| 4 | b ← gecici | 7 | 3 | 3 | Takas tamam |
Üçüncü kutu kullanmadan takas yapmak mümkün mü? a ← a + b, b ← a − b, a ← a − b adımlarını a=3, b=7 için izleme tablosuyla takip et. Çalışıyor mu? Neden?