Anda di halaman 1dari 59

Basic Arduino

Dasar Pemrograman C++ (+/- 100 Menit)


MUCHAMAD ISKAK FATONI

SMK Negeri 1 Jetis Mojokerto Training Division & IE Training


Dasar Pemrograman C++
Pembahasan:
● Pendahuluan
● Struktur Dasar Pemrograman pada Arduino
● Komentar
● Identifier
● Konstanta
● Variabel
○ Tipe Data
○ Variabel Global
○ Variabel Lokal
● Operator
● Fungsi
● Nilai Kembalian/Return Value
● Parameter Fungsi
● Percabangan
Dasar Pemrograman C++ (cont’d)
● Pengulangan
● Penyertaan Library
● Praktek:
○ Percabangan
○ Pengulangan
○ Operasi Aritmatika
○ Pembuatan Fungsi Sederhana

Target:
● Memahami dasar-dasar pemrograman pada Arduino
● Memahami dasar-dasar pemrograman C++
● Dapat menggunakan percabangan, pengulangan, operasi aritmatika, serta membuat
fungsi sederhana pada bahasa pemrograman C++
Pendahuluan
● Pada bagian ini akan dijelaskan mengenai dasar-dasar pemrograman
Arduino (C++)
● Bacaan yang disarankan untuk pembelajaran lebih lanjut mengenai
bahasa pemrograman C++:
○ Pemrograman C++ oleh Budi Raharjo, penerbit Informatika Bandung
○ Tutorial versi PDF dari cplusplus.com,
http://www.cplusplus.com/files/tutorial.pdf
Pemrograman pada Arduino

Struktur Dasar
● Pemrograman pada Arduino selalu dilakukan dengan menyertakan
dua fungsi utama yaitu void setup() dan void loop()

Dua fungsi utama pada pemrograman Arduino

void setup() {

void loop() {

}
Pemrograman pada Arduino

Struktur Dasar (cont’d)


● Kedua fungsi yang disebutkan sebelumnya harus disertakan pada
saat pemrograman, meskipun di dalam fungsi tidak terdapat kode
program untuk dieksekusi
● Apabila tidak disertakan, maka akan terjadi error pada saat proses
compile (penerjemahan kode program ke bahasa mesin) program
Komentar
● Komentar digunakan untuk melakukan dokumentasi sebuah potongan
kode program, atau program secara keseluruhan mengenai alasan
dan tujuan dari kode program tersebut
● Komentar pada kode program C++ dapat diberikan dengan dua cara
seperti tabel di bawah
Pemberian komentar pada pemrograman C++

//komentar satu baris

/*
komentar
dengan
banyak
baris
*/
Komentar (cont’d)
● Pemberian komentar pada kode program hendaknya dilakukan
seperlunya saja, dan digunakan untuk menjelaskan alasan dan tujuan
dari kode program yang dimaksudkan
● Code Tells You How, Comments Tell You Why

Contoh gaya pemberian komentar pada program (diambil dari library Servo)

...
Servo::Servo()
{
if( ServoCount < MAX_SERVOS) {
// assign a servo index to this instance
this->servoIndex = ServoCount++;
// store default values - 12 Aug 2009
servos[this->servoIndex].ticks =
usToTicks(DEFAULT_PULSE_WIDTH);
}
...
Identifier
● Identifier digunakan sebagai pengenal/identitas dari variabel,
konstanta, fungsi, structure, maupun class agar compiler dapat
membedakan antara satu dengan yang lainnya
Contoh penggunaan identifier

#define angka1 5

long angka2 = 2;

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

void loop() {

}
Identifier (cont’d)
● Pada contoh di atas, dua buah identifier yaitu setup dan loop
digunakan sebagai nama fungsi, sedangkan dua buah identifier
lainnya digunakan sebagai nama konstanta (angka1) dan nama
variabel (angka2)
● Aturan penulisan identifier pada bahasa C/C++ adalah sebagai
berikut:
○ Bersifat case sensitive, angka1 dan Angka1 dianggap berbeda
○ Tidak dapat diawali dengan karakter angka
○ Tidak dapat menggunakan karakter space
○ Tidak dapat menggunakan karakter simbol (#, @, ?, !, $, %, &, *, dll.)
○ Tidak dapat mengguakan kata kunci yang telah digunakan oleh C/C++
ataupun oleh Arduino IDE
○ Hindari penggunaan nama identifier yang sama dengan nama identifier
yang sebelumnya telah digunakan
Konstanta
● Konstanta digunakan untuk menyimpan nilai tetap yang nantinya tidak
dapat diubah pada saat program dieksekusi
● Salah satu kegunaannya adalah untuk menentukan nilai yang bersifat
tetapan seperti nilai pi (n), kecepatan suara, batas pembacaan nilai
sensor (sebagai contoh panas didefinisikan dengan nilai 55), batas
pengulangan, dll.
● Konstanta dapat dibuat dengan dua cara, yaitu menggunakan
preprocessor directive #define ataupun menggunakan kata kunci
const
Konstanta (cont’d)
● Contoh penggunaan #define adalah seperti di bawah

Contoh penggunaan preprocessor directive #define

#define MOTOR 5

void setup() {
pinMode(MOTOR, OUTPUT);
}

void loop() {
digitalWrite(MOTOR, HIGH);
}

Apabila terdapat revisi pada rangkaian hardware, yaitu pin yang digunakan untuk
menggendalikan motor bukan lagi pin 5, kita hanya perlu mengubah nilai dari baris
konstanta MOTOR.
Konstanta (cont’d)
● Contoh penggunaan const adalah seperti di bawah

Contoh penggunaan kata kunci const

const byte MAX = 5 ;

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

void loop() {
for(unsigned char i = MAX; i > 0; i--)
Serial.print("hello");
}

Apabila terdapat revisi pada program, yaitu jumlah pengulangan yang dilakukan bukan
lagi 5 kali, kita hanya perlu mengubah nilai dari baris konstanta MAX.
Variabel
● Variabel merupakan sebuah lokasi pada memori yang digunakan
untuk penyimpanan data/nilai yang dapat diubah
Contoh proses deklarasi variabel

//cara 1
tipe_data identifier;

//cara 2
tipe_data identifier = nilai;

//cara 3
tipe_data identifier1, identifier2;

//cara 4
tipe_data identifier1 = nilai1, identifier2 = nilai2;
Tipe Data
● Variabel memiliki tipe data yang akan digunakan oleh compiler untuk
mengetahui jenis data yang disimpan
Tipe Data Ukuran Memori Rentang Nilai

boolean 8-bit true/false

byte 8-bit 0 - 255

char 8-bit -128 - 127

unsigned char 8-bit 0 - 255

word 16-bit 0 - 65,535

int 16-bit -32,768 - 32,767

unsigned int 16-bit 0 - 65,535

long 32-bit -2,147,483,648 - 2,147,483,647


Tipe Data (cont’d)
Tipe Data Ukuran Memori Rentang Nilai

unsigned long 32-bit 0 - 4,294,967,295

float 32-bit -3.4028235E+30 - 3.4028235E+38

Tipe-tipe data yang disebutkan pada tabel di atas merupakan tipe data umum pada
bahasa pemrograman C++. Adapun tipe-tipe data tersebut bersifat architecture
dependent, yang berarti, rentang nilai sebuah tipe data dapat berbeda dari sebuah sistem
dengan sistem lainnya (arsitektur 8-bit, arsitektur16-bit, arsitektur 32-bit, arsitektur 64-bit,
dll.).
Tipe Data stdint.h
● Selain menggunakan tipe-tipe data di atas, variabel integer dapat
dibuat dengan mengacu pada tipe yang telah dideklarasikan di dalam
file header stdint.h
● Penggunaan tipe variabel pada stdint.h memungkinkan agar kita
mendapatkan lebar data yang pasti, terlepas dari arsitektur yang
digunakan

Tipe Data Ukuran Memori Rentang Nilai

int8_t 8-bit -128 - 127

int16_t 16-bit -32,768 - 32,767

int32_t 32-bit -2,147,483,648 - 2,147,483,647

uint8_t 8-bit 0 - 255


Tipe Data stdint.h (cont’d)
Tipe Data Ukuran Memori Rentang Nilai

uint16_t 16-bit 0 - 65,535

uint32_t 32-bit 0 - 4,294,967,295


Variabel Global
● Variabel dapat dibedakan berdasarkan ruang lingkupnya, yaitu global
atau lokal
● Sebuah variabel global akan dikenali oleh semua bagian program
● Variabel global dapat dibuat dengan mendeklarasikannya di luar
semua fungsi yang ada
Contoh deklarasi variabel global

byte readSensor;

void setup() {

void loop() {

}
Variabel Global (cont’d)
● Keleluasaan pengaksesan oleh semua fungsi yang ada pada program
merupakan kelebihan kelebihan dari variabel global, namun hal
tersebut juga sekaligus menjadi kekurangan
● Apabila kode program menjadi sangat panjang dan kompleks, maka
keleluasaan pengaksesan tersebut akan menjadi salah satu sumber
error/bug, dimana proses pelacakan error akan sulit dilakukan apabila
seluruh bagian kode program dapat mengakses variabel tersebut
● Berdasarkan alasan tersebut maka hendaknya penggunaan variabel
global harus dibatasi dan jika memang benar-benar diperlukan
Variabel Lokal
● Seperti namanya, variabel lokal merupakan variabel yang hanya
dapat diakses pada lingkup lokal, yaitu di dalam sebuah fungsi
tertentu saja
Contoh deklarasi variabel lokal

void setup() {
byte angka1;
}

void loop() {
byte angka2;
}

Variabel angka1 hanya akan dikenali pada fungsi void setup(), sedangkan variabel
angka2 hanya akan dikenali pada fungsi void loop(). Pengaksesan variabel angka1
pada fungsi void loop() akan mengakibatkan error, demikian juga sebaliknya.
Operator
● Pada program, seringkali kita membutuhkan sebuah solusi dimana
solusi tersebut dihasilkan dari operasi dari satu atau beberapa
variabel/operand
● Bahasa C++ memiliki beberapa jenis operator yaitu:
○ Assignment
○ Arithmetic
○ Compound assignment
○ Increase dan decrease
○ Relational dan equality
○ Logical
○ Conditional
○ Comma
○ Bitwise
Operator (cont’d)
○ Explicit type casting
○ sizeof()
○ dll.
● Masing-masing operator memiliki tingkat eksekusi masing-masing,
sebagai contoh operator * (perkalian) akan didahulukan dari operator
+ (penjumlahan)
● Penjelasan dari masing-masing jenis operator serta tingkat
eksekusinya akan dijabarkan lebih lanjut pada beberapa slide
selanjutnya
Operator

Assignment
● Operator yang digunakan untuk menentukan nilai sebuah variabel

Contoh penggunaan operator assignment

//nilai 5 diisikan ke variabel a


a = 5;

//nilai variabel b diisikan ke variabel a


a = b;

//hasil penjumlahan nilai variabel a dan angka 7 diisikan ke


//variabel b
b = a + 7;

//nilai 5 diisikan ke variabel c, kemudian nilai variabel c


//diisikan ke variabel b, kemudian nilai variabel b diisikan ke
//variabel a
a = b = c = 5

Pembacaan operator assignment dilakukan dari kanan ke kiri


Operator

Arithmetic
● Operator yang digunakan untuk membuat ekspresi matematis pada
kode program

Simbol Keterangan

+ Penjumlahan

- Pengurangan

* Perkalian

/ Pembagian

% Modulo (hasil bagi dari 2 bilangan)


Operator

Compound Assignment
● Operator yang digunakan untuk mengubah nilai suatu variabel
dengan cara melakukan operasi pada nilai yang masih terdapat pada
variabel tersebut
Ekspresi Ekspresi yang sesuai

a += 5 a = a + 5

a -= 5 a = a - 5

a *= 5 a = a * 5

a /= 5 a = a / 5

a %= 5 a = a % 5

Hal yang sama berlaku untuk operator-operator lainnya


Operator

Increase dan Decrease


● Operator increase dilambangkan dengan ++, sedangkan operator
decrease dilambangkan dengan --
Kesamaan operator increase dan decrease

//kesamaan operator increase


c++;
c += 1;
c = c + 1;

//kesamaan operator decrease


c--;
c -= 1;
c = c - 1;
Operator

Increase dan Decrease (cont’d)


● Operator increase dan decrease dapat dituliskan sebagai prefix atau
suffix sebuah variabel
Prefix dan suffix untuk operator increase dan decrease

b = 3;
a = b++;
//nilai a = 3, nilai b = 4

b = 3
a = ++b;
//nilai a = 4, nilai b = 4

Suffix: nilai variabel akan ditambah setelah baris kode program dieksekusi
Prefix: nilai variabel akan ditambah sebelum baris kode program dieksekusi
Operator

Relational dan Equality


● Operator yang digunakan untuk membandingkan nilai dari dua
ekspresi pemrograman
● Hasil dari operator relational dan equality adalah nilai boolean yaitu
true atau false

Simbol Keterangan

== Sama dengan

!= Tidak sama dengan

> Lebih dari

< Kurang dari

>= Lebih dari atau sama dengan

<= Kurang dari atau sama dengan


Operator

Relational dan Equality (cont’d)


● Contoh penggunaan dari operator relational dan equality adalah
seperti di bawah
Contoh penggunaan operator relational dan equality

(7 == 5) //false
(5 > 4) //true
(13 < 2) //false
(2 < 2) //false

//anggap nilai a = 4, b = 5, c = 6
(a == 5) //4 tidak sama dengan 5, false
(a * b > 7) //20 lebih dari 7, true
(b - 3 < 5) //2 kurang dari 5, true
Operator

Logical
● Operator yang digunakan untuk melakukan operasi logika pada
program

Simbol Keterangan

! NOT

&& AND

|| OR
Operator

Logical (cont’d)
● Contoh penggunaan operator logical adalah seperti di bawah

Contoh penggunaan operator logical

!(17 < 6) //!false, memberikan hasil true


!(12 >= 12) //!true, memberikan hasil false

((5 == 5) && (7 < 5)) //(true && false) memberikan hasil false
((7 < 5) || (13 > 6)) //(false || true) memberikan hasil true
Operator

Conditional
● Operator yang digunakan untuk mengevaluasi sebuah ekspresi
pemrograman, dimana operator ini diwakili oleh simbol ?
● Operator ini akan memberikan sebuah nilai kembalian/return value
apabila ekspresi tersebut memiliki nilai logika true, dan akan
memberikan nilai kembalian/return value yang lain apabila ekspresi
tersebut memiliki nilai logika false
● Format penulisan dari operator conditional adalah seperti di bawah
Contoh format penulisan operator conditional

23 > 5 ? 1 : 0
//memberikan return value 1 karena 23 > 5 memiliki nilai logika
//true
23 == 5 ? 1 : 0
//memberikan return value 0 karena 23 == 5 memiliki nilai logika
//false
Operator

Comma
● Operator ini digunakan untuk memisahkan beberapa ekspresi
pemrograman, dimana seharusnya hanya satu ekspresi saja yang
dibutuhkan
● Operator ini diwakili dengan simbol ,

Contoh penggunaan operator comma

a = (b = 5, b+2);
//nilai 5 diisikan ke variabel b, nilai b ditambah 2, kemudian
//nilai tersebut akhirnya diisikan ke variabel a, yaitu 7
Operator

Bitwise
● Operator bitwise digunakan untuk melakukan operasi sebuah nilai
berdasarkan representasi bit-nya

Simbol Keterangan

& NOT

| AND

^ OR

~ NOT

>> Shift right

<< Shift left


Operator

Bitwise (cont’d)
● Contoh penggunaan operator bitwise adalah seperti di bawah

Contoh penggunaan operator bitwise

byte a = 0x68;
byte b = 0x35;
byte c = a | b;
byte d = a & b;

// a = 0b01101000
// b = 0b00110101
//---------------- OR
// c = 0b01111101 = 0x7D

// a = 0b01101000
// b = 0b00110101
//---------------- AND
// c = 0b00100000 = 0x20
Operator

Explicit Type Casting


● Operator ini digunakan untuk melakukan konversi sebuah nilai
dengan tipe tertentu ke tipe yang lain
Contoh penggunaan operator explicit type casting

int a;
float b = 3.14;
a = (int)b;

Pada baris terakhir, nilai 3.14 akan dikonversi terlebih dahulu ke tipe integer (bilangan
bulat) sebelum diisikan ke variabel a. Nilai hasil konversi adalah 3, dimana sisanya, yaitu
0.14 tidak diikutkan (pembulatan ke bawah/round down).
Operator

sizeof()
● Operator ini akan digunakan untuk melakukan pemeriksaan ukuran
dari sebuah variabel atau tipe data
Contoh penggunaan operator sizeof()

int a = 5;
int b = sizeof(a);

Setelah baris kode program terakhir dieksekusi, nilai dari variabel b adalah 2 karena
ukuran dari variabel dengan tipe data int adalah 2 Byte
Operator

Eksekusi Operator
● Operator ini digunakan untuk melakukan konversi sebuah nilai
dengan tipe tertentu ke tipe yang lain

Level Operator Deskripsi Grouping

1 :: Scope Kiri ke kanan

() [] . -> ++ --
dynamic_cast
2 static_cast Suffix Kiri ke kanan
reinterpret_cast
const_cast typeid

++ -- ~ ! sizeof new
Prefix
delete
3 Kanan ke kiri
* & Pointer

+ - Unary sign operator


Operator

Eksekusi Operator (cont’d)


Level Operator Deskripsi Grouping

4 (type) Type casting Kanan ke kiri

5 .* ->* Pointer-to-member Kiri ke kanan

6 * / % Multiplicative Kiri ke kanan

7 + - Additive Kiri ke kanan

8 << >> Shift Kiri ke kanan

9 < > <= >= Relational Kiri ke kanan

10 == != Equality Kiri ke kanan

11 & Bitwise AND Kiri ke kanan

12 ^ Bitwise XOR Kiri ke kanan

13 | Bitwise OR Kiri ke kanan


Operator

Eksekusi Operator (cont’d)


Level Operator Deskripsi Grouping

14 && Logical AND Kiri ke kanan

15 || Logical OR Kiri ke kanan

16 ?: Conditional Kanan ke kiri

= *= /= %= += -= >>=
17 Assignment Kanan ke kiri
<<= &= ^= |=

18 , Comma Kiri ke kanan

Semakin nilai pada kolom Level, maka semakin tinggi prioritas eksekusi sebuah operator.
Apabila pada suatu baris kode program terdapat penggunaan beberapa operator dengan
level eksekusi yang sama, maka urutan eksekusi operator adalah sesuai dengan
informasi pada kolom Grouping.
Operator

Eksekusi Operator (cont’d)


Contoh eksekusi operator dengan level eksekusi yang berbeda

int a = 5 + 6 / 2;
//6 / 2 akan dieksekusi terlebih dahulu, dimana hasilnya akan
//ditambah dengan 5

Contoh eksekusi operator dengan level eksekusi yang sama

int a = 5 * 6 / 2;
//5 * 6 akan dieksekusi terlebih dahulu, dimana hasilnya akan
//dibagi dengan 2

Urutan eksekusi dapat diubah dengan penggunaan tanda ( (buka kurung) dan ) (tutup
kurung).

Contoh penggunaan tanda kurung untuk mengubah urutan eksekusi operator

int a = (5 + 6) / 2;
//5 + 6 akan dieksekusi terlebih dahulu, dimana hasilnya akan
//dibagi dengan 2
Fungsi
● Pada umumnya, setiap bahasa pemrograman memiliki fitur yang
mengijinkan seorang programmer untuk membuat sebuah fungsi
● Pada bahasa pemrograman C/C++, sebuah program yang utuh
dibentuk melalui kumpulan dari fungsi-fungsi
● Penggunaan fungsi memungkinkan seorang programmer untuk
membuat program yang dibuat bersifat modular, sehingga kode
program akan lebih mudah dipahami dan dapat digunakan untuk
kode-kode program lain yang akan dibuat
● Arduino IDE telah dilengkapi dengan beberapa fungsi bawaan yang
siap untuk digunakan dimana beberapa contohnya adalah
pinMode(), digitalRead(), digitalWrite(), analogRead(),
analogWrite(), dll.
Fungsi (cont’d)
● Selain dari fungsi-fungsi bawaan yang ada pada Arduino IDE, kita
dimungkinkan untuk dapat membuat fungsi-fungsi sendiri

Ilustrasi eksekusi fungsi yang dipanggil


oleh program utama
Fungsi

Nilai Kembalian
● Nilai kembalian/return value merupakan nilai yang akan diberikan oleh
sebuah fungsi setelah kode program yang ada di dalam fungsi
tersebut selesai dieksekusi
● Sebuah fungsi dapat memiliki nilai kembalian atau tidak
● Contoh dari pembuatan/deklarasi fungsi pada bahasa pemrograman
C++ adalah seperti di bawah

Contoh pembuatan/deklarasi fungsi tanpa nilai kembalian pada C++

//fungsi tanpa nilai kembalian


void initPin() {
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
}
Fungsi

Nilai Kembalian (cont’d)


Contoh pembuatan/deklarasi fungsi dengan nilai kembalian pada C++

//fungsi dengan nilai kembalian uint16_t


uint16_t perkalian() {
uint16_t a = 5;
uint16_t b = 10;

return a * b;
}

Fungsi dengan nilai kembalian ditandai dengan tipe fungsi void, sedangkan fungsi
dengan nilai kembalian ditandai dengan tipe fungsi selain void.

Fungsi dengan nilai kembalian digunakan pada saat kita mengharapkan sebuah nilai
hasil dari eksekusi kode program yang ada pada fungsi tersebut. Pada contoh di atas,
kita mengharapkan nilai dari hasil perkalian variabel a dan b.

Pada contoh sebelumnya kita tidak mengharapkan nilai kembalian karena proses kode
program pada fungsi tersebut hanyalah melakukan inisialisasi pin saja.
Fungsi

Parameter Fungsi
● Sebuah fungsi dapat memiliki parameter yang diisi pada saat
pemanggilannya pada kode program, dimana nilai tersebut akan
digunakan pada saat kode program di dalam fungsi tersebut
dieksekusi

Contoh pembuatan/deklarasi fungsi tanpa nilai kembalian pada C++

//fungsi tanpa nilai kembalian


void initPin(uint8_t nomorPin) {
pinMode(nomorPin, OUTPUT);
pinMode(nomorPin + 1, OUTPUT);
pinMode(nomorPin + 2, INPUT);
pinMode(nomorPin + 3, INPUT);
}
Fungsi

Parameter Fungsi (cont’d)


Contoh pembuatan/deklarasi fungsi dengan nilai kembalian pada C++

//fungsi dengan nilai kembalian uint16_t


uint16_t perkalian(uint8_t a, uint8_t b) {
return a * b;
}

Penggunaan parameter pada fungsi akan membuat penggunaan sebuah fungsi menjadi
lebih fleksibel.

Apabila kita melihat fungsi perkalian pada contoh sebelumnya, nilai dari variabel a dan
variabel b telah ditentukan pada fungsi, sedangkan pada contoh ini nilai dari variabel a
dan b akan ditentukan pada saat pemanggilan fungsi perkalian.
Percabangan
● Pada pemrograman pasti akan dijumpai keadaan dimana program
harus memilih kode program mana yang akan dieksekusi sesuai
dengan kondisi yang didapatkan
● Pada pemrograman C/C++ percabangan dapat dilakukan
menggunakan dua buah struktur sintaks yaitu if...else dan
switch...case

Contoh kebutuhan pemilihan tindakan berdasarkan sebuah kondisi

jika pembacaan pin input digital 2 pada Arduino adalah HIGH


- buat nilai logika dari pin output digital 4 menjadi LOW
jika pembacaan pin input digital 2 pada Arduino adalah LOW
- buat nilai logika dari pin output digital 4 menjadi HIGH
Percabangan

if...else
Contoh struktur penulisan if...else

if(kondisiLogika1) {
...
}
else if(kondisiLogika2) {
...
}
else if(kondisiLogika3) {
...
}
else {
...
}

else if dan else bersifat opsional. else if diletakkan setelah if, sedangkan else
diletakkan setelah if atau else if (jika ada).

Penulisan kondisi logika dilakukan dengan memanfaatkan operator relational dan


equality. Sebagai contoh adalah A * 5 < 18. Apabila tidak digunakan operator
relational dan equality, maka secara default kodisi tersebut dibandingkan dengan nilai
true (== true).
Percabangan

switch...case
Contoh struktur penulisan switch...case

switch(kondisi) {
case nilai1:
...
break;
case nilai2:
...
break;
default:
...
break;
}

Program akan mengeksekusi ekspresi, yaitu kondisi yang ada pada switch. Nilai dari
eksekusi kondisi akan dibandingkan dengan nilai konstanta pada case pertama, yaitu
nilai1. Jika nilai kondisi sama degan nilai1, maka kode program yang ada dalam
case pertama akan dieksekusi. Jika tidak, maka pemeriksaan akan dilanjutkan ke case
berikutnya. Apabila nilai pada case tidak ada yang sesuai dengan nilai hasil eksekusi
kondisi, maka kode program yang ada pada bagian default akan dieksekusi.
Pengulangan
● Kode program secara umum bersifat sekuensial, yaitu dieksekusi dari
atas ke bawah
● Ada kalanya pada program kita menghendaki suatu bagian kode
program dieksekusi berulang dengan batasan yang kita tentukan
Contoh penulisan kode program yang tidak efisien

int a;
void setup() {
a = a + 7;
a = a + 7;
a = a + 7;
a = a + 7;
a = a + 7;
a = a + 7;
a = a + 7;
}
Pengulangan (cont’d)
Contoh penulisan kode program menggunakan pengulangan for

int a;
void setup() {
for(byte i = 0; i < 7; i++)
a += 7;
}

Nilai a akan ditambah dengan angka 7 sebanyak 7 kali. Jika dibandingkan dengan contoh
sebelumnya, penulisan ini terlihat lebih rapi dan terstruktur.

Bayangkan apabila dibutuhkan 158 baris yang sama, kita tentunya akan kesulitan dalam
menentukan banyaknya baris yang telah kita tulis (menghitung baris secara manual).
Selain itu apabila terdapat revisi program mengenai banyaknya pengulangan, maka kita
akan kesulitan dalam melakukan pengubahan.
Pengulangan

for
Contoh struktur penulisan for

word a;
void setup() {
//struktur for memiliki 3 parameter yang dapat diisi
//parameter pertama , deklarasi variabel pembatas pengulangan
//parameter kedua , kondisi yang akan diperiksa sebelum
//pengulangan dilakukan
//parameter ketiga , bagian increment atau decrement untuk
//variabel pembatas
for(int i = 0 ; i < 80; i++) {
a = a + 5;
}
}
Pengulangan

while
Contoh struktur penulisan while

word a;
void setup() {
//struktur do...while tidak memiliki parameter deklarasi
variabel
//pembatas dan parameter increment/decrement, maka dari itu
kita
//harus membuatnya secara manual
//bagian deklarasi variabel pembatas
//bagian increment/decrement
//bagian pemeriksaan kondisi
int i = 0 ;
while( i < 80) {
a = a + 5;
i++;
}
}
Pengulangan

do...while
Contoh struktur penulisan do...while

word a;
void setup() {
//struktur while tidak memiliki parameter deklarasi variabel
//pembatas dan parameter increment/decrement, maka dari itu
kita
//harus melakukannya secara manual
//bagian deklarasi variabel pembatas
//bagian increment/decrement
//bagian pemeriksaan kondisi
int i = 0 ;
do {
a = a + 5;
i++;
}
while( i < 80);
}
Penyertaan Library
● Salah satu fitur utama yang ada pada platform Arduino terdapat pada
banyaknya pilihan library yang tersedia
● Library merupakan kumpulan kode program yang telah dibuat
sebelumnya
● Umumnya sifat library adalah modular sehingga dapat kita gunakan
pada kode program yang kedepannya akan kita kembangkan

Contoh struktur penulisan do...while

//penyertaan file header library dengan nama library


#include < library.h>
Praktek
Praktek percabangan

#include <BasicIOShield.h>
#include <Wire.h>
BasicIOShield shield;

void setup() {

void loop() {
if(shield.Button1State()) {
shield.RedOn();
}
else if(!shield.Button1State()) {
shield.RedOff();
}

Anda mungkin juga menyukai