Döngüler
Döngüler, belirli bir koşul sağlandığı sürece kod bloklarının tekrar tekrar çalıştırılmasını sağlar. Solidity'de üç ana döngü türü vardır: for
, while
, ve do-while
döngüleri. Her biri farklı durumlarda kullanılır ve belirli avantajlar sunar.
1. For Döngüsü
For
döngüsü, genellikle belirli bir sayıda tekrar yapmak için kullanılır. Genellikle bir sayaç değişkeni içerir ve döngü bu değişkenin belirli bir aralıkta olup olmadığını kontrol eder.
Syntax
for (initialization; condition; update) {
// Döngü bloğu
}
Örnek
function sum(uint256 _n) public pure returns (uint256) {
uint256 total = 0;
for (uint256 i = 1; i <= _n; i++) {
total += i;
}
return total;
}
Bu örnekte, sum
fonksiyonu 1'den _n
'e kadar olan sayıların toplamını hesaplar. for
döngüsü i
değişkenini 1'den başlayarak _n
'e kadar artırır ve her adımda toplamı günceller.
2. While Döngüsü
While
döngüsü, belirli bir koşul sağlandığı sürece kod bloğunu çalıştırır. Koşulun başta doğru olması gerekir, aksi takdirde döngü hiç çalışmayabilir.
Syntax
while (condition) {
// Döngü bloğu
}
Örnek
function decrement(uint256 _n) public pure returns (uint256) {
uint256 count = _n;
while (count > 0) {
count--;
}
return count;
}
Bu örnekte, decrement
fonksiyonu _n
değerinden başlar ve sıfıra kadar azaltır. while
döngüsü, count
sıfırdan büyük olduğu sürece çalışır ve her adımda count
değişkenini bir azaltır.
3. Do-While Döngüsü
Do-While
döngüsü, kod bloğunu en az bir kez çalıştırır ve ardından koşulu kontrol eder. Koşul doğru olduğu sürece döngü devam eder.
Syntax
do {
// Döngü bloğu
} while (condition);
Örnek
function increment(uint256 _n) public pure returns (uint256) {
uint256 count = _n;
do {
count++;
} while (count < 10);
return count;
}
Bu örnekte, increment
fonksiyonu _n
değerinden başlayarak 10'a kadar artırır. do-while
döngüsü, count
değeri 10'dan küçük olduğu sürece çalışır ve her adımda count
değişkenini bir artırır.
Örnek Uygulama
Aşağıda, bir dizi üzerinde iterasyon yaparak her bir öğeyi işleyen bir kontrat örneği bulunmaktadır:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract LoopExample {
uint256[] public numbers;
function addNumbers(uint256[] memory _numbers) public {
for (uint256 i = 0; i < _numbers.length; i++) {
numbers.push(_numbers[i]);
}
}
function sumNumbers() public view returns (uint256) {
uint256 total = 0;
for (uint256 i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
}
}
Bu kontratta:
addNumbers
fonksiyonu, verilen bir dizi sayıyınumbers
dizisine ekler.sumNumbers
fonksiyonu,numbers
dizisindeki tüm sayıları toplar.
Last updated