İf-else, swich-case, do-while ne zaman nerede hangisi?

Kodla Büyü

hastasıyız dede

Hiperaktif Üye
Hiperaktif
Mesajlar
2,794
ne zaman nerede hangisini kullanacağımı kestiremiyorum biraz somutlaştırarak anlatabilecek var mı?
mesela scratch taki döngüler bunlardan hangileri kullanarak yapılabilir, bir kurala bağlanabilinir mi?

bunlar hangi döngülerle oluşturulur bir kuralı var mıdır?
 

Ekli dosyalar

  • 1.JPG
    1.JPG
    9.5 KB · Görüntüleme: 887
  • 2.JPG
    2.JPG
    9.1 KB · Görüntüleme: 886
  • 3.JPG
    3.JPG
    10.6 KB · Görüntüleme: 886
  • 4.JPG
    4.JPG
    9.5 KB · Görüntüleme: 885
  • 5.JPG
    5.JPG
    11.1 KB · Görüntüleme: 885
Daha önce Scratch kullanmadım, bu nedenle tahmini yazıyorum. Yanlış yazdığım yerler varsa arkadaşlar düzelteceklerdir.

  • 1 nolu resim WHILE,
  • 2 nolu resim IF,
  • 3 nolu resim IF ELSE,
  • 4 nolu resim hakkında bilgim yok,
  • 5 nolu resim DO WHILE için kullanılıyor sanırım.

IF ELSE ve SWITCH CASE farkı şu şekilde anlatılabilir:
  • IF ELSE de birden fazla değişkenin değerini kontrol edebilirsiniz.
    Örn 1: Sıcaklık 15 derece ise a, değilse ve hava yağmurlu ise b, değilse c gibi
    Örn 2: Öğrencinin devamsızlığı 20 günden fazla ise "Devamsızlıktan Kaldı", değilse öğrencinin notu 45 den düşük ise "Geçer not alamadı", değilse "Başarılı" gibi
  • SWITCH CASE de tek bir değişkenin farklı değerlerini kontrol edersiniz
    Örn 1: Hava açık ise a, yağmurlu ise b, kar var ise c gibi
    Örn 2: Öğrencinin notu 5 ise başarılı, 4 ise başarılı, ... , 1 ise başarısız gibi

DO WHILE ile WHILE dögülerinin farkı ise:
  • DO WHILE döngüsü önce kodu çalıştırıp sonra koşula baktığı için koşulunuz yanlış olsa bile bir defa çalışır. Yani en az bir defa yapılması gereken işler için DO WHILE döngüsü kullanmanız gerekir.
  • WHILE döngüsü ilk önce koşula baktığı için koşulunuz yanlış ise çalışmaz.
 
türkçe olunca sıkıntı çıkmış :D halilturkoglu hocamın dediği gibi 4 numara yeni wait until
 
Hbv hocam wait until diye bir döngüye hiç rastlamadım, biraz açıklayabilirmisin bu döngünün yapısını, kullanılışını?
 
Hocam wait until döngüü yok. Scratch'da o da while döngüsü.

orada dögü koşulunun deili alınır.

Mesela fare tıklanıca ya kadar bekle dediğinizde.

while ((fareye tıklandı mı?)!);

burada fare tıklanmadığı sürece koşul doğru olur çünkü değilini alıyoruz. Ama fare tıklanınca değilini aldığımız için false olur döngüden çıkar alttaki kod çalışır
 
@teknogençlik hocam;
arduino ile bir garaj kapısı projesi planlıyorum, proje şöyle; butona basınca buton değeri 1 olacak, tekrar basınca 2 olacak.
buton 1 olunca motor 1sn boyunca sağa dönecek ve buton 2 olana kadar bekleyecek, buton 2 olunca 1sn sola dönecek ve buton 1 olana kadar bekleyecek.
burada olana kadar bekle kullanmak gerekiyor, başka türlü olmuyor.
verdiğin örneğe göre kodları oluşturdum bir bakabilirmisin doğru olmuş mu?
int buton;
void setup() {
// put your setup code here, to run once:
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(2, INPUT);
buton=0;
}

void loop() {
// put your main code here, to run repeatedly:

digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);
delay(10);

while(!(digitalRead(2)==HIGH));
buton=1;
if(buton==1){
digitalWrite(7, 0);
digitalWrite(8, 1);
analogWrite(10, 200);
delay(1000);
digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);

delay(10);
}
while(!(digitalRead(2)==HIGH));
buton=2;
if(buton==2){
digitalWrite(7, 1);
digitalWrite(8, 0);
analogWrite(10, 200);
delay(1000);
digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);
delay(10);

}

}
 
hastasıyız dede' Alıntı:
int buton,sayac;
void setup() {
// put your setup code here, to run once:
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(2, INPUT);
buton=1;

}

void loop() {

if (digitalRead(2)==HIGH)
{
buton=buton+1;
sayac=1;
while(digitalRead(2)==HIGH);
}



if((buton%2) == 0 && sayac==1)
{
digitalWrite(7, 0);
digitalWrite(8, 1);
analogWrite(10, 200);
delay(1000);
digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);
sayac=0;
delay(10);
}

if((buton%2) == 1 && sayac==1)
{
digitalWrite(7, 1);
digitalWrite(8, 0);
analogWrite(10, 200);
delay(1000);
digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);
sayac=0;
delay(10);

}

}
 
@teknogençlik yardımın için teşekkürler az önce aşağıdaki kodlarla denememi yaptım sıkıntısız çalıştı, yardımın için çok teşekkür ediyorum, senin verdiğin kodlardaki %2 yi anlamadım o kısmı biraz açabilirmisin.
void setup() {
// put your setup code here, to run once:
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(10, OUTPUT);
pinMode(2, INPUT);

}

void loop() {
// put your main code here, to run repeatedly:

digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);
delay(10);

while(!(digitalRead(2)==HIGH));


digitalWrite(7, 0);
digitalWrite(8, 1);
analogWrite(10, 250);
delay(450);
digitalWrite(7, 0);
digitalWrite(8, 0);
analogWrite(10, 0);

delay(10);

while(!(digitalRead(2)==HIGH));


digitalWrite(7, 1);
digitalWrite(8, 0);
analogWrite(10, 250);
delay(320);
 
BBNET
Geri
Üst