اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۱۸ مطلب با کلمه‌ی کلیدی «نوع» ثبت شده است

  • ۱
  • ۰

کلمه کلیدی int ، یک نوع صحیح عددی را تعریف می کند که مقادیر را بر اساس اندازه و محدوده زیر ذخیره می کند.

  • نوع : int
  • محدوده : از 2,147,483,648- تا 2,147,483,647
  • اندازه : صحیح علامتدار 32-بیتی
  • نوع دات نتی : System.Int32

لیترال ها

شما می توانید یک متغیر از نوع int را بصورت زیر اعلان و مقداردهی اولیه کنید:

int i = 123;

وقتی یک لیترال صحیح دارای هیچ پسوندی نباشد، نوع آن لیترال اولین نوعی است که مقدار آن لیترال بتواند در آن قرار گیرد: int، uint، long، ulong . در این مثال نوع لیترال int است.

تبدیلات

از نوع int به نوع های long، float، double یا decimal تبدیل ضمنی از پیش تعریف شده وجود دارد. برای مثال:

// '123' is an int, so an implicit conversion takes place here:
float f = 123;

از نوع های  sbyte، byte، short، ushort یا char به نوع int تبدیل ضمنی از پیش تعریف شده موجود است. برای مثال، بیان انتساب زیر بدون عملگر قالب ریزی (cast) خطای کامپایل تولید خواهد کرد:

long aLong = 22;
int i1 = aLong;       // Error: no implicit conversion from long.
int i2 = (int)aLong;  // OK: explicit conversion.

همچنین به یاد داشته باشید که از نوع های ممیز-شناور به نوع int هیچ تبدیل ضمنی ای وجود ندارد. برای مثال، بیان زیر تا زمانی که از قالبریزی صریح استفاده نشود باعث بروز خطای کامپایل می شود.

int x = 3.0;         // Error: no implicit conversion from double.
int y = (int)3.0;    // OK: explicit conversion.
  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

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

وکیل ها برای پاس دادن متدها بصورت آرگومان ، به متد های دیگر استفاده می شوند. مدیریت کننده های رویداد، چیزی جز متدهایی که از طرق delegate ها احضار شده اند، نیستند. شما یک متد سفارشی می سازید و کلاسی مثل windows control می تواند متد شما را در هنگام اتفاق افتادن یک رویداد (event) خاص، فراخوانی کند. مثال زیر طرز اعلان یک وکیل را نشان می دهد:

public delegate int PerformCalculation(int x, int y);

هر متدی از هر کلاس یا ساختار قابل دسترس که با امضای وکیل (شامل نوع برگشتی و پارامترهای ورودی) مطابقت داشته باشد، می تواند به به وکیل انتساب داده شود. متد می تواند static یا یک متد نمونه (instance method) باشد. این کار باعث می شود که بتوانیم با برنامه نویسی، فراخوانی های متد را تغییر دهیم، و همچنین کد جدیدی را در یک کلاس موجود، وارد کنیم. تا وقتی که امضای وکیل را می دانید، می توانید متد خودتان را به آن انتساب دهید.

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

کلیدواژه enum

کلمه کلیدی enum برای اعلان مجموعه شمارشی (enumeration) استفاده می شود. enumeration یک نوع متمایز شامل مجموعه ای نامدار از ثابت ها است که به آنها لیست شمارشی می گویند.

معمولا" بهترین راه، اعلان enum مستقیما" درون namespace است، در نتیجه همه کلاس های داخل namespace می توانند بصورت مساوی به آن دسترسی داشته باشند. هرچند، یک enum می تواند بصورت تودرتو ، درون یک کلاس یا ساختار (struct) قرار گیرد.

بصورت پیش فرض، اولین enumerator (اعضای enum) مقدار صفر دارد و بقیه اعضا مقدارشان بصورت متوالی، یکی یکی افزایش پیدا می کند.

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

در این لیست شمارشی، Sat مقدار صفر دارد، Sun مقدار 1 دارد، Mon مقدار 2 دارد و الی آخر. enumerator ها می توانند برای رونویسی مقدار پیش فرضشان، مقدار دهی اولیه شوند. برای مثال:

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

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

کلمه کلیدی double

کلمه کلیدی double بر یک نوع ساده با قابلیت ذخیره مقادیر ممیز-شناور 64-بیتی دلالت دارد. دقت و محدوده تقریبی نوع double بصورت زیر است:

  • نوع: double
  • محدوده تقریبی:

    ±5.0 × 10−324 to ±1.7 × 10308

  • دقت: 16-15 رقم
  • نوع دات نتی: System.Double

لیترال ها

بطور پیش فرض، با یک لیترال عددی حقیقی که در سمت راست عبارت انتساب قرار گرفته باشد به عنوان double رفتار می شود. اما ، اگر می خواهید با یک عدد صحیح به عنوان double رفتار شود، از پسوند d یا D استفاده کنید. برای مثال:

double x = 3D;

تبدیلات

شما می توانید نوع های عددی صحیح و نوع های ممیز-شناور را در یک عبارت با هم ترکیب کنید. در چنین موردی ، نوع های صحیح به نوع های ممیز-شناور تبدیل می شوند. ارزیابی عبارت، بر اساس قوانین زیر انجام می شود:

  • اگر یکی از نوع های ممیز-شناور double باشد،عبارت به صورت double ارزیابی می شود. در عبارت های بولی بصورت bool ارزیابی می شود.
  • اگر هیچ نوع double ی در عبارت وجود نداشته باشد، به صورت float ارزیابی خواهد شد. در عبارت های بولی بصورت bool ارزیابی می شود.

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

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


از به
sbyte short, int, long, float, double, یا decimal
byte short, ushort, int, uint, long, ulong, float, double, یا decimal
short int, long, float, double, یا decimal
ushort int, uint, long, ulong, float, double, یا decimal
int long, float, double, یا decimal
uint long, ulong, float, double, یا decimal
long float, double, یا decimal
char ushort, int, uint, long, ulong, float, double, یا decimal
float double
ulong float, double, یا decimal


ملاحظات

  • تبدیلات از int و uint یا long به float و از long به double ممکن است باعث از دست رفتن دقت شود، اما به مقدار ضرری وارد نمی شود.
  • هیچ تبدیل ضمنی ای به نوع char وجود ندارد.
  • هیچ تبدیل ضمنی ای بین نوع های ممیز-شناور و decimal وجود ندارد.
  • یک عبارت ثابت از نوع int می تواند به sbyte ، byte ، short ، ushort ، uint یا ulong تبدیل شود، مقدار تعیین شده عبارت ثابت در محدوده نوع مقصد می باشد.

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

نوع داده ای decimal

کلیدواژه decimal به یک نوع داده ای 128-بیتی اشاره دارد. در مقایسه با نوع های ممیز-شناور، نوع decimal دقت بیشتر و محدوده کمتری دارد، که آنرا برای محاسبات مالی و پولی مناسب کرده است. 

محدوده تقریبی و دقت نوع decimal در زیر آمده است:

  • نوع: decimal
  • محدوده تقریبی:

    (-7.9 x 1028 to 7.9 x 1028) / (100 to 28)

  • دقت: 29-28 رقم معنادار
  • نوع دات نتی: System.Decimal

    لیترال ها

    اگر شما می خواهید یک لیترال عددی حقیقی داشته باشید که با آن مانند decimal رفتار شود، از پسوند m یا M استفاده کنید، برای مثال:

    decimal myMoney = 300.5m;

    بدون پسوند m ، با عدد مانند double رفتار شده و تولید یک خطای کامپایل می نماید.

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

    کلمه کلیدی char

    کلمه کلیدی char برای اعلان کاراکتر یونیکد (Unicode) که محدوده آن در زیر آمده استفاده می شود. کاراکترهای یونیکد، کاراکترهایی 16-بیتی هستند که برای نمایش اکثر زبان های نوشتاری شناخته شده در دنیا مورد استفاده قرار می گیرند.

    • نوع: char
    • محدوده: از U+0000 تا U+ffff
    • اندازه: کاراکتر 16-بیتی یونیکد
    • نوع دات نتی: System.Char


    لیترال ها:

    ثابت های از نوع char می توانند بصورت لیترال های کاراکتری، توالی گریز شانزده شانزدهی (Hexadecimal escape swquence)، یا نماینده یونیکد، نوشته شوند. شما همچنین می توانید کد های کاراکتری صحیح را قالب ریزی (cast) کنید. در مثال زیر چهار متغیر char با کاراکتر X ، مقداردهی اولیه شده اند:

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

    Type : نوع

    سیستم تایپ (نوع) سی شارپ شامل مقوله های زیر است:

    • نوع های مقداری
    • نوع های مرجع
    • نوع های اشاره گر

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

    با استفاده از boxing و unboxing، این امکان وجود دارد که یک نوع مقداری را به نوع مرجع تبدیل کنیم و دوباره آنرا به نوع مقداری برگردانیم. شما نمی توانید یک نوع مرجع را به نوع مقداری تبدیل کنید، مگر آنکه آن نوع مرجع از روش باکسینگ به نوع مرجع تبدیل شده باشد.

    در مورد void (تهی) می توانید در تاپیک "کلمه کلیدی void" مطالبی را بیاموزید.

    نوع های مقداری نیز nullable هستند، به این معنی که آنها می توانند یک وضعیت غیر-مقداری را در خود ذخیره کنند.


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