برای طرح سوال و دسترسی به آموزش ها  کانال ما در تلگرام بپویندید  

آموزش دارت: معرفی عملگرهای: ریاضی – منطقی و مقایسه ای

به نام دانای بر حق

مقدمه

در این سری آموزش ها قصد داریم syntax زبان برنامه نویسی دارت Dart را با هم یاد بگیریم، برای دنبال کردن سری کلی این آموزش ها و دیدن قست ها اینجا کلیک کنید.

دارت زبان برنامه نویسی flutter می باشد برای نوشتن برنامه های native یعنی با کد محلی برای android و ios هم زمان با طراحی متریالز.

 

جدول لیست عملگر ها  در زبان دارت

 

توضیحات عملگر
منحصر پسوندی expr++    expr–    ()    []    .    ?.
منحصر پیشوندی -expr    !expr    ~expr    ++expr    –expr
ضرب و تقسیمی *    /    %  ~/
جمع و تفریق +    –
شیفت <<    >>
و بیتی AND &
 یای اختصاصی بیتی XOR ^
 یای بیتی OR |
آزمون بزرگ و کوچکی و … >=    >    <=    <    as    is    is!
برابر و نابرابری ==    !=
و منطقی &&
یای منطقی ||
اگر null نبود ??
شرط تک خطی expr1 ? expr2 : expr3
ابشاری ..
نسبت دادن =    *=    /=    ~/=    %=    +=    -=    <<=    >>=    &=    ^=    |=    ??=

 

نکته: assert به معنی ادعا کردن برای تشخیص درستی در مثال ها زین پس در دارت میباشد.

 

عملگر های ریاضی دارت

عملگر معنی
+ به علاوه
منهی
-expr معکوس کردن عدد مثبت را منفی، منفی را مثبت میکند
* ضربدر
/ تقسیم اعشاری
~/ خارج قسمت
% باقی مانده

به مثال های زیر توجه کنید

assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5); // Result is a double
assert(5 ~/ 2 == 2); // Result is an int
assert(5 % 2 == 1); // Remainder

عملگر های پیشوندی و پسوندی

عملگر Meaning
++var var = var + 1 (افزودن یک واحد var + 1)
var++ var = var + 1 (افزودن یک واحد پیش از عمل is var)
–var var = var – ۱ (کم کردن یک واحدvar – ۱)
var– var = var – ۱ (کم کردن یک واحد پیش از عملیات var)

مثال های زیر توجه کنید:

var a, b;

a = 0;
b = ++a; // Increment a before b gets its value.
assert(a == b); // 1 == 1

a = 0;
b = a++; // Increment a AFTER b gets its value.
assert(a != b); // 1 != 0

a = 0;
b = --a; // Decrement a before b gets its value.
assert(a == b); // -1 == -1

a = 0;
b = a--; // Decrement a AFTER b gets its value.
assert(a != b); // -1 != 0

عملگر های مقایسه ای در دارت

 

Operator Meaning
== برابری
!= نا برابری
> بزرگتر
< کوچکیتر
>= بزرگتر مساوی
<= کوچکتر مساوی

نکته: در صورت نسبت ندادن متغییر ها هر دو برابر هستند یعنی null هستند در صورتی که یکی نست داده شده باشد نابرابر خواهند.

به مثال های زیر توجه کنید:

assert(2 == 2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3);

عملگر های نوع داده در دارت

Operator Meaning
as در نظر گرفتن ( به مثال توجه شود)
is اگر هم نوع باشند
is! اگر هم نوع نباشند

مثال:

if (emp is Person) {
  // Type check
  emp.firstName = 'Bob';
}

(emp as Person).firstName = 'Bob';

در مثال های بالا emp از نوع Person یک بار در مقایسه میشود یک بار در نظر گرفته میشود.

عملگر های نسبت دادن در دارت

مساوی = نسبت دادن عادی می باشد

علامت سوال دوبار مساومی =?? برای نسبت دادن در صورتی که مقدار null بود

به مثال زیر توجه کنید:

// Assign value to a
a = value;
// Assign value to b if b is null; otherwise, b stays the same
b ??= value;

نسبت دادن های خلاصه مانند C:

 

= –= /= %= >>= ^=
+= *= ~/= <<= &= |=

توضیح کلی op نوع عملگر:

Compound assignment Equivalent expression
For an operator op: a op= b a = a op b
مثال: a += b a = a + b
var a = 2; // Assign using =
a *= 3; // Assign and multiply: a = a * 3
assert(a == 6);

عملگر های منطقی در دارت

Operator Meaning
!expr نقیض یا not
|| یای منطقی
&& و منطقی

مثال:

if (!done && (col == 0 || col == 3)) {
  // ...Do something...
}

عملگر های بیتی در دارت

Operator Meaning
& و AND
| یا OR
^ یای اختصاصی XOR
~expr not یا نقیض
<< شیفت به چپ
>> شیفت به راست

مثال:

final value = 0x22;
final bitmask = 0x0f;

assert((value & bitmask) == 0x02); // AND
assert((value & ~bitmask) == 0x20); // AND NOT
assert((value | bitmask) == 0x2f); // OR
assert((value ^ bitmask) == 0x2d); // XOR
assert((value << 4) == 0x220); // Shift left
assert((value >> 4) == 0x02); // Shift right

عملگر های شرط تک خطی در دارت

condition ? expr1 : expr2

مثل C بخش اول شرط بخش دوم در صورت صحیح بودن اجرا و بخش سوم در صورت عدم صحت اجرا میشود.

expr1 ?? expr2

در صورتی که null نباشد

به مثال های زیر توجه کنید:

var visibility = isPublic ? 'public' : 'private';

String playerName(String name) => name ?? 'Guest';

// Slightly longer version uses ?: operator.
String playerName(String name) => name != null ? name : 'Guest';


// Very long version uses if-else statement.
String playerName(String name) {
  if (name != null) {
    return name;
  } else {
    return 'Guest';
  }
}

منظور کامل مشخص است

نماد آبشاری در دارت

نماد آبشاری در دارت با  .. مشخص میشود. آبشارها (..) به شما اجازه می دهند یک دنباله ای از عملیات را روی همان شیء ایجاد کنید. علاوه بر فراخوانی تابع، شما همچنین می توانید به فیلدهای موجود در آن همان شیء دسترسی داشته باشید. این اغلب شما گام ایجاد یک متغیر موقت را ذخیره می کند و به شما اجازه می دهد کد های مایع بیشتر بنویسید.

به مثال زیر توجه کنید:

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

اولین خط فراخوانی، querySelector () یک شی انتخابگر را باز می کند. کد زیر که از نماد آبشار استفاده می کند بر روی این شی انتخابگر عمل می کند و هر مقدار بعدی که ممکن است بازگردانده شود را نادیده بگیرد.

مثال طولانی بالا به شکل زیر میشود این ویژگی شبیه jQuery هست :

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

سایر عملگر ها در دارت

این عملگر ها در همه زبان های برنامه نویسی هستند مثل پرانتز ولی برخی تفاوت دارند به جدول زیر توجه کنید:

Operator Name Meaning
() Function application پرانتز برای جدا کردن و صدا زدن توابع هست
[] List access برای دسترسی به خانه های لیست یا همان آرایه
. Member access برای دسترسی به زیر عضو های یک کلاس مثل دلفی یا جاوا اسکریپت
?. Conditional member access برای برگردانند عضو در صورتی که null نباشد

پایان بخش عملگر ها امیدوارم گیج کننده نباشد چون سعی بر این بود کامل باشد تا در مطالعه سورس کد به مشکل نخوریم.

اگر نقدی باشد در خدمتیم بخش بعدی شروط هستند

 

نظرات

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *