Cơ bản về ngôn ngữ LUA

Thảo luận trong 'Tutorials và Thủ thuật lập trình' bắt đầu bởi admin, 18/4/14.

  1. Administrator
    admin
    Nhân viên CoronaViet
    Tham gia ngày:
    16/1/14
    Bài viết:
    303
    Đã được thích:
    100
    Lua (tiếng Bồ Đào Nha: Mặt Trăng) là một ngôn ngữ lập trình thông dịch với đặc điểm nhỏ gọn, đa nền tảng. Lua được phát triển từ C và hệ thống các API theo hướng đơn giản hóa.
    [​IMG]
    Lịch sử
    Lua được nhóm chuyên viên khoa học máy tính gồm Roberto Ierusalimschy, Waldermar Celes, L.H. Figueiredo, tại đại học PUC-RIO, Brasil phát triển vào năm 1993. Phát sinh từ nhu cầu có một ngôn ngữ thích hợp để viết những tập tin cấu hình cho các phần mềm chuyên dụng trong ngành dầu khí, các tác giả đã xem xét ngôn ngữ hiện dùng lúc bấy giờ là SOL (Simple Object Language - ngôn ngữ đối tượng đơn giản), để tạo ra một ngôn ngữ có tính năng diễn đạt tốt hơn. Ngôn ngữ này được đặt tên là Lua, có nghĩa là Mặt Trăng theo tiếng Bồ Đào Nha (bản thân Sol có nghĩa là Mặt trời).

    Cú pháp

    Các bó lệnh (chunk)
    Mặc dù các câu lệnh nên được viết riêng rẽ trên từng dòng, nhưng thực ra Lua có khái niệm bó câu lệnh theo đó có thể viết nhiều câu lệnh trên cùng một dòng, và không nhất thiết có dấu phân cách (; hoặc ,).

    -- đây là dòng chú thích
    a = 1
    b = 2; c = 3 -- phân cách bằng ;
    d = 4, e = 5 -- phân cách bằng ,
    f = 6 g = 7 -- cũng hợp lệ!

    Cấu trúc
    Các cấu trúc như rẽ nhánh, lặp đều được kết thúc bằng từ khóa dùng chung là end.

    Mã (Lua):
    for i = 1,10 do
      s = s + i    -- không cần khởi tạo s, mặc định s bằng 0
    end

    repeat
      s = s - 1
    until s < -10

    function gttd(x)
      if x > 0 then
          return(x)
      else
          return(-x)
      end
    end
    Hàm
    Các hàm trong Lua được gọi với cặp ngoặc () truyền thống.

    Mã (Lua):
    print(2+3)
    print("Hello World")
    Ngoài ra còn có cú pháp đặc biệt cho phép bỏ cặp ngoặc đơn trong trường hợp tham số có dạng chuỗi hoặc table:

    Mã (Lua):
    print "Hello World"
    Hàm là kiểu dữ liệu cơ bản và có thể gán vào các biến:

    Mã (Lua):
    gttd = math.abs
    print(gttd(-5.7))
    Phương thức
    Khi gọi một phương thức có thể sử dụng theo cách truyền thống với dấu chấm hoặc dùng dấu hai chấm. Trong trường hợp thứ hai thì ta lược bỏ đối tượng gọi phương thức trong danh sách tham số:

    Mã (Lua):
    aFile = io.open("tenfile", "r") -- đọc file sử dụng phương thức open
    -- với read là một phương thức của đối tượng aFile trong lớp io
    a = io.read(aFile, "*n")        -- đọc số a từ file aFile
    a = aFile:read("*n")            -- cách 2
    Kiểu table
    Mã (Lua):
    tuoi = {Britney=27, Andy=26}    -- một kiểu database
    print(tuoi["Britney"], tuoi["Andy"])
    print(tuoi.Britney, tuoi.Andy)    -- syntactic sugar

    -- dãy số chính phương
    day = {[1] = 1, [2] = 4}    -- tương đương với dòng lệnh dưới ...
    day = {1, 4}                -- tự động gán các khóa là số nguyên
    day[3] = 9
    for i = 4,10 do
      day = i * i
    end

    print(day)              -- mã hiệu của table day
    print(unpack(day))      -- các phần tử trong table day



      • Tạo các key trong table rất đơn giản
      • Thay đổi cấu trúc và chỉ mục của table đã được tạo trước.
      • Có thể sử dụng table như 1 mảng
      • Sử dụng vòng lặp trong table
      • Viết chương trình hướng đối tượng với table.
      • Xây dựng những cấu trúc dữ liệu từ table.
      • Những phương thức được định nghĩa sẳn trên table:
    o Table.insert: thêm một phần tử vào table Ví dụ:

    Mã (Lua):
    T = {}
      table.insert(T, “a”)
      table.insert(T, “b”)
      table.insert(T, “c”)
      print(CommaSeparate(T))

    a, b, c

    o Table.sort: sắp xếp các phần tử trong 1 table Ví dụ sử dụng chức năng sort:

    Names =  {“Scarlatti”, “Telemann”, “Corelli”, “Purcell”,
                  “Vivaldi”,  “Handel”, “Bach”}
      table.sort(Names)
      for I, Name in ipairs(Names) do
                  print(I,  Name)
      end
    Trích:
    1 Bach
    2 Corelli
    3 Handel
    4 Purcell
    5 Scarlatti
    6 Telemann
    7 Vivaldi

    o Table.concat: nối các phần tử trong table thành một chuổi. Ví dụ:

    Mã (Lua):
    print(table.concat({“a”, “bc”, “d”}))
    Abcd

    o Table.remove: Remove một phần tử trong table. Ví dụ:

    Mã (Lua):
    T = {}
      table.insert(T, “a”)
      table.insert(T, “b”)
      table.insert(T, “c”)
      print(CommaSeparate(T))
      a, b, c
      print(table.remove(T))
      c
      print(CommaSeparate(T))
      a, b
      print(table.remove(T))
      b
      print(CommaSeparate(T))
      a
      print(table.remove(T))
      a

    -- T is now empty again:
    print(#T)
    o Table.maxn: tìm trên mỗi cặp key – value trong một table và trả về key tương ứng với value lớn nhất hoặc trả về 0 nếu value không phải là số dương. Ví dụ:
    Mã (Lua):
    print(table.maxn({“a”, nil, nil, “c”}))
      4
      print(table.maxn({[1.5] = true}))
      1.5
      print(table.maxn({[ì1.5î] = true}))
      0
    Last edited: 18/4/14
  2. New Member
    culuaba
    Tham gia ngày:
    16/10/14
    Bài viết:
    2
    Đã được thích:
    0
    ai có sách hay tai lieu gi không cho t xin với, còn amator lám chưa biết gì
  3. New Member
    Toản
    Tham gia ngày:
    31/5/15
    Bài viết:
    3
    Đã được thích:
    0
    hoc ngôn ngử lua trên mạng thôi à...có ai có bí quyết gì k/
  4. New Member
    Võ Thanh Liêm
    Tham gia ngày:
    2/1/16
    Bài viết:
    18
    Đã được thích:
    3
    Ad có thể nói rõ hơn về Table như là
    • Tạo các key trong table
    • Thay đổi cấu trúc và chỉ mục của table đã được tạo trước.
    • Sử dụng table như 1 mảng
    • Sử dụng vòng lặp trong table
    • Viết chương trình hướng đối tượng với table.
    • Xây dựng những cấu trúc dữ liệu từ table
    Nếu nhiều quá thì có thể cho em hỏi về 2 nội dung là Hướng đối tượng với table và xây dựng cấu trúc dữ liệu từ table thôi được không ạ. Cảm ơn rất rất nhiều
  5. New Member
    thu2921996
    Tham gia ngày:
    15/7/16
    Bài viết:
    4
    Đã được thích:
    0
    Cho mình xin sách vs
  6. Administrator
    linhle
    Nhân viên CoronaViet
    Tham gia ngày:
    8/2/14
    Bài viết:
    190
    Đã được thích:
    133
  7. New Member
    thu2921996
    Tham gia ngày:
    15/7/16
    Bài viết:
    4
    Đã được thích:
    0
    Cám ơn bạn nhé

Chia sẻ trang này