اثر پروانه ای

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

اثر پروانه ای

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

اثر پروانه ای

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

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

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

۷۸ مطلب با کلمه‌ی کلیدی «کلیدواژه» ثبت شده است

  • ۲
  • ۰

جدول کلمات کلیدی #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) باشد. این کار باعث می شود که بتوانیم با برنامه نویسی، فراخوانی های متد را تغییر دهیم، و همچنین کد جدیدی را در یک کلاس موجود، وارد کنیم. تا وقتی که امضای وکیل را می دانید، می توانید متد خودتان را به آن انتساب دهید.

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

کلمه کلیدی event

کلمه کلیدی event برای اعلان یک کلاس منتشر کننده رویداد استفاده می شود.

مثال

مثال زیر چگونگی اعلان و برپا کردن یک رویداد که از EventHandler به عنوان نوع وکالتی (delegate type) اساسی اش استفاده می کند. برای مشاهده مثال کاملی از چگونگی استفاده از نوع وکالتی جنریک <EventHandler<TEventArgs و چگونگی تصویب یک رویداد و ساختن یک متد مدیریت کننده رویداد، به راهنمای انتشار رویدادها ، مطابق Net Framework. مراجعه کنید.

public class SampleEventArgs
{
    public SampleEventArgs(string s) { Text = s; }
    public String Text {get; private set;} // readonly
}
public class Publisher
{
    // Declare the delegate (if using non-generic pattern).
    public delegate void SampleEventHandler(object sender, SampleEventArgs e);

    // Declare the event.
    public event SampleEventHandler SampleEvent;

    // Wrap the event in a protected virtual method
    // to enable derived classes to raise the event.
    protected virtual void RaiseSampleEvent()
    {
        // Raise the event by using the () operator.
        if (SampleEvent != null)
            SampleEvent(this, new SampleEventArgs("Hello"));
    }
}

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

رویدادها را می توان با public، private، protected، internal یا protected internal علامتگذاری کرد. این اصلاحگرهای دسترسی، چگونگی دسترسی کاربران کلاس ، به رویداد را تعریف می کنند.

کلیدواژه ها و رویدادها

کلمات کلیدی زیر روی رویدادها اعمال می شوند.

  • static : اگر هیچ نمونه ای از کلاس موجود نباشد، رویداد را برای فراخواننده گان در دسترس قرار می دهد. (بدون نمونه سازی از کلاس به رویداد دسترسی داریم).
  • virtual : به کلاس های مشتق شده اجازه می دهد تا با استفاده از کلمه کلیدی override رفتار رویداد را بازنویسی کنند.
  • sealed : رویداد را به عنوان مهروموم شده اعلام کرده و اجازه رونویسی نداریم. (برای کلاس های مشتق شده تعیین می کند که این رویداد، دیگر مجازی نیست).
  • abstract : کامپایلر بلوک های دستیابی کننده رویداد add و remove را تولید نمی کند، بنابراین کلاس مشتق شده باید پیاده سازی خودش را برای این دستیابی کننده ها ارائه کند.

یک رویداد ممکن است با کلمه کلیدی static به عنوان یک رویداد ایستا اعلان شود؛ این کار، رویداد را برای همیشه در دسترس فراخواننده گان قرار می دهد، حتی اگر هیچ نمونه ای از کلاس موجود نباشد.

یک رویداد می تواند به عنوان یک رویداد مجازی (virtual) علامتگذاری شود؛ که این امکان را به کلاس های مشتق شده می دهد تا رفتار رویداد را با استفاده از کلیدواژه override بازنویسی کنند. برای اطلاعات بیشتر "ارث بری (آموزش برنامه نویسی #C) را ببینید. رویدادی که رخداد مجازی را بازنویسی می کند، همچینی می تواند با sealed علامت گذاری شود؛ با این کار به کلاس های مشتق شده می گوییم که این رویداد دیگر مجازی نیست و نمی توان آنرا بازنویسی کرد. در پایان، یک رویداد می تواند بصورت abstract اعلان شود، که بدین معنی است که کامپایلر بلوک های دسترسی کننده ی رویداد add و remove را تولید نخواهد کرد. بنابراین کلاس های مشتق شده باید پیاده سازی خودشان را برای این بلوک ها ارائه دهند.

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