Statement vs Expression

Pernah dengar statement dan expression?

..atau dalam bahasa indonesianya: statemen dan ekspresi.

Kedua makhluk ini merupakan hal penting dalam pemrograman, karena berperan sebagai instruksi dalam program.

Mari kita kita lihat kembali pengertian program komputer:

Komputer program adalah sekumpulan dari instruksi yang akan dikerjakan oleh komputer untuk melakukan tugas tertentu1

– Wikipedia

Instruksi disini dibuat dengan statemen dan ekspresi pada bahasa pemrograman.

Lalu pertanyaanya:

Apa bedanya statemen dengan ekspresi?

Mari kita bahas?

Apa itu Statemen dan Expresion?

Kita lihat dulu pengertian dari statemen dan ekspresi dalam pemrograman.

Statement adalah unit sintaks pada bahasa pemrograman yang menyatakan aksi atau tugas untuk dilakukan.

Contoh statement:

var x = 1; // statement untuk membuat variabel x
print("Hello World"); // statement untuk menampilkan teks kelayar

Lalu apa itu ekspresi?

Ekspresi adalah entitas sintaks pada bahasa pemrograman yang menghasilkan sebuah nilai.

Biasanya ekspresi terdiri dari konstanta, variabel, fungsi, dan operator.

Contoh ekspresi:

x + 1; // ekspresi menjumlahakan x dengan 1
3 * 3; // ekspresi 3 * 3
sqrt(25); // eskpresi untuk menghitung akar kuadrat

Sampai di sini, apakah kamu sudah bisa membedakan?

Kata kunci yang perlu diingat:

Statement = melakukan tugas tertentu;

Ekspresi = menghasilkan nilai.

Nah, sekarang coba perhatikan kode berikut ini:

var x = 4 + 2;

Apakah ini termasuk statement atau ekspresi?

Jika kamu menjawab statement.. maka kamu benar.

Jika kamu menjawab ekspresi.. maka kamu juga benar.

Loh kok bisa?

Karena kode tersebut merupakan statement yang di dalamnya terdapat ekspresi.

statement ekspression

Jadi..

var x = 4 + 2;

Adalah sebuah statement untuk membuat variabel x.

Sedangkan

4 + 2

Adalah sebuah ekspresi yang menghasilkan nilai 6.

Cara membedakan Statement dan Expression

Intinya, ekspresi menghasilkan nilai. Lalu statement mengerjakan sesuatu.

Cara gampang membedakannya adalah dengan operator pengisian atau sama dengan (=).

Apabila ia bisa disimpan dalam variabel, maka ia termasuk ekspresi. Tetapi kalau tidak bisa.. maka ia merupakan statement.

Contoh:

var x = 4 * 2; // 4 * 2 adalah ekspresi
var y = sqrt(25); // sqrt(25) adalah ekspresi
var z = if (x > 10) { z = 10 } // error, if merupakan statement

Coba perhatikan!

4*2 dan sqrt(25) merupakan sebuah ekspresi, karena menghasilkan nilai dan bisa disimpan dalam variabel.

Sedangkan if (x > 10) { z = 10 } merupakan sebuah statemen, ia tidak bisa disimpan ke dalam variabel.

error if

Jadi intinya, jika tidak bisa disimpan ke dalam variabel.. maka ia termasuk statement sedangkan kalau bisa.. maka ia termasuk ekspresi.

Sampai di sini sudah paham?

Bagus..

Sekarang mari kita bahas cara lain membedakan statemen dan ekspresi.

Perintah print(), Apakah ekspresi atau statement?

Perintah print() merupakan sebuah instruksi untuk menampilkan teks ke layar. Apakah print() termasuk ekspresi atau statement?

Tergantung..

Jika ia bisa kita simpan ke dalam variabel, maka ia termasuk ekspresi. Tetapi kalau tidak, maka ia termasuk statement.

Contoh di Python:

>>> x = print("Hello World!")
Hello World!
>>> x
>>> 

Pada Python, perintah print() bisa kita simpan pada variabel x. Akan tetapi perintah print() tidak menghasilkan nilai apa-apa sehingga variabel x tidak memiliki nilai (null).

Maka perintah print() bisa kita bilang sebagai ekspresi, walaupun tidak menghasilkan nilai.

Oh iya, di Python.. kita bisa gunakan fungsi eval() untuk mengecek apakah itu ekspresi atau bukan. Jika tidak error, maka itu adalah ekspresi dan sebaliknya itu adalah statement.

Contoh:

>>> eval("1 + 1")
2
>>> eval("print('Hello')")
Hello
>>> eval("x = 1 + 1")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    x = 1 + 1
      ^
SyntaxError: invalid syntax

Jadi kesimpulannya, perintah print() pada Python adalah sebuah ekspresi.

Mari kita lihat contoh di bahasa pemrograman lain.

Contoh perintah print() di PHP:

$x = print("Hello World");
echo $x; //-> 1

Pada PHP, perintah print() akan menghasilkan nilai 1 sehingga variabel $x berisi 1. Ini bisa kita sebut sebagai ekspresi, karena menghasilkan nilai.

Sedangkan perintah echo pada PHP merupakan sebuah statement, karena ia tidak bisa kita simpan ke dalam variabel.

$y = echo "Hello";
PHP Parse error:  syntax error, unexpected 'echo' (T_ECHO) in php shell code on line 1

Ekspresi di String Interpolation

Pada bahasa pemrograman tertentu, kita menggunakan string interpolation untuk formating string dengan ekspresi.

Contoh string interpolation:

Javascript:

console.log(`Sebuah string ${1 + 2}`)

Python:

print(f"sebuah string {1 + 2}")

C#:

Console.WriteLine($"sebuah string {1 + 2}");

Coba perhatikan..

1 + 2 merupakan sebuah ekspresi yang berada di dalam string interpolation.

Ini juga bisa kita pakai untuk membedakan statemen dan ekspresi.

Intinya, jika ekspresi yang kita tulis pada string interpolation tidak error.. maka ia termasuk ekspresi. Sebaliknya, ia termasuk statement.

Contoh salah: ❌

console.log(`Sebuah string ${if(true){ alert("hi") }}`);

Perhatikan!

if(true){ alert("hi") } ini bukan ekspresi melainkan sebuah statement, karena ia tidak bisa ditulis dalam string interpolation.

Lalu gimana cara kita menggunakan if/else dan perulangan di dalam string interpolation?

Gampang..

Kita hanya perlu menggunakan ekspresi.

Ekspresi dan Statemen pada If/else

If/else merupakan statement..

var answer = 3;
if(answer == 3){
   // benar
} else {
   // salah
}

Akan tetapi ada bentuk lain dari if/else yang merupakan ekspresi.

Biasanya dibuat dengan operator ternary.

Contoh:

var answer = 3;
var result = (answer == 3) ? 'benar' : 'salah';

Pada Python, kita bisa gunakan if expression:

answer = 3
result = 'benar' if answer == 3 else 'salah'

Contoh penggunaan pada string interpolation:

Javascript:

var answer = 3;
console.log(`Hasilnya ${(answer == 3) ? 'benar' : 'salah'}`);

Python:

answer = 3
print(f"hasilnya {'benar' if answer == 3 else 'salah'}")

Ekspresi dan Statemen pada Perulangan

Perulangan for, while, dan do/while merupakan sebuah statement. Fungsinya untuk melakukan iterasi dan mereka tidak menghasilkan nilai apapun.

// perulangan adalah statement
for(i = 0; i < 10; i++){
    // do something
}

Apabila kita ingin melakukan perulangan dengan ekspresi, maka kita harus melakukannya dengan fungsi tertentu.

Misalnya..

Pada Javascript, kita bisa menggunakan fungsi map() pada array.

Contoh:

var arr = [2, 4, 1, 4, 5, 3, 1, 1];
console.log(`isi array * 2: ${arr.map((item) => item * 2)}`)

Fungsi map() akan melakukan iterasi sebanyak isi array, lalu di fungsi ini harus kita isi dengan fungsi lambda atau fungsi anonymous untuk memproses semua item.

Perulangan dengan ekspresi biasanya sering kita temukan pada JSX di Reactjs.

Pada JSX, kita tidak dibolehkan membuat perulangan dengan stament seperti for, while, dan do/while. Kita hanya dibolehkan membuat perulangan dengan ekspresi.

Contoh: ❌ salah

function Hello(){
  const data = [3,4,5,6,7,3];
	return(
  	<>
     {for(i = 0; i<data.lenght; i++){
       <a>{data[i]}</a>
     }}
    </>
  )
}

Contoh: βœ… benar

function Hello(){
	const data = [1,2,3,4,5,6];
  return(
  <>
    {data.map((value, index) => {
    	return <a key={index}>{item}</a>
  	})}
  </>
  )
}

Ekspresi dan Statement pada Fungsi

Fungsi bisa jadi sebuah statemen bisa juga jadi ekspresi. Tergantung jenis fungsinya.

Contoh pada Python:

# ini adalah fungsi sebagai statement
def add(a,b):
	return a + b

# ini adalah fungsi lambda yang merupakan ekspresi
jumlahkan = lambda a, b : a + b

# pemanggila fungsi adalah ekspresi
add(1,2)
jumlahkan(1,2)

Nah coba perhatikan..

Saat kita membuat fungsi dengan def di Python.. maka ia akan dianggap sebagai statement. Sedangkan jika kita membuat fungsi dengan lambda, maka ia dianggap sebagai ekspresi.

Oh iya, pemanggilan fungsi itu termasuk ekspresi karena menghasilkan nilai baru.

Contoh lain pada Javascript:

// ini fungsi statement, sebenarnya ini juga bisa jadi ekspresi
function add(a,b){
  return a + b;
}

// ini fungsi ekspresi
const jumlahkan = function(a, b){
  return a + b;
}

// ini juga fungsi ekspresi atau disebut juga arrow function
const kali = (a,b) => a * b;
const bagi = (a,b) => {
  return a / b;
}

Pada javascript, fungsi termasuk dalam β€˜first-class citizen object’ yang artinya perulakunya sama seperti ekspresi.. yakni bisa disimpan ke dalam variabel, bisa menjadi parameter, bisa dilakukan operasi.

Contoh:

const luasPersegi = function luas(sisi){
    return sisi * sisi
}

Pada contoh ini, kita mendeklarasikan fungsi luas() lalu disimpan ke dalam konstanta luasPersegi.

Apakah ini akan error?

Tidak, ini valid.

Deklarasi fungsi luas() akan dianggap sebagai ekspresi dan yang sebenarnya terjadi adalah kita mendeklarasikan fungsi luasPersegi().

fungsi ekspresi

Lihat!

Fungsi luas() tidak terdefinisikan.

Latihan, Tebak Mana Ekspresi dan Statemen?

Sudah paham kan apa bedanya ekspresi dengan statement?

Sekarang coba tebak kode-kode berikut, mana yang termasuk ekspresi dan mana yang termasuk statement.

#include <stdio.h>

int main(){
	int x = 1 + 2;
	printf("hasil = %d\n", x * 2);
	return 0;
}

Jawab:

ekpresi dan statement

Mau contoh lagi?

Coba tebak kode berikut:

for(int i = 0; i < 10; i++){
	printf("perulangan ke %d\n", i * 2);
}

Jawab:

contoh ekspresi statemen

Masih mau lagi?

Sekarang giliramu untuk mencoba sendiri, silahkan jawab lewat kolom komentar.

#1 Manakah yang termasuk statemen dan ekspresi pada kode berikut:

int x = 4 + 1;
while(x < 10){
	printf("x = %d\n", x * 5 + 2);
	x++;
}

#2 Manakah yang termasuk statemen dan ekspresi pada kode berikut:

var score = 0;
const jawab = input.answer == "4" ? "benar" : "salah";
if(jawab == "benar"){
    console.log("Jawaban benar");
    score = score + 10;
}

#3 Manakah yang termasuk statemen dan ekspresi pada kode berikut:

const handleClick = function(event){
  console.log("Button diklik");
}

Saya tungu jawabannya ya hehe. πŸ˜„

Akhir Kata..

Nah itulah perbedaan antara ekspresi dengan statemen. Kamu sudah bisa membedakan?

Bagus!

Terimakasih sudah membaca sampai akhir.


  1. https://en.wikipedia.org/wiki/Computer_program ↩︎