Sabtu, 26 Desember 2015

Teknik Pemrograman Part IV - Matematika-ria Basic Perhitungan

 

 

 

Apa Yang Akan Dibahas


   Banyak hal berhubungan dengan bilangan atau matematika yang berguna untuk membuat aplikasi berbasis mikrokontroler. Banyak hal menarik yang melibatkan bilangan dan matematika. Sambil jalan, anda akan menemukan banyak hal yang perlu kita akrabi tentang bilangan dan cara memanipulasinya. Pada tutorial ini akan dibahas operasi metematika yang mencakup penggunaan operator matematika kali bagi kurang tambah, prioritas operator dan konversi nilai int (bilangan bulat) menjadi nilai float (bilangan desimal), sedangkan penggunaan fungsi-fungsi yang berhubungan dengan trigonometri dan matematika serta pembangkitan bilangan acak akan dibahas pada tutorial selanjutnya.



"KALBAGIKURTAMBA"


  Wah apa maksud judul diatas? mungkin atok salah ketik? hee. Tenang-tenang, maksud judul diatas tidak lain adalah operasi perkalian, pembagian, pengurangan dan penambahan. Operasi seperti yang disebutkan diatas biasa dinamakan operator aritmetika. Berikut operator-operator aritmetika yang dapat digunakan



OperatorKeterangan
+Operator Penjumlahan

Contoh : 1 + 2 = 3
              1 + 2.5 = 3.5
-Operator Pengurangan

Contoh : 5 - 1 = 4
              10 - 9 = 1
*Operator Perkalian

Contoh : 2*5 = 10
              6*7 = 42
/Operator Pembagian

Contoh : 14/2 = 7
              6/3 = 2
%Operator Modulus atau sisa pembagian

Contoh : 8%2 = 0
              8%3 = 2
              9%5 = 4


   Bentuk seperti 14 / 2 dinamakan ekspresi atau ungkapan. Ekspresi akan menghasilkan nilai. Ekspresi 14 / 2 menghasilkan nilai berupa 7. Pada konteks ekspresi seperti 14 / 2, nilai 14 dan 2 dinamakan operand dan / dinamakan operator. Baik silahkan tiru sketch berikut dan tampilkan hasilnya melalui serial monitor

//-----------------------------------------------
//  Contoh Sketch Operasi Aritmetika Menggunakan 
//  Operator * / - +
//----------------------------------------------- 


void setup() 
{
    Serial.begin(9600);

    // Operasi Penjumlahan
    Serial.print("3+4 = ");
    Serial.println(3+4);

    // Operasi Pengurangan
    Serial.print("9-5 = ");
    Serial.println(9-5);

    // Operasi Perkalian
    Serial.print("3*2 = ");
    Serial.println(3*2);

    // Operasi Pembagian
    Serial.print("7/2 = ");
    Serial.println(7/2);

    Serial.print("7/2.0 = ");
    Serial.println(7/2.0);

    // Operasi Modulus
    Serial.print("7%2 = ");
    Serial.println(7%2);
    
}

void loop() 
{


}


Perhatikan perbedaan hasil pada ekspresi 7 / 2 dengan 7/ 2.0 hal ini akan dibahas pada bagian selanjutnya.



Memangnya Operator Modulus Berguna dalam Pemrograman ?


   Bagi yang pernah belajar bahasa pemrograman, penggunaan operator modulus pastinya hal yang sudah biasa. Untuk yang sudah pernah tetapi lupa atau yang belum pernah sama sekali mungkin belum terfikirkan aplikasi seperti apa yang membutuhkan penggunaan operator modulus. Sehingga saya merasa perlu sedikit melakukan review tentang operator modulus. Salah satu aplikasi operator modulus adalah untuk menentukan suatu bilangan apakah termasuk bilangan genap atau bilangan ganjil. Hal ini dapat ditentukan dengan menggunakan aturan "bilangan genap jika dibagi 2 akan mendapati sisa bagi bernilai 0 dan bilangan ganjil jika dibagi 2 akan mendapati sisa bagi bernilai 1". Kita akan bisa membuatnya setelah mempelajari pernyataan if dan operasi pengambilan keputusan yang lain. Contoh aplikasi lain yang pernah saya gunakan dengan menggunakan operator modulus adalah membuat jam digital dengan menggunakan 7 segment. Dengan menggunakan operator modulus maka dapat ditentukan nilai detik menit dan jam.



Prioritas Operator


Jika kita akan menghitung 4+5*3 maka hasilnya adalah 19 bukan 12. Hal ini dikarenakan operator * memiliki prioritas yang lebih tinggi dari operator + sehingga operasi perkalian akan dilakukan terlabih dahulu. Di Arduino prioritas operator seperti ini juga ada. Perhatikan tabel dibawah yang menyatakan prioritas untuk masing-masing operator


OperatorPrioritas
++ dan --1
+ dan - (bersifat unary)2
*, /, dan %3
+ dan - (yang bersifat binary)4


Lalu apa yang dimaksud unary dan binary yang ada pada baris 2 dan 4 pada tabel prioritas operator diatas. Suatu operator dinamakan unary jika melibatkan satu operand (lihat diatas kalau lupa apa itu operand), sedangkan operator binary adalah operator yang melibatkan dua operand.

contoh operator binary :  2 + 3 (melibatkan dua operand yaitu 2 dan 3)
                                      4 + 8 (melibatkan dua operand yaitu 4 dan 8)

contoh operator unary :  +7 (melibatkan satu operand yaitu 7)
                                      -23 (melibatkan satu operand yaitu 23)
Operator unary digunakan untuk menyatakan nilai plus atau minus suatu bilangan.

contoh lain : a + (-b)  atau a - (+b)

   tanda - dan + pada (-b dan +b) merupakan operator unary karena melibatkan satu operand, sedangkan tanda + dan - pada bagian tengah adalah operator binary karena memiliki dua operand yaitu a dan b. Atok rasa sudah cukup jelas apa itu operator unary dan binary. Mari lanjutkan !



Bagaimana Kalau Ingin Menjumlahkan Dahulu Baru Melakukan Perkalian ?


Pertanyaan ini mungkin merujuk bagaimana kalau ingin melakukan terlebih dahulu operasi dengan operator yang memiliki prioritas rendah padahal terdapat operator dengan prioritas yang lebih tinggi. Untuk kasus seperti ini maka gunakan pasangan ( ) pada bagian yang ingin dihitung terlebih dahulu. Silahkan coba sketch berikut dan tampilkan hasilnya pada serial monitor

/* -------------------------------------------
 * Contoh Sketch memperlihatkan perbedaan 
 * operasi tanpa tanda kurung dan dengan 
 * menggunakan tanda kurung
 * -------------------------------------------*/

void setup() 
{
     Serial.begin(9600);

     Serial.print("3+4*2");
     Serial.println(3+4*2);

     Serial.print("(3+4)*2");
     Serial.println((3+4)*2);
}

void loop()  
{ 
 
}


Dengan begini saya rasa anda sudah faham perbedaan hasil operasi dengan menggunakan pasangan ( ) untuk melakukan operasi dengan operator yang memiliki prioritas yang lebih rendah terlebih dahulu.


Mengkonversi nilai int (bilangan bulat) Menjadi nilai float (bilangan desimal)


   Jika anda tidak mengetahui cara ini maka berdasarkan pengalaman yang saya lihat dari teman-teman saya, maka penulisan program akan menjadi satu persatu atau baris demi baris. Misalnya pembagian sederhana 5/4*5 , saya yakin bagi yang tidak tahu cara penulisan program yang benar akan menghasilkan nilai yang tidak sesuai dengan yang seharusnya. Sehingga biasanya melakukan alternatif dengan menulis programnya menjadi satu-persatu, yakni baris pertama 5/4 kemudian pada baris kedua hasil pembagian baru dikalikan dengan 5. Perhatikan sketch berikut ini, tulis pada Arduino IDE anda dan tampilkan hasinya di serial monitor

// -------------------------------------
// contoh pembagian bilangan bulat
// -------------------------------------
void setup() 
{
    Serial.begin(9600);

    Serial.print("4/5 = ");
    Serial.println(4/5);

    Serial.print("4.0/5 = ");
    Serial.print(4.0/5);

}

void loop() 
{

}


   Terlihat hasil yang berbeda pada operasi pembagian sketch diatas. Yang pertama menghasilkan nilai 0 dan yang kedua 0.8. Hal yang harus anda ingat adalah "pembagian dua bilangan bulat pasti akan menghasilkan bilangan bulat". Dengan mengubah cara penulisan salah satu atau kedua operand menjadi bilangan desimal (memiliki angka dibelakang koma)  maka hasil pembagian berubah menjadi bilangan desimal. Itulah sebabnya hasil operasi pada sketch yang kedua menjadi 0.8 karena penulisan nilai 4 menjadi 4.0


   Lalu Bagaimana Kalau Operasi Pembagian dengan Operand-nya berupa Variabel ? misalnya int total / int cacah. Bagaimana cara menuliskannya?

Silahkan tiru sketch berikut dan tampilkan hasilnya pada serial monitor

// ----------------------------------
// Konversi Nilai int ke Nilai float
// ----------------------------------

void setup() 
{
    Serial.begin(9600);
    int total=25;
    int cacah=10;

    Serial.print("toal/cacah");
    Serial.println(total/cacah);

    Serial.print("float(total)/cacah");
    Serial.println(float(total)/cacah);
}

void loop() 
{

}


   Pada baris program total /cacah maka hasil yang didapat adalah 2, hal ini dikarenakan kedua variabel adalah bilangan bulat sehingga hasil bagi yang didapat juga berupa bilangan bulat. Sedangkan pada baris program float (total) /cacah hasil yang didapatkan adalah 2.5 karena nilai total yang bertipe bilangan bulat di konversi terlebih dahulu menjadi bilangan bertipe float atau desimal. Sesuai aturan jika salah satu atau kedua operand merupakan sebuah bilangan desimal maka hasil yang didapat juga berupa bilangan desimal. Untuk kepentingan konversi data, anda bisa menggunakan pengkonversi data (type cast) sebagai berikut


Type CastKeterangan
char( )Mengkonversi ke char
byte( )Mengkonversi ke byte
int( )Mengkonversi ke int
word( )Mengkonversi ke word
long( )Mengkonversi ke long
float( )Mengkonversi ke float

Silahkan anda coba sendiri kegunaan masing-masing type cast diatas, atok rasa tidak terlalu sulit karena memiliki cara yang sama dengan contoh type cast float( ) pada sketch diatas. Selamat bereksplorasi




Tutorial Selanjutnya : Teknik Pemrograman Part V - Matematika-ria Fungsi Trigonometri








Tidak ada komentar:

Posting Komentar