Lua - Penelusuran: Panduan untuk Pemula

Hai teman-teman, calon pemrogram Lua! Hari ini, kita akan meng eksplorasi keterampilan penting dalam pemrograman: penelusuran (debugging). Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya – saya akan memandu Anda secara langkah demi langkah, seperti yang saya lakukan untuk banyak siswa selama tahun-tahun mengajar saya. Ayo masuk ke dalamnya!

Lua - Debugging

Apa Itu Penelusuran?

Sebelum kita masuk ke hal-hal yang teknis, mari pahami apa yang sebenarnya dimaksudkan dengan penelusuran. Bayangkan Anda sedang memasak kue, dan itu tidak menjadi seperti yang Anda harapkan. apa yang Anda lakukan? Anda kembali ke resep, memeriksa setiap langkah untuk melihat di mana Anda mungkin salah. Itu sebenarnya apa yang penelusuran dalam pemrograman – mencari dan memperbaiki kesalahan dalam kode Anda.

Penelusuran - Contoh

Ayo mulai dengan contoh sederhana. Perluankan kami ada kode Lua ini:

local function greet(name)
print("Hello, " .. name .. "!")
end

greet("Alice")
greet("Bob")
greet(123)

Kode ini terlihat baik pertama kali, tapi marijalankan itu dan lihat apa yang terjadi:

Hello, Alice!
Hello, Bob!
Error: attempt to concatenate a number value

Ouch! Kita menemukan kesalahan. Ini tempat dimana penelusuran sangat berguna. Mari kitauraikan ini:

  1. Dua panggilan pertama ke greet() berjalan lancar.
  2. Panggilan ketiga, greet(123), menyebabkan kesalahan.

Pesan kesalahan mengatakan bahwa kita mencoba untuk menggabungkan nilai number, yang tidak diijinkan dalam Lua. Bisa Anda melihat masalahnya? Benar – kita melewati sebuah number (123) bukannya string ke fungsi greet().

Bagaimana Cara Memperbaikinya

Untuk memperbaiki ini, kita perlu mengonversi number ke string. Ini adalah kode yang diperbaiki:

local function greet(name)
print("Hello, " .. tostring(name) .. "!")
end

greet("Alice")
greet("Bob")
greet(123)

Sekarang, ketika kita menjalankan kode ini, kita mendapatkan:

Hello, Alice!
Hello, Bob!
Hello, 123!

Perfect! Tidak ada lagi kesalahan. Ini adalah contoh sederhana dari penelusuran dalam aksi.

Tipe Penelusuran

Sekarang kita telah melihat penelusuran dalam praktek, mari kita eksplorasi teknik penelusuran yang berbeda. Bayangkan ini sebagai berbagai alat dalam kotak pemrograman Anda – masing-masing cocok untuk situasi yang berbeda.

1. Penelusuran Cetak

Ini adalah bentuk paling sederhana dari penelusuran, dan itu apa yang kita lakukan dalam contoh kita. Anda menambahkan pernyataan cetak ke kode Anda untuk melihat apa yang terjadi di berbagai titik. Itu seperti meninggalkan jejak roti saat Anda berjalan melalui hutan.

Contoh:

local function calculateArea(length, width)
print("Menghitung luas dengan panjang: " .. length .. " dan lebar: " .. width)
local area = length * width
print("Luas yang dihitung: " .. area)
return area
end

local result = calculateArea(5, 3)
print("Hasil akhir: " .. result)

Ketika Anda menjalankan ini, Anda akan melihat:

Menghitung luas dengan panjang: 5 dan lebar: 3
Luas yang dihitung: 15
Hasil akhir: 15

Pernyataan cetak ini membantu Anda memahami apa yang terjadi di setiap langkah dari program Anda.

2. Penelusuran Interaktif

Banyak lingkungan pengembangan menyediakan penelusuran interaktif, di mana Anda dapat menghentikan eksekusi program Anda dan memeriksa keadaannya. Meskipun Lua sendiri tidak memiliki debugger bawaan, beberapa IDE dan alat menyediakan fungsi ini.

3. Logging

Logging adalah seperti penelusuran cetak, tapi lebih canggih. Daripada mencetak ke konsol, Anda menulis informasi ke file log. Ini sangat berguna untuk program yang lebih besar atau saat meng-debug masalah yang hanya terjadi di lingkungan tertentu.

Ini adalah fungsi logging sederhana dalam Lua:

local function log(message)
local file = io.open("debug.log", "a")
file:write(os.date() .. ": " .. message .. "\n")
file:close()
end

log("Mulai program")
-- Kode Anda di sini
log("Akhir program")

Ini akan membuat (atau menambahkan ke) file "debug.log" dengan pesan yang diberi tanda waktu.

4. Pernyataan Assert

Pernyataan assert adalah cara untuk memeriksa apakah suatu kondisi benar, dan jika tidak, menghentikan program dengan pesan kesalahan. Ini sangat baik untuk menangkap situasi yang tak terduga.

Contoh:

local function divide(a, b)
assert(b ~= 0, "Tidak dapat membagi dengan nol!")
return a / b
end

print(divide(10, 2))  -- Ini berjalan lancar
print(divide(10, 0))  -- Ini akan memicu kesalahan assert

Ketika Anda menjalankan ini, Anda akan melihat:

5
Error: pernyataan assert gagal: Tidak dapat membagi dengan nol!

Tabel Metode Penelusuran

Berikut adalah ringkasan metode penelusuran yang kita diskusikan:

Metode Deskripsi Kapan Digunakan
Penelusuran Cetak Menambahkan pernyataan cetak ke kode Anda Penelusuran cepat dan mudah untuk program kecil
Penelusuran Interaktif Menggunakan IDE untuk menghentikan dan melangkah melalui kode Masalah kompleks di program yang lebih besar
Logging Menulis informasi debug ke file Program yang berjalan lama atau aplikasi server
Pernyataan Assert Memeriksa kondisi dan menghentikan program jika mereka tidak terpenuhi Menangkap situasi yang tak terduga awal

Ingat, penelusuran adalah hal yang sama penting seni dan sains. Memerlukannya waktu untuk menjadi ahli, tapi jangan frustasi! Setiap pemrogram, bahkan yang paling berpengalaman, menghabiskan waktu yang signifikan untuk penelusuran.

Sekarang Anda teruskan perjalanan Lua Anda, Anda akan menemukan bug yang lebih kompleks dan belajar teknik penelusuran yang lebih canggih. Tetapi untuk sekarang, dasar-dasar ini akan membantu Anda. Selamat coding, dan semoga bug Anda sedikit dan jarang!

Credits: Image by storyset