اثر پروانه ای

برنامه نویسی حرفه ای کامپیوتر به زبان سی شارپ - لیست کامل کلمات کلیدی در ʚĭɞ - ßữʈʨɾ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) استفاده شود.

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

کلیدواژه delegate

سلام!

امروز قصد دارم درمورد کلمه کلیدی delegate صحبت کنم.


تعریف وکیل (delegate) شبیه امضای متد است. یک مقدار برگشتی و هر تعداد پارامتر از هر نوع دارد:

public delegate void TestDelegate(string Message);

delegate یک نوع مرجع است که می تواند برای کپسوله کردن یک متد با نام یا بی نام استفاده شود. delegate ها شبیه اشاره گرها تابع در زبان برنامه نویسی ++c هستند.


نکات:

  • delegate ها زیربنای event ها هستند.
  • یک وکیل می تواند با انتسابش به یک متد با نام یا بی نام نمونه سازی شود.
  • یک نماینده حتما باید با یک متد یا عبارت لامبدا که دارای نوع خروجی و پارامترهای ورودی سازگار است نمونه سازی شود. برای استفاده وکیل با متد بی نام، delegate و کد منتسب به آن، باهم تعریف می شوند.

  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

کلیدواژه default

کلمه کلیدی default در زبان برنامه نویسی #C عمدتا" به دوشکل استفاده می شود:

  1. در بیان switch (بیان معادل کلمه انگلیسی statement است)
  2. در کلاس های Generic (در مورد این نوع کلاس ها انشاءالله در پست های بعدی مفصل صحبت خواهم کرد. اما فعلا بطور خلاصه می تونم بگم که نوعی کلاس هستند که نوع داده ای که قرار است کلاس با آن کار کند را در زمان نمونه سازی آن مشخص می کنیم. مثلا" <MyClass<int )

این کلیدواژه اگر در بیان switch استفاده شود، مجموعه دستورالعمل هایی را، در صورت نادرست بودن عبارات case قبلی اجرا می کند.

اما بحث من در این پست بیشتر سر استفاده از کلمه کلید default در کلاس ها و متدهای جامع (Generic) است:

یک نکته که در این بحث بوجود می آید این است که چگونه یک مقدار پیش فرض را به یک نوع T پارامتری شده اختصاص دهیم، درحالی که گزینه های زیر را در آینده نمیدانیم:

  1. آیا T نوع مرجع است یا نوع مقداری (Value type or Reference type)
  2. اگر T از نوع مقداری است، آیا مقدار عددی خواهد داشت یا struct (چون نوع struct دز زبان سی شارپ در رده ی نوع های مقداری قرار میگیرد)

فرضا" متغر t از نوع T  پارامتری شده داده شده باشد، عبارت t=null فقط وقتی درست است که t از نوع مرجع باشد و t=0 فقط برای نوع عددی کار می کند و نه برای struct ها.

اما تا اینجا همه مقدمه بود!

راه حل استفاده از کلیدواژه default است که برای نوع های مرجع null برمیگرداند و صفر را برای نوع عددی و همچنین برای نوع struct هر کدام از اعضای آنرا بسته به نوع عددی یا مرجع بودن با صفر یا null برمیگرداند. در صورتی که نوع عددی nullable باشد، کلیدواژه default،

 System.Nullable<T> 

را که مثل هر struct دیگری مقدار دهی شده را برمیگرداند.

مثال زیر از نحوه استفاده از این کلمه کلیدی را در کدهای جامع (Generic) نشان می دهد:

  • غلامعلی حسینی بهجانی