اثر پروانه ای

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

مشخصات بلاگ
اثر پروانه ای

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

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

آخرین نظرات
  • ۱۱ بهمن ۹۵، ۱۷:۱۸ - فاروق کریمی زاده
    خوب بود.
اثر پروانه ای

۱۱۶ مطلب با کلمه‌ی کلیدی «سی شارپ» ثبت شده است

سوال: برنامه‌ای بنویسید که ابتدا تعداد عناصر یک آرایه را از ورودی دریافت کرده سپس اعداد آرایه را از ورودی بگیرد. اگر عدد تکراری وارد شد پیغام تکراری بودن دهد.

برای نوشتن این برنامه، یک متد به نام isTekrari ساخته‌ایم. کار این متد جستجو در آرایه و پیدا کردن یک عدد خاص است. اگر این عدد در آرایه پیدا شود، متد مقدار true برمی‌گرداند و در غیر اینصورت false. این متد، یک آرایه و یک عدد را به عنوان آرگومان های ورودی خود، دریافت می‌کند.

در برنامه اصلی، بعد از دریافت هر عدد از ورودی، با استفاده از متد isTekrari ، بررسی می‌کنیم که آیا عدد ورودی در آرایه موجود است یا نه. اگر موجود بود، با استفاده از دستور continue به دور بعدی حلقه می رویم. دقت کنید که در این صورت مقدار شمارنده حلقه هیچ تغییری نمی‌کند؛ بنابراین تا زمانیکه عدد وارد شده تکراری باشد، حلقه تکرار می‌شود. اما اگر عدد وارد شده تکراری نبود، آن عدد در آرایه ذخیره شده و مقدار شمارنده حلقه افزایش پیدا می‌کند.

به لیست برنامه دقت کنید:

using System;

namespace qa01
{
    class Program
    {
        static bool isTekrari(int[] a, int b)
        {
            for (int i = 0; i < a.Length; i++)
            {
                if (a[i]==b)
                {
                    return true;
                }
            }
            return false;
        }
        static void Main(string[] args)
        {
            int n=0, inp=0;
            int.TryParse(Console.ReadLine(), out n);
            int[] ar=new int[n];
            for(int i=0;i<n;)
            {
                int.TryParse(Console.ReadLine(), out inp);
                if (!isTekrari(ar, inp))
                {
                    ar[i] = inp;
                    i++;
                }
                else
                {
                    Console.WriteLine("Tekrari");
                    continue;
                }
            }
            Console.Clear();
            for (int i = 0; i < ar.Length; i++)
            {
                Console.Write("{0} ", ar[i]);
            }

            Console.ReadKey();
        }
    }
}
درصورتی که هر سوالی در رابطه با این برنامه دارید، در قسمت نظرات، مطرح بفرمایید.

سلام

یکی از پرکاربردترین مفاهیم ریاضی، که در بسیاری از برنامه های کامپیوتری هم مورد استفاده دارد، "بزرگ‌ترین مقسوم‌علیه مشترک" هست که با نام اختصاری "ب.م.م" نیز شناخته شده است. به احتمال زیاد در منابع خارجی با عبارت Greatest Common Divisor یا GCD مواجه شده باشید. البته الگوریتم‌های زیادی (با پیچیدگی های مختلف) برای محاسبه ب.م.م ارائه شده است؛ اما یکی از راه هایی که بسیاری از ما در دوران مدرسه از آن استفاده کرده ایم، روش تقسیم متوالی، یا روش نردبانی هست.

امروز با الگوریتم محاسبه بزرگترین مقسوم علیه مشترک دو عدد و همچنین برنامه آن در زبان برنامه نویسی #C در خدمت شما هستم.

به تصویر زیر دقت کنید:

محاسبه بزرگترین مقسوم علیه مشترک GCD ب.م.م ب م م

در این شکل روش محاسبه ب.م.م دو عدد 12 و 20، نشان داده شده است. 

مقدمه

به نظرم اولین و مهمترین چیزی که باید بفهمیم اینه که اصلا الگوریتم های مرتب سازی چه هستند. بر اساس ویکی‌پدیا، الگوریتم مرتب سازی، الگوریتمی است که عناصر یک لیست را به ترتیب خاصی در می‌آورد. کاربردی‌ترین ترتیب ها، ترتیب‌های عددی و ترتیب‌های وابسه به حروف هستند. بعضی از الگوریتم‌ها (از جمله الگوریتم‌های جستجو و ادغام) برای اینکه بدرستی کار کنند، نیازمند لیست‌های مرتب شده می باشند؛ مرتب‌سازی مؤثر و کارآمد، برای بهینه سازی کارائی چنین الگوریتم‌هایی، مهم هستند. این اگوریتم‌ها، اغلب اوقات، برای به نظم در آوردن داده‌ها و تولید خروجی قابل خواندن برای انسان، مفید هستند.

من، در این مقاله، برخی از الگوریتم‌های مرتب‌سازی را شرح خواهم داد. همه الگوریتم هایی که در اینجا مورد بحث قرار گرفته اند، در زبان برنامه نویسی #C نوشته شده‌اند و بسیاری از ایده‌ها، بر اساس الگوریتم‌هایی است که شما می‌توانید در ویکی‌پدیا پیدا کنید.


الگوریتم‌هایی که در این مقاله با آنها آشنا خواهید شد:

  • مرتب سازی حبابی دوطرفه (Bidirectional Bubble Sort)
  • مرتب سازی حبابی (Bubble Sort)
  • مرتب سازی سطلی (Bucket Sort)
  • مرتب سازی شانه ای (Comb Sort)
  • مرتب سازی چرخه‌ای (Cycle Sort)
  • مرتب سازی گورزاد (Gnome Sort)
  • مرتب سازی هرمی (Heap Sort)
  • مرتب سازی درجی (Insertion Sort)
  • مرتب سازی ادغامی (Merge Sort)
  • مرتب سازی زوج-فرد (Odd-Even Sort)
  • مرتب سازی لانه کبوتری (Pigeonhole Sort)
  • مرتب سازی سریع (Quick Sort)
  • مرتب سازی سریع با استفاده از مرتب سازی حبابی (Quick Sort with Bubble Sort)
  • مرتب سازی انتخابی (Selection Sort)
  • مرتب سازی شل یا پوسته ای (Shell Sort)

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

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

نظرها، پیشنهادات و انتقادات سازنده شما موجب دلگرمی این حقیر بوده، و مسلّما در بهتر شدن این وبلاگ، مؤثر خواهد بود. متشکرم.


برنامه نویسی خیلی مقدماتی سی شارپ / درس اول

برنامه نویسی خیلی مقدماتی سی شارپ / درس دوم

برنامه نویسی خیلی مقدماتی سی شارپ / درس سوم

برنامه نویسی خیلی مقدماتی سی شارپ / درس چهارم

برنامه نویسی خیلی مقدماتی سی شارپ / درس پنجم


برنامه نویسی مقدماتی سی شارپ / درس ششم

برنامه نویسی مقدماتی سی شارپ / درس هفتم

برنامه نویسی مقدماتی سی شارپ / درس هشتم

برنامه نویسی مقدماتی سی شارپ / درس نهم

برنامه نویسی مقدماتی سی شارپ / درس دهم


برنامه نویسی نیمه حرفه ای سی شارپ / درس یازدهم

برنامه نویسی نیمه حرفه ای سی شارپ / درس دوازدهم

برنامه نویسی نیمه حرفه ای سی شارپ / درس سیزدهم


برنامه نویسی نیمه حرفه ای سی شارپ / درس سیزده و نیم


برنامه نویسی نیمه حرفه ای سی شارپ / درس چهاردهم

برنامه نویسی نیمه حرفه ای سی شارپ / درس پانزدهم (آخر)

بسم الله الرحمن الرحیم

سلام...

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

قبلا تا حدودی با "کلاس" و "شئ" آشنایی پیدا کردید. اما لازم هست که چند نکته رو در این مورد گوشزد کنم.

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

بسم الله الرحمن الرحیم

سلام...

همونطور که قولش رو داده بودم از این جلسه تمرکز بیشتر بر روی برنامه نویسی به روش شئ گرایی خواهیم داشت. البته این مبحث نیاز به مقدماتی داره که الحمدلله تا اینجای کار با بسیاری از اون مقدمات آشنایی مختصری پیدا کرده اید. حتی شما بدون اینکه خودتان متوجه باشید از تمامی این تکنیک های شئ‌گرایی در برنامه های قبلی استفاده کردید. بنابراین به احتمال زیاد درک مواردی که در ادامه خواهد آمد بسیار آسان تر خواهد بود.

شئ گرایی در برنامه نویسی، کار برنامه نویس ها رو بسیار ساده کرده به این دلیل که پیچیدگی برنامه‌های نوشته شده به این روش بسیار کم بوده ، هزینه آن کمتر و امکان توسعه سریع تر برنامه را به برنامه نویس خواهد داد. جلوی بسیاری از خطاهای منطقی در برنامه نویسی، با این روش گرفته می شود. البته این امکان وجود دارد که زبان برنامه نویسی مورد استفاده، تمام امکانات را برای نوشتن یک برنامه شئ‌گرا فراهم کرده باشه، اما برنامه نویسی ما به روش سنتی باشه! گفتن این مقدمه طولانی شاید کمی بی موقع باشه. پس بریم ببینیم این روش برنامه نویسی واقعا به چه شکل هست. البته باید بگم معمولا برنامه نویسی به این روش رو کسی به این زودی تدریس نمی کنه! و معمولا بعد از آشنایی هنرآموز با چند زبان غیر شئ‌گرای دیگر، این مباحث رو تدریس می کنند. اما به این دلیل که با اکثر مفاهیم اولیه تا حدودی آشنایی پیدا کرده اید، این مبحث رو زود تر مطرح کردیم. در ضمن تمام دروسی که تا اینجا گفته شده بسیار مختصر و خلاصه بوده اند.

بسم الله الرحمن الرحیم

سلام...

پیرو درخواست های مکرر برخی دوستان ، مبنی بر آموزش ساخت رابط کاربری برنامه "8 وزیر" در محیط گرافیکی #C ، تصمیم گرفتم این مطلب رو به همین موضوع اختصاص بدم. البته قطعا این مبحث زود هنگام در بلاگ قرار گرفت و امکان اینکه برای برخی از دوستان مبتدی ، درک این مفاهیم مشکل باشد، وجود دارد. قبلا از بقیه دوستان عذر خواهی می کنم.

ما در این درس قصد داریم برنامه ای بسازیم که در آن 64 شیء PictureBox وجود داشته باشد. هر کدام از این اشیاء دارای خصوصیات و رفتارهای مربوط به خود باشد (متمایز از بقیه اشیاء). اما قرار دادن 64 کنترل (شیئ) PictureBox روی فرم برنامه بصورت دستی و از طریق Toolbox ، کار طاقت فرسایی به نظر می‌رسد. بنابراین راهی جز تولید این 64 کنترل با استفاده از کدنویسی وجود ندارد.

در زبان برنامه نویسی #C دات نت ، با هر چیزی بصورت یک شیئ برخورد می شود. هرچیزی! هر شیئ دارای یک کلاس هست که قالب و طرح کلی آن شیئ را در خود دارد. برای مثال شیئ آچار دارای یک قالب ریخته‌گری است، که با ریختن مواد مذاب در داخل آن ، آچار بوجود می آید.

بسم الله الرحمن الرحیم

سلام. عذرخواهی می کنم بابت تأخیری که برای نوشتن درس جدید داشتم. یه مشغولیت هایی داشتم که باعث شد نتونم به موقع درخدمتتون باشم.

در این درس می خواهیم با الگوریتم آشنایی پیدا کنیم. الگوریتم که از نام خوارزمی دانشمند بزرگ ایرانی گرفته شده به معنای مجموعه ای متناهی از دستور العمل هاست که با پیگیری آنها مسأله ای را حل می‌کنیم. در واقع الگوریتم روشی گام به گام برای حل مسأله است.

بسم الله الرحمن الرحیم

سلام...

همونطوری که در جلسه قبل قولش رو داده بودم، در این درس می خوام در مورد محدوده متغیرها ، تبدیل رشته ها به عدد و همچنین ثابت ها، صحبت کنم. در قسمت عملی این درس هم با چندتا از اشیاء دیگر آشنا شویم. البته رسم بر اینه که به اشیائی که روی فرم میگذاریم "کنترل" بگیم، پس از حالا طبق همین رسم پیش خواهیم رفت.

متغیرها علاوه بر اینکه دارای نام، نوع و مقدار اولیه هستند، دارای طول عمر و سطح دسترسی نیز می‌باشند. با سه تای اولی که آشنایی دارید. اما توی این درس قصد دارم شما رو با طول عمر و سطح دسترسی متغیرها آشنا کنم. شما بعد از آشنایی با این موارد توانایی نوشتن برنامه های بهتری را خواهید داشت.

بسم الله الرحمن الرحیم

سلام...

در جلسه قبل با حلقه های تکرار آشنا شدیم و با استفاده از حلقه while یک برنامه ساده نوشتیم. همچنین با انواع دیگری از متغیر ها آشنایی کمی پیدا کردیم. در این جلسه قصد دارم شما رو با نوع خاصی از متغیرها که در برنامه نویسی به "آرایه" مشهور هستند، آشنا کنم. همچنین با حلقه تکرار for هم آشنا شویم. با ما باشید...

متغیر های رشته ای یا string برای ذخیره سازی (موقت) یک متن بکار می روند. متغیرهای عددی ، از جمله int ، float ، byte و... برای ذخیره سازی اعداد مورد استفاده قرار می گیرند. اما نوشتن بعضی برنامه ها نیازمند تعداد زیادی متغیر است. برای مثال فرض کنید بخواهیم برنامه ای بنویسیم که نمرات یک دانشجو را گرفته و معدل او را محاسبه کند. یکی از راه حل ها می تواند این باشد که برای هر درس یک متغیر جداگانه بسازیم. بصورت زیر: (در کد زیر سعی کرده ام که روش های مختلف تعریف و مقدار دهی اولیه متغیرها رو نشان دهم)

float riazi=18.25f;
float fizik=16.5f,shimi,farsi=20.0f;
float miyangin=(riazi+fizik+shimi+farsi)/4;

برنامه محاسبه میانگین نمرات، یک برنامه با تعداد متغیرهای کم است. هرچند ما از بعضی دروس صرف نظر کردیم. اما تصور کنید بخواهید برنامه ای برای سرشماری یک شهر بزرگ را بنویسیم! که در آن نیاز به ذخیره اسم شهروندان داشته باشیم. چون می خواهیم بعدا تعداد افرادی را که نامشان "علی" هست را بفهمیم. از آن گذشته شاید بخواهیم نام ها را بر اساس حروف الفبا مرتب کنیم.