اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۱۰۷ مطلب با کلمه‌ی کلیدی «programming» ثبت شده است

  • ۱
  • ۰

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

جدول کلمات کلیدی #C

 

کلمات کلیدی، شناسه هایی از پیش تعریف شده و رزرو شده هستند که معانی خاصی برای کامپایلر دارند. شما نمی توانید از این کلمات رزرو شده به عنوان شناسه (مثلا اسم کلاس یا متغیر) در برنامه تان استفاده کنید، مگر اینکه قبل از چنین شناسه هایی از پسوند @ استفاده کنید. برای مثال if@ یک شناسه معتبر است ولی if معتبر نیست ، زیرا if یک کلمه کلیدی است.

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

جدول در ادامه مطلب...

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

قید new

توضیح مختصری در مورد قید ها (Constraint) : 

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

قید new مشخص می کند که هر آرگومان نوع در اعلان کلاس جنریک (generic/وابسته به جنس) باید دارای یک متد سازنده بدون پارامتر باشد. برای استفاده از قید new ، نوع (type) نباید abstract (چکیده) باشد.

مثال

وقتی که کلاس جنریک شما نمونه هایی جدید از نوعی خاص می سازد، قید new را به آن پارامتر نوع اعمال کنید. بصورتی که در مثال زیر نشان داده شده:

class ItemFactory<T> where T : new()
{
    public T GetNewItem()
    {
        return new T();
    }
}

هرگاه قید new را به همراه قیود دیگر بصورت همزمان استفاده می کنید، قید new باید آخرین قید باشد:

public class ItemFactory2<T>
        where T : IComparable, new()
{
}

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

اصلاحگر new

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

برای مخفی کردن یک عضو ارثی، آن را در کلاس مشتق شده با یک نام یکسان اعلان کنید و آنرا با اصلاحگر new اصلاح کنید. برای مثال:

public class BaseC
{
    public int x;
    public void Invoke() { }
}
public class DerivedC : BaseC
{
    new public void Invoke() { }
}

در این مثال، BaseC.Invoke توسط DerivedC.Invoke مخفی است. مخفی سازی روی فیلد x مؤثر واقع نمی شود ، به این دلیل که با یک نام مشابه مخفی نشده است.

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

عملگر new

برای ساختن شیئ ها و احضار متدهای سازنده مورد استفاده قرار می گیرد. برای مثال:

Class1 obj  = new Class1();

همچنین برای ساختن نمونه هایی از نوع های بی نام ، کاربرد دارد:

var query = from cust in customers
            select new {Name = cust.Name, Address = cust.PrimaryAddress};

عملگر new همچنین برای احضار (invoke) کردن متد سازنده پیش فرض نوع های مقداری مورد استفاده دارد. مثلا":

int i = new int();

در بیان قبل، i با صفر مقداردهی اولیه می شود، که مقدار پیش فرض برای نوع int می باشد. تاثیر این بیان مشابه بیان زیر است:

int i = 0;

به خاطر داشته باشید که اعلان یک متد سازنده پیش فرض برای یک struct (ساختار) یک خطا محسوب می شود، زیرا همه نوع های مقداری بصورت پیش فرض دارای یک متد سازنده public (عمومی) هستند. برای تنظیم مقدار اولیه نوع struct ، امکان اعلان متدهای سازنده دارای پارامتر بر روی نوع struct وجود دارد، اما این کار فقط زمانی انجام می شود که مقداری به غیر از مقدار پیش فرض مورد نیاز باشد.

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

کلمه کلیدی new

در #C ، کلمه کلیدی new را می توان بصورت عملگر (operator) ، اصلاحگر (modifier) و یا یک قید (constraint) مورد استفاده قرار داد.

  • عملگر new

    برای ساختن شیئ ها و احضار متد سازنده (Constructor) کلاس مربوطه استفاده می شود.

  • اصلاحگر new

    برای پنهان کردن یک عضو ارثی از اعضای یک کلاس پایه ای مورد استفاده قرار می گیرد.

  • قید new

    برای محدود کردن نوع هایی که ممکن است به عنوان آرگومان هایی برای پارامتر نوع در اعلان جنریک (generic) مورد استفاده قرار گیرند، کاربرد دارد.

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

کلیدواژه namespace

کلیدواژه namespace برای اعلان حوزه (scope) استفاده می شود. این حوزه فضای نام به شما اجازه می دهد که کدتان را سازماندهی کنید و راهی برای ساختن نوع های منحصر بفرد را ارائه می دهد.

namespace SampleNamespace
{
    class SampleClass { }

    interface SampleInterface { }

    struct SampleStruct { }

    enum SampleEnum { a, b }

    delegate void SampleDelegate(int i);

    namespace SampleNamespace.Nested
    {
        class SampleClass2 { }
    }
}

ملاحضات

شما می توانید یک یا بیش از یکی از موارد زیر را در داخل یک namespace اعلان کنید:

  • یک namespace دیگر
  • class
  • interface (رابط)
  • struct (ساختار)
  • enum (نوع شمارشی)
  • delegate (وکیل/نماینده)

در هرصورت چه صریحا" در فایل کد منبع (Source file) سی شارپ ، namespace را اعلان کنید و چه اینکار را انجام ندهید، کامپایلر یک namespace اضافه می کند. در بعضی مواقع به عنوان فضای نامی سراسری به این namespace بی نام، رجوع می شود که در همه فایل ها موجود است. هر شناسه ای که در فضای نامی سراسری وجود دارد، برای استفاده در یک namespace نامدار قابل دسترسی است.

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

کلمه کلیدی goto

بیان goto روند اجرای برنامه را مستقیما" به یک بیان برچسب خورده منتقل می کند.

یک استفاده رایج از goto ، انتقال روند اجرای برنامه به برچسب default یا یک برچسب case خاص در بیان switch می باشد.

بیان goto همچنین برای بیرون آمدن از حلقه های تودرتوی عمیق کاربرد دارد.

مثال

مثال زیر طرز استفاده از goto در بیان switch را توضیح می دهد.

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

بیان for

حلقه for یک بیان یا بلوکی از بیان ها را تا زمانی که عبارت شرطی تعیین شده به false ارزیابی شود، مکررا" اجرا می کند. حلقه for برای شمارش (حرکت روی عناصر) آرایه ها و پردازش ترتیبی مفید است.

مثال

در مثال زیر، مقدار int i در کنسول نوشته شده و مقدار i هر بار توسط حلقه یکی افزایش می یابد.

class ForLoopTest 
{
    static void Main() 
    {
        for (int i = 1; i <= 5; i++)
        {
            Console.WriteLine(i);
        }
    }
}
/*
Output:
1
2
3
4
5
*/

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

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

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

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

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

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