سلام
قرار شد آموزشها برنامهنویسی به شیوهی پادکست + نوشته منتشر شوند و امشب هم یک پادکست ۵ دقیقهای در مورد الگوریتمها داریم که متن کاملنشدهی آن را هم در زیر مشاهده میکنید. دلیل کاملنشدهبودن متن نیز این بوده که بخشهایی را در حین ضبط اضافه یا حذف کردم مثلا فلوچارت!
بخش اول را از میتوانید از اینجا دانلود کنید. همینطور همهی پادکستهای آموزش برنامهنویسی (که در آینده منتشر خواهند شد) در مدیافایر موجودند.
این هم نوشتهی کاملنشده:
سلام
قراره اولین بخش از آموزش برنامهنویسی رو دوباره شروع کنیم و امروز جمعه چهارم اسفند ۹۱ هستش و الان هم یه تیکه از بخش اول موسیقی Jack Sparrow از آلبوم موسیقی متن دزدان دریایی کارائیب ۳ (که اسم اصلیش گنجینهی مرد مرده یا Dead Man’s Chest هستش) پخش شد براتون.
خوب بریم سراع آموزش.
رسمه که آموزش الگوریتم رو از درستکردن شیرکاکائو شروع کنن که چون شیرکاکائو کپیرایت داره و کپیرایتش مال یکی از معلمهای ماست ما از شیرقهوه استفاده میکنیم
باید بدونید که در سلوک برنامهنویس ها واحبه همیشه یه لیوان شیرقهوه (یا قهوه) کنار دستتون باشه!
خوب ما برای درستکردن شیر قهوه اول از همه یه قاشق چایخوری (که هیشکی تاحالا باهاش چایی نخورده) قهوه و دو تا سه قاشق چایی خوری شکر بر میداریم و توی آب جوش به مقدار لازم میریزیم و هم میزنیم تا خوب حل بشه و بعد هم شیر میریزیم روش و میزاریم کنار دستمون تا هروقت لازم شد یه ذره ازش بخوریم.
به مراحلی که ما طی کردیم تا شیرقهوه درست بشه میگن الگوریتم درستکردن شیرقهوه.
خوب امیدوارم تعریف الگوریتم رو خوب فهمیده باشید.
اما قبول دارید که فهموندن این الگوریتم به کامپیوتر تقریبا غیرممکنه؟ حداقل الان که غیر ممکنه.
برای همین هم باید الگوریتم رو سادهتر کنیم. حالا فرض کنیم که یه روبات خیلی پیچیده با قابلیت پذیرش دستورات زیاد داشته باشیم که دستورات ما رو تا حدودی بفهمه ولی خوب چون اون هم کامپیوتره بازهم نمیتونه معنی «خوب حلشدن» رو بفهمه پس لازمه که متغیرهای کیفیمون رو کمّی کنیم.
پس الگوریتممون میشه این
یک قاشق قهوه رو بریز توی لیوان
سه قاشق شکر بریز توی لیوان
(مثلا) ۱۰۰میلیلیتر آب جوش بریز توی لیوان
تا وقتی که هیچ دونهی قهوهای توی لیوان نمونه محتویات لیوان رو پر کن
تا وقتی که لیوان پر نشده توش شیر بریز
لیوان رو بده به برنامهنویست که قهوهش رو بخوره و برو به کارات برس (:D)
خوب حالا این شد یه الگوریتم که مناسبه برای یه روبات که زبون ما رو میفهمن.
اما مطمئنا کامپیوتر شما نمیتونه معنی «برو» یا «لیوان» یا حتی قهوه و شکر رو بفهمه و خوب فعلا ما چنین روباتی نداریم. شما اگر دارید خیلی سرمایهدارید با این قیمت دلار!
ولی ما برای هرکاری توی زندگیمون الگوریتم داریم. مثلا از خیابون رد شدن که شعرش رو روی همهی ایستگاههای اتوبوس دیدید و لازم به تکرار نیست!
خوب بیاید یهذره به واقعیت نزدیکتر بشیم. اگر روباتی سادهتر ولی بازم پیچیده داشته باشیم که بشه بهش گفت که راه بره و دستهاش رو تکون بده و مثلا برنامهای برای تشخیص رنگ هم براش بنویسم میشه الگوریتم درستکردن قهوه رو بازم به واقعیت نزدیک کرد. اینجوری که در کابینت رو باز کنه و مادهی قهوهای رو پیدا کنه و مادهی سفید رو هم (با این امید که نمک توی اون کابینت نباشه یا مثلا مرگ موش!) و اونا رو توی آب بیرنگ باهم قاطی کنه (بازهم با این امید که فقط به اندازهی یک قاشق قهوه و سه قاشق شکر داشته باشیم) و مثلا بگیم تا وقتی همهی مقادیر مشکی رنگ شد و رنگ قهوهای توی لیوان نمونده باشه و بعدش هم آب سفید رو بریزه توش تا لیوان پر بشه.
و خوب اگر روباتمون اینا رو هم نفهمه یعنی یه روبات بازم سادهتر ولی بازم پیچیده مجبوریم الگوریتم رو به صورت موتور-موتور تجزیه کنیم. یعنی برای هر حرکت یک موتور باید به کار بیوفته و شاید هم چندتا و این خیلی موتور میشه!
خوب فکر کنم برای بخش اول کافی باشه.
برای تمرین هم الگوریتم درستکردن خامهعسل، باقالی پلو با گوشت و زرشکپلو با مرغ رو اول خودتون سعی کنید بنویسید و بعدش هم از کتاب آشپزی کمک بگیرید. و خوب در مرحلهی بعدی سعی کنید الگوریتم رو برای روباتهای سادهتر شرح بدید.
به این میگن آموزش چندمظوره! هم برنامهنویسی و هم آشپری!
برای اینکه هیجان قضیه زیاد بشه میگم که در بخش بعدی آموزشمون درمورد الگوریتمها توی برنامهنویسیه و البته این بستگی داره به میزان علاقهی شما
خوب امیدوارم تا قسمت بعدی شاداب و سلامت باشید.
پینوشت: در پادکست فراموش کردم که بگم آهنگ کار هانس زیمره.
پینوشت۲: هر مشکلی که دیدید لطفا اطلاع بدید مثلا اگر صدا بد بود یا نوشته (و صدا) کامل نبود یا هر چیز دیگه.
مبارکه :) فقط کاش چنتا حجم میذاشتید ، حیف به خاطر حجم کسی بیخال دانلودش بشه، با همون audition میتونستید چنتا کیفیت ازش بگیرید :) در ضمن اگه بخواید من روی هاستم آپلودش کنم لینک مستقیم بدم بهتون ؟ :)
مشکل من در حال حاظر هاست نیست. یعنی هاست نامحدود هم دارم (حداقل تا شیش ماه دیگه)
مشکل من آماره که قبلا میشد از 2bn.ir استفاده کرد ولی به دلایلی خراب شده و من حوصلهی درستکردنش رو ندارم و مدیافایر هم لینک مستقیم میده و هم آمار میده. اگر با مدیافایر مشکل دارید توی هاست و سرور آپلودش کنم بزارم برای دانلود.
راستی یادم رفت بگم که فکر نمیکنم فایل ۱۰ مگی مشکل حجم داشته باشه!
picofile.com هم آمار میده :) یادمه یه بار یکی از وبلاگا که اسمشو نمیارم واسه تبلیغ پادکست 8 مگابایتی گذاشته بود که خیلی اعتراض کردن که حجمش بالاست :)
من به مدیافایر بیشتر اعتماد دارم.
پادکستهای جادی بالای ۲۰ مگ هستن. حالا سعی میکنم حجم کمترش رو هم بزارم. اگرم نشد باشه برای قسمتهای بعدی!
دقت کردین در نوشتتون چند بار از کلمهی (خوب) استفاده کردین؟؟
بله! مهدی امروز گوشزد کرد!
دستشون درد نکنه!!
سلام
خیلی خیلی سپاسگزارم
متاسفانه اینترنت پرسرعتم قطع است
ان شاا…در اولین فرصت که وصل شد دانلود می کنم
وسوالات بیشمارم را می پرسم
سلام
ممنون پادکست هیچ مشکلی نداشت نه از نظر دانلود نه از نظر محتوا و…
خدا امواتت را بیامرزد من دو غذایی که گفته بودید را تا حالا فقط خوردم حتی درست کردنشان را هم تا حالا ندیم به سایت اشپزی هم رفتم دستورش خیلی طویل بود. برنامه ی پختشان را به یک ربات هم بدن همان بار اول میگه نخواستم روبات باشم درست هم نمی کنم (: (از اشپزی و اشپزخانه بیزارم ادم کم غذایی هم هستم).
چون موقع کار کردن با کامپیوترم حواسم فقط به کامپیوتر است هیچ کار دیگری نمی کنم مثلا نوشیدنی هم نمی خورم چون همیشه نگرانم نکند چپ شود روی کامپیوتر چون موقع کامپیوتر نسبت به مسایل دیگر به شدت بی دقتم.
خامه عسل هم همان قاطی کردن خامه و عسل است؟ که اگر باشد:
الگوریتم درست کردن خامه عسل:
ریختن 3 قاشق خامه داخل ظرف
ریختن یک قاشق عسل داخل ظرف
هم زدن مخلوط تا بدست امدن یک ماده به رنگ شیری و به صورت یک دست.
خوب طبق گفته شما باید قابل فهم شود برای یک روبات ساده(اما پیچیده)که برنامه تشخیص رنگ ها از قبل برایش در نظر گرفته شده باشد
برداشتن یک ماده سفید رنگ (خامه) و اضافه کردن به ظرف
برداشتن ماده قهوه ای رنگ(عسل) و اضافه کردن به ظرف
هم زدن مواد داخل ظرف تا زمان به دست امدن ماده ای یک دست و شیری رنگ.
این الگوریتم نویسی برای هر برنامه ای که بخواهیم بنویسم باید انجام دهیم؟
یعنی در واقع یک طرح اولیه از کارمان است؟
راستی ببخشید من همیشه غلط های املایی ام زیاد است
خوب الگوریتم مثل نقشهی ساختمون توی ساختمونسازیه. بدون اون هیچ کاری نمیشه کرد. ولی همیشه الگوریتمهامون رو روی کاغذ نمیاریم. مثلا توی پروژهی خامهعسل (تشخیص حروف پارسی به شیوهی برخط) ما بیشتر توی تختهی وایتبود انگری بردز (یک فریم در مدت زمانی که طول میکشید تا تخته رو پاک کنیم و عکس رو دوباره بکشیم!) بازی میکردیم تا الگوریتمهامون رو توش بنویسیم!
حالا ی سوال اونایی که الگوریتم نویس هیتن مخ زیاد دارن یا نه! اونقدام چیزه خاصی نیست الگوریتم نویسی و تنها تمرین و تکرار می خواد و مرتبط با هوش نیست چندان؟؟؟
چرا! اتفاقا بخش کدزنی یکی از کماهمیتترین بخشهای برنامهنویسی تجاریه. این الگوریتمه که یکی از نقشهای اصلی رو بازی میکنه.
عجب سوتی دادم.خامه عسل یک پروژه بوده ولی من متاسفانه چیزی ازش نمی دونستم و متاسفانه متوجه توضیح شما هم در کامنت راجع خامه عسل نشدم.میشه بیشتر توضیح بدید یا لینک بدهید؟
منظورم از خامهعسل توی پادکست همون خامهعسل معمولی بوده ولی برای پروژهی خامهعسل بود که اون رو انتخاب کردم. اون چیزایی که در مورد خامهعسل گفتم (پروژه) هم شوخی بود!
واقعا متاسفم برای آموزش الگوریتم آشغالتون گرفتی داستان سر هم کردی بعد میگی آموزش الگورتم؟؟؟واقعا که …
لطف دارید! ولی اگر دقت کنید این بخش اول آموزشه و قرار نیست «آموزش الگوریتم» باشه بلکه قراره الگوریتم رو برای کسی که با برنامه نویسی آشنایی نداشته تعریف کنه. اگر دنبال آموزش الگوریتم هستید جای اشتباهی تشریف آوردید. پیشنهاد میکنم کتاب Introduction to Algorithms رو بخونید (که به CLRSهم معروفه) که انتشارات «نص» هم توی ویرایش سوم ترجمه کتاب به اسم «مقدمه ای بر الگوریتم ها»، ترجمه نسبتا خوبی رو ارائه داده که البته اگر میتونید بهتره زبان اصلی بخونید.