07. Hello, World
Program pertama yang jadi tradisi di setiap bahasa pemrograman adalah
mencetak Hello, world! lalu selesai. Ukurannya kecil, tapi
menulisnya membuktikan bahwa bahasa sudah terpasang, editor sudah
dikonfigurasi, dan terminal bisa menjalankan file. Bab ini menulisnya,
sengaja merusaknya untuk melihat error, lalu memperbaikinya.
Program lengkapnya
Buka exercises/07/01-hello.lua di VS Code. File ini
berisi satu baris:
print("Hello, world!")Di terminal VS Code, jalankan:
lua exercises/07/01-hello.lua
Terminal mencetak:
Hello, world!
Itulah keseluruhan programnya. Sisa bab ini menjelaskan setiap bagian dari baris tersebut.
Apa yang dilakukan
print
print adalah sebuah fungsi — sekumpulan
kode yang punya nama dan mengerjakan sesuatu ketika kamu memintanya.
Tugas print adalah menuliskan apa pun yang kamu berikan ke
terminal, diikuti dengan baris baru.
Tanda kurung ( dan ) setelah nama fungsi
adalah cara kamu meminta fungsi itu berjalan. Apa pun yang ada di antara
keduanya adalah yang kamu berikan.
print("Hello, world!")
-- ^^^^^^^^^^^^^^^
-- this is what we are giving to printDalam Lua, hal-hal yang kamu berikan ke sebuah fungsi disebut
argumen. Program di atas memberikan satu argumen ke
print: string "Hello, world!".
Ganti teks di dalam tanda kutip dengan namamu sendiri. Simpan dan jalankan lagi. Terminal sekarang seharusnya mencetak namamu.
String
Teks "Hello, world!" adalah sebuah
string — urutan karakter. Dalam Lua, string ditulis di
antara tanda kutip ganda " atau
tanda kutip tunggal '. Keduanya bisa
dipakai:
print("Hello, world!")
print('Hello, world!')Tanda kutip bukan bagian dari string. Tanda itu menandai di mana string dimulai dan di mana string berakhir. Saat string dicetak, hanya yang ada di antara tanda kutip yang muncul.
Mencetak lebih dari satu hal
print bisa menerima lebih dari satu argumen. Pisahkan
dengan koma:
print("Hello,", "world!")Terminal mencetak Hello,, sebuah tab, lalu
world!, semuanya dalam satu baris. print
meletakkan tab di antara setiap argumen dan baris baru di akhir.
Untuk pemisah yang berbeda, buat satu string sendiri dengan
.. (dua titik), yang menyambungkan string:
print("Hello, " .. "world!")Sekarang outputnya adalah Hello, world! dengan satu
spasi di antara kedua kata, karena spasi itu ada di dalam string
pertama.
Buat print menampilkan tiga hal dalam
satu baris: kata lua, angka 5, dan kata
is_fast. Jalankan. Perhatikan bahwa angka itu muncul
meskipun tidak ada tanda kutip di sekelilingnya.
Komentar
Komentar adalah teks yang diabaikan Lua ketika
menjalankan program. Komentar ditujukan untuk manusia yang membaca kode.
Komentar satu baris dimulai dengan --:
-- This line is a comment. Lua does not run it.
print("Hello, world!") -- A comment can also sit at the end of a line.Komentar yang mencakup banyak baris dimulai dengan --[[
dan diakhiri dengan ]]:
--[[
Anything in here is ignored.
Useful for long explanations
or for temporarily turning off
a block of code.
]]
print("Still runs.")Gunakan komentar untuk menjelaskan mengapa kode melakukan sesuatu, bukan apa yang dilakukan setiap baris. Kode yang baik sudah menjelaskan apa yang dilakukannya.
Membuat dan membaca error
Sekarang sengaja rusak programnya. Di 01-hello.lua,
hapus tanda kutip terakhir sehingga barisnya menjadi:
print("Hello, world!)Simpan dan jalankan. Lua menolak menjalankan file dan mencetak error seperti ini:
lua: exercises/07/01-hello.lua:1: unfinished string near
'"Hello, world!)'
stack traceback:
[C]: in ?
Baca error dalam urutan ini:
- Nama file dan nomor baris
(
01-hello.lua:1). Ini adalah di mana masalahnya berada. Lihat sini dulu. - Pesan singkat
(
unfinished string near ...). Ini adalah apa yang salah. "Unfinished string" berarti Lua melihat tanda kutip pembuka dan mulai membuat string, tapi tidak pernah menemukan tanda kutip penutup. - Potongan kode setelah
nearmenunjukkan kode yang membingungkan Lua.
Error bukan hukuman. Error memberi tahu kamu dengan tepat baris mana yang perlu dilihat dan memberi petunjuk tentang apa yang salah.
Perbaiki tanda kutip yang hilang agar program bisa berjalan lagi.
Lalu coba kesalahan lain: ganti print menjadi
prnt dan jalankan. Baca error baru yang muncul. Apa yang
disarankan oleh pesannya? (Tidak perlu menulis jawaban. Perhatikan
saja.)
Catatan tentang spasi dan huruf besar-kecil
Lua tidak peduli berapa banyak spasi atau baris kosong yang ada di file kamu. Ketiga contoh ini berjalan dengan cara yang sama:
print("Hello, world!") print( "Hello, world!" )
print("Hello, world!")
Lua memang memperhatikan huruf besar-kecil.
print adalah kata yang berbeda dari Print dan
PRINT. Nama bawaan yang benar adalah huruf kecil semua.
PR (Pekerjaan Rumah)
File PR ada di exercises/07/homework/. Buka setiap
starter di VS Code, baca komentar di bagian atas, dan selesaikan file
tersebut agar bisa berjalan dan menghasilkan keluaran yang
diharapkan.
Soal 1 — Sapa dirimu sendiri
Buka exercises/07/homework/01-greet-yourself.lua. File
ini kosong kecuali ada sebuah komentar. Tulis tiga pemanggilan
print sehingga menjalankan file tersebut menampilkan, pada
tiga baris terpisah:
- sebuah sapaan (pilihan katamu sendiri),
- nama depanmu,
- nama game favoritmu.
Soal 2 — Cetak sebuah kutipan
Buka exercises/07/homework/02-print-quote.lua. Cetak
sebuah kutipan terkenal di baris pertama dan nama pengarangnya di baris
kedua dalam format ini:
"The best way to predict the future is to invent it."
— Alan Kay
(Tanda hubung sebelum nama pengarang bisa berupa tanda hubung biasa
-. Spasi yang tepat tidak masalah, asalkan kutipannya ada
di satu baris dan nama pengarangnya ada di baris berikutnya.)
Soal 3 — Perbaiki error-nya
Buka exercises/07/homework/03-fix-the-error.lua. File
ini tidak bisa dijalankan. Baca error yang dicetak Lua, perbaiki file
tersebut, dan jalankan sampai kamu melihat:
All good now.
Ada lebih dari satu kesalahan di dalam file. Temukan semuanya.
Tantangan — Cerita tiga baris
Buka exercises/07/homework/04-three-line-story.lua.
Tulis sebuah cerita mini tiga baris di mana:
- baris pertama menggambarkan latar,
- baris kedua memperkenalkan masalah,
- baris ketiga menyelesaikan masalah.
Setiap baris harus dicetak oleh pemanggilan print-nya
sendiri. Tambahkan komentar multi-baris --[[ ]] di bagian
atas yang menjelaskan, dalam bahasa sehari-hari, tentang apa
ceritamu.
Buntu atau sudah selesai? Buka halaman solusi PR untuk panduan penyelesaiannya.