اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۱۴۷ مطلب با کلمه‌ی کلیدی «برنامه نویسی» ثبت شده است

  • ۱
  • ۰

بلوک فاینالی برای پاکسازی هرگونه منابع اختصاص یافته در بلوک try مفید است. همچنین اجرای هرگونه کدی که باید حتما" اجرا شود، حتی اگر استتثنایی وجود داشته باشد. کنترل اجرای برنامه همیشه به بلوک finally تحویل داده می شود، صرف نظر از اینکه بلوک try چگونه پایان می پذیرد.

از آنجایی که بلوک catch برای مدیریت خطاهایی است که در یک بلوک دستور اتفاق می افتند، finally تضمین می کند که بلوکی از دستورها فارغ از اینکه بلوک try قبلی چطور تمام شده (باخطا یا بی خطا)، اجرا شود.


try{
    Commands List
}catch(Exception1 e1){
    Commands List
}catch(Exception2 e2){
    Commands List
}catch(ExceptionN eN){
    Commands List
}finally{
    Commands List
}


#c همچنین دستور using را که املای (syntax) راحتری نسبت به try-finally دارد، ارائه می دهد.

در مورد کلیدواژه using بعدا توضیح خواهم داد.

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

به دو صورت استفاده می شود:

  • عملگر (Operator)
  • لیترال (ثابت بدون نام)

اگر بصورت عملگر استفاده شود، مقدار بولی true را برای اینکه نشان دهد که عملوند false است بر می گرداند و درغیر اینصورت true برمی گرداند.

قبل از C# 2.0 عملگر true و false برای ساختن نوع های مقداری تهی پذیر (nullable) کاربر-تعریف که با نوع هایی همچون SqlBool سازگار بود استفاده می شد. هرچند زبان سی شارپ امروزه از نوع های مقداری تهی پذیر پشتیبانی می کند و هرگاه مقدور باشد، باید از آنها بجای overload کردن عملگرهای true و false استفاده کرد.

بوسیله Boolean های تهی پذیر عبارت a != b لزوما برابر (a == b)! نیست؛ زیرا یک یا هردو مقدار ممکن است null باشند. شما مجبورید هردو عملگر true و false را جداگانه بازنویسی (overload) کنید تا با مقادیر null در عبارت ها درست رفتار شود.

اگر در یک کلاس عملگر false را overload کنیم باید حتما عملگر true را هم بازنویسی (overload) کنیم.

کلمات کلیدی true یا false را درحالت لیترال بصورت زیر استفاده می شوند:

bool a=true;
Console.WriteLine(a ? "Yes" : "No");
  • غلامعلی حسینی بهجانی
  • ۱
  • ۰

اصلاحگر extern

اصلاحگر extern برای تعریف یک متد که پیاده سازی آن بیرونی است استفاده می شود. یک استفاده عمومی از extern به همراه صفت DllImport است، وقتی در حال استفاده از سرویس های Interop برای تولید کد های مدیریت نشده هستیم. در این حالت متد باید بصورت static تعریف شود. مانند مثال زیر:

[DllImport("avifil32.dll")]
Private static extern void AVIFileInit();

کلمه کلیدی extern همچنین یک نام مستعار اسمبلی بیرونی تعریف می کند که توانایی ارجاع نسخه های مختلف از یک جزء (Component) یکسان از یک اسمبلی یکسان را می دهد.

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

کلیدواژه explicit

باسلام!

بوسیله این کلمه کلیدی می توانیم برای کلاس خود یک عملگر قالب ریزی (Cast) صریح بسازیم.

روش تعریف:

public static explicit operator Celsius(Farenheit f){
     return new Celsius((5.0f / 9.0f)*(f.degrees - 32));
}


روش استفاده:

Farenheit f=new Farenheit(100.0f);
Console.WriteLine(f.degrees.ToString());
Celsius s=(Celsius)f;
Console.WriteLine(s.degrees.ToString());


بوسیله کلیدواژه explicit می توان برنامه را طوری نوشت که بتوان یک نوع مقداری را به یک نوع مرجع تبدیل کرد و یا برعکس.

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

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

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) نشان می دهد:

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