Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

Senin, 31 Desember 2012

[Part 3] Belajar dasar bahasa GCC - Kondisi Percabangan dan Pengulangan


Setiap bahasa pemrograman memiliki suatu proses yang dinamakan "conditonal statement". Yang dimaksud sebagai contional statement adalah percabangan dimana terdapat beberapa pilihan jalannya program sesuai dengan kondisi yang terjadi.
















Sementara itu pengulangan atau looping adalah proses pengulangan dari suatu perintah dimana bisa diberikan sebuah atau lebih kondisi yang menyebabkan pengulangan atau looping akan berhenti. Secara flowchart dapat digambarkan seperti berikut:

for.gif (383×402)


Kondisi Percabangan


Dalam bahasa C terdapat beberapa kondisi percabangan yang sering kita temui. Kita akan bahas satu persatu dengan contoh-contoh yang sering dipakai pada project di blog ini.

IF



if(kondisi == 1)
{
  //script 1

}

else if(kondisi == 3 || kondisi == 4)
{
  //script 2

}
 else if(kondisi <= 10 && kondisi >5)
{
   //script 3

}

else
 {   

 //script kondisi terakhir

}



Ada yang perlu diperhatikan pada percabangan yaitu selalu ada kondisi pembanding. Kondisi pembanding yang terdapat pada bahasa C adalah:


Pembanding sederhana:

==         Sama dengan

!=         Tidak sama dengan

<           Kurang dari

>           Lebih besar dari

<=         Kurang dari atau sama dengan

>=         Lebih besar dari atau sama dengan


Pembanding logika :

Hal ini dapat menggabungkan pembanding untuk mendapatkan logika yang lebih kompleks

&&         Dan (and)

||             Atau (or)



secara umum proses pencabangan IF .. ELSE  atau   IF .... ELSE IF ....ELSE membandingkan satu kondisi dengan kondisi yang lain , dan dapat juga menggabungkannya dengan tambahan pembanding logika. Untuk pencabangan IF .... ELSE IF ...dst .. yang terdiri dari banyak kondisi ELSE IF maka pencabangan akan menjalankan perintah pada kondisi yang benar kemudian mengabaikan yang lainnya. Perlu diingat jika eksekusi dari pencabangan mengikuti urutan atas ke bawah sehingga penempatan dari statement kondisi sangat penting.


SWITCH

Pola pencabangan yang lain adalah metode switch case seperti pada contoh berikut :


ISR(USART_RX_vect)

{ 

 char databyte;

 databyte = UDR; 



     switch (databyte)       

  {
     

    case 0xD : {  

             kirim_text(menu) ;

              break; }

    case '1' : {  

                     PORTB ^=(1<<0);

                     break; }

    case '2' : {

            
             PORTB ^=(1<<1);


                break; }

    default :{   
              PORTB |=(1<<1);
              break;}
  }  

}

Ketika mendefinisikan ekspresi kondisi yang hasilnya akan mengarah pada pelaksanaan program yang spesifik dan umumnya berjumlah banyak maka dapat menggunakan "switch".  Hasil yang berbeda tercantum dalam tiap tubuh "case" dari pernyataan switch dan setiap case memiliki eksekusi sendiri. Tubuh pernyataan switch dibatasi dari pembukaan ke penutupan kurung  kurawal: "{"   "}" dan jika memerlukan eksekusi tunggal maka diberikan perintah terminasi "break".  Sintaks dari kondisi switch seperti berikut :


switch(Expression)
{
    case Choice1:
        Statement1;
    case Choice2:
        Statement2;
    case Choice-n:
        Statement-n;
}






PENGULANGAN / LOOPING 


Pengulangan membantu program untuk menghemat penulisan pada urutan syntaxnya dengan memberikan kondisi keluar tertentu. Loop yang paling dasar adalah for(;;), yang memiliki 3 buah isian didalamnya berupa "kondisi awal" ; "kondisi keluar" ; "proses update" ; . Jika for tanpa isian seperti contoh for ( ; ; ) maka akan menciptakan looping tidak berhingga yang tak akan pernah selesai.


void proses (void) 

{
int a;


for(a=0; a < 10 ; a++) 
   {
      PORTB = a;
      PORTC = (10 - a) ;
   }

}


script diatas memiliki penjelasan bahwa nilia a berawal pada angka 0, akan diulang terus bila nilai a lebih kecil dari 10  sedangkan kondisi update nilai a ditambah 1 tiap pengulangan. Jadi nilai a bermula dari 0 diteruskan menuju 1,2,3,4,5,6,7,8,9  kemudian pada saat nilai a mencapai nilai 10 maka loop akan  selesai.


Jenis looping yang lain memiliki pola yang sama yaitu while(condition) {  }  dan do { } while(condition). Kondisi keluar dari loop ditentukan pada awal atau akhir namun memiliki pola yang sama yaitu kondisi awal dan akhir harus dirubah berdasarkan pengulangan atau kondisi luar ,seperti contoh berikut :




int a;
a=0;
while(a < 10)
{
  PORTB=a;
  PORTC=(10-a);

   a++;
}
a=0;


do
{
PORTB=a;
a++;
}
while(a <10)


while(bit_is_set(PIND, PIND3) )
{

PORTB|=_BV(PB3);
 
}


Ingat jika kondisi dari variabel harus di inisialisasikan terlebih dahulu sehingga tidak menimbulkan kesalahan dan warning saat dicompile. Contoh yang terakhir menunjukkan bahwa kondisi looping akan berhenti jika ada perubahan nilai dari luar , dalam hal ini nilai logika biner dari port microcontroller PIND3 .


SELAMAT BELAJAR


Share:

0 komentar:

Posting Komentar

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (75) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika