انتظار می رود پس از پایان این جلسه بتوانید: با حل کردن تمرینها ذهن الگوریتمی خود را تقویت نمایید و با نمونه تمرین هایی همچون سری ها وخرد کردن وتجزیه عدد و چرخش و به دست آوردن ریشه چندجمله ای آشنا شوید....
عکس نویسنده
عکس نویسنده
بازدید :
زمان تقریبی مطالعه :

گام سیزدهم در برنامه نویسی ++C 

ایران در مسابقات جهانی برنامه‎نویسی

اهداف کلی:   

تسلط پیدا کردن به مباحث گذشته

 

اهداف رفتاری و عمکردی:

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

 

سرفصل های تئوری:

-توضیح سری
- محاسبه ی ریشه ی یك عبارت ریاضی
- رسم نمودار
- خرد كردن پول
- چاپ عدد به حروف
- گرفتن اعداد


سرفصل های عملی:

-حل مثال از رشته
-نمونه تمرین از فایل
-حل مثال هایی از پرکردن فایل


مواد و تجهیزات لازم برای گام:

 


محاسبه سری
برنامه ای بنویسید كه حاصل یكی از سری های زیر (كه همگی به سرعت‏‌‎، به یك مقدار معینی همگرا می شوند) محاسبه كند. همواره آخرین مقدار بدست آمده بر روی صفحه چاپ می شود. در صورتی كه كاربر پیش از تمام شدن محاسبه ، كلیدی را فشار داد، برنامه باید خاتمه پیدا كند.
توضیح: سری های توانی در محاسبات به روش تحلیلی (آنالیز) كاربردهایی فراوانی دارند. مزیت آنها، سادگی محاسبة جملات (ضرب / تقسیم / توان)، امكان محاسبه با دقت (حداكثر خطایی) معین است. روشهای استانداردی برای یافتن سری معادل با حاصل توابع ریاضی مشتق پذیر، حاصل معادلات دیفرانسیل ، حاصل (انتگرال ها و … وجود دارد. بعضی سری ها در یك نقطه x (محدود به یك بازه) همگرا هستند و محاسبه می‌شوند و بعضی ها، فاقد X هستند. بعضی سری های معادل با توابع ریاضی معروف ، در ادامه آمده است:


1-1 روش اول:‌

محاسبه سری تا جملة معین: در این روش ، n یعنی تعداد جملات كه باید در محاسبة حاصل سری درنظر گرفته شوند، پرسیده می شود و محاسبه به آن تعداد معین ادامه می یابد.


2-1 روش دوم:

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


3-1 روش سوم:

محاسبه ی سری با دقت معین: در این روش ، تعداد ارقام اعشار كه مورد نیاز است، از كاربر پرسیده می شود و محاسبات تا جایی ادامه پیدا می كند كه اختلاف (قدر مطلق )‌حاصل سری با احتساب آخرین جمله، و بدون احتساب آن، از –d10 كه در آن d تعداد ارقام اعشار موردنیاز است، كمتر شود.


4-1 محاسبه ی جذر عدد با فرمول بازگشتی: 

محاسبه ریشه ی یك عبارت ریاضی
ریشه ی یك عبارت ریاضی بر حسب متغیر x ، مقداری از x است كه در آن، حاصل عبارت، صفر می شود. یك عبارت ریاضی می تواند هیچ، یك یا بیشتر ریشه ی حقیقی داشته باشد.
محاسبه ی ریشه یا ریشه های یك چند جمله ای از مرتبه 4 یا بالاتر در چنین مواردی، از كامپیوتر و روش های الگوریتمی و تكرار شونده استفاده می شود.


1-2 الف) محاسبه ی ریشه های یك چند جمله ای با ضرایب معین و از درجه ی حداكثر 2 :
با توجه به شكل كلی چند جمله ای به صورت ax+bx+c ، ابتدا ضرایب b,c و a از كاربر پرسیده می شود و بسته به اینكه چند جمله ای از درجه ی صفر، یك یا دو باشد، تمام ریشه ها محاسبه و نمایش داده می شوند و اگر ریشه ای وجود ندارد، پیام مناسب چاپ می شود.


2-2 محاسبه ی ریشه های یك چند جمله ای از درجه ی 3 به بالا با روش تقسیم محدوده:
در این روش،‌ از خاصیت پیوستگی چند جمله ای ها استفاده می شود و اینكه حاصل چند جمله ای روی هر ریشه، تغییر علامت می دهد. با توجه به این موضوع، ابتدا ضرایب چند جمله ای پرسیده می شود (درجه آن، از پیش معلوم است). سپس محدوده ای كه قرار است در آن، برای ریشه جستجو انجام شود.
ابتدا دو سر بازه، برای وجود ریشه بررسی می شوند. سپس بازه به دو قسمت تقسیم می شوند و بسته به علامت حاصل چند جمله ای بر روی هر یك از سه نقطه، دامنه ی بررسی، به یكی از دو بازه محدود می شود. این كار تا یافتن ریشه ادامه می یابد.


نكات:

1) ‌در این روش، علامت حاصل چند جمله ای در دو سر بازه ی اولیه، باید متفاوت باشد. این امر برای پیشرفت الگوریتم و نیز اطمینان از وجود حداقل یك ریشه در بازه، لازم است.
2) ‌این روش، تنها یكی از ریشه های چند جمله ای را پیدا می كند.
3) ‌ به دقت محاسبه، به هر سه روش مطرح شده در قسمت محاسبه ی سری ها، قابل تنظیم است.


پرسش: چگونه می توان بدون پرسیدن محدوده ی اولیه، به دنبال ریشه گشت؟

بازی حدس زدن عدد
1-3- ‌در این بازی، كامپیوتر یك عدد صحیح مثبت (تصادفی) در محدوده ی مشخصی را درنظر می گیرد. كاربر (بازیكن) شروع به حدس زدن می كند. با هر بار حدس، كامپیوتر یكی از پاسخ های «كوچك تر»، «بزرگ تر»، «برنده شدید!» یا «متأسفم، شما بازنده شدید!» را ارایه می دهد. بازیكن در صورتی بازنده می شود كه پس از تعداد مشخصی حدس، نتواند عدد كامپیوتر را حدس بزند. پس از بردن یا باختن بازیكن، كامپیوتر عددی را كه درنظر گرفته بود، نمایش می دهد و برنامه خاتمه می یابد.
پرسش: روشی برای تعیین تعداد حدس هایی كه بازیكن می تواند بزند ارایه دهید.

2- 3 -‌روشی را ارایه دهید و با استفاده از آن برنامه ای بنویسید كه در بازی بالا، كاربر (بازیكن) عددی را درنظر بگیرد و کامپیوتر آن را حدس بزند.
پرسش: روشی ارایه دهید كه كامپیوتر با استفاده از آن بتواند در صورتی كه كاربر راهنمایی غلطی به او كرده است او را متقلب اعلام و بازی را خاتمه دهد.

3-3- در این بازی، كامپیوتر، عددی رقمی (صحیح مثبت) بدون ارقام تكراری درنظر می گیرد و كاربر باید آن را حدس بزند. تعیین راهنمایی كه كامپیوتر به بازیكن می كند، به دلخواه شما است. هم چنین، كامپیوتر باید با استفاده از الگوریتم قابل قبولی، سقفی برای تعداد حدس های كاربر تعیین كند.

برنامه delay
مواردی پیش می آید كه در آن نیاز به ایجاد وقفه در اجرای برنامه به مدت زمان مشخصی است (به عنوان مثال، در بازه های كامپیوتری).
1-4 با استفاده از حلقه ها، روشی را برای ایجاد وقفه ارایه دهید.
2-4 چگونه می توان وقفه ای به مدت زمان دلخواه (بر حسب ثانیه )‌ایجاد كرد؟
3-4 با توجه به متفاوت بودن سرعت كامپیوتر های مختلف، راهكاری ارایه دهید كه با روشی نسبتاً ساده بتوان ایجاد وقفه را به درستی تنظیم كرد (استفاده از كمك كاربر و محاسبه ی ضریب شمارش حلقه با استفاده از ساعت كاربر)


توجه: یك ثانیه مدت كوتاهی است كه كاربر نمی تواند به درستی سپری شدن آن را گزارش كند. بهتر است از میانگین گیری استفاده شود
تعداد دور حلقه برای 1 ثانیه دور های لازم / ثانیه ها

4-4 با استفاده از تابع get time of day یا time ، روش بالا را اتوماتیك كنید.

اعداد اول
به عدد صحیح و مثبتی اول گویند كه به هیچ یك از اعداد اول کوچک تر از خودش بخش پذیر نباشد. عدد 1 اول نیست و اولین عدد اول، 2 است.
1-5 برنامه ای بنویسید كه عدد صحیحی (مثبت / منفی / صفر) را از كاربر بگیرد و نتیجه ی «اول» یا «مركب» را برروی صفحه بنویسید.
2 –5 برنامه ی قسمت قبل را به صورتی كامل كنید كه تمام عوامل اول عدد ورودی را بر روی صفحه چاپ كند.
در صورتی كه عدد وارد شده منفی بود، عوامل اول قدر مطلق آن را و اگر صفر یا 1 بود، پیام مناسبی را چاپ كند.
3 –5 برنامه ی قسمت قبل را به صورتی كامل كنید كه عدد ورودی را تجزیه كند یعنی قدر مطلق عدد ورودی را به صورت حاصلضرب توان های مناسب از عوامل اولش، تودرتو چاپ كند. (عوامل تكراری، مورد قبول نیستند)
4 - 5 با استفاده از برنامه قسمت قبل، برنامه ای بنویسید كه ب.م.م و ك.م.م دو عدد ورودی مثبت (1 یا بیشتر) را با توجه به نكته زیر محاسبه كند:
ب.م.م دو عدد، حاصلضرب عوامل اول مشترك با توان کوچک تر و ك.م.م تودرتو آنها، حاصلضرب عوامل اول با توان بزرگ تر است.
5 –5 چگونه می توان برنامه قسمت ت را به صورتی كامل كرد كه برای بیشتر از دو عدد هم كار بكند؟
6 - 5 با استفاده از برنامه ی قسمت «پ» برنامه ای بنویسید كه تمام مقسوم علیه های عدد ورودی را چاپ كند.
(1‌با عوامل اول 2) ‌تقسم حلقه
7 – 5 با استفاده از برنامه قسمت «الف»، برنامه ای بنویسید كه تمام اعداد کوچک تر یا مساوی با را چاپ كند. مقدار n از ورودی گرفته شود.
8 –5 با استفاده از برنامه ی قسمت چ،‌این حدس را كه «اگر حاصلضرب تمام n عدد اول بزرگ تر از یك را با یك جمع كنیم، عددی اول به دست می آید»، امتحان كنید.
9 – 5 حدس گلدباخ را «هر عدد زوج را می توان به صورت مجموع دو عدد اول کوچک تر از خودش نوشت» بیازمایید.
10 –5 برنامه ی قسمت چ را طوری تغییر دهید كه اعداد اول را با روش غربال اراتستن بیابد.
11 –5 عوامل اول عدد كه بزرگ تر یا مساوی جذر آن هستند، حداكثر «یك» هستند.
12 –5 اگر p اول باشد، به ازای هر a متعلق به 1 تا p-1،
13 –5 اگر a و n نسبت بهم اول باشند، ( برابر است با تعداد اعداد بزرگ تر یا مساوی صفر كه از n کوچک ترند و نسبت به آن اول هستند.)


رسم نمودار
در شاخه های مختلف مهندسی، علوم تجربی و علوم انسانی، با داده های خام سر و كار داریم و هدف آن از یك پژوهش، جمع آوری داده ها، تحلیل آنها و نتیجه گیری است. یكی از راه های ارایه كلمات رسم نمودار است.
در كامپیوتر، یكی از روش های ذخیره ی اطلاعات به كارگیری آرایه است.

- برنامه ای بنویسید كه نمرات دانش آموزان یك كلاس را در درس ریاضی دریافت كند و پس از آن، نمودار میله ای نمرات آنان را رسم كند. تعداد دانش آموزان در ابتدای برنامه پرسیده می شود. هم چنین نمرات اعداد صحیح از 0 تا 20 هستند.


1-6 روش اول: رسم نمودار بدون گرافیك: در هر سطر، ابتدای سطر، شماره دانش آموزی، سپس یك tab فاصله و پس از آن تعدادی * به اندازه ی نمره ی او


2-6 روش دوم: رسم گرافیكی: با توجه به حداكثر تعداد دانش آموزان، به میله ی نمره ی هر دانش آموز، عرض مناسب با احتساب فاصله میله ها اختصاص داده می شود. محورها و واحدها هم می توانند اضافه شوند.


3-6 برنامه ای مشابه برنامه بالا بنویسید با این تفاوت كه نمره بر روی محور x قرار می گیرد و بر روی محور y ، فراوانی دانش آموزانی كه آن نمره را كسب كرده اند نمایش داده می شود. (یافتن عناصر تكراری آرایه)


4-6 برنامه بالا را به طوری تغییر دهید كه نمرات اعشاری را هم دریافت كند. در این صورت، نمرات هنگام نمایش، به 5 دسته ی A، B ، C ، D و E تقسیم می شوند و فراوانی دسته نمایش داده می شود. (گسسته سازی)
در این مورد، به دلیل پیوسته بودن داده ها، بین میله ها فاصله ای قرار داده نمی شود.
5-6 برنامه ی بالا را طوری تغییر دهید كه درصد فراوانی هر دسته را به صورت نمودار دایره ای نمایش دهد.

خرد كردن پول
در یك خودپرداز بانك (ATM) ، سكه های 1، 5، 10، 25 تومانی، و اسكناس های 50، 100، 200، 500، 1000 و 2000 تومانی وجود دارد، منظور از خرد كردن پول، تعیین حداقل تعداد سكه ها و اسكناس هایی است كه جمعاً با آن پول معادل هستند. برای نگهداری مقادیر مختلف سکه و اسکناس از آرایه استفاده می شود.


1-7 ) برنامه ای بنویسید كه عددی صحیح و مثبت را به عنوان مقدار پول دریافت كند و آن را با سكه ها و اسكناس های این خودپرداز خرد كند.
2-7 برنامه ی بالا را به طوری تغییر دهید كه بتوان سكه ها یا اسكناس های موجود در خودپرداز را انتخاب كرد و تنها با آنها، پول را خرد كرد.

3-7 برنامه ی بالا را طوری تغییر دهید كه در اولین بار اجرا، مقدار موجودی هر سكه یا اسكناس را بخواند، سپس، بتوان به آن پول واریز كرد یا دریافت كرد و توانایی صدور گزارش از سكه ها و اسكناس هایی را كه به پایان رسیده اند یا تعداد آنها را از درصدی پایین تر است داشته باشد. اطلاعات برنامه نباید با خروج، از بین برود (فایل)

چاپ عدد به حروف

4-7 برنامه ای بنویسید كه عددی را بگیرد و آن را حروف چاپ كند.
7–5 برنامه ای بنویسید كه عددی را بگیرد و آن را به صورت یونانی چاپ كند. (قواعد اعداد یونانی توضیح داده می شود.)
C=100، L=50، X=10، V=5، I=1


گرفتن اعداد
اگر دقت كرده باشید، در برنامه های >C اگر مواقعی كه باید عددی وارد كرد، رشته وارد كنیم، برنامه درست كار نمی كند. برای رفع این مشكل:
1-8 تابعی بنویسید كه از كاربر عددی را به عنوان ورودی دریافت كند. این تابع باید امكان فشردن كلید های غیر عددی را از كاربر بگیرید (آنها را قبول نكند).
2-8 تابع بالا را به صورتی تغییر دهید كه انواع مختلف اعداد صحیح را به صورت مجاز در زبان C نظیر 0 x… و ±… را نیز قبول كند.
3-8 تابع بالا را به صورتی تكمیل كنید كه امكان پاك كردن ورودی را هم به كاربر بدهد.
4-8 تابع بالا را به صورتی تكمیل كنید كه امكان جابجا كردن مكان نما را هم به كاربر بدهد.
توجه: ورودی كاربر از یك سطر 80 ستونی بیشتر نخواهد شد (این امر در برنامه باید كنترل شود)

محاسبات ساده
1-9 برنامه ای بنویسید كه دمایی را بر حسب درجه ی فارن هایت از ورودی بگیرد و آن را به درجه ی سانتی گراد تبدیل كند.
C=(5/9) (°f-32)

2-9- برنامه ی بالا را طوری تغییر دهید كه دمایی را از ورودی بگیرد، سپس بپرسد كه آیا بر حسب فارن هایت است و یا سانتی گراد سپس، آن را هم به درجه فارن هایت و هم سانتی گراد چاپ كند.


3-9- برنامه ای بنویسید كه یك تاریخ شمسی (از 1/1/1) تا (30/12/9999) را از ورودی بگیرد و محاسبه كند، این تاریخ، چه روزی از هفته است. سپس تاریخ را به صورت « (شماره ی روز) (نام ماه) (شماره سال)، (نام روز) است.» چاپ كند.
 توجه: هر 4 سال یكبار، یك سال كبیسه (اسفند 30 روزه) است و سال 1391 كبیسه بوده است.


4-9 برنامه ای بنویسید كه روز هفته ی یك تاریخ میلادی را با فرمول Zمحاسبه كند و نام روز را چاپ کند.
 
5-9 برنامه ای بنویسید كه یك عدد اعشاری را به عنوان ورودی بگیرد و آن را تا تعداد رقم اعشار دلخواه گرد كرده، حاصل را چاپ كند.


6-9 یافتن اعداد آرمسترانگ: برنامه ای بنویسید كه یك عدد را به عنوان ورودی بگیرد و چك كند آیا آرمسترانگ است یا خیر.
عددی آرمسترانگ است كه حاصل جمع مكعب رقم های آن با خودش برابر باشد.


7-9 برنامه ای بنویسید كه اعداد آرمسترانگ بین 10 تا 12000 را بروی صفحه بنویسد.

ساعت گرافیكی
برنامه ای بنویسید كه عملكرد یك ساعت را شبیه سازی كند. ورودی برنامه، زمان كنونی (ساعت، دقیقه و ثانیه) است و با استفاده از دستور delay زمان را نگه می دارد و نشان می دهد.
1-10 الف) برنامه را به طوری بنویسید كه ساعت را به صور ‌hh:mm:ss در گوشه ی سمت چپ صفحه بنویسد. اعداد به صورت دو رقمی نمایش داده شوند. اگر ساعت یك رقمی است، قبل از آن یك فاصله و اگر ثانیه یا دقیقه، یك رقمی است به جای رقم دوم، صفر بگذارد.
2-10 ب)‌ برنامه را به طوری بنویسید كه به صورت یك ساعت عقربه ای باشد. قرار دادن علامت های صفحه ی ساعت می تواند به زیبایی آن بیافزاید.
پرسش: چگونه می توانید بدون آنكه ساعت كنونی را از كاربر بپرسید، كار خود را شروع كنید؟
‌با استفاده از توابع sound و nosound ، ساعت خود را صدادار یا زنگ دار كنید.


برنامه ی مترجم
برنامه ای بنویسید كه یك جمله را از كاربر بگیرد و آن را كلمه به كلمه ترجمه كند.
11-1 اطلاعات فرهنگ لغات برنامه می تواند از فایل بار شود.
11-2 سعی كنید ترجمه ی خوبی ارایه دهید.

موسیقی كامپیوتری
یكی از مشخصه های مهم صدایی كه به گوش می رسد، فركانس (بسامد) آن است. صداها در واقعیت به صورت امواج مكانیكی هستند كه به صورت پیوسته در هوا منتشر می شوند. تنها موج هایی خاصی هستند كه فركانس ثابتی دارند.

در مورد بسامد بر امواج، برای ذخیره سازی و كار كردن بر روی آنها در كامپیوتر، باید عمل گسسته سازی انجام شود یا به اصطلاح، نمونه برداری شود. روش كار به این صورت است كه حسگر صدا، در فواصل زمانی مشخص (كه كسری از ثانیه هستند) فركانس صدایی را كه دریافت كند، ثبت می كند.
حاصل این نمونه برداری، دنباله ای از فركانس ها است كه اگر با همان فواصل زمانی نمونه برداری تولید شوند، صدایی شبیه صدای اصلی را تولید می كند.
در C، از سه تابع sound، nosound و delay برای تولید صدا استفاده می شود. sound، بلندگوی داخلی كامپیوتر را فعال می كند و صدایی با فركانس كه به تابع داده شده، تولید می شود. با delay ، فاصله ی زمانی كه آن فركانس باید پخش شود تنظیم و با nosound ، پخش صدا متوقف می شود.
12-1برنامه ای بنویسید كه امكان نواختن موسیقی را به كاربر بدهد. با فشردن هر یك از كلید های صفحه‌كلید در این برنامه، صدایی با بسامد وپرسش (فاصله زمانی پخش) از قبل تعیین شده نواخته می شود. از پخش صدا هایی با پرسش زیاد پرهیز كنید.

برنامه نقاشی
به صورت كلی، دو روش برای ذخیره سازی ترسیم و نمایش اشكال هندسی و سایر عناصر گرافیكی در كامپیوتر وجود دارد. روش اول نقش بیتی (bitmap) نامیده می شود و در فرمت های BMP , GIF , JPEG ، … استفاده شده است. بر مبنای تجزیه ی تصویر به نقاط رنگی و عملیات روی این نقاط است. بعضی معایب این روش، عدم امكان ایجاد تغییر و جابجایی در عناصر تصویر گرافیكی كه در كامپیوتر طراحی شده است، حجم معمولاً بالای این تصاویر به دلیل زیاد بودن نقاط رنگی و پایین آمدن كیفیت تصویر در صورت درشت نمایی آن است.

روش دوم كه برداری (Vector) نامیده می شود، در فرمت های Corel Draw , (SWF) Flash و VRML استفاده می شود. اساس این روش بر ذخیره سازی خصوصیات عناصر هر تصویر است نظیر نوع شكل، رنگ حاشیه، رنگ درون و ارتباط آن با سایر اشكال. از معایب این روش، پیچیده بودن ذخیره تصاویر ساده ای كه اسكن شده اند به هر طریق دیگری به جز رسم كامپیوتری، به كامپیوتر وارد شده اند و پیچیده بودن نوشتن برنامه هایی است كه این تصاویر را به نمایش در می آورند یا ویرایش می كنند.
1-13 برنامه ای بنویسید كه در آن كاربر بتواند با صفحه كلید در صفحه جابه جا شود و اشكال هندسی ساده را رسم كند. نقاط رنگی بگذارد و یا نقاط رنگی را پاك كند.
2-13 چگونه می توانید با روشی ساده، امكان Save و Load را به این برنامه اضافه كنید؟
3-13 چگونه می توانید از حجم فایلی كه برای ذخیره كردن تصویر استفاده می شود بكاهید؟
4-13 با استفاده از آرایه ها و struct ، برنامه ی بالا را به طوری تغییر دهید كه با روش برداری بتواند تصاویر را Save و Load كند. آیا محدودیتی در تعداد اشكال وجود دارد؟ چگونه می توا ند آن را برطرف كرد (استفاده مستقیم از فایل به جای آرایه )
5-13 دو برنامه ی بالا را به طوری تغییر دهید كه بتوانند تصاویر را دوران بدهند و درشت نمایی كنند.
6-12 آیا می توانید در برنامه دوم، بدون آنكه از برنامه استفاده كنید، تصویر جدیدی را ایجاد كنید؟


برنامه ی فرهنگ لغات
1-14 برنامه ای بنویسید كه به كاربر امكان ایجاد یك فرهنگ لغات انگیسی – فینگیش بدهد. امكانات مورد نیاز عبارتند از اضافه كردن كلمه، حذف كلمه، تغییر معنای كلمه
2-14 در صورتی كه كاربر واژه انگلیسی را به صورت جمع و یا صرف شده وارد كند، چگونه برنامه می تواند ریشه کلمه و واژه اصلی در واژه نامه اش پیدا كند؟
3-14 آیا می توانید یك غلط یاب ساده به این برنامه اضافه كنید تا در صورتی كه واژه ای یافت نشد، مناسبترین واژگان ممكن را نمایش دهد؟

تمرینات متفرقه
1-15- Game of Life - در این بازی در هر مرحله از زمان تعدادی از خانه های یك صفحه ی دو بعدی روشن و تعدادی خاموش هستند و پس از گذشت هر واحد از زمان با قوانین زیر تغییر می كنند:
1. ‌یك خانه ی خاموش، روشن می شود اگر دقیقاً 3 خانه از 8 همسایه ی آن در مرحله ی قبل روشن بوده است.
2. ‌یك خانه ی روشن، روشن می ماند اگر 2 یا 3 خانه از 8 همسایه ی آن در مرحله ی قبل روشن بوده است.
3. ‌یك خانه ی روشن، خاموش می شود اگر كمتر از 2 یا بیشتر از 3 خانه از همسایه ی آن در مرحله ی قبل روشن بوده است.

2-15- مثلث سرپنیسكی به روش غیر بازگشتی
این شكل یكی از انواع فركتال هاست كه در آن یك مثلث اولیه با وصل كردن اوساط اضلاعش بهم به 4 مثلث یكسان تقسیم می شود و این عمل بر روی مثلث های دوری انجام می گیرد و تا حد مورد نظر ادامه می یابد.
روش غیربازگشتی: ابتدا یك نقطه ی دلخواه در داخل مثلث رسم می كنیم و آنرا به عنوان نقطه ی‌جاری درنظر می گیریم و در هر مرحله یكی از سه رأس مثلث را به صورت تصادفی انتخاب می كنیم و در وسط پاره خط متصل كننده ی این رأس و نقطه ی جاری، یك نقطه رسم می كنیم و آنرا در مرحله ی بعد به عنوان نقطه ی جاری فرض می كنیم. تكرار این عمل به تعداد زیاد نتیجه ی دلخواه را بوجود می آورد.

3-15 دوران یك چند ضلعی به دور مركز دلخواه خودش (ثبت ریوس یك چند ضلعی به صورت قطبی )
در این تكنیك یك مركز برای یك چندضلعی فرض می شود كه هدف دوران شكل به دور آن است كه در آن مختصات رأس های پی در پی شكل به صورت قطبی نسبت به مركز موردنظر ثبت می شود و برای رسم كل شكل یك مختصات برای مركز آن و یك زاویه برای شكل داده می شود و برای پیدا كردن مختصات ریوس در فضای دكارتی، از مكان واقعی مركز كمك گرفته می شود تا شكل در مكان جدید ترسیم شود.
(برای حالت ساده و بدون آرایه عملیات برای یك خط یا مثلث انجام می شود)

1-16 حركت ماه به دور زمین به دور خورشید
در این مسأله،‌هدف رسم مكان دو نقطه ی متحرك در صفحه است كه اولی در یك مدار دایره ای به دور یك نقطه ی ثابت در صفحه می چرخد و دومی در یك مدار این (نسبت به نقطه ی اول) به دور نقطه ی اول می چرخد كه می توان برای تولید اشكال جدید سرعت دوران زاویه ای نسبی نقطه ی دوم و دوران زاویه ای مطلق نقطه ی اول را تغییر داد.

2-16 شبیه سازی حركت یك نقطه از یك چرخ وقتی چرخ می چرخد و به جلو می رود.
3-16 شبیه سازی سقوط یك ذره با فرض اینكه سرعت آن بعد از برخورد به زمین كاهش می یابد.
4-16 morph : با در اختیار داشتن موقعیت Pixel های دو شكل و نظیر كردن آنها به هم (تعداد برابر) در مدت زمانی معین همه ی نقاط از شكل اول به نقاط شكل دوم برود.

گام به گام با برنامه نویسی به زبان  C++

 


بخش پژوهش های دانش آموزی سایت تبیان

 

منبع:

Ctalk.ir 

firststep.ir

 

مطالب مرتبط

دیگر جلسات آموزشی