English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

عناصر الحساب بلغة Lua

العلامة هي رمز خاص يستخدم لتخبر المترجم تنفيذ عملية حسابية أو منطقية معينة. توفر Lua أنواعًا عديدة من العلامات:

  • علامات حسابية

  • علاقات حسابية

  • 逻辑运算符

  • عمليات أخرى

علامات حسابية

الجدول أدناه يعرض العلامات الحسابية الشائعة في لغة Lua، مع تعيين قيمة A إلى 10 وقيمة B إلى 20:

المعادلةوصفمثال
+الجمعA + B الناتج هو 30
-الطرحA - B الناتج هو -10
*الضربA * B الناتج هو 200
/القسمةB / A الناتج هو 2
%التقسيمB % A الناتج هو 0
^الجمع بين القوةA^2 الناتج هو 100
-الناقص-A الناتج هو -10

مثال عبر الإنترنت

يمكننا من خلال المثال التالي فهم تطبيق علامات الحساب بشكل أفضل:

a = 21
b = 10
c = a + b
print("السطر 1 - قيمة c هي ", c)
c = a - b
print("السطر 2 - قيمة c هي ", c)
c = a * b
print("السطر 3 - قيمة c هي ", c)
c = a / b
print("السطر 4 - قيمة c هي ", c)
c = a % b
print("السطر 5 - قيمة c هي ", c)
c = a^2
print("السطر 6 - قيمة c هي ", c)
c = -a
print("السطر 7 - قيمة c هي ", c)

نتائج تنفيذ البرنامج أعلاه هي:

السطر 1 - قيمة c هي 31
السطر 2 - قيمة c هي 11
السطر 3 - قيمة c هي 210
السطر 4 - قيمة c هي 2.1
السطر 5 - قيمة c هي 1
السطر 6 - قيمة c هي 441
السطر 7 - قيمة c هي -21

علاقات حسابية

الجدول أدناه يعرض العلاقات الحسابية الشائعة في لغة Lua، مع تعيين قيمة A إلى 10 وقيمة B إلى 20:

المعادلةوصفمثال
==متساوي، تحقق مما إذا كانت القيمتين متساويتين، وإذا كانت متساويتين أعد الصحيح، وإلا أعد الخطأ(A == B) هو خطأ
~=غير متساوي، تحقق مما إذا كانت القيمتين متساويتين، وإذا لم تكن متساويتين أعد الصحيح، وإلا أعد الخطأ(A ~= B) هو صحيح
>أكبر، إذا كان القيمة على اليسار أكبر من القيمة على اليمين، أعد الصحيح، وإلا أعد الخطأ(A > B) هو خطأ
<أصغر، إذا كان القيمة على اليسار أكبر من القيمة على اليمين، أعد الصحيح، وإلا أعد الخطأ(A < B) 为 true。
>=大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false(A >= B) 返回 false。
<=小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false(A <= B) 返回 true。

مثال عبر الإنترنت

我们可以通过以下示例来更加透彻的理解关系运算符的应用:

a = 21
b = 10
if( a == b )
then
   print("Line 1 - a 等于 b" )
else
   print("Line 1 - a 不等于 b" )
fin
if( a ~= b )
then
   print("Line 2 - a 不等于 b" )
else
   print("Line 2 - a 等于 b" )
fin
if ( a < b )
then
   print("Line 3 - a 小于 b" )
else
   print("Line 3 - a 大于等于 b" )
fin
if ( a > b ) 
then
   print("Line 4 - a 大于 b" )
else
   print("Line 5 - a 小于等于 b" )
fin
-- تعديل قيم a و b
a = 5
b = 20
if ( a <= b ) 
then
   print("Line 5 - a 小于等于  b" )
fin
if ( b >= a ) 
then
   print("Line 6 - b 大于等于 a" )
fin

نتائج تنفيذ البرنامج أعلاه هي:

Line 1 - a 不等于 b
Line 2 - a 不等于 b
Line 3 - a 大于等于 b
Line 4 - a 大于 b
Line 5 - a 小于等于  b
Line 6 - b 大于等于 a

逻辑运算符

下表列出了 Lua 语言中的常用逻辑运算符,设定 A 的值为 true,B 的值为 false:

المعادلةوصفمثال
و逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。(A and B) 为 false。
أو逻辑或操作符。  若 A 为 true,则返回 A,否则返回 B。(A or B) 为 true。
not逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。not(A and B) 为 true。

مثال عبر الإنترنت

我们可以通过以下示例来更加透彻的理解逻辑运算符的应用:

a = true
b  =  true
إذا (a و b)
then
   print("a و b - الشروط هي true")
fin
if ( a or b )
then
   print("a or b - 条件为 true" )
fin
print("---------خط الفصل---------")
-- تعديل قيم a و b
a  =  false
b  =  true
إذا (a و b)
then
   print("a و b - الشروط هي true")
else
   print("a و b - الشروط هي false")
fin
إذا (لا (a و b))
then
   print("لا (a و b) - الشروط هي true")
else
   print("لا (a و b) - الشروط هي false")
fin

نتائج تنفيذ البرنامج أعلاه هي:

a و b - الشروط هي true
a أو b - الشروط هي true
---------خط الفصل---------
a و b - الشروط هي false
لا (a و b) - الشروط هي true

عمليات أخرى

في الجدول أدناه يظهر عمليات الاتصال في لغة Lua وكذلك عمليات الحساب على طول النصوص أو الجداول:

المعادلةوصفمثال
..ربط كلمتينa..b، حيث a هو "Hello "، b هو "World"، الناتج هو "Hello World".
#عمليات الحساب الأحادية، تعود إلى طول النص أو الجدول.#"Hello" يعود إلى 5

مثال عبر الإنترنت

يمكننا من خلال المثال التالي أن نفهم بشكل أفضل تطبيق عمليات الاتصال والحسابات على طول الجداول أو الأنماط النصية:

a  =  "Hello "
b  =  "World"
print("ربط النصوص a و b ",  a..b)
print("طول النص b ",#b)
print("طول النص Test ",#"Test")
print("طول عنوان موقع دروس الأساس ",#"ar.oldtoolbag.com")

نتائج تنفيذ البرنامج أعلاه هي:

ربط النصوص a و b  Hello World
طول النص b 5
طول النص Test 4
طول عنوان موقع دروس الأساس 14

مستوى أولوية العمليات

من الأعلى إلى الأدنى

^
لا
*  /  %
+  -
..
<  >  <=  >=  ~=  ==
و
أو

除了 ^ 和 .. 之外的所有二元运算符都是左连接的。

a+i  <  b/2+1  ->  (a+i)  <  ((b/2)+1)
5 + x^2 * 8 <--> 5 + ((x^2) * 8)
a < y and y <= z <--> (a < y) and (y <= z)
-x^2 <--> -(x^2)
x^y^z <--> x^(y^z)

مثال عبر الإنترنت

يمكننا من خلال الأمثلة التالية فهمًا أفضل لمرتبة الأولويات لعناصر الحساب بلغة Lua:

a = 20
b = 10
c = 15
d = 5
e = (a + b) * c / d; -- (30 * 15) / 5
print("(a + b) * c / d القيمة الحسابية هي: ", e)
e = ((a + b) * c) / d; -- (30 * 15) / 5
print("((a + b) * c) / d القيمة الحسابية هي: ", e)
e = (a + b) * (c / d); -- (30) * (15/5)
print("(a + b) * (c / d) القيمة الحسابية هي: ", e)
e = a + (b * c) / d; -- 20 + (150/5)
print("a + (b * c) / d القيمة الحسابية هي: ", e)

نتائج تنفيذ البرنامج أعلاه هي:

(a + b) * c / d القيمة الحسابية هي: : 90.0
((a + b) * c) / d القيمة الحسابية هي: : 90.0
(a + b) * (c / d) القيمة الحسابية هي: : 90.0
a + (b * c) / d القيمة الحسابية هي: : 50.0