اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾflỵ ⓔⓕⓕⓔⓒⓣ

اثر پروانه ای

اثر پروانه‌ای نام پدیده‌ای است که به دلیل حساسیت سیستم‌های آشوب‌ناک به شرایط اولیه ایجاد می‌شود. این پدیده به این اشاره می‌کند که تغییری کوچک در یک سیستم آشوب‌ناک چون جو سیارهٔ زمین (مثلاً بال‌زدن پروانه) می‌تواند باعث تغییرات شدید (وقوع توفان در کشوری دیگر) در آینده شود.

ایده‌ٔ این‌که پروانه‌ای می‌تواند باعث تغییری آشوبی شود نخستین بار در ۱۹۵۲ در داستان کوتاهی به نام آوای تندر اثر ری بردبری مطرح شد. عبارت «اثر پروانه ای» هم در ۱۹۶۱ در پی مقاله‌ای از ادوارد لورنتس به وجود آمد. وی در صد و سی و نهمین اجلاس ای‌ای‌ای‌اس در سال ۱۹۷۲ مقاله‌ای با این عنوان ارائه داد که «آیا بال‌زدن پروانه‌ای در برزیل می‌تواند باعث ایجاد تندباد در تکزاس شود؟»

آخرین نظرات
  • ۱۳ بهمن ۰۱، ۱۵:۳۱ - حسنا سادات و سما سادات
    عالی
  • ۱
  • ۰

این مطلب رو با یک مثال شروع می کنم:

enum E:byte{sat,sun=2,mon,tue=8};

نوع پیش فرض در enum نوع int است ولی می توان شبیه مثال بالا نوع های دیگر را به غیر از char به آن اختصاص داد.

با صفت FlagsAttribute می توان کارکرد enum را به طرز جالبی تغییر داد:

[FlagsAttribute]
enum E{sat=0,sun=1,mon=2,tue=4};
for(int i=0;i<4;i++){
Console.WriteLine(((E)i).ToString());
}

جالب اینجاست که هرجا که مقدار معادل متغیرشمارنده حلقه (i) در enum وجود نداشته باشد، ثابت های دیگر را طوری با هم ترکیب می کند تا آن مقدار بدست بیاید. البته باید دقت شود که حتما شماره گذاری عناصر enum توانی از 2 باشد. و از صفت FlagsAttribute قبل از تعریف نوع شمارشی (enum) استفاده شود.

درست مثل هر ثابت دیگری، همه مراجع به مقادیر مختلف enum، به لیترال های عددی در زمان کامپایل تبدیل خواند شد.


ظاهرا صفت Flags با FlagsAttribute جز در نام صفت تفاوتی ندارد.


اضافه کردن مقادیر اضافی به نسخه های جدید enum ها، یا تغییر مقادیر اعضای enum در نسخه جدیدش می تواند باعث مشکلاتی برای کد های مستقل ایجاد کند. مقادیر شمارشی اغلب در بیان switch استفاده می شود. اگر عناصر اضافی به نوع enum اضافه شده باشد، آزمایش default می تواند بطور ناخاسته درست در بیاید.

اگر برنامه نویسان دیگر از کد شما استفاده خواهند کرد، شما باید راهنمایی در مورد اینکه وقتی عناصر جدید به نوع enum اضافه می شود،کدشان چگونه عکس العمل نشان دهد، ارائه دهید.


اکیدا پیشنهاد می شود که مقادیر داخل نوع شمارشی از صفر شروع شود؛ زیرا:

وقتی شما یک شئ از این نوع می سازید، نام شئ نشان دهنده مقدار پیش فرض آن است و مقدار پیش فرض مقداری است که در داخل enum مقدار صفر دارد.

مثال:

enum Day:Byte{sat=1,sun=2,fri=0};
Day TestDay=default(Day);
Console.WriteLine(TestDay.ToString());

تکه کد بالا "fri" را روی نمایشگر نشان خواهد داد.


همه ی enum ها نمونه هایی از کلاس System.Enum هستند و از این کلاس ارث بری دارند. اما شما نمی توانید کلاس جدیدی از System.Enum مشتق کنید.

نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی