Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: emachines - 19 Mayıs 2011, 11:36:04

Başlık: C'de if-else if-else deyimi hakkında
Gönderen: emachines - 19 Mayıs 2011, 11:36:04
Merhaba arkadaşlar. Şöyle bir sorum var:

Bit değişkenleri olan a0,a1,a2,...a7 olarak adlandırılmış , bit olarak tanımlı 8 değişkenin 1 ya da 0 olma durumlarına göre "sonuc" adında bir değişkene
değerler yüklemek istiyorum.
Fakat bu değerlendirmede şöyle bir kısıtlama var: a0'dan test etmeye başlanacak ve ilk 1 yakalandığında kontrol sona erecek, sonraki bit değişkenler kontrol edilmeyecek.
Şu şekilde yaptım:


       if(a0) sonuc=1;
else if(a1) sonuc=2;
else if(a2) sonuc=3;
else if(a3) sonuc=4;
else if(a4) sonuc= 5;
else if(a5) sonuc=6,
else if(a6) sonuc=7;
else if(a7) sonuc=8;


Bu ifade şekli doğru mudur? Örneğin a0 ve a1==0 ise, a2==1 ise, sonuc değişkenine 3 değeri yüklenecek.
peki a4 de 1 ise, sonuc değişkenine 5 yüklenir mi,yoksa if-else if değerlendirmesi oradan itibaren sonlanır mı?

Bu arada if-else if'ten sonra "else" kullanılmadı çünkü o kısımda, tüm bitlerin 0 olması durumunda kod, sonuc'a değer yüklemeden sürmeli, yani bu kısmı pas geçmeli.

C'de tecrübeli arkadaşlardan yardım bekliyorum.Şimdiden teşekkür ederim.
Başlık: Ynt: C'de if-else if-else deyimi hakkında
Gönderen: JKramer - 19 Mayıs 2011, 12:38:36
a2 (daha doğrusu a4 öncesinde herhangi biri) 1 olduğu sürece hiçbir zaman a4 şartını kontrol etmeyecek. Bu şekilde istediğiniz gibi yani.
Başlık: Ynt: C'de if-else if-else deyimi hakkında
Gönderen: vitruvius - 19 Mayıs 2011, 14:30:50
Break komutu kullanarak döngüden çıkabilirsiniz. Tabi break komutu kullanmanız için switch, for yada while döngüsüne girmeniz gerekir. Şartları a0=1 mi diye kontrol edip eşit bulursanız sonuc değişkenini atayıp break ile çıkarsınız ve program alt satıra inmez.

Basit bir şekilde textboxlar içindeki sayılar 1 mi değil mi diye bir kod yazıp sonuc değişkenini label'a yazdırdım. a0, a1... değişkenlerini siz nerden alıyorsunuz bilemediğim için ben textboxtan aldım. Aynı mantıkta kodunuzu geliştirebilirsiniz. İlk iki bölümü kopyalıyorum:

for (i = 0; i < 10; i++)
            {
                if (a0 == 1)
                {
                    sonuc = 0;
                    break;
                }
                else if (a1 == 1)
                {
                    sonuc = 1;
                    break;
                }
}
label1.Text = sonuc.ToString();


Takıldığınız yerde tekrar sorarsınız. İyi çalışmalar.
Başlık: Ynt: C'de if-else if-else deyimi hakkında
Gönderen: gyb elektronik - 02 Ekim 2011, 18:33:06
Aslında C de "else if" diye bir kalıp yoktur. Ne demek istediğimi aşağıdaki kodları inceleyerek anlayabilirsiniz;


if (durum1) sonuc = 1;
else if (durum2) sonuc = 2;
else if (durum3) sonuc = 3;


if (durum1)
     sonuc = 1;
else
     if (durum2)
          sonuc = 2;
     else
          if (durum3)
               sonuc = 3;

ve bir de parantezleri eklersek;

if (durum1) {
     sonuc = 1;
} else {
     if (durum2) {
          sonuc = 2;
     } else {
          if (durum3) {
               sonuc = 3;
          }
     }
}


Artık "else if" in sonunda "else" olmuş mu olmamış mı farketmediğini görmüşsünüzdür.
Başlık: Ynt: C'de if-else if-else deyimi hakkında
Gönderen: emachines - 20 Aralık 2011, 01:09:13
Arkadaşlar,   If-else if'li şekliyle kod istediğim gibi çalıştı.
Sn gyb elektronik,  sizin bahsettiğiniz şekilde (else if kullanmadan) (sanırım standart c ile) bunu gerçekleştirmek istesek, ne gibi ifadeler kullanmalıyız?
Başlık: Ynt: C'de if-else if-else deyimi hakkında
Gönderen: bocek - 20 Aralık 2011, 11:40:05
şöyle de olur:

sonuc = a0 ? 1 : a1 ? 2 : a2 ? 3 : a3 ? 4 : a4 ? 5 : a5 ? 6 : a6 ? 7 : a7 ? 8 : sonuc;
Başlık: Ynt: C'de if-else if-else deyimi hakkında
Gönderen: muhittin_kaplan - 20 Aralık 2011, 20:53:42
basic de select case
c de swicth i araştırınız ?