T
tiago2
کاربر تالار
کاربر تالار
اپراتورهای اصلی جاوا:
جاوا مجموعه ای غنی از اپراتورها برای اجرای متغیرها ارائه می دهد. می توانیم تمام اپراتورهای جاوا را به گروه های زیر تفسیم کنیم:
· Arithmetic Operators (عملگرهای محاسباتی)
· Relational Operators (عملگرهای رابطه ای)
· Bitwise Operators (اپراتورهای بیتی)
· Logical Operators (اپراتورهای منطقی)
· Assignment Operators (اپراتورهای انتصابی)
· Misc Operators (اپراتورهای Misc)
اپراتورهای Arithmetic (محاسباتی)
اپراتورهای arithmetic در عبارات ریاضی همانطوری استفاده می شوند که در جبر مورد استفاده قرار می گیرند. جدول زیر اپراتورهای arithmetic را ارائه می دهد:
فرض کنید متغیر عدد صحیح A مقدار 10 و متغیر عدد صحیح B مقدار 20 را دارد، بنابراین:
Operator
Description
Example
+
به هر طرف اپراتور مقدار اضافه می کند.
A + B will give 30
-
Operand سمت راست را از operand سمت چپ کم می کند.
A - B will give -10
*
مقادیر را در هر رو طرف اپراتور ضرب می کند.
A * B will give 200
/
Operand سمت راست را بر operand سمت چپ تقسیم می کند.
B / A will give 2
%
Operand سمت چپ را به operand سمت راست تقسیم کرده و باقیمانده را گزارش می دهد.
B % A will give 0
++
مقدار operand را به اندازه ی یک واحد افزایش می دهد.
B++ gives 21
--
مقدار operand را به اندازه ی یک واحد کاهش می دهد.
B-- gives 19
اپراتورهای رابطه ای (Relational):
اپراتورهای رابطه ای که در زبان جاوا پشتیبانی می شوند در زیر ارائه شده اند.
فرض کنید متغیر A دارای مقدار 10 و متغیر B دارای مقدار 20 می باشد.
Operator
Description
Example
==
مساوی یا غیرمساوی بودن مقادیر دو operand را چک می کند، اگر مساوی باشند، شرایط به درستی پیش میرود.
(A == B) is not true.
!=
تساوی دو operand را چک می کند، اگر مقادیر برابر نباشند، شرایط درست می شود.
(A != B) is true.
>
مقادیر operand چپ و راست را مورد بررسی قرار می دهد، اگر مقدار operand چپ بزرگتر باشد، شرایط درست می باشد.
(A > B) is not true.
<
مقادیر operand چپ و راست را مورد بررسی قرار می دهد، اگر مقدار operand چپ کوچکتر باشد، شرایط درست می باشد.
(A < B) is true.
>=
بررسی می کند، اگر مقدار operand چپ از operand راست بزرگتر باشد یا با هم برابر باشند، شرایط درست می باشد.
(A >= B) is not true.
<=
بررسی می کند، اگر مقدار operand چپ کمتر از یا برابر با مقدار operand راست باشد، شرایط درست می باشد.
(A <= B) is true.
اپراتورهای Bitwise:
جاوا چندین اپراتور bitwise تعریف می کند، که می توانند برای انواع عدد صحیح، long،int، short، char و byte استفاده شوند.
اپرتور bitwise روی بیت ها کار می کند و عملکردها را bit-by-bit اجرا می کند. فرض کنید اگر a = 60; و b = 13 ؛ اکنون در فرمت دوگانه مانند زیر می باشند:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
جدول زیر اپراتورهای bitwise را لیست می کند:
فرض کنید متغیر عدد صحیح A دارای مقدار 60 و متغیر B دارای مقدار 13 باشد، بنابراین:
Operator
Description
Example
&
اگر در هر دو operand وجود داشته باشد، اپراتور دوگانه ی AND یک بیت را به هر دو operand کپی می کند.
(A & B) will give 12 which is 0000 1100
|
اپراتور دوگانه ی OR یک بیت را کپی می کند، اگر در هر دو operand وجود داشته باشد.
(A | B) will give 61 which is 0011 1101
^
اپراتور دوگانه ی XOR یک بیت را کپی می کند، اگر در یک operand و نه هر دو تنظیم شده باشد.
(A ^ B) will give 49 which is 0011 0001
~
اپراتور دوتایی Ones Complement یگانی است و دارای تاثیر بیت های 'flipping می باشد.
(~A ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary number.
<<
اپراتور دوتایی Left Shift. مقادیر operand های چپ با یا تعداد بیت های مشخص شده به وسیله ی operand راست، به سمت چپ حرکت می کنند.
A << 2 will give 240 which is 1111 0000
>>
اپراتور دوتایی Right Shift. مقدار Operand های چپ با تعداد بیت های مشخص شده به وسیله ی operand راست، به سمت راست حرکت می کنند.
A >> 2 will give 15 which is 1111
>>>
اپراتور Shift right zero fill. مقادیر Operand های چپ با تعداد بیت های مشخص شده به وسیله ی operand راست به سمت راست حرکت می کنند و مقادیر تغییریافته با صفر پر می شوند.
A >>>2 will give 15 which is 0000 1111
اپراتورهای منطقی:
جدول زیر اپراتورهای منطقی را ارائه می کند.
فرض کنید در متغیرهای Boolean، متغیر A دارای مقدار true و متغیر B دارای مقدار false میباشد، بنابراین:
Operator
Description
Example
&&
اپراتور Logical AND نامیده می شود. اگر هر دو operand ها غیرصفر باشند، پس شرایط درست می شود.
(A && B) is false.
||
اپراتور Logical OR نامیده می شود. اگر هر کدام از operand ها غیرصفر باشند، شرایط درست می شود.
(A || B) is true.
!
اپراتور Logical NOT نامیده می شود. برای معکوس کردن حالت منطقی operand استفاده می شود. اگر یکی از شرایط true باشد، سپس اپراتور Logical NOT عبارت false را ایجاد می کند.
!(A && B) is true.
اپراتورهایواگذاری (Assignment):
اپراتورهای واگذاری زیر وجود دارند که توسط زبان جاوا پشتیبانی می شوند:
Operator
Description
Example
=
اپراتور ساده ی واگذاری، مقادیر را از operand های سمت راست به operand های سمت چپ اختصاص می دهد.
C = A + B will assign value of A + B into C
+=
افزودن اپراتور واگذاری AND، این اپراتور operand راست را به operand چپ اضافه می کند و نتیجه را به operand چپ اختصاص می دهد.
C += A is equivalent to C = C + A
-=
اپراتور واگذاری AND را حذف می کند، operand راست را از operand چپ حذف می کند و نتیجه را به operand چپ اختصاص می دهد.
C -= A is equivalent to C = C - A
*=
اپراتور واگذاری AND را ضرب می کند، این اپراتور operand راست را با operand چپ ضرب می کند و نتیجه را به operand چپ اختصاص می دهد.
C *= A is equivalent to C = C * A
/=
اپراتور واگذاری AND را تقسیم می کند، operand چپ را به operand راست تقسیم می کند و نتیجه را به operand چپ اختصاص می دهد.
C /= A is equivalent to C = C / A
%=
اپراتور واگذاری Modulus AND ، با استفاده از دو operand ضریب را گرفته و نتیجه را به operand چپ اختصاص می دهد.
C %= A is equivalent to C = C % A
<<=
Left shift AND assignment operator
C <<= 2 is same as C = C << 2
>>=
Right shift AND assignment operator
C >>= 2 is same as C = C >> 2
&=
Bitwise AND assignment operator
C &= 2 is same as C = C & 2
^=
bitwise exclusive OR and assignment operator
C ^= 2 is same as C = C ^ 2
|=
bitwise inclusive OR and assignment operator
C |= 2 is same as C = C | 2
اپراتورهای Misc:
اپراتورهای دیگری هم وجود دارند که توسط Java Language پشتیبانی می شوند.
اپراتوز شرطی (?:
اپراتور شزطی که با عنوان اپراتور سه تایی (ternary) نیز شناخته میشود. این اپراتور حاوی سه operand میباشد و برای ارزیابی عبارات Boolean به کار می رود. هدف این اپراتور این است که تصمیم بگیرد کدام مقدار باید به متغیر اختصاص داده شود. اپراتور به این شکل نوشته می شود:
variable x =(expression)? value iftrue: value iffalse
در ادامه مثالی را مشاهده می کنید:
publicclassTest{
color:black">
publicstaticvoid main(String args[]){
color:black"> int a , b;
color:black"> a =10;
color:black"> b =(a ==1)?20:30;
color:black"> System.out.println("Value of b is : "+ b );
color:black">
b =(a ==10)?20:30;
color:black"> System.out.println("Value of b is : "+ b );
color:black"> }
color:#666600">}
این مثال نتایج زیر را تولید خواهد کرد:
Value of b is:30
Value of b is:20
9.0pt;color:black">
اپراتور instanceof:
این اپراتور فقط برای متغیرهای آبجکت مرجع استفاده می شود. اپراتور چک می کند که آیا آبجکت از نوع خاصی است ( نوع class یا نوع اینترفیس). اپراتور instanceof مانند زیر نوشته می شود:
(Object reference variable )instanceof (class/interface type)
اگر آبجکت اشاره شده به وسیله ی یک متغیر در سمت چپ اپراتور، بررسی IS-A را برای نوع گروه/ اینترفیس در سمت راست، پشت سر می گذارد، پس نتیجه درست خواهد بود. در زیر مثالی را مشاهده می کنید:
publicclassTest{
color:black">
publicstaticvoid main(String args[]){
color:black"> String name ="James";
color:black"> // following will return true since name is type of String
color:black"> boolean result = name instanceofString;
color:black">System.out.println( result );
color:black"> }
color:#666600">}
این مثال نتیجه ی زیر را به دنبال دارد:
true
9.0pt;color:black">
اگر آبجکت مورد مقایسه یک انتساب سازگار با نوع سنت راست باشد، همچنان این اپراتور گزارش خواهد شد. در زیر یک مثال دیگر را مشاهده می کنید:
classVehicle{}
color:black">
publicclassCarextendsVehicle{
color:black"> publicstaticvoid main(String args[]){
color:black"> Vehicle a =newCar();
color:black"> boolean result = a instanceofCar;
color:black"> System.out.println( result );
color:black"> }
color:#666600">}
این مثال نتیجه ی زیر را به دنبال خواهد داشت:
true
9.0pt;color:black">
تقدم اپراتورهای جاوا:
تقدم اپراتور گروه بندی عبارات را در یک عبارت مشخص می کند. این امر بر روی چگونگی ارزیابی یک عبارت تاثیر دارد. اپراتورهای خاصی دارای اولویت خای بالاتر نسبت به بقیه می باشند، برای مثال اپراتور ضرب (multiplication) دارای اولویت بالاتری نسبت به اپراتور اپراتور جمع می باشد.
برای مثال x = 7 + 3 * 2 ؛ در اینجا مقدار 13 به x اختصاص داده می شود و نه 20، زیرا اپراتور ضرب دارای اولویت بالاتری نسبت به اپراتور جمع می باشد، بنابراین ابتدا مقدار ضرب 3*2 در ننظر گرفته شده و سپس جمع حاصل آن با عدد 7.
در اینجا اپراتورها با بالاترین اولویت در بالای جدول ظاهز می شوند، و اپراتورها با کمترین اولویت نیز در پایین جدول. در داخل یک عبارت، اپراتورهایی با اولویت بالاتر ابتدا ارزیابی خواهند شد.
Category
Operator
Associativity
Postfix
() [] . (dot operator)
Left to right
Unary
++ - - ! ~
Right to left
Multiplicative
* / %
Left to right
Additive
+ -
Left to right
Shift
>> >>> <<
Left to right
Relational
> >= < <=
Left to right
Equality
== !=
Left to right
Bitwise AND
&
Left to right
Bitwise XOR
^
Left to right
Bitwise OR
|
Left to right
Logical AND
&&
Left to right
Logical OR
||
Left to right
Conditional
?:
Right to left
Assignment
= += -= *= /= %= >>= <<= &= ^= |=
Right to left
Comma
,
Left to right
فصل بعدی:
فصل بعدی در مورد loop control در زبان برنامه نویسی جاوا توضیح خواهد داد. این فصل انواع لوپ ها و چگونگی استفاده از آن ها را در توسعه ی برنامه ی جاوا و هدف از استفادعه از آنها را توضیح خواهد داد.
جاوا مجموعه ای غنی از اپراتورها برای اجرای متغیرها ارائه می دهد. می توانیم تمام اپراتورهای جاوا را به گروه های زیر تفسیم کنیم:
· Arithmetic Operators (عملگرهای محاسباتی)
· Relational Operators (عملگرهای رابطه ای)
· Bitwise Operators (اپراتورهای بیتی)
· Logical Operators (اپراتورهای منطقی)
· Assignment Operators (اپراتورهای انتصابی)
· Misc Operators (اپراتورهای Misc)
اپراتورهای Arithmetic (محاسباتی)
اپراتورهای arithmetic در عبارات ریاضی همانطوری استفاده می شوند که در جبر مورد استفاده قرار می گیرند. جدول زیر اپراتورهای arithmetic را ارائه می دهد:
فرض کنید متغیر عدد صحیح A مقدار 10 و متغیر عدد صحیح B مقدار 20 را دارد، بنابراین:
Operator
Description
Example
+
به هر طرف اپراتور مقدار اضافه می کند.
A + B will give 30
-
Operand سمت راست را از operand سمت چپ کم می کند.
A - B will give -10
*
مقادیر را در هر رو طرف اپراتور ضرب می کند.
A * B will give 200
/
Operand سمت راست را بر operand سمت چپ تقسیم می کند.
B / A will give 2
%
Operand سمت چپ را به operand سمت راست تقسیم کرده و باقیمانده را گزارش می دهد.
B % A will give 0
++
مقدار operand را به اندازه ی یک واحد افزایش می دهد.
B++ gives 21
--
مقدار operand را به اندازه ی یک واحد کاهش می دهد.
B-- gives 19
اپراتورهای رابطه ای (Relational):
اپراتورهای رابطه ای که در زبان جاوا پشتیبانی می شوند در زیر ارائه شده اند.
فرض کنید متغیر A دارای مقدار 10 و متغیر B دارای مقدار 20 می باشد.
Operator
Description
Example
==
مساوی یا غیرمساوی بودن مقادیر دو operand را چک می کند، اگر مساوی باشند، شرایط به درستی پیش میرود.
(A == B) is not true.
!=
تساوی دو operand را چک می کند، اگر مقادیر برابر نباشند، شرایط درست می شود.
(A != B) is true.
>
مقادیر operand چپ و راست را مورد بررسی قرار می دهد، اگر مقدار operand چپ بزرگتر باشد، شرایط درست می باشد.
(A > B) is not true.
<
مقادیر operand چپ و راست را مورد بررسی قرار می دهد، اگر مقدار operand چپ کوچکتر باشد، شرایط درست می باشد.
(A < B) is true.
>=
بررسی می کند، اگر مقدار operand چپ از operand راست بزرگتر باشد یا با هم برابر باشند، شرایط درست می باشد.
(A >= B) is not true.
<=
بررسی می کند، اگر مقدار operand چپ کمتر از یا برابر با مقدار operand راست باشد، شرایط درست می باشد.
(A <= B) is true.
اپراتورهای Bitwise:
جاوا چندین اپراتور bitwise تعریف می کند، که می توانند برای انواع عدد صحیح، long،int، short، char و byte استفاده شوند.
اپرتور bitwise روی بیت ها کار می کند و عملکردها را bit-by-bit اجرا می کند. فرض کنید اگر a = 60; و b = 13 ؛ اکنون در فرمت دوگانه مانند زیر می باشند:
a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011
جدول زیر اپراتورهای bitwise را لیست می کند:
فرض کنید متغیر عدد صحیح A دارای مقدار 60 و متغیر B دارای مقدار 13 باشد، بنابراین:
Operator
Description
Example
&
اگر در هر دو operand وجود داشته باشد، اپراتور دوگانه ی AND یک بیت را به هر دو operand کپی می کند.
(A & B) will give 12 which is 0000 1100
|
اپراتور دوگانه ی OR یک بیت را کپی می کند، اگر در هر دو operand وجود داشته باشد.
(A | B) will give 61 which is 0011 1101
^
اپراتور دوگانه ی XOR یک بیت را کپی می کند، اگر در یک operand و نه هر دو تنظیم شده باشد.
(A ^ B) will give 49 which is 0011 0001
~
اپراتور دوتایی Ones Complement یگانی است و دارای تاثیر بیت های 'flipping می باشد.
(~A ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary number.
<<
اپراتور دوتایی Left Shift. مقادیر operand های چپ با یا تعداد بیت های مشخص شده به وسیله ی operand راست، به سمت چپ حرکت می کنند.
A << 2 will give 240 which is 1111 0000
>>
اپراتور دوتایی Right Shift. مقدار Operand های چپ با تعداد بیت های مشخص شده به وسیله ی operand راست، به سمت راست حرکت می کنند.
A >> 2 will give 15 which is 1111
>>>
اپراتور Shift right zero fill. مقادیر Operand های چپ با تعداد بیت های مشخص شده به وسیله ی operand راست به سمت راست حرکت می کنند و مقادیر تغییریافته با صفر پر می شوند.
A >>>2 will give 15 which is 0000 1111
اپراتورهای منطقی:
جدول زیر اپراتورهای منطقی را ارائه می کند.
فرض کنید در متغیرهای Boolean، متغیر A دارای مقدار true و متغیر B دارای مقدار false میباشد، بنابراین:
Operator
Description
Example
&&
اپراتور Logical AND نامیده می شود. اگر هر دو operand ها غیرصفر باشند، پس شرایط درست می شود.
(A && B) is false.
||
اپراتور Logical OR نامیده می شود. اگر هر کدام از operand ها غیرصفر باشند، شرایط درست می شود.
(A || B) is true.
!
اپراتور Logical NOT نامیده می شود. برای معکوس کردن حالت منطقی operand استفاده می شود. اگر یکی از شرایط true باشد، سپس اپراتور Logical NOT عبارت false را ایجاد می کند.
!(A && B) is true.
اپراتورهایواگذاری (Assignment):
اپراتورهای واگذاری زیر وجود دارند که توسط زبان جاوا پشتیبانی می شوند:
Operator
Description
Example
=
اپراتور ساده ی واگذاری، مقادیر را از operand های سمت راست به operand های سمت چپ اختصاص می دهد.
C = A + B will assign value of A + B into C
+=
افزودن اپراتور واگذاری AND، این اپراتور operand راست را به operand چپ اضافه می کند و نتیجه را به operand چپ اختصاص می دهد.
C += A is equivalent to C = C + A
-=
اپراتور واگذاری AND را حذف می کند، operand راست را از operand چپ حذف می کند و نتیجه را به operand چپ اختصاص می دهد.
C -= A is equivalent to C = C - A
*=
اپراتور واگذاری AND را ضرب می کند، این اپراتور operand راست را با operand چپ ضرب می کند و نتیجه را به operand چپ اختصاص می دهد.
C *= A is equivalent to C = C * A
/=
اپراتور واگذاری AND را تقسیم می کند، operand چپ را به operand راست تقسیم می کند و نتیجه را به operand چپ اختصاص می دهد.
C /= A is equivalent to C = C / A
%=
اپراتور واگذاری Modulus AND ، با استفاده از دو operand ضریب را گرفته و نتیجه را به operand چپ اختصاص می دهد.
C %= A is equivalent to C = C % A
<<=
Left shift AND assignment operator
C <<= 2 is same as C = C << 2
>>=
Right shift AND assignment operator
C >>= 2 is same as C = C >> 2
&=
Bitwise AND assignment operator
C &= 2 is same as C = C & 2
^=
bitwise exclusive OR and assignment operator
C ^= 2 is same as C = C ^ 2
|=
bitwise inclusive OR and assignment operator
C |= 2 is same as C = C | 2
اپراتورهای Misc:
اپراتورهای دیگری هم وجود دارند که توسط Java Language پشتیبانی می شوند.
اپراتوز شرطی (?:
اپراتور شزطی که با عنوان اپراتور سه تایی (ternary) نیز شناخته میشود. این اپراتور حاوی سه operand میباشد و برای ارزیابی عبارات Boolean به کار می رود. هدف این اپراتور این است که تصمیم بگیرد کدام مقدار باید به متغیر اختصاص داده شود. اپراتور به این شکل نوشته می شود:
variable x =(expression)? value iftrue: value iffalse
در ادامه مثالی را مشاهده می کنید:
publicclassTest{
color:black">
publicstaticvoid main(String args[]){
color:black"> int a , b;
color:black"> a =10;
color:black"> b =(a ==1)?20:30;
color:black"> System.out.println("Value of b is : "+ b );
color:black">
b =(a ==10)?20:30;
color:black"> System.out.println("Value of b is : "+ b );
color:black"> }
color:#666600">}
این مثال نتایج زیر را تولید خواهد کرد:
Value of b is:30
Value of b is:20
9.0pt;color:black">
اپراتور instanceof:
این اپراتور فقط برای متغیرهای آبجکت مرجع استفاده می شود. اپراتور چک می کند که آیا آبجکت از نوع خاصی است ( نوع class یا نوع اینترفیس). اپراتور instanceof مانند زیر نوشته می شود:
(Object reference variable )instanceof (class/interface type)
اگر آبجکت اشاره شده به وسیله ی یک متغیر در سمت چپ اپراتور، بررسی IS-A را برای نوع گروه/ اینترفیس در سمت راست، پشت سر می گذارد، پس نتیجه درست خواهد بود. در زیر مثالی را مشاهده می کنید:
publicclassTest{
color:black">
publicstaticvoid main(String args[]){
color:black"> String name ="James";
color:black"> // following will return true since name is type of String
color:black"> boolean result = name instanceofString;
color:black">System.out.println( result );
color:black"> }
color:#666600">}
این مثال نتیجه ی زیر را به دنبال دارد:
true
9.0pt;color:black">
اگر آبجکت مورد مقایسه یک انتساب سازگار با نوع سنت راست باشد، همچنان این اپراتور گزارش خواهد شد. در زیر یک مثال دیگر را مشاهده می کنید:
classVehicle{}
color:black">
publicclassCarextendsVehicle{
color:black"> publicstaticvoid main(String args[]){
color:black"> Vehicle a =newCar();
color:black"> boolean result = a instanceofCar;
color:black"> System.out.println( result );
color:black"> }
color:#666600">}
این مثال نتیجه ی زیر را به دنبال خواهد داشت:
true
9.0pt;color:black">
تقدم اپراتورهای جاوا:
تقدم اپراتور گروه بندی عبارات را در یک عبارت مشخص می کند. این امر بر روی چگونگی ارزیابی یک عبارت تاثیر دارد. اپراتورهای خاصی دارای اولویت خای بالاتر نسبت به بقیه می باشند، برای مثال اپراتور ضرب (multiplication) دارای اولویت بالاتری نسبت به اپراتور اپراتور جمع می باشد.
برای مثال x = 7 + 3 * 2 ؛ در اینجا مقدار 13 به x اختصاص داده می شود و نه 20، زیرا اپراتور ضرب دارای اولویت بالاتری نسبت به اپراتور جمع می باشد، بنابراین ابتدا مقدار ضرب 3*2 در ننظر گرفته شده و سپس جمع حاصل آن با عدد 7.
در اینجا اپراتورها با بالاترین اولویت در بالای جدول ظاهز می شوند، و اپراتورها با کمترین اولویت نیز در پایین جدول. در داخل یک عبارت، اپراتورهایی با اولویت بالاتر ابتدا ارزیابی خواهند شد.
Category
Operator
Associativity
Postfix
() [] . (dot operator)
Left to right
Unary
++ - - ! ~
Right to left
Multiplicative
* / %
Left to right
Additive
+ -
Left to right
Shift
>> >>> <<
Left to right
Relational
> >= < <=
Left to right
Equality
== !=
Left to right
Bitwise AND
&
Left to right
Bitwise XOR
^
Left to right
Bitwise OR
|
Left to right
Logical AND
&&
Left to right
Logical OR
||
Left to right
Conditional
?:
Right to left
Assignment
= += -= *= /= %= >>= <<= &= ^= |=
Right to left
Comma
,
Left to right
فصل بعدی:
فصل بعدی در مورد loop control در زبان برنامه نویسی جاوا توضیح خواهد داد. این فصل انواع لوپ ها و چگونگی استفاده از آن ها را در توسعه ی برنامه ی جاوا و هدف از استفادعه از آنها را توضیح خواهد داد.