11 Oktober 2026β€’baca 5 menit

Aturan Sintaks: Satu Titik Koma Bikin Program Nggak Jalan

Baru nulis beberapa baris, programnya udah nolak jalan? Seringnya bukan logikanya yang salah, cuma satu karakter yang kurang atau salah tempat.

Kalau kamu baru mulai belajar ngoding, pemandangan pertama yang mungkin kamu temui bukan program yang jalan mulus, melainkan layar penuh teks merah. Komputer sebenernya nggak marah; dia cuma nggak paham apa yang kamu tulis. Di situlah syntax alias aturan sintaks memegang peran.

Bagian ini sering bikin pemula frustrasi, padahal masalahnya bukan soal logika. Seringnya cuma ada satu karakter yang kurang atau salah tempat. Yuk, kita bongkar aturan syntax satu-satu. Tiap aturan bakal kita temani dengan kode yang benar-benar dijalankan.

Poin Penting

  • Sintaks adalah aturan tata bahasa yang menentukan bentuk kode yang sah, terpisah dari semantik yang menentukan maknanya.
  • Penutup statement, indentasi, dan huruf besar-kecil termasuk aturan sintaks yang beda-beda antar bahasa.
  • Nama (identifier) tidak boleh memakai kata kunci bahasa dan tidak boleh diawali angka.
  • Kesalahan terbagi tiga: syntax error, runtime error, dan logic error yang paling sulit dilacak.

Grammar dulu, makna kemudian

Syntax itu aturan tata bahasa sebuah bahasa pemrograman: bentuk dan urutan tulisan yang dianggap sah. Kalau kamu sudah tahu istilah ini, lewati saja bagian ini. Lawannya adalah semantics, yaitu makna dari tulisan yang sudah sah tadi. Dua hal ini beda, dan bedanya penting buat dipahami lebih dulu.

Sederhananya, kode kamu dibaca lewat dua tahap. Pertama tokenizing: teks dipotong jadi satuan bermakna seperti nama, angka, dan simbol. Kedua parsing: satuan-satuan itu dirangkai sesuai grammar bahasanya. Begitu grammar-nya dilanggar, prosesnya berhenti di situ dan keluar yang namanya syntax error.

Aturan syntax cuma soal bentuk. Program yang bentuknya sudah sah belum tentu melakukan apa yang kamu mau; itu urusan semantics.

Contoh paling gampang buat ngeliat grammar bekerja nih soal penutup statement, dan itu yang jadi bahasan berikutnya.

Titik koma: satu karakter yang bikin kompilator ngamuk

Banyak bahasa menandai akhir sebuah statement dengan titik koma. C, C++, Java, dan JavaScript termasuk keluarga ini. Kode berikut niatnya mengalikan harga dengan jumlah:

C
#include <stdio.h>

int main(void) {
    int harga = 20000;
    int jumlah = 3;
    int total = harga * jumlah;
    printf("total bayar: %d\n", total);
    return 0;
}

Jalanin lewat gcc, dan hasilnya:

TEXT
total bayar: 60000

Sekarang hapus satu titik koma di baris int total = harga * jumlah. Proses compile langsung berhenti dan compiler-nya nunjuk lokasi masalahnya:

TEXT
error: expected ',' or ';' before 'printf'

Perhatikan: yang dikeluhkan bukan baris yang kehilangan titik koma, melainkan baris sesudahnya. Compiler baru sadar ada yang aneh ketika sampai ke printf dan baris sebelumnya belum ditutup. Kalau kamu heran kok error-nya nunjuk baris yang kelihatan udah benar, ingat kebiasaan ini.

Python jalan dengan cara lain. Di sana akhir baris alias newline sudah cukup jadi penanda, jadi titik koma nggak wajib. Yang jadi penentu struktur malah indentasi. Itulah kenapa topik ini butuh bagian sendiri.

Kurung kurawal atau indentasi?

Di C, Java, dan JavaScript, blok kode dibatasi kurung kurawal { }. Mau kamu tulis menjorok ke dalam atau rata kiri, selama kurungnya seimbang, programnya tetap sah. Python justru kebalikannya: indentasi bukan sekadar hiasan, tapi bagian dari syntax yang nggak bisa ditawar.

PYTHON
total_belanja = 150000

if total_belanja > 100000:
    print("dapat diskon 10%")
    print("total bayar:", int(total_belanja * 0.9))
print("terima kasih sudah berbelanja")

Dijalankan, hasilnya:

TEXT
dapat diskon 10%
total bayar: 135000
terima kasih sudah berbelanja

Sekarang hapus indentasi di baris print("dapat diskon 10%"):

TEXT
IndentationError: expected an indented block after 'if' statement on line 3

Ada versi yang lebih berbahaya lagi: indentasinya sah, tapi salah tempat.

PYTHON
total_belanja = 50000

if total_belanja > 100000:
    print("dapat diskon 10%")
    print("terima kasih sudah berbelanja")

Kalau dijalankan, layarnya kosong πŸ˜…. Jumlah statement-nya sama dengan versi benar, tapi baris print("terima kasih sudah berbelanja") ikut masuk ke dalam blok if. Artinya kalimat itu cuma dicetak kalau dapat diskon, padahal niatnya selalu tercetak. Tuh, bentuk error yang paling licin: tanpa pesan kesalahan sama sekali, tapi artinya sudah bergeser.

Jadi, indentasi di Python itu syntax, bukan gaya penulisan. Urusan bentuk sudah beres; sekarang kita masuk ke soal penamaan, dan di sini huruf besar-kecil ikut bermain.

Huruf besar-kecil dan nama yang boleh dipakai

Sebagian bahasa case-sensitive alias membedakan huruf besar dan kecil. Python adalah salah satunya:

PYTHON
Total = 10
print(total)

Output:

TEXT
NameError: name 'total' is not defined. Did you mean: 'Total'?

Total dan total dianggap dua wadah yang beda. Di dalam satu program, kamu bebas memakai keduanya, dan itu juga berarti gampang salah ketik πŸ˜„ kalau penamaannya nggak konsisten.

Ada juga bahasa yang case-insensitive. SQLite contohnya; nama tabel, nama kolom, dan keyword-nya nggak peduli huruf besar-kecil:

PYTHON
import sqlite3

conn = sqlite3.connect(":memory:")
cur = conn.cursor()
cur.execute("create TABLE laporan (total_belanja INTEGER);")
cur.execute("insert into LAPORAN values (150000);")
print(cur.execute("select TOTAL_BELANJA from Laporan;").fetchone())

Output:

TEXT
(150000,)

Kamu nulis create kecil, TABLE besar, LAPORAN besar-besar semuaβ€”tetap jalan. Sebaliknya di Python, huruf besar-kecil itu emang harga mati.

Selain soal besar-kecil, ada dua batas lain buat nama yang kamu bikin sendiri (identifier). Kata kunci bahasa nggak boleh dipakai jadi nama, dan nama nggak boleh diawali angka:

PYTHON
class = "matematika"

β†’ SyntaxError: invalid syntax

PYTHON
2total = 5

β†’ SyntaxError: invalid decimal literal

Kata seperti class, if, dan for sudah "dipesan" buat bahasa, jadi kamu tinggal pilih nama lain, seperti kategori, total_belanja, atau jumlah_data. Urusan penamaan sudah kamu pegang; pertanyaan berikutnya, apa sih bedanya statement dan expression?

Statement dan expression, apa bedanya?

Statement adalah perintah lengkap yang melakukan sebuah aksi. Expression adalah potongan yang menghasilkan nilai begitu dievaluasi. Baris total_belanja = 150000 itu statement: dia menyuruh komputer menyimpan sesuatu. Sedangkan total_belanja >= 100000 itu expression: dia cuma nilai, dan nilai itu bisa kamu pakai atau cetak:

PYTHON
total_belanja = 150000
print(total_belanja >= 100000)
TEXT
True

Di JavaScript pembedaannya sama:

JS
const total_belanja = 150000;
console.log(total_belanja >= 100000);
console.log("total bayar: " + total_belanja * 0.9);
TEXT
true
total bayar: 135000

Perhatikan baris terakhir: total_belanja * 0.9 dievaluasi jadi 135000, baru dirangkai ke teks. Expression-nya dihitung lebih dulu, statement-nya yang mengantar hasil ke layar. Pembagian ini bakal kepakai terus, terutama pas kamu baca pesan error. Karena bentuk dan makna tadi bisa diuji terpisah, jenis kesalahannya pun bisa kita kelompokkan.

Sintaks salah, program jalan, hasil keliru

Sekarang bagian yang paling berguna buat nge-debug: mengenali tiga jenis error. Ketiganya muncul di waktu yang beda, jadi petunjuknya juga beda.

Syntax error terjadi paling awal. Kode nggak sampai dijalankan karena bentuknya melanggar grammar, seperti titik koma yang hilang di C tadi. Tool-nya bakal kasih tahu baris dan karakter yang dia tersangka.

Runtime error muncul saat kode sudah sah dan mulai jalan, tapi ada yang nggak beres di tengah proses. Contohnya membuka file yang nggak ada atau membagi angka dengan nol. Kodenya lolos parsing, tapi berhenti saat eksekusi.

Logic error yang paling diam-diam. Program jalan sampai selesai tanpa pesan apa pun, tapi hasilnya salah. Perhatikan potongan ini:

PYTHON
harga = 20000
jumlah = 3
total = harga * jumlah / 100
print("total bayar:", total)

Output:

TEXT
total bayar: 600.0

Syntax-nya sempurna, nggak ada yang berhenti, tapi ada / 100 nyasar yang bikin totalnya jadi 100 kali lebih kecil dari yang seharusnya. Compiler dan interpreter nggak bisa menangkap yang seperti ini; cuma kamu yang tahu 60000 itu angka yang dimaksud. Karena itu, menguasai syntax memang baru langkah pertama.

Kalau kamu sudah bisa ngebedain bentuk yang salah dari makna yang salah, pesan error berhenti jadi sumber panik dan mulai jadi petunjuk. Berikutnya, coba baca balik empat artikel sebelumnya di seri ini dengan mata baru: tiap contoh di sana tunduk pada aturan yang baru saja kamu pelajari. Selamat ngoprek, dan semoga layar merahmu makin jarang! πŸ‘‹

Baru mendarat di seri ini? Mulainya dari Konsep Dasar Pemrograman β€” di situ konsep-konsep lain di seri ini dibahas satu per satu.

Biar makin jago ngoding.

Yuk gabung bareng temen-temen developer lainnya buat dapet update teknologi, tips, dan tutorial santai tiap minggu.

Biar Nggak Kudet

Update teknologi, tips ngoding, dan insight santai langsung ke email kamu tiap minggu.

Santai, anti spam. Bisa berhenti langganan kapan aja.

Baca Selanjutnya

Lihat semua
backendAplikasimu lambat, dan kamu udah kepikiran ganti bahasa. Tunggu dulu

Ada endpoint yang grafiknya spike tiap beberapa menit, dan kepikiran buat pindah dari Go ke Rust? Discord dan Cloudflare beneran melakukannya β€” tapi cuma setelah kehabisan cara lain dan punya datanya. Yuk, bedah gejala mana yang beneran butuh rewrite, dan mana yang cuma butuh profiling. πŸ€”

Β© 2026 Inva.dev.