اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

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

  • ۱
  • ۰

اعلان نوع وکالتی (delegate)

همونطوری که در ابتدای بخش قبل گفتم، delegate ها "نوع" هستند، درست مثل کلاس ها که نوع هستند. و مشابه کلاس ها باید قبل از اینکه بتوانید از delegate ها استفاده کنید متغیرها و اشیاء از همان نوع را بسازید. مثال زیر طرز اعلان نوع وکالتی را نشان می دهد:

delegate void MyDel(int x);

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

در مثال قبل مشخص شده که شیئ وکالتی از نوع MyDel فقط متدهایی که دارای تنها یک پارامتر از نوع int بوده و نوع برگشتی ندارند را قبول می کند. شکل زیر در سمت چپ نوع وکالتی، و در سمت راست شیئ وکالتی را نشان می دهد.

نوع وکالتی

اعلان نوع وکالتی با اعلان متد، از دو جهت تفاوت دارد. اعلان نوع وکالتی

  • با کلمه کلیدی delegate شروع می شود
  • دارای بدنه متد نمی باشد

نکته

هرچند اعلان نوع وکالتی شبیه اعلان متد است، نیازی نیست که آنرا در داخل یک کلاس اعلان کنید، زیرا خودش "نوع" است.

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

کلیدواژه ushort

کلمه کلیدی ushort نشان دهنده نوع داده عددی صحیحی است که مقادیر را طبق شرایط زیر ذخیره می کند:

  • نوع: ushort
  • محدوده: 0 تا 65,535
  • اندازه: صحیح بدون علامت 16-بیتی
  • نوع دات نتی: System.UInt16

لیترال ها

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

ushort myShort = 65535;

در اعلان بالا، لیترال صحیح 65535 بطور ضمنی از int به ushort تبدیل می شود. اگر لیترال عددی صحیح از محدوده ushort تجاوز کند، یک خطای کامپایل رخ می دهد.

در هنگام فراخوانی متدهای overload شده باید از عملگر قالبریز (cast) استفاده کرد. برای مثال متدهای overload شده زیر را که دارای پارامترهای ushort و int هستند را در نظر بگیرید:

public static void SampleMethod(int i) {}
public static void SampleMethod(ushort s) {}

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

کلیدواژه unchecked

کلمه کلیدی unchecked برای متوقف کردن عملیات بررسی سر ریز (overflow) در عملیات محاسباتی و تبدیلات نوع صحیح استفاده می شود.

در یک زمینه بررسی نشده (unchecked context) ، اگر یک عبارت مقداری خارج از محدوده نوع مقصد تولید کند، سرریز گزارش داده نمی شود. برای مثال، به این دلیل که در مثال زیر عملیات محاسباتی در بلوک یا عبارت unchecked قرار گرفته ، از این حقیقت که نتیجه محاسبه بزرگتر از حد عدد صحیح است ، چشم پوشی می شود، و به متغیر int1 مقدار  2,147,483,639- انتساب داده می شود.

unchecked
{
    int1 = 2147483647 + 10;
}
int1 = unchecked(ConstantMax + 10);

اگر محیط unchecked حذف شود، یک خطای کامپایل رخ می دهد. سرریز (overflow) می تواند در زمان کامپایل تشخیص داده شود، زیرا تمام قسمت های عبارت بصورت ثابت (Constant) هستند.

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

کلمه کلیدی ulong

کلمه کلیدی ulong نشاندهنده یک نوع صحیح است که مقادیر را طبق شرایط زیر ذخیره می کند.

  • نوع: ulong
  • محدوده: 0 تا 18,446,744,073,709,551,615
  • اندازه: صحیح بی علامت 64-بیتی
  • نوع دات نتی: System.UInt64

لیترال

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

ulong uLong = 9223372036854775808;

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

شما همچنین می توانید برطبق قوانین زیر برای تعیین نوع لیترال از از پسوندها استفاده کنید:

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

نوع داده ای uint

کلمه کلیدی uint نشاندهنده یک نوع صحیح است که مقادیر را طبق شرایط زیر ذخیره می کند.

  • نوع: uint
  • محدوده: 0 تا 4,294,967,295
  • اندازه: صحیح علامت دار 32-بیتی
  • نوع دات نتی: System.UInt32

نکته

نوع uint با مشخصات زبان مشترک (CLS) سازگار نیست. تاجایی که امکان دارد از نوع int استفاده کنید. (یعنی ممکن است برنامه شما درصورت استفاده از نوع uint در پلتفرم های دیگری که از CLS پشتیبانی می کنند با مشکل مواجه شود)

لیترال ها

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

uint myUint = 4294967290;

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

uint uInt1 = 123;

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

کلیدواژه short

کلمه کلیدی short یک نوع داده ای صحیح معرفی می کند که مقادیر را طبق شرایط زیر ذخیره می کند.

  • نوع : short
  • محدوده : 32,768- تا 32,767
  • اندازه : صحیح علامتدار 16-بیتی
  • نوع دات نتی: System.Int16

لیترال ها

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

short x = 32767;

در اعلان قبل، لیترال صحیح 32767 بطور ضمنی از int به short تبدیل شده است. اگر لیترال صحیح در محل ذخیره سازی short جا نشود، یک خطای کامپایل رخ می دهد.

وقتی از متدهای overload شده استفاده می کنید، باید از یک عملگر قالبریز (cast) استفاده کنید. برای مثال متدهای overload شده زیر را که از پارامترهای int و short استفاده می کنند، در نظر بگیرید:

public static void SampleMethod(int i) {}
public static void SampleMethod(short s) {}

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

کلمه کلیدی sbyte

کلمه کلیدی sbyte نشاندهنده یک نوع صحیح است که مقادیر را طبق شرایط زیر ذخیره می کند.

  • نوع: sbyte
  • محدوده: 128- تا 127
  • اندازه: صحیح علامت دار 8-بیتی
  • نوع دات نتی: System.SByte

لیترال ها

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

sbyte sByte1 = 127;

در اعلان بالا ، لیترال صحیح 127 بطور ضمنی از int به sbyte تبدیل شده است. اگر لیترال صحیح از محدوده sbyte تجاوز کند، یک خطای کامپایل رخ می دهد.

درهنگام استفاده از متد های overload شده باید از عملگر قالبریز (cast) استفاده شود. برای مثال، متدهای overload شده زیر را که از پارامترهای sbyte و int استفاده می کنند را در نظر بگیرید:

public static void SampleMethod(int i) {}
public static void SampleMethod(sbyte b) {}

استفاده از قالبریز sbyte تضمین می کند که نوع درست فراخوانی خواهد شد. برای مثال:

// Calling the method with the int parameter:
SampleMethod(5);
// Calling the method with the sbyte parameter:
SampleMethod((sbyte)5);

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

کلیدواژه operator

برای overload کردن یک عملگر توکار (built-in) یا ارائه یک تبدیل کاربر-تعریف (عملگر قالب ریز/cast) در اعلان یک کلاس یا ساختار از کلمه کلیدی operator استفاده کنید.

مثال

در زیر یک کلاس بسیار ساده شده برای اعداد کسری آمده است. این کلاس عملگرهای + و * برای جمع و ضرب اعداد کسری overload (بازنویسی/بارگزاری مجدد)می کند، همچنین یک عملگر تبدیل که نوع کسری را به نوع double تبدیل می کند را ارائه می دهد.

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

کلمه کلیدی object

نوع object یک نام مستعار برای Object (به حرف بزرگ O دقت کنید) در دات نت فریم وورک است. در سیستم یکپارچه نوع #C، همه نوع ها، چه از پیش تعریف شده و چه کاربر-تعریف، چه نوع های مرجع و چه نوع های مقداری، مستقیما" و یا غیر مستقیم از Object ارث بری می کنند. شما می توانید مقادیر از هر نوعی را به متغیرهای از نوع object انتساب دهید. وقتی یک متغیر از نوع مقداری به نوع object تبدیل می شود، به این عمل اصطلاحا" boxing (بسته بندی) می گویند. به تبدیل نوع object به نوع های مقداری ، اصطلاحا" unboxing می گویند.

مثال

نمونه زیر نشان می دهد که متغیر های از نوع object می توانند مقادیر را از هر نوعی قبول کنند. همچنین چگونگی استفاده متغیرهای از نوع object از متدهای Object از دات نت فریم وورک را نشان می دهد.

class ObjectTest
{
   public int i = 10;
}

class MainClass2
{
   static void Main()
   {
      object a;
      a = 1;   // an example of boxing
      Console.WriteLine(a);
      Console.WriteLine(a.GetType());
      Console.WriteLine(a.ToString());

      a = new ObjectTest();
      ObjectTest classRef;
      classRef = (ObjectTest)a;
      Console.WriteLine(classRef.i);
   }
}
/* Output
    1
    System.Int32
    1
 * 10
*/
  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

کلمه کلیدی 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.
  • غلامعلی حسینی بهجانی