**Lua** (պորտ.՝ «լուսին»), թեթև ծրագրավորման լեզու է նախագծված, որպես սկրիպտային լեզու ընդլայնելի իմաստաբանությամբ, որպես գլխավոր նպատակ։ Lua-ն քրոսպլատֆորմ է, քանի որ գրված է ANSI C-ով և համեմատաբար պարզ է C, API -ի նկատմամբ։

Հատկանիշներ
-----------

Lua-ն հաճախ անվանում են մուլտիպարադիգմային լեզվով։ Այն ապահովում է հիմնական մեխանիզմների մի փոքր շարք։

### Կոդի օրինակ

Դասական Hello, World! ծրագիրը կարող է գրել է հետեւյալ կերպ.

```
print('Hello World!')

```

նաև

```
io.write('Hello World!\n')

```

կամ (the Lua website Archived 2016-03-04 at the Wayback Machine.)

```
io.write("Hello world, from ",\_VERSION,"!\n")

```

Մեկնաբանությւնների համար օգտագործում են հետևյալ սինտակսը։

```
-- Մեկնաբանությունները Lua-ում սկսվում է կրկնակի տողադարձով և շարունակվումմ է մինչև տողի վերջ։

--[[ Մեկից ավելի տողերը և մեկնաբանությունները 
 վերցնում են երկու քառակուսի փակագծեր։ ]]

```

Ֆակտորիալի ֆունկցիան իրականացվում է այս ֆունկցիայի օրինակով։

```
function factorial(n)
  local x = 1.
  for i = 2,n do
    x = x \* i
  end
  return x
end

```

### Ցիկլեր

Lua-ն ունի ցիկլի չորս տեսակ while ցիկլ,do while ցիկլ,
for ցիկլ և ընդհանուր for ցիկլ։

```
--պայման = true

while պայման do
  --հայտարարություններ
end

repeat
  --հայտարարություններ
until պայման

for i = first,last,delta do --delta-ն կարող է լինել բացասական, for ցիկլը թույլ է տալիս հաշվել կամ հետհաշվարկել։
  --հայտարարություններ
  --օրինակ՝ print(i)
end

```

Ընդհանուր for ցիկլ։

```
for key, value in pairs(\_G) do
  print(key, value)
end

```

### Ֆունկցիաներ

Ֆունկցիաների հետ աշխատանքը, որպես առաջին կարգի օբյեկտներ ցույց է տրված հետևյալ օրինակում, որտեղ փոփոխվում է print ֆունկցիայի վարաքագիծը.

```
do
  local oldprint = print
  -- Պահպանում ենք տրված print ֆունկցիան իբրև oldprint
  function print(s)
    --[[ Վերասահմանում ենք print ֆունկցիան.]]
    oldprint(s == "foo" and "bar" or s)
  end
end

```

### Աղյուսակներ

Աղյուսակները տվյալների տեսակների ամենա կարևոր կաույցն են Lua-ում և հիմք են բոլոր օգտագործողների տվյալների տեսակում։
Lua-ում աղյուսակը իրենից ներկայացնում է զույգերի հավաքածու՝ բանալի։ Բանալին կարող է ստանալ ցանկացած արժեք բացի nil(չորոշված)-ից։

Աղյուսակները կառուցվում են հետևյալ `{}` սինտաքսով։

```
a\_table = {} -- Ստեղծում է նոր, դատարկ աղյուսակ

```

```
a\_table = {x = 10} -- Ստեղծում է աղյուսակ մեկ մուտքագրումով "x" վերագրելով 10
print(a\_table["x"]) -- Տպում է ստեղնի հետ կապված արժեքը, այս դեպքում 10
b\_table = a\_table
b\_table["x"] = 20 -- Այս աղյուսակում նրա արժեքը փոխվեց 20-ի.
print(b\_table["x"]) -- Տպում է 20
print(a\_table["x"]) -- Նույնպես տպում է 20, որովհոտև a\_table և b\_table դիմում են նույն աղյուսակին

```

#### Որպես գրառում

Աղյուսակները հաճախ օգտագործում են, որպես գրառում՝ օգտագործելով նշանների հաջորդականություն, որպես բանալի։ 
Օրինակ՝

```
point = { x = 10, y = 20 } -- Ստեղծում է նոր աղյուսակ
print(point["x"]) -- Տպում է 10
print(point.x) -- Ունի նույն իմաստը, ինչը վերևի տողում է

```

#### Որպես անվանատարածք

Օգտագործելով աղյուսակը՝ պահելու առնչվող ֆունկցիաները այն կարող է հանդես գալ, որպես անվանատարածք։

```
Point = {}

Point.new = function(x, y)
  return {x = x, y = y}  -- վերադարձնում է {["x"] = x, ["y"] = y}
end

Point.set\_x = function(point, x)
  point.x = x  -- point["x"] = x;
end

```

Ծանոթագրություններ
------------------

1. ↑  Lua: about
2. ↑
3. ↑  Lua 5.1 Reference Manual — 2019.
4. ↑  A Look at the Design of Lua — [New York]: Association for Computing Machinery, 2018. — ISSN 0001-0782; 1557-7317
5. ↑
6. ↑
7. ↑  The lua Open Source Project on Open Hub: Licenses Page — 2006.

Արտաքին հղումներ
----------------

* http://www.lua.org/ Lua (ծրագրավորման լեզու). պաշտոնական կայք
* lua-users.org – Community website for and by users (and authors) of Lua
* eLua – Embedded Lua Archived 2011-07-23 at the Wayback Machine.
* Projects in Lua Archived 2007-02-02 at the Wayback Machine.
* SquiLu Squirrel modified with Lua libraries

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| * դ
* ք
* խ
Հիմնական ծրագրավորման լեզուները (համեմատումը  • IDE  • պատմությունը  • ժամանակագրութունը) |
| --- |
|  |
| Օգտագործվողլեզուները | 
Ada •
APL •
Ասեմբլեր •
ActionScript •
ABAP/4 •
AutoIt •
AWK •
Basic •
C •
Կոբոլ •
C++ •
C# •
Cω •
Clarion •
Clojure •
ColdFusion •
Common Lisp •
D •
dBase •
Delphi •
Eiffel •
Erlang •
Euphoria •
F# •
Fort •
Fortran •
Gambas •
Go •
Groovy •
HAL/S •
Haskell •
Icon •
Ջավա •
ՋավաՍկրիպտ •
Limbo •
Lua •
Mudula-3 •
Object Pascal •
Objective-C •
OCaml •
Oz •
Parser •
Pascal •
Perl •
PHP •
PowerBASIC •
Python •
PL/1 •
Prolog •
R •
Ruby •
Scala •
Scheme •
Smalltalk •
SQL •
Standard ML •
PL/SQL •
Tcl •
Vala •
Visual Basic
(.NET)
 |
|  |
| Ուսումնական | 
Agda •
Clean •
Curry •
Լոգո •
ML •
REFAL •
Simula •
Օբերոն
 |
|  |
| IEC 61131-3 | 
Instruction List •
ST •
FBD •
Ladder Diagram (LD) •
SFC
 |
|  |
| Այլ | 
Modula-2 •
Miranda •
Hope •
Rexx
 |
|  |
| Էզոտերիկ | 
HQ9+/HQ9++ •
INTERCAL •
Brainfuck •
Brainfork •
Befunge •
Malbolge •
Piet •
Spoon •
Unlambda •
Whitespace •
FALSE •
LOLCODE
 |
|  |
| Վիզուալ | 
G
(LabVIEW) •
Microsoft VPL •
Sikuli •
VisSim •
Scratch
 |

 |

|  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- |
| 

|  |  |
| --- | --- |
|  ⛭   Թեմատիկ կայքեր | չարորաբան |
|  |
| Չափորոշչային վերահսկողություն | BNF: 166522948 · GND: 7547043-3 · LCCN: sh2004007514 |

 |