Pengaturcaraan Lua/Pernyataan


Pernyataan atau kenyataan adalah cebisan-cebisan kod yang dapat dilaksanakan dan yang mengandungi sebuah perintah dan ungkapan yang diperlukan. Beberapa pernyataan akan juga mengandungi kod yang dapat dilaksanakan dalam keadaan-keadaan tertentu. Berlainan dengan ungkapan, pernyataan dapat diletakkan dalam kod secara langsung dan akan terlaksana. Lua memiliki hanya sedikit perintah, akan tetapi perintah-perintah ini, apabila digabungkan dengan perintah-perintah lain dan ungkapan-ungkapan kompleks, dapat memberikan kawalan dan kefleksibelan kepada pengguna.

Umpukan

sunting

Para pengatur cara sering perlu menstor nilai dalam memori agar dapat menggunakan nilai-nilai itu semula. Ini dapat dilakukan melaui pemboleh ubah. Pemboleh ubah ialah rujukan kepada sesuatu nilai yang distor dalam memori komputer. Pemboleh ubah boleh diguna untuk mencapai sesuatu nilai kemudian, selepas pengstoran nilai itu dalam memori. Umpukan merupakan arahan yang digunakan untuk mengumpuk nilai kepada pemboleh ubah. Umpukan terdiri daripada nama pemboleh ubah di mana nilai akan distor (P: secara teknikal, yang akan merujuk kepada lokasi memori yang mengandungi nilai), sebuah tanda sama ('='), dan nilai yang akan distor dalam pemboleh ubah:

pemboleh ubah  = 43
print(pemboleh ubah) --> 43

Seperti ditunjukkan dalam kod di atas, nilai pemboleh ubah dapat dicapai dengan meletakkan nama pemboleh ubah pada tempat di mana nilai perlu diperoleh. Kita boleh mengumpukkan beberapa pemboleh ubah serentak, seperti dalam contoh berikut:

var1, var2 = 54, 87

Tambah lagi, berlainan dengan bahasa-bahasa pengaturcaraan lain, Lua juga membolehkan kita membuat umpukan semula pada pemboleh ubah melalui proses permutasi. Misalnya:

var1, var2 = 54, 87
var1, var2 = var2, var1
print(var1, var2) --> 87 54

Pengenal pasti

sunting

Dengan Lua, pengenal pasti (identifier) juga dipanggil nama (name). Pengenal pasti boleh terdiri daripada nama atau teks yang terdiri daripada huruf, angka, dan tanda garis bawah, dan yang tidak bermula dengan angka. Pengenal pasti digunakan untuk menamakan pemboleh ubah dan medan jadual (jadual dan medan jadual dibincangkan dalam bab Jadual.

Berikut merupakan nama-nama sah:

  • nama
  • helo
  • _
  • _kacang
  • me41
  • __
  • _iniIalahNamaSah_23

Berikut nama tak sah:

  • 2helo -- bermula dengan angka
  • th$i -- mengandungi aksara yang bukan huruf, angka atau tanda garis bawah
  • hel!o -- mengandungi aksara yang bukan huruf, angka atau tanda garis bawah
  • 563text -- bermula dengan angka
  • #82_sesuatu -- mengandungi aksara yang bukan huruf, angka atau tanda garis bawah

Kata kunci dan kata simpanan

sunting

Juga, perlu diperhatikan bahawa nama-nama berikut (kata kunci) merupakan nama simpanan Lua dan tidak boleh digunakan sebagai nama: and, end, in, repeat, break, false, local, return, do, for, nil, then, else, function, not, true, elseif, if, or, until, while

Apabila anda menamakan pemboleh ubah ataupun medan jadual, anda perlulah memilih nama yang sah, seperti yang diperikan di atas. Juga, perlu diperhatikan bahawa Lua sensitif huruf. Justeru Helo dan helo tidak sama dan merupakan dua nama berlainan.

Oleh sebab Lua sensitif huruf, kita sebenarnya boleh menggunakan nama 'And' atau 'Local' (lihat kata kunci di atas) akan tetapi ini tidak digalakkan kerana boleh menimbulkan kekeliruan dan juga mudah untuk mendapat ralat dan pepijat.

Global dan lokal

sunting

Skop ialah bahagian kod sesuatu program di mana pemboleh ubah memiliki makna atau boleh menjadi berguna. Contoh-contoh pemboleh ubah yang anda lihat sebelum ini merupakan contoh-contoh pemboleh ubah global, yakni pemboleh ubah yang dapat dicapai dari mana-mana tempat dalam program. Sebaliknya, pemboleh ubah lokal, hanya dapat digunakan dalam bahagian program di mana pemboleh ubah itu dicipta dan dalam bahagian program yang merangkumi bahagian di mana pemboleh ubah itu dicipta. Pemboleh ubah lokal diberi definisi atau dicipta dengan cara yang sama dengan penciptaan pemboleh ubah global, akan tetapi perlu diberi prefiks kata kunci local.

Pernyataan do (disediakan oleh Lua) didapat digunakan untuk menerangkan skop.

do ("buat") ialah sebuah pernyataan yang digunakan untuk membuat sebuah blok kod baharu, dan oleh sebab itu, sebuah skop baharu. Pernyataan ini berakhir dengan kata kunci end ("tamat"):

local var = 13 -- Ini memberi definisi [P: mencipta] sebuah pemboleh ubah lokal bernama <code>var</code> 
               -- yang dapat dicapai dari mana-mana tempat dalam kod oleh sebab 
               -- ia diberi definisi dalam bahagian utama.
do
	-- Pernyataan ini mencipta blok baharu dan juga sebuah skop baharu.
	var = var + 5 -- Ini menambah 5 pada pemboleh ubah yang sekarang sama dengan 18.
	local var = 17 -- Ini mencipta pemboleh ubah yang memiliki nama yang sama 
                       -- dengan pemboleh ubah sebelumnya (yakni 'var'),  akan tetapi ia lokal 
                       -- pada skop yang dicipta oleh pernyataan 'do'.
	var = var - 1 -- Ini menolak angka 1 daripada pemboleh ubah lokal, 
                      -- yang sekarang sama dengan 16.
	print(var) --> 16
end
print(var) --> 18

Apabila skop berakhir, kesemua pemboleh ubah yang terkandung di dalamnya dihapuskan. Bahagian-bahagian kod sesuatu program boleh menggunakan pemboleh ubah yang dicipta dalam bahagian kod yang sama, akan tetapi jika pemboleh ubah "ditulis semula" dengan definisi sebuah pemboleh ubah lokal yang memiliki nama yang sama, pemboleh ubah lokal itu akan digunakan dan tidak pemboleh ubah yang dicipta di bahagian lain. Inilah sebabnya panggilan pertama buat fungsi print mencetak 16 sementara panggilan kedua yang berada di luar bahagian yang dicipta pernyataan do itu mencetak 18.

Secara praktikal, kita harus menggunakan pemboleh ubah lokal kerana pemboleh ubah lokal dapat dicipta dan dicapai dengan lebih pantas berbanding pemboleh ubah global oleh sebab pemboleh ubah lokal distor dalam daftar dan tidak dalam sekitaran fungsi seperti yang berlaku untuk pemboleh ubah global.

Daftar merupakan bahagian-bahagian yang digunakan Lua untuk menstor pemboleh ubah lokal agar dapat dicapai dengan pantas. Daftar hanya dapat mengandungi 200 pemboleh ubah lokal. Pemproses, sebuah komponen penting dalam semua komputer, juga memiliki daftar, akan tetapi ini tiada kaitan dengan daftar-daftar Lua. Setiap fungsi (termasuk bebenang utama, teras program yang juga merupakan sebuah fungsi) juga memiliki sekitarannya sendiri. Sekitaran fungsi terdiri daripada sebuah jadual yang menggunakan indeks buat nama-nama pemboleh ubah dan menstor nilai-nilai pemboleh ubah mengikut indeks.

Pernyataan bersyarat

sunting

Pernyataan bersyarat merupakan arahan untuk memeriksa sama ada sesuatu ungkapan itu benar (true) dan jika ya, melaksanakan secebis kod. Jika sesebuah ungkapan itu tidak benar, pernyataan bersyarat akan melangkau cebisan kod yang berkaitan dan pelaksanaan program akan berjalan terus. Dengan Lua pernyataan bersyarat menggunakan arahan if. False dan nil dianggap palsu sementara yang lain dianggap benar.

local nombor = 6 -- pernyataan umpukan

if nombor < 10 then
	print("Nombor " .. nombor .. " adalah lebih kecil daripada sepuluh.")
end

-- Kod-kod lain boleh diletakkan di sini dan kod akan terlaksana
-- tidak kira sama ada kod dalam pernyataan bersyarat terlaksana atau tidak.

Dalam kod di atas, pemboleh ubah nombor diumpukkan pada nombor 6 melalui pernyataan umpukan. Kemudian, pernyataan bersyarat memeriksa sama ada nilai yang distor dalam pemboleh ubah nombor lebih kecil daripada 10 atau sebaliknya. Jika ya, ia mencetak "Nombor 6 adalah lebih kecil daripada sepuluh.".