با عرض سلام خدمت همه دوستان.
این جلسه اول آموزش برنامه نویسی می باشد. بنده در آموزش مطابق هیچ منبع معتبر آموزشی عمل نخواهم کرد چرا که معتقد به اصالت تجربه در علوم مهارتی می باشم (حالا معنی اش زیاد مهم نیست). به ادامه مطلب بروید.
ابتدا مثلث دانش را توضیح می دهیم و سپس به سراغ برنامه نویسی می رویم.
مثلث دانش
مثلث دانش یا به تعبیر بهتر هرم دانش یک طرح مفهومی است که به ما کمک می کند حجم چهار مفهوم و تقدم و تاخر آنها را درک کنیم.
داده ها بسیار زیاد هستند و به مشاهدات ما مربوط می شوند. برای مثال در یک آزمون استخدامی از شخصی سوال می شود که تا این طبقه چند پله را بالا آمدی؟ شخص می گود نمی دانم. دلیل این موضوع این نیست که پله ها را ندیده بلکه دیدن پله ها به منزله ی داده است. اما آن ها را پردازش نکرده که به اطلاعات تبدیل شود یعنی تعداد پله ها در این جا اطلاعات می باشد.
دانش، دستچین و انباشت اطلاعات می باشد. مثلا شما بلد هستید که 3000 تمرین دیفرانسیل حل کنید اما اگر بگوییم چند قضیه بلد هستید شاید از تعداد انگشتان بدنتان تجاوز نکند. دانستن قضایا از جنس دانش است و دانستن جواب عددی یک تمرین از جنس اطلاعات
بصیرت یک پله بالاتر از دانش است و به معنی توانایی تولید دانش از دانش می باشد. مثلا این که یک ریاضی دان یک قضیه اثبات می کند یعنی او بصیرت ریاضی دارد و کسانی که با همان دانش نتوانسته اند این کار را بکنند آن بصیرت را نداشته اند.
ما در این جا می خواهیم حد اقل به دانش برنامه نویسی برسیم و ان شاءالله به بصیرت آن. یعنی ما نمی خواهیم در حد داده ها بمانیم و بگوییم: "اه! این چه تمرین مسخره ای است باید 10 تا عدد بگیره جمعشان را حساب کنه. اینو که خودمان هم بلدیم نیازی به کامپیوتر نیست" بلکه می خواهیم بگوییم: "خوب اگه بشه یاد گرفت 10 تا داده را با کامپیوتر جمع کرد حتما می شه 100000000000 داده را هم جمع کرد" سخن دوم به بالای هرم نزدیک است و سخن اول به پایین آن.
مفاهیم اولیه
مفاهیم اولیه به معنای چیزهایی است که باید به عنوان یک انسان فارسی زبان بلد باشید. کافیست از موارد زیر معنی و مفهومشان را بدانید و نسبت به آنها شهود داشته باشید:
چیز، فهمیدن، یادگیری + بعضی بدیهییات که از ذکر آن ها خودداری می کنم.
تعاریف
دستور: مفهومی که از چیزی به چیزی دیگر انتقال پیدا کند و به صورت ذاتی امکان اجرا داشته باشد.
مثلا صدای "اوهه" یک دستور می باشد که یابوسوار به یابوی خود می گوید. منظور از این که به صورت ذاتی امکان اجرا داشته باشد به این معنی است که این دستور برای یابو قابل اجراست اما اگر به دلیل شرایطی مثلا خواب بودن یابو اجرا نشد، باز هم به "اوهه" یک دستور می گوییم و این مهم نیست که همیشه اجرا شود.
برنامه نویسی: به دستور دادن برنامه نویسی می گویند.
سطح برنامه نویسی: وقتی چیزی که دستورها را می گیرد بتواند مجموعه ای از دستور ها را یاد بگیرد و با نامی جدید آنها را بشناسد، به استفاده از آن نام به عنوان یک دستور، برنامه نویسی در یک سطح بالاتر می گویند.
مثلا یک انسان بلد است از کمر خم شود. همچنین بلد است بگوید "سبحان ربی العظیم و بحمده".
اگر دستور دهیم "از کمر خم شو" یا دستور دهیم "بگو سبحان ربی العظیم و بحمده" در سطحی پایین برنامه نویسی کرده ایم.
اگر بگوییم "به رکوع برو" یعنی "از کمر خم شو" سپس "بگو سبحان اربی العظیم و بحمده" باز هم در سطح قبلی برنامه نویسی کرده ایم.
حالا اگر بگوییم "به رکوع برو" در یک سطح بالاتر برنامه نویسی کرده ایم.
تبصره: به بالاترین سطح، برنامه نویسی نمی گویند. مثلا به کسی که دستوراتی را به برنامه Word می دهد برنامه نویس نمی گوییم بلکه به آن "کاربر" می گوییم.
چرخه برنامه نویسی: به دادن دستورات از پایین ترین مراحل و پله پله بالا آمدن و در نهایت به اجرا درآمدن کل دستورات گفته می شود.
کامپایل (Compile): به تبدیل دستورات سطح بالاتر به دستورات سطح پایین تر به صورت یکباره گفته می شود.
مثلا اگر دریافت کننده ی دستورات دستور "به رکوع برو" را دریافت کند و آن را به "از کمر خم شو" سپس "بگو سبحان ربی العظیم و بحمده" تبدیل کند و آن را به عنوان یک برنامه جدید ذخیره کند کامپایل رخ داده است.
تفسیر (Interpret): به تبدیل دستورات سطح بالاتر به دستورات سطح پایین تر به صورت یکی یکی و اجرای همزمان آنها گفته می شود.
یعنی مثلا اگر به یک فرد بگوییم "به رکوع برو" سپس "بخواب"، او ابتدا در ذهن خود "از کمر خم شو" سپس "بگو سبحان ربی العظیم و بحمده" را در نظر بگیرد و سپس آن دو را اجرا کند و سپس به سراغ "بخواب" برود. نه این که آن ها را یادداشت کند و به سراغ "بخواب" برود.
(اگه این دوتا تعریف آخر براتون پیچیده بود فعلا لازم نیست یاد بگیرید)
خوب حالا یه مثال و بعدش هم یک تمرین مشابه.
مثال: یک بچه دستورات زیر را می فهمد و می تواند چند دستور را بگیرد و آنها را با نامی جدید بشناسد:
"بلند شو"، "بنشین"، "متن اذان را بخوان"، "متن ان الله و ملائکته ... را بخوان"
فرض کنید این بچه در صف اول نماز جماعت نشسته است. می خواهیم با استفاده از امکان یادگیری کودک، او را برای اذان گفتن و سپس صلوات دادن برنامه نویسی کنیم. متن برنامه را بنویسید:
نمونه پاسخ های صحیح:
1- "بلند شو" سپس "متن اذان را بخوان" سپس "بنشین" سپس "متن ان الله و ملائکته ... را بخوان"
2- "اذان بگو" یعنی "بلند شو" سپس "متن اذان را بخوان" سپس "بنشین"
"صلوات چاق کن" یعنی "متن ان الله و ملائکته ... را بخوان"
"اذان بگو" سپس "صلوات چاق کن"
نمونه پاسخ های غلط:
1- "اذان بگو" سپس "صلوات چاق کن" (غلط است چون کودک فقط همان دستوراتی را بلد است که در صورت سوال ذکر شده و هنوز نمی داند "اذان بگو" یا "صلوات چاق کن" یعنی چه)
2- "اذان بگو" سپس "صلوات چاق کن"
"اذان بگو" یعنی "بلند شو" سپس "متن اذان را بخوان" سپس "بنشین"
"صلوات چاق کن" یعنی "متن ان الله و ملائکته ... را بخوان" (غلط است چون اول باید یاد بدیم بعد دستور بدیم نه این که اول دستور بدیم بعد یاد بدیم.)
تمرین
رباتی دستورات زیر را می داند همچنین می تواند مجموعه ای از دستورات را بگیرد و آن ها را با نام جدیدی بشناسد.
"سلام کن"، "دست بده"، "بنشین"، "برقص"، "آواز بخوان"، "جواب تسلیت را بگو"
ما می خواهیم این ربات را جلوی درب یک مراسم ختم قرار دهیم و برایش برنامه ای بنویسیم که در هنگام آمدن یک شخص جدید اجرا می شود. آن برنامه را بنویسید.
تذکر: سعی کنید از سطح های برنامه نویسی استفاده کنید یعنی مانند نمونه صحیح 2 برنامه بدهید. سعی کنید مسائل کاربردی را رعایت کنید مثلا ممکن است شما یک برنامه بنویسید که کاملا اجرا شود و مشکلی نداشته باشد اما از لحاظ کاربردی درست نباشد. مثلا این که ربات برقصد.
پاسخ تمرین را در قالب نظر بدهید.
- ۹۴/۰۳/۳۱