خوش بگذره
قسمت چهارم،رشته!
به هیچوجه فقط به خوندن از روی مطلب اکتفا نکنید. خیلی جاها ریزهکاریهایی وجود داره که واقعاً نمیشه همه رو گفت، برای همین حتماً خودتون هم یه مقدار براش وقت بذارید.
در ضمن، سؤال چهارم روز دوم تویمرحله ۳ پارسالمیتونه سؤال خیلی خوبی برای یه تمرین واقعی باشه.
موفقتر باشید
سومین مطلب آموزش برنامهنویسی در موردvectorهستش.
چند وقت پیش محمد به یه مطلبی اشاره کرد، که به نظرم درست اومد. اون هم اینه که در حالی که دارید با قابلیتهای STL آشنا میشید و میبینید که چقدر کارهاتون رو راحت میکنه، دقت کنید که حتماً با این که هر کاری رو چطوری انجام میده آشنا باشید.
در این مورد، خیلی خوبه که با الگوریتمهایی که برای نوشتن دادهساختارها و توابع استفاده شده آشنا باشید. در ضمن، یادتون نره که STL معجزه نیست و هیچوقت قوانین زبانC++رو زیر پا نمیذاره.
برای همین، تمرین ۲ این سری بیشتر حالت تحقیقی داره.
فعلاً وکتوری باشید!
خب مرحله ۱ هم تموم شد و احتمالا دیگه همتون سرگرم مرحله ۲ خوندن و برنامه نویسی کردن هستید (اگه نیستید بجنبید، داره دیر میشهها!)
کمیته دیشب یهپستگذاشت تو سایتش که توش سرفصلهای مطالب مرحله دوم المپیاد کامپیوتر و یه سری منابع خوب رو معرفی کرده، حتما ببینیدش!
در ضمن، شما باید یه برنامه ریزی خوب واسه این ۲ ماه و خوردهای باقی مونده انجام بدید، برنامه ریزیتون باید خصوصیات زیر رو حتما داشته باشه:
۱. از تفریحات عیدتون کم نزارید! ;)
۲. تئوریتون رو (اعم از ترکیبیات و گراف و الگوریتم[که به نظرم به همین ترتیب ۱.ترکیبیات ۲.گراف ۳.الگوریتم باید خونده بشه]) قوی کنید.
۳. طی این مدت، حداقل به چشم تفریح، برنامه نویسی هم کار کنید، سعی کنید یه کم با ++C آشنا بشید، پستای آموزش برنامه نویسی خودمون رو بخونید و اگه تمرینی توش بود انجام بدید، تو سایتایی که تو قسمت پیوندها معرفی کردیم کد بزنید و ... (البته فعلا تا مرحله ۲ اولویتتون تئوری باشه و به برنامه نویسی به چشم fun نگاه کنید! (ولی حتما نگاه کنید!) بعد مرحله ۲ قضیه برنامه نویسی کردن، جدیتر خواهد شد.)
۴. دو یا سه هفتهی قبل مرحله ۲ باید مرحله ۲های سالای پیش رو از خودتون امتحان بگیرید (غیر از اولیها که باید اینکارو سال دیگه انجام بدن). پس اون ۲~۳ هفته رو باید خالی بزارید.
خب، من میخواستم یه کم بیشتر و با جزئیات بیشتر راجع به کارایی که باید تو این مدت انجام بدید توضیح بدم، ولی دیدم علیرضا پارسال شبیه همین حرفایی که من میخوام بزنم رو زده، پس بریدپست پارسال علیرضارو بخونید.
راستی، نتایج نظر سنجی راجع به نمرات مرحله ۱تون هم اینه: (البته تا دیشب این بود!)
سعی کنید موفق باشید!
قبل از شروع چند تا نکته:
1- الان که مرحله یک دادید، واحتمالاخیلی هنوز مشتاق شروع کردن درسهای تئوری برای مرحله دو نیستید، پیشنهاد میدم که روی برنامهنویسی کار کنید. ( این پیشنهاد بیشترتر به سومیها و بیشتر به دومیها هستش. اولها شاید یک کم براشون زود باشه. )
2- فرض رو بر این گذاشتیم که شما در حد ... , if , for , while و تابع، برنامهنویسی رو بلد باشید. اگر بلد نیستید خودتون میتونید این مباحث رو یاد بگیرید. کتاب آموزش زبان سیپلاسپلاس هم زیاد هست، کتاب جعفرنژادقمی ... دایتل اند دایتل و ... . من خودم کتاب هربرت شیلد (نشر اتحاد) رو خوندم. به نظرم کتاب قابل خوندن و خوبی هست. ( حداقل تا فصل 7 اش که تا تابع هست، رو میشه خودتون تنهایی یاد بگیرید. )
3- آموزش هایی که قراره اینجا داده بشه، صرفا در حد استفاده ی ابزاری، از سیپلاسپلاس هست. یعنی قرار نیست با این آموزشها برنامه نویس حرفه ای بشید. به میزان لازم برای مرحله 3 قراره مطلب بزاریم. واسه همین اگه به یادگیری سیپلاسپلاس علاقهمندید، خودتون باید پیگیرش باشید. باهم دوست باشید.
4- برای تمرین خوبه با سایت Project Eulerکه خود کمیته برای تمرین مرحله 3 (پارسال) معرفی کرده، کار کنید.
5- احتمالا 6 جلسه آموزش برنامهنویسی خواهیم داشت و هفتهای یک مبحث گذاشته میشه. ( یکی دو روز تاخیر جایزه! )
همین.
اینهم یک کد کمکی برای جا افتادن مطلب.
خوش باشید.
من که شخصا از سوالا خیلی خوشم اومد و به نظرم سوالات و مدل امتحان خیلی قشنگ بود، امیدوارم شما هم از امتحانتون راضی باشید!
مندفترچه سوالارو حدود 1 ساعت بعد از شروع امتحان گیر آوردم و سرکلاسبا عجله حلشون کردم، در نتیجه ممکنه (به احتمال کم البته) اشکالی چیزی قاطی جوابا باشه، اگه بود لطفا زود خبر بدید تا درستش کنم.( بعدانوشت: الان جوابها رو چک کردم، درست هستند. مطمئن باشید! )
به روز رسانی: (کلید به روز شد!)
من تا یادمه همیشه تو مرحله 1 یه اشکالی پیدا میشد. امسال واقعا مایه تعجب بود که هیچ مشکلی نداشت و داشتیم کلی حال میکردیم که بالاخره سوتی امسال هم پیدا شد:
سوال 7 کد 1 (سوال 4 کد 2 یا همون جدول ورودی و خروجیه) این جدول خروجی که به ما داده، اگه قرار باشه یه جدول ورودی داشته باشه جمع اعداد توش باید بشه 8 ولی نکته اینجاس که اثبات میشه برای این جدول خروجی هیچ جدول ورودی نداریم. اثباتش هم اینه:
خونه ی (2و2) جدول میشه جمع اعداد خونه ی (2و1) و (1و2) و (3و2) و (2و3)
جمع اعداد خونه های (2و1) و (1و2) هم میشه 8 (یعنی همون (1و1))
خونه ی (3و3) جدول میشه جمع اعداد خونه های (4و3)و (3و 4) و (3و2) و (2و3)
جمع اعداد خونه های (4و3)و (3و4) هم که میشه 9 (یعنی همون (4و4))
پس اختلاف عدد توی خونه ی (2و2) و (3و3) باید بشه 1 در حالی که اینجا اختلافشون برابره 9 هست، در نتیجه وجود چنین جدول خروجی غیر ممکنه.
من تقریبا تو آبان ماه، واسه یه آموزشگاهی، یه آزمون شبیه مرحله ۱ (شاید یه کم راحتتر) طراحی کردم، گفتم حالا که مرحله ۱ نزدیکه، سوالا رو به شما هم بدم که اگه خواستین از خودتون امتحان بگیرین. اولیهایی که قراره مرحله ۱های سالای پیش رو زیاد نگاه نکنن، یا سومیهایی که مرحله ۱های سالای پیش رو قبلا دیدن یا ... میتونن این سوالا رودانلودکنن و از خودشون امتحان بگیرن. به چشم یه آزمون آزمایشی، مفید خواهد بود!
در ضمن، دوره سوممسابقات برنامه نویسی دانش آموزیهم شروع شده. اگر دوست دارید شرکت کنید تا ۶ بهمن (که احتمالش میره که تمدید بشه) وقت دارید. (بخش مقدماتی سؤالهای راحتتری داره. پس بهتره با اونها شروع کنید)
راستی، انشاالله قراره بعد مرحله ۱ یه مقدار برنامه نویسی اینجا آموزش بدیم، منتظر پستهای بعدی ما باشید... ;)
بدرود!
همونطور که میدونید، مرحله ۱ نزدیکه (و پایان امتحانات ترم اول نزدیکتر!). یه سری نکته (و نصیحت) هست که خیلی خوبه واسه مرحله۱ بدونید، البته شاید قبلا از اینجور چیزا شنیده باشید، ولی شنیدن دوبارشون خالی از لطف نیست!
راجع به قبل از مرحله ۱:
بعد از امتحانات ترم ۱ تا مرحله اول، فرصت مناسبی واسه المپیاد کار کردن دارید، به نظر من مهمترین کاری که تو این مدت باید بکنید، اینه که مرحله ۱های سالای پیش رو از خودتون امتحان بگیرید.
اینکه میگم امتحان بگیرید، یعنی واقعا امتحان بگیرید: در حالت نشسته امتحان بدید، بین امتحان تلویزیون نبینید، حرف نزنید، چت نکنید، شام و نهار نخورید و ... سعی کنید دقیقا تو همان مدت زمان آزمون امتحان بدید. و هرگز سوالای مرحله ۱ رو به صورت پراکنده و تفریحی حل نکنید.
بعد از امتحان هم حتما باید بشینید نمرتون رو حساب کنید، و از غلطهاتون درس عبرت بگیرید، اگه کتابی چیزی دارید که توش جواب تشریحی نوشته، سعی کنید همه جوابا رو بخونید (حتی سوالایی که درست حل کردید) چون ممکنه بتونید با خوندن جوابا، ایدههای جدید یاد بگیرید.
بازم یادآوری میکنم: اولیها نباید زیاد امتحان بدن. چون اگه امسال همه سوالا رو ببینن، سال دیگه قبل مرحله ۱ هیچ کاری واسه انجام دادن ندارن. البته قبول شدن امسالتون میتونه واستون مفید باشه (ممکنه واسه مرحله ۲ قبول شدههاتون یه دورهی کوتاه برنامه نویسی بزارن) پس به نظر من مثلا ۵ دورهی ۸ تا ۱۲ رو از خودتون امتحان بگیرید. ولی دیگه کاری به کار بقیه دورهها نداشته باشید. ;)
تقریبا همهی سوالات المپیاد کامپیوتر سالای پیشاینجاهست. یه سری کتاب هم وجود داره که توش مرحله ۱های سالای پیش، همراه با پاسخ تشریحی رو نوشته. مثلا انتشارات خوشخوان همچین کتابی داره، انتشارات پرنگ هم یه کتاب به نام «پاسخی بر المپیادهای کامپیوتر ایران، مرحلههای یکم، از آغاز تا کنون» داره. خلاصه از این جور چیزا زیاد هست. غیر از اینا، اگه دلتون خواست و وقت اضافه داشتید (مثلا سومیهایی که پارسال همه مرحله ۱ها رو از خودشون امتحان گرفتن و الان بیکارن) میتونید مرحله ۱های المپیاد ریاضی رو هم از خودتون امتحان بگیرید، بالاخره از هیچی بهتره! ;)
راجع به سر جلسهی مرحله ۱:
پارسال گفته بودن امتحان قراره ۴۰ سواله باشه و سوالا هم راحت باشه، بعد سر جلسه بچهها دیدن ۲۵ سوال داره و زمانش هم کم شده و البته، سوالا هم خیلی راحت نیست. سر همین قضیه یه عده استرس پیدا کردن!!! و به قول خودشون به دلیل همین استرس، امتحان رو خراب کردن.
خب من از همین حالا دارم به همتون میگم: از حالا خودتون رو واسه هر اتفاق عجیب غریبی که تو جلسه ممکنه بیوفته آماده کنید و بدانید و آگاه باشید که این اتفاقات واسه همه به طور همزمان داره رخ میده، یعنی اگه تعداد سوال یا تعداد گزینه یا ... با سال پیش فرق داره، واسه همه همینجوره! پس دیگه جای نگرانی نیست. شما فقط با خیال راحت برید سر جلسه و با توجه به اینکه شرایط واسه همه یکسانه، شروع کنید به امتحان دادن.
یه اشتباه خیلی بزرگ دیگه که همیشه بعضی بچهها مرتکب میشن و بعدش اکثرا پشیمونن، اینه که زود از سر جلسه پا میشن. خب آدمی که زود از جلسه میره بیرون دو حالت داره:
یا همه سوالا رو حل کرده: که اگه بشینه تا آخر جلسه جواباش رو مرور کنه، ضرر نخواهد کرد. (و به احتمال خیلی خوبی سود میکنه و چند تا از بیدقتیهاشو پیدا میکنه)
یا از خودش نا امید شده: که واسه حل سوالای المپیاد کامپیوتر ناامیدی معنی نداره، چون گاهی (یا معمولا) ایدهی حل سوال یهویی به آدم میرسه، پس همیشه میشه امید داشت! ;)
کلا به نظر من کسی که چند ماه (یا چند سال!) وقتشو صرف المپیاد کامپیوتر کرده، منطقا باید تمام زمان چند ساعتهی امتحان رو سر جلسه بشینه و بیخودی سر چند دقیقه زود پا شدن عجله نکنه!
خب دیگه! فعلا حرفام تموم شد! بدرود!