Kontrol Program Pemilihan dengan Pernyataan "SWITCH"

Pernyataan atau statement ‘switch’ digunakan untuk melakukan pemilihan terhadap ekspresi atau kondisi yang memiliki nilai–nilai konstan. Oleh karena itu, ekspresi yang didefinisikan harus menghasilkan nilai yang bertipe bilangan bulat atau karakter. Untuk mendefinisikan nilai–nilai konstan tersebut adalah dengan menggunakan kata kunci ‘case’. Hal yang perlu diperhatikan juga adalah kita harus menambahkan statement ‘break’ pada setiap nilai yang kita definisikan. Kata kunci ‘break’ digunakan untuk keluar dari pernyataan ‘switch’. Perhatikan bentuk umum dari statement ‘switch’ berikut ini. 


switch (ekspresi)
{
 case konstan-1: pernyataan-1;break;
 case konstan-2:
   {
     pernyataan-2a;
     pernyataan-2b;
     ………
     ………
     pernyataan-2?;
     break;
   }
 case konstan-2: pernyataan-3;break;
 case konstan-4: pernyataan-4;break;
 default : pernyataan_default;break;
}

Kata kunci ‘default’ di atas berguna untuk menyimpan statement alternatif, yang akan dieksekusi apabila semua nilai yang didefinisikan tidak ada yang sesuai dengan ekspresi yang ada. Pernyataan alternatif ini keberadaannya merupakan pilihan (opsional) saja, sehingga boleh ada dan boleh juga tidak ada. Berikut adalah contoh program yang menggunakan statement ‘switch’. 

Contoh-1: 

switch(PINC) 
case 0xDE : PORTB = 0x0F; break; 
case 0xCB : PORTB = 0xF0; break; 
default : PORTB = 0x00;break; 

Pernyataan program diatas berarti membaca PORTC, kemudian datanya (PINC) akan dicocokan dengan nilai ‘case’. Jika PINC bernilai 0xDE maka data nilai 0x0F akan dikeluarkan ke PORTB kemudian program keluar dari pernyataan ‘switch’ akan tetapi jika PINC bernilai 0xCB maka data nilai 0xF0 akan dikeluarkan ke PORTB kemudian program keluar dari pernyataan ‘switch’, namun apabila PINC tidak bernilai 0xDE atau 0xCB maka data nilai 0x00 yang akan dikeluarkan ke PORTB kemudian program keluar dari pernyataan ‘switch’. 

Contoh-2: 

void baca_sensor() 
 unsigned char sensor; 
 sensor = PINA; 
 PINA = 0b11111111;
 switch(sensor) 
 {
  case 0b11100111: maju(); break;                
  case 0b11100011: kanan_dikit(); break;     
  case 0b11110001: kanan_banyak(); break;    
  case 0b11100001: kanan_banyak1(); break;   
  case 0b11111000: kanan_banyak2(); break;   
  case 0b11110000: kanan_banting(); break;  
  case 0b11000111: kiri_dikit(); break;      
  case 0b10001111: kiri_banyak(); break;     
  case 0b00011111: kiri_banyak2(); break;    
  case 0b00001111: kiri_banting(); break;    
  case 0b00000000: ada_garis(); break;       
  case 0b11000011: cabang(); break;          
  case 0b11111111: henti(); break;             
 } 

Contoh program ke-2 diatas adalah membaca nilai data sensor 8-bit yang dipasang pada PORTA. Apabila nilai data pembacaan sensor (PINA) sama atau sebanding dengan data yang kita tentukan, maka program akan mengeksekusi sub-sub program yang lain, yaitu sepeti sub-program maju(), kanan_dikit(), kiri_dikit, henti(), dan sebagainya.




Share on Google Plus

About Robotics University

    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment