Fonksiyonlar, programlarda bireysel bölümlerin görevlerini yerine getirmek için hazırlanmış yapılardır. Bir fonksiyonun oluşturulma amacı, aynı eylemin farklı bölümlerde tekrar kullanılma amacıdır. Fonksiyonlar yardımı ile kod tekrarı ve karmaşasından uzaklaşılmış oluruz.
Programlarda fonksiyonları kullanmanın bazı avantajları vardır.-
Fonksiyonlar programcının düzenli kalmasına yardımcı olur. Çoğu zaman bu programın kavramsallaştırılmasına yardımcı olur.
Fonksiyonlar bir eylemi tek bir yerde kodlar, böylece fonksiyonun sadece bir kez düşünülme ve doğru şekilde kodlanması gerekir.
Eğer kodun değiştirilmesi gerekiyorsa, modifikasyondaki hata olasılığını da azaltır.
Fonksiyonlar, tüm sketchleri daha küçük ve daha kompakt hale getirir, çünkü kod bölümleri birçok kez yeniden kullanılır.
Diğer programlardaki kodları modüler hale getirerek yeniden kullanmayı kolaylaştırır ve işlevlerin kullanımı genellikle kodu daha okunabilir hale getirir.
Bakınız: Temel Arduino Fonksiyonları
Bir Arduino çiziminde veya bir programda (setup() ve loop()) iki gerekli fonksiyon vardır. Bu fonksiyonların dışında fonksiyonlarımız oluşturmamız gerekir.
Fonksiyon tanımlama
Bir fonksiyon bütün fonksiyonların dışında tanımlanmak zorundadır. loop fonksiyonundan önce yada sonra tanımlanmasında her hangi bir sorun olmaz. loop fonksiyonundan sonra tanımlanacaksa etiketinin fonksiyonların üzerinde yazılması gerekir.
Tanımlanan fonksiyonda bir dönüş tipi, bir tane isim ve fonksiyon gövdesi olmak zorundadır. Aşağıda bir fonksiyonun yapısı gösterilmiştir.
Fonksiyon Yapısı:
1 2 3 4 5 6 | Donus_degeri fonk_adi(param1,param2,...) { ifadeler; //fonksiyon gövdesi } |
donus_degeri : Bir fonksiyon, C dilindeki her hangi bir veri türünü döndürebilir.
fonk_adi : Değişken tanımlama kurallarına uygun olarak bir fonksiyon adı yazılmalıdır.
(param1,param2,…) : Fonksiyonun gövdesine dışarıdan değer göndermek için parametreler(Değişken tanımlama kurallarına uygun olarak) tanımlanır. Her yeni parametre öncekine virgül ile eklenir.
{ ….. } : Fonksiyonun gövde kısmıdır. Fonksiyonun görevini yerine getireceği kodlar bu bölüm içinde yazılır.
Örnek 1:
1 2 3 4 5 6 7 8 | void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); } |
void: Her hangi bir değer döndürmediğini ifade eden dönüş tipi.
loop: fonksiyon adı
{ ….} :arasındaki kodlar foksiyonun yapacağı görev
Örnek 2:
Durum 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int topla (int a, int b){ int c = 0; c = a+b; return c; } void setup () { } void loop () { int sonuc = 0 ; sonuc = topla (50,60) ; } |
Durum 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | imt topla(int,int); //etiketi yazdık. programın ilerleyen bir bölümünde bu şartlarda bir fonksiyon olduğunu ifade ediyor. void setup () { } void loop () { int sonuc = 0 ; sonuc = topla (50,60) ; } int topla (int a, int b){ int c = 0; c = a+b; return c; } |
Kullanıcı Tanımlı Fonksiyon Türleri
Yukarıdaki tanımlama en doğru tanımlama kuralı olmasına rağmen, fonksiyon kavramına yeni olanlar için fonksiyonları 4 ana gruba ayırabiliriz.
Parametresi ve geriye dönüş değeri olmayan fonksiyonlar
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int sayac = 0; void setup() { Serial.begin(9600); } void loop() { arttir(); delay(1000); } void arttir(){ sayac++; Serial.println(sayac); } |
Çıktı:
Parametre Alan Geriye Değer Döndürmeyen Fonksiyon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | int sayac = 0; void setup() { Serial.begin(9600); } void loop() { arttir(10); delay(1000); } void arttir(int baslangic){ Serial.println(baslangic + sayac++); } |
Çıktı:
Parametre Almayan, Geriye Değer Döndüren Fonksiyon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | int sayac = 0; void setup() { Serial.begin(9600); } void loop() { int sonuc = arttir(); Serial.println(sonuc); delay(1000); } int arttir(){ return sayac++; } |
Çıktı:
Parametre Alan, Geriye Değer Döndüren Fonksiyon
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | void setup() { Serial.begin(9600); } void loop() { int sonuc = topla(10,20); Serial.println(sonuc); delay(1000); } int topla(int s1, int s2){ return s1 + s2; } |
Çıktı:
Add Comment