Çözüldü If ile else if komutları arasındaki fark nedir?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

Zurich

Kilopat
Katılım
14 Eylül 2018
Mesajlar
1.872
Çözümler
7
Bu ikisi arasındaki farkı anlayamadım. İf'ten sonra if kullansam ve If'ten sonra else if kullansam ne fark olur?
Not: Arduino öğreniyorum.
 
Çözüm
Else if bir bloktur. Buradaki şartlardan biri karşılanınca diğer durumlara bakılmaz.
Alt alta if yazarsanız biri karşılansa bile hepsine bakılır.
If'ten sonra tekrar if kullanırsan birinci koşul sağlansa da sağlanmasa da çalışır ama else if kullanırsan sadece ilk koşul sağlanmadığında çalışır ve sonraki else if'ler ve else çalışmaz.

Eğer yoğun if blokları kullanımı olacaksa switch-case yapısına bakmanı öneririm. Çok fazla else if yazmak kodu karıştırıyor.
 
Else'nin aksi halde gibi bir anlamı var. Mesela if açıyorsun ondan sonrada else if açıyorsun if çalışırsa program else if'e bakmaz çünkü o else if'e,if'in olmadığı durumlarda bakılır. Else if yerine tamamen if kullanırsan bir if sağlansada diğer hepsinede bakar sağlayanların içindeki komutu yapar. İyi anlatamamış olabilirim.
 
Aslında aynı şey. Else içine if yazmışsın gibi. Çoğu dilde de arkada böyle çalışıyor. Ama else if şeklinde yazarsan ilk şartı sağladığında diğerine girmezken iki adet if şeklinde yazarsan her türlü ikincinin kontrlünü yapar. Gereksiz işlem yükü.
 
@Lord Raiden @Berkay Davas @iAlp03

Kod:
int kled=2,mled=3,kbuton=5,mbuton=6;

void setup() {
pinMode(kled,OUTPUT);
pinMode(mled,OUTPUT);

pinMode(kbuton,INPUT);
pinMode(mbuton,INPUT);

}

void loop() {
if(digitalRead(kbuton)==HIGH)
{
 digitalWrite(kled,HIGH);
}
if(digitalRead(mbuton)==HIGH)
{
 digitalWrite(mled,1);
}
else.
{
 digitalWrite(mled,0);
 digitalWrite(kled,0);

}
}

Peki bu kodda maviye ve kırmızıya basılı tutup kırmızı tuşu bırakınca (mavi tuş hala basılı.)İkisi hala yanmaya devam ediyor. Mavi butonu bırakınca ikisi de sönüyor. Bunun nedeni nedir? Neden kırmızı butonu bırakınca hala yanıyor?
 
@Zurich olması gereken;

C++:
int kled=2,mled=3,kbuton=5,mbuton=6;

void setup() {
    pinMode(kled,OUTPUT);
    pinMode(mled,OUTPUT);

    pinMode(kbuton,INPUT);
    pinMode(mbuton,INPUT);
}

void loop() {
    if (digitalRead(kbuton)==HIGH) {
         digitalWrite(kled,HIGH);
    } else {
         digitalWrite(kled,0);    
    }
 
    if (digitalRead(mbuton)==HIGH) {
         digitalWrite(mled,1);
    } else {
         digitalWrite(mled,0);
    }
}
 

Geri
Yukarı