English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
الحرف الحسابي هو رمز يستخدم لتخبر المبرمج عن تنفيذ عملية حسابية أو منطقية معينة.
Scala تحتوي على مجموعة واسعة من الحروف الحسابية المدمجة، بما في ذلك النوع التالي:
الحروف الحسابية
الحروف الحسابية
عناصر العمليات المنطقية
عناصر العمليات المنطقية
عمليات الربط
سنقدم لكم تفصيلاً حول تطبيق جميع هذه الحروف الحسابية.
الجدول أدناه يوضح الحروف الحسابية المدعومة من Scala.
افترض أن المتغير A هو 10،B هو 20:
عناصر الحساب | الوصف | مثال |
---|---|---|
+ | شريط الإضافة | A + B الحساب الناتج هو 30 |
- | شريط الحذف | A - B الحساب الناتج هو -10 |
* | شريط الضرب | A * B الحساب الناتج هو 200 |
/ | شريط التقسيم | B / A الحساب الناتج هو 2 |
% | استخراج الباقي | B % A الحساب الناتج هو 0 |
object Test { def main(args: Array[String]) { var a = 10; var b = 20; var c = 25; var d = 25; println("a + b = " + (a + b)); println("a - b = " + (a - b)); println("a * b = " + (a * b)); println("b / a = " + (b / a)); println("b % a = " + (b % a)); println("c % a = " + (c % a)); } }
عند تنفيذ الكود أعلاه، الناتج هو:
$ scalac Test.scala $ scala Test a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5
الجدول أدناه يوضح الحروف الحسابية المدعومة من Scala.
افترض أن المتغير A هو 10،B هو 20:
عناصر الحساب | الوصف | مثال |
---|---|---|
== | يساوي | (A == B) الحساب الناتج هو false |
!= | غير متساوي | (A != B) الحساب الناتج هو true |
> | أكبر | (A > B) الحساب الناتج هو false |
< | أقل | (A < B) الحساب الناتج هو true |
>= | أكبر أو يساوي | (A >= B) الحساب الناتج هو false |
<= | أقل أو يساوي | (A <= B) الحساب الناتج هو true |
object Test { def main(args: Array[String]) { var a = 10; var b = 20; println("a == b = " + (a == b)); println("a != b = " + (a != b)); println("a > b = " + (a > b)); println("a < b = " + (a < b)); println("b >= a = " + (b >= a)); println("b <= a = " + (b <= a)); } }
عند تنفيذ الكود أعلاه، الناتج هو:
$ scalac Test.scala $ scala Test a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
التالي هو قائمة بعناصر العمليات المنطقية المدعومة في Scala.
إفترض أن المتغير A هو 1، B هو 0:
عناصر الحساب | الوصف | مثال |
---|---|---|
&& | النفي المنطقي | نتائج العمليات المنطقية (A && B) هي false |
|| | الإشتراك المنطقي | نتائج العمليات المنطقية (A || B) هي true |
! | النفي المنطقي | نتائج العمليات المنطقية !(A && B) هي true |
object Test { def main(args: Array[String]) { var a = true; var b = false; println("a && b = " + (a && b)); println("a || b = " + (a || b)); println("!(a && b) = " + !(a && b)); } }
عند تنفيذ الكود أعلاه، الناتج هو:
$ scalac Test.scala $ scala Test a && b = false a || b = true !(a && b) = true
استخدام عناصر العمليات المنطقية للعمل على المواقع الثنائية، ~، &، |، ^ تُعرف بالنفي، الاتصال الحذفي، الاتصال المنطقي، الاتصال المنطقي المتبادل، مثل الأمثلة التالية:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
إذا تم تحديد A = 60; وب = 13; فإن القيم الثنائية للمتغيرين هي:
A = 0011 1100 B = 0000 1101 ------- عمليات الحساب الحذفي ---------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011
قواعد العمليات المنطقية في Scala كالتالي:
عناصر الحساب | الوصف | مثال |
---|---|---|
& | عمليات الاتصال المنطقي | (a & b) نتائج الظهور 12، التفسير الثنائي: 0000 1100 |
| | عمليات الاتصال المنطقي | (a | b) نتائج الظهور 61، التفسير الثنائي: 0011 1101 |
^ | عمليات الاشتراك المنطقي | (a ^ b) نتائج الظهور 49، التفسير الثنائي: 0011 0001 |
~ | عمليات النفي المنطقي | نتيجة خروج (~a) هي -61، التفسير الثنائي: 1100 0011، في شكل إشارة ثنائية للعدد السالب. |
<< | عمليات التحريك إلى اليسار | a << 2 نتيجة الخروج 240، التفسير الثنائي: 1111 0000 |
>> | عمليات التحريك إلى اليمين | a >> 2 نتيجة الخروج 15، التفسير الثنائي: 0000 1111 |
>>> | التحويل بدون إشارة | A >>>2 نتيجة الخروج 15، التفسير الثنائي: 0000 1111 |
object Test { def main(args: Array[String]) { var a = 60; /* 60 = 0011 1100 */ var b = 13; /* 13 = 0000 1101 */ var c = 0; c = a & b; /* 12 = 0000 1100 */ println("a & b = " + c ); c = a | b; /* 61 = 0011 1101 */ println("a | b = " + c ); c = a ^ b; /* 49 = 0011 0001 */ println("a ^ b = " + c ); c = ~a; /* -61 = 1100 0011 */ println("~a = " + c ); c = a << 2; /* 240 = 1111 0000 */ println("a << 2 = " + c ); c = a >> 2; /* 15 = 1111 */ println("a >> 2 = " + c ); c = a >>> 2; /* 15 = 0000 1111 */ println("a >>> 2 = " + c ); } }
عند تنفيذ الكود أعلاه، الناتج هو:
$ scalac Test.scala $ scala Test a & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a << 2 = 240 a >> 2 = 15 a >>> 2 = 15
فيما يلي قائمة بعمليات الربط التي يدعمها لغة Scala:
عناصر الحساب | الوصف | مثال |
---|---|---|
= | حسابات الربط البسيطة، تحديد القيمة من الجانب الأيمن لربطها بالجانب الأيسر. | C = A + B تعيين نتيجة حساب A + B لـ C |
+= | الجمع ثم الربط، إضافة القيم من الجانبين الأيمن والأيسر ثم ربطها بالعنصر الأيسر. | C += A يعادل C = C + A |
-= | تخصيص بعد عمليات النقاط، سيتم طرح العناصر الموجودين على الجانبين وتخصيصه للعنصر الأيسر | C -= A يعادل C = C - A |
*= | تخصيص بعد عمليات النقاط، سيتم ضرب العناصر الموجودين على الجانبين وتخصيصه للعنصر الأيسر | C *= A يعادل C = C * A |
/= | تخصيص بعد عمليات النقاط، سيتم قسمنا للعناصر الموجودين على الجانبين وتخصيصه للعنصر الأيسر | C /= A يعادل C = C / A |
%= | تخصيص بعد عمليات النقاط، سيتم حساب البقية من كل من العناصر الموجودين على الجانبين وتخصيصه للعنصر الأيسر | C %= A يعادل C = C % A |
<<= | تخصيص بعد عمليات النقاط | C <<= 2 يعادل C = C << 2 |
>>= | تخصيص بعد عمليات النقاط | C >>= 2 يعادل C = C >> 2 |
&= | تخصيص بعد عمليات النقاط | C &= 2 يعادل C = C & 2 |
^= | تخصيص بعد عمليات النقاط | C ^= 2 يعادل C = C ^ 2 |
|= | تخصيص بعد عمليات النقاط | C |= 2 يعادل C = C | 2 |
object Test { def main(args: Array[String]) { var a = 10; var b = 20; var c = 0; c = a + b; println("c = a + b = " + c ); c += a ; println("c += a = " + c ); c -= a ; println("c -= a = " + c ); c *= a ; println("c *= a = " + c ); a = 10; c = 15; c /= a ; println("c /= a = " + c ); a = 10; c = 15; c %= a ; println("c %= a = " + c ); c <<= 2 ; println("c <<= 2 = " + c ); c >>= 2 ; println("c >>= 2 = " + c ); c >>= a ; println("c >>= a = " + c ); c &= a ; println("c &= 2 = " + c ); c ^= a ; println("c ^= a = " + c); c |= a; println("c |= a = " + c); } }
عند تنفيذ الكود أعلاه، الناتج هو:
$ scalac Test.scala $ scala Test c = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c <<= 2 = 20 c >>= 2 = 5 c >>= a = 0 c &= 2 = 0 c ^= a = 10 c |= a = 10
أولوية عناصر الحساب تعتمد على مجموعة العناصر الحسابية التي تنتمي إليها، مما يؤثر على حساب المعادلة.
مثال: x = 7 + 3 * 2; هنا،结果是 x هو 13 وليس 20، لأن الجمع (* ) أعلى من الجمع (+)، لذا يتم حساب 3 * 2 أولاً ثم إضافة 7.
انظر إلى الجدول أدناه، حيث تنخفض الأولوية من الأعلى إلى الأسفل، والأعلى منها لديها الأولوية العالية، وعلامة الاستفهام هي الأقل الأولوية.
فئة | عناصر الحساب | التناسق |
---|---|---|
1 | () [] | من اليسار إلى اليمين |
2 | ! ~ | من اليمين إلى اليسار |
3 | * / % | من اليسار إلى اليمين |
4 | + - | من اليسار إلى اليمين |
5 | >> >>> << | من اليسار إلى اليمين |
6 | > >= < <= | من اليسار إلى اليمين |
7 | == != | من اليسار إلى اليمين |
8 | & | من اليسار إلى اليمين |
9 | ^ | من اليسار إلى اليمين |
10 | | | من اليسار إلى اليمين |
11 | && | من اليسار إلى اليمين |
12 | || | من اليسار إلى اليمين |
13 | = += -= *= /= %= >>= <<= &= ^= |= | من اليمين إلى اليسار |
14 | , | من اليسار إلى اليمين |