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

Stage Area ناحیه صحنه بخشی است که اسپرایتها/ شکلکها در آن نمایش داده میشوند. رفتار و حرکت این اسپرایتها در این ناحیه به برنامه و کد بستگی دارد.
Sprite اسپرایتها یا شکلکها در واقع همان شخصیتها (یا کاراکتر) و موجودیتهای مورداستفاده در پروژههای اسکرچ هستند. شکلکها اجزایی گرافیکی هستند که معمولاً حرکت میکنند.
Stage Controls در این قسمت میتوانید تغییرات دلخواه خود را مثل اضافهکردن تصاویر شخصی بهعنوان پسزمینهها اعمال کنید.
Sprites List تمام اسپرایتهایی که ساختید یا در اسکرچ بارگذاری کردهاید در این بخش نشان داده میشوند.
Blocks Palette تمام بلوکهای موجود در برنامه شما در این قسمت نشان داده میشوند. این بلوکها دارای دستهبندیهای رنگی هستند.
Blocks چانکهای از پیش نوشتهای هستند که به شما این امکان را میدهند برنامه خود را مرحلهبهمرحله پیش ببرید.
Code Area برای ساخت برنامه کافی است بلوکها را با کشیدن و رهاکردن (drag-and-drop) به این ناحیه منتقل کنید.
اسکرچ مانند هر برنامه دیگری در رزبریپای لود میشود: برای باز کردن آن کافی است روی منو کلیک کنید، ماوس را روی Programming ببرید و سپس روی Scratch 3 کلیک کنید. پس از چند ثانیه، Scratch 3 باز میشود.
در بیشتر زبانهای برنامهنویسی شما باید دستورات را بنویسید تا بعد کامپیوتر طبق آن عمل کند، در اسکرچ اما قضیه متفاوت است. برنامهنویسی در اسکرچ را با کلیک روی دسته Looks در پالت بلوکها که در سمت چپ پنجره اسکرچ قرار دارد، شروع میشود. سپس بلوکهای زیرمجموعه این دسته را که به رنگ بنفش هستند را مشاهده خواهید کرد. Say Hello را پیدا کنید. روی آن کلیک کنید و نگه دارید، ماوس را حرکت دهید و به سمت قسمت کد حرکت دهید. وقتی به این ناحیه رسیدید، کلید ماوس را رها کنید (شکل زیر).

به شکل بلوکی که کشیدید (drag) کردید، نگاه کنید: در بالای آن یک قسمت فرو رفته و در قسمت پایین یک قسمت برجسته وجود دارد. این نشان میدهد که مشابه قطعههای یک پازل، چیزی در بالا و پایین این بلوک باید اضافه شود. در این برنامه، چیزی که در بالا قرار میگیرد، یک تریگر یا فعالساز است.
بر روی دستهبندی Events که رنگ آن طلایی است، کلیک کنید. سپس بلوک را با کشیدن و رهاکردن
در قسمت کدنویسی قرار دهید. دقت کنید که این بلوک را باید بهگونهای در ناحیه کدنویسی قرار دهید که قسمت پایین آن به قسمت بالای بلوک Say Hello متصل شود. حین تنظیمکردن بلوک دوم، اگر یک خط سفید دیدید؛ یعنی در موقعیت درستی هست و میتوانید دستتان را از روی ماوس بردارید. البته این کار نیاز به دقت خاصی ندارد. اگر به اندازه کافی به بلوک اول نزدیک شوید، بلوک دوم جای خود را پیدا خواهد کرد. اگر این اتفاق نیفتاد، دوباره روی آن کلیک کنید و نگه دارید تا بتوانید موقعیت آن را تنظیم کنید.

حال برنامه شما کامل شده است. برای اینکه برنامه ران شود، روی آیکن پرچم سبز که در بالای سمت چپ stage area قرار دارد، کلیک کنید. اگر همه چیز خوب پیش رفته باشد، اسپرایت گربهای، با یک Hello! از شما استقبال خواهد کرد (شکل 2-4). اولین برنامه شما موفقیت آمیز بود!

روی پرچم سبز بالای stage area کلیک کنید، گربه میگوید Hello
قبل از اینکه ادامه دهیم، یک اسم برای برنامه انتخاب و آن را ذخیره کنید. روی منوی File کلیک کنید، سپس Save to your computer را انتخاب کنید (شکل 3-4).

برنامه خود را اسمگذاری و سپس ذخیره کنید.
با اینکه برنامه شامل دو بلوک میشود؛ اما فقط یک دستورالعمل/ فرمان وجود دارد: هر بار که روی علامت پرچم کلیک میشود و برنامه اجرا میشود، باید !Hello را ببینید. برای اینکه بتوانید کارهای بیشتری انجام دهید باید در مورد توالیبندی اطلاعات لازم را داشته باشید. برنامههای کامپیوتری، در سادهترین حالت، فهرستی از دستورالعملها هستند، درست مانند یک دستور غذا. هر دستور بهصورت منطقی پس از دستور قبلی میآید و این روند در واقع یک توالی خطی است.
این کار را با کلیک و درگکردن عبارت Say Hello شروع کنید! روی بلوک مربوط در ناحیه کد کلیک کنید و سپس آن را به سمت پالت بلوکها بکشید (شکل زیر). به این صورت این بلوک از برنامه حذف میشود و فقط بلوک تریگر یعنی when
clicked باقی میماند.

برای پاک کردن بلوک، تنها کافی است بلوک را از ناحیه کد درگ کنید.
روی دستهبندی Motion در پالت بلوکها کلیک کنید، سپس روی بلوک move 10 steps کلیک کرده و به سمت ناحیه کدنویسی درگ کنید تا زیر بلوک تریگر قرار گیرد. همانطور که از اسم این بلوک مشخص است، این دستور به اسپرایت (گربه) میگوید که 10 قدم در همان جهتی که قرار دارد، حرکت کند.

سعی کنید دستورات بیشتری به برنامه اضافه کنید تا یک توالی ایجاد شود. روی دستهبندی Sound که به رنگ صورتی است، کلیک کنید. سپس روی بلوک play sound Meow until done (پخش صدای میو تا آخر) کلیک کرده و آن را به ناحیه کد بکشید تا زیر بلوک move 10 steps (10 قدم حرکت کن) قرار گیرد. به همین ترتیب ادامه دهید: دوباره به دستهبندی Motion برگردید و یک بلوک دیگر move 10 steps (10 قدم حرکت کن) را زیر بلوک قبلی قرار دهید. با این تفاوت که این بار روی عدد 10 کلیک کنید و آن را به 10- تغییر دهید تا یک بلوک move -10 steps (10 قدم به سمت عقب حرکت کن) ساخته شود.

روی علامت پرچم سبز بالای صفحه کلیک کنید تا برنامه اجرا شود. خواهید دید که گربه به سمت راست حرکت میکند، صدای میو میدهد (البته قبل از اجرا مطمئن شوید که بلندگوها یا هدفونها متصل هستند تا صدا را بشنوید) سپس دوباره به نقطه شروع حرکت بازمیگردد. اگر دوباره روی پرچم کلیک کنید، گربه همین کارها را تکرار خواهد کرد.
تبریک! حال شما یک توالی از فرمانها ایجاد کردهاید که Scratch آنها را به ترتیب از بالابهپایین اجرا میکند. اگرچه Scratch تنها یک فرمان را در هر زمان میتواند اجرا کند اما این کار را بسیار سریع انجام میدهد. سعی کنید بلوک play sound Meow until done را با کلیک و درگکردن از بلوک move -10 steps که در زیر آن قرار دارد، جدا کنید و سپس آن را به پالت بلوکها بکشید و آن را با بلوک سادهتر play sound Meow جایگزین کنید. سپس بلوک move -10 steps را پایین آن قرار دهید.

روی پرچم سبز کلیک کنید تا برنامه دوباره اجرا شود. به نظر میرسد که گربه حرکت نمیکند. در واقع گربه در حال حرکت است، اما آنقدر سریع به سمت عقب برمیگردد که به نظر میرسد ثابت ایستاده است. دلیل این است که بلوک play sound Meow منتظر نمیماند تا صدای میو تمام شود و بعد اجرا شود. همانطور که گفتیم رزبریپای آنقدر سریع عمل میکند که دستور بعدی قبل از اینکه بتوانید حرکت گربه را ببینید، اجرا میشود. یک راه برای حل این مشکل این است که از بلوک play sound Meow until done که قبلاً درباره آن صحبت کردیم، استفاده کنید. راه دیگر این است که روی دستهبندی Control که رنگ آن نارنجی روشن است، کلیک کنید. سپس بلوک wait 1 seconds (1 ثانیه صبر کن) را درگ کنید و بین بلوک play sound Meow و بلوک move -10 steps قرار دهید.

روی پرچم سبز کلیک کنید تا برنامه برای آخرین بار اجرا شود؛ و خواهید دید که گربه پس از حرکت به سمت راست یک ثانیه منتظر میماند و سپس دوباره به سمت چپ حرکت میکند. این تأخیر یا delay به شما این امکان را میدهد که مدتزمان اجرای توالی دستورات را کنترل کنید.
سعی کنید مراحل بیشتری به توالی فرمانهای برنامه اضافه کنید و مقادیر (مانند تعداد قدمها) را تغییر دهید.
دقت کنید چه اتفاقی میافتد وقتی تعداد قدمها در یک بلوک با تعداد قدمها در بلوک دیگر تفاوت داشته باشد؟ چه اتفاقی میافتد اگر بخواهید یک صدا را درحالیکه صدای دیگری هنوز در حال پخش است، پخش کنید؟
توالی که تا به اینجا برای فرمانها تعریف کردید، فقط یکبار اجرا میشود: روی پرچم سبز کلیک میکنید، گربه حرکت میکند، میو میکند و سپس برنامه متوقف میشود تا زمانی که دوباره روی پرچم سبز کلیک کنید. بااینحال این برنامه نیازی به توقف ندارد، چون Scratch یک بلوک کنترلی به نام حلقه دارد.
روی دسته Control در پالت بلوکها کلیک و بلوک Forever را پیدا کنید. روی آن کلیک کنید و آن را به ناحیه کد بکشید. سپس آن را زیر بلوک when
clicked و بالای اولین بلوک move 10 steps قرار دهید.

توجه کنید که بلوک C شکل Foreverبه طور خودکار همه بلوکهای داخل توالی فرمانها را در بربگیرد. حال روی پرچم سبز کلیک کنید. بلافاصله باید ببینید که بلوک Forever چگونه عمل میکند: بهجای اینکه برنامه شما یکبار اجرا شود و به پایان برسد، به طور مداوم اجرا خواهد شد (به معنای واقعی کلمه، برای همیشه. در برنامهنویسی، Forever بهعنوان یک حلقه بینهایت شناخته میشود). یک حلقه که هرگز پایان ندارد.
اگر فکر میکنید میو کردن مداوم حالت ایدهآلی نیست، روی هشتضلعی قرمز که کنار پرچم سبز در بالای ناحیه صحنه قرار دارد، کلیک کنید تا برنامه متوقف شود. برای تغییر نوع حلقه، روی اولین بلوک یعنی move 10 steps کلیک کنید و آن را به همراه بلوکهای زیر آن از بلوک Forever درگ کنید و سپس زیر بلوک when
clicked قرار دهید. روی بلوک Forever کلیک کنید و آن را به پالت بلوکها درگ کنید تا حذف شود. سپس روی بلوک repeat 10 کلیک کنید و آن را زیر بلوک when
clicked قرار دهید تا بقیه بلوکها را در بربگیرد.

روی پرچم سبز کلیک کنید تا برنامه جدید اجرا شود. در ابتدا، به نظر میرسد که همان کارهای قبلی را انجام میدهد: تکرار مداوم توالی فرمانها؛ اما این بار، بهجای اینکه این توالی تا ابد ادامه یابد، حلقه پس از ده بار تکرار به پایان خواهد رسید. به این حلقه یک حلقه معین گفته میشود: در واقع شما مشخص میکنید که چه زمانی این حلقه به پایان خواهد رسید. حلقهها ابزارهای قدرتمندی هستند و در اکثر برنامهها – بهویژه بازیها– هر دو نوع حلقه بینهایت و معین کاربردهای زیادی دارند.
❗ اگر تعداد دفعات تکرار را افزایش دهید چه اتفاقی میافتد؟ اگر کاهش دهید چه اتفاقی میافتد؟ اگر این عدد را برابر صفر قرار دهید چه اتفاقی میافتد؟
آخرین مواردی که باید قبل از شروع به کدنویسی در Scratch بدانید، عبارتاند از: متغیرها و شرطها. همانطور که مشخص است، یک متغیر مقداری است که در طی زمان و تحت کنترل برنامه تغییر میکند. متغیر دو ویژگی اصلی دارد: نام و مقداری (value) که ذخیره میکند. این مقدار لازم نیست که حتماً یک عدد باشد؛ ممکن است اعداد، متن، درست یا نادرست (true-or-false) یا کاملاً خالی (null value) باشد.
متغیرها ابزارهای قدرتمندی هستند. فرض کنید یک بازی کامپیوتری میکنید، چه آیتمهایی در این بازی مطرح است؟ سلامتی کاراکتر، سرعت یک شیء متحرک، سطح بازی (منظور مراحل مختلف بازی است) و امتیاز. تمام اینها متغیرها هستند.
ابتدا روی منوی File کلیک کنید و برنامه را با کلیک بر روی Save to your computer ذخیره کنید. اگر قبلاً برنامه را ذخیره کرده باشید، از شما سؤال میشود که آیا میخواهید نسخه قدیمی ذخیره شده با نسخه جدید و بهروز شده جایگزین شود. بعد از ذخیرهکردن برنامه، برای شروع یک پروژه جدید دوباره روی File کلیک کنید و سپس New را انتخاب کنید (وقتی از شما پرسیده شد که آیا میخواهید محتوای پروژه فعلی را جایگزین کنید، روی OK کلیک کنید). در پالت بلوکها روی دستهبندی Variables (متغیرها) که رنگ آن نارنجی تیره است، کلیک کنید. سپس روی دکمه Make a Variable کلیک کنید. نام متغیر را loops بگذارید (شکل زیر)، سپس روی OK کلیک کنید تا مجموعهای جدید از بلوکها به پالت بلوکها اضافه شود.

به متغیر جدید یک نام اختصاص دهید
روی بلوک set loops to 0 کلیک کنید و با درگکردن آن را به ناحیه کد منتقل کنید. با این کار به برنامه گفته میشود که متغیر را با مقدار 0 مقداردهی اولیه کند. سپس روی دستهبندی Looks در پالت بلوکها کلیک کنید و بلوک say Hello! for 2 seconds را زیر بلوک set loops to 0 قرار دهید.

همانطور که قبلاً مشاهده کردید، بلوکهای!say Hello باعث میشوند که گربه هر چیزی که نوشته شده است را بگوید. بااینحال شما میتوانید بهجای اینکه خودتان پیام را در بلوک تایپ کنید، از یک متغیر استفاده کنید. بدین منظور دوباره به دستهبندی Variables در پالت بلوکها بروید و روی بلوک گرد loops )که بهعنوان یک بلوک گزارشگر شناخته میشود و در بالای لیست با یک علامت تیک کنار آن قرار دارد) کلیک کرده و با درگکردن آن را روی کلمه ! Hello در بلوک say Hello! for 2 seconds قرار دهید. با این کار یک بلوک جدید و ترکیبی ساخته میشود: say loops for 2 seconds.

به سراغ دستهبندی Events در پالت بلوکها بروید. سپس روی بلوک when
clicked کلیک کرده و آن را در ناحیه کدنویسی بالاتر از همه بلوکها قرار دهید. پس از آن روی پرچم سبز کلیک کنید. گربه میگوید 0 (شکل زیر). 0 همان مقدار متغیر در بلوک loops است که قبلاً تعیین کردید.

آنچه این بار میگوید مقداری است که به متغیر اختصاص دادید
متغیرها همانطور که از اسمشان مشخص است، ثابت نیستند. روی دستهبندی Variables در پالت بلوکها کلیک کنید. سپس روی بلوک change loops by 1 کلیک کرده و آن را درگ کنید تا در انتهای توالی بلوکها قرار بگیرد. سپس، روی دستهبندی Control کلیک کنید و بلوک repeat 10 را انتخاب کنید و با درگکردن آن را دقیقه زیر بلوک set loops to 0 قرار دهید بهگونهای که بقیه بلوکها را در توالی فرمانها در بربگیرد.

دوباره روی پرچم سبز کلیک کنید. این بار خواهید دید که گربه از 0 تا 9 را میشمارد. دلیل این است که برنامه متغیر را تغییر میدهد یا اصلاح میکند: هر بار که حلقه اجرا میشود، برنامه یک واحد به مقدار موجود در متغیر loops اضافه میکند.

به لطف حلقهای که تعریف شد، گربه از 0 تا 9 را میشمارد.
❗ اگرچه حلقهای که تعریف کردید، ده بار اجرا میشود، اما گربه فقط تا نه میشمارد. دلیل این است که متغیر با مقدار صفر شروع میشود. با احتساب صفر و نه، ده عدد بین صفر و نه وجود دارد، بنابراین برنامه قبل از اینکه گربه به 10 برسد متوقف میشود. برای تغییر این حالت، میتوانید مقدار اولیه متغیر را بهجای 0 به 1 تغییر دهید.
با استفاده از متغیرها میتوانید کارهای بیشتر از تغییر مقدار (value) انجام دهید. روی بلوک say loops for 2 seconds کلیک کرده و آن را درگ کنید تا از بلوک repeat 10 جدا شود. سپس آن را زیر بلوک repeat 10 قرار دهید. روی بلوک repeat 10 کلیک کرده و با کشیدن آن را به پالت بلوکها منتقل کنید تا حذف شود. سپس بلوک repeat until را جایگزین بلوک قبلی کنید. مطمئن شوید که بلوک به پایین بلوک set loops to 0 متصل شده است؛ و هر دو بلوک دیگر را در توالی فرمانها در برمیگیرد. روی دستهبندی Operators در پالت بلوکها که با رنگ سبز مشخص شده است، کلیک کنید. سپس روی بلوک الماس شکل O = O کلیک کرده و آن را روی بلوک repeat until قرار دهید.

با استفاده از بلوک Operators شما این امکان را دارید که دو مقدار، از جمله دو متغیر را مقایسه کنید. روی دستهبندی Variables کلیک کنید و بلوک ریپورتر/ گزارشگر loops را به فضای خالی در بلوک ● = ● بکشید. سپس روی عدد 50 کلیک و عدد 10 را تایپ کنید.

روی پرچم سبز کلیک کنید. خواهید دید که برنامه مانند قبل عمل میکند: گربه از 0 تا 9 میشمارد (شکل زیر) و سپس برنامه متوقف میشود.
دلیل این است که بلوک repeat until دقیقه به همان روش بلوک repeat 10 عمل میکند، اما بهجای اینکه تعداد حلقهها را بشمارد، مقدار متغیر loops را با مقداری که در سمت راست بلوک تایپ کردید مقایسه میکند. هنگامی که مقدار متغیر loops به 10 برسد، برنامه متوقف میشود.

استفاده از بلوک «repeat until» به عنوان یک عملگر مقایسهای
این بلوک بهعنوان یک عملگر مقایسهای عمل میکند: به عبارتی دو مقدار را مقایسه میکند. روی دستهبندی Operators در پالت بلوکها کلیک کنید و دو بلوک دیگر که به شکل الماس هستند و بالا و پایین بلوکی با نماد = قرار دارند را پیدا کنید. این دو نیز عملگرهای مقایسهای هستند: > دو مقدار را مقایسه میکند و زمانی که مقدار سمت چپ کوچکتر از مقدار سمت راست باشد، فعال میشود. < زمانی که مقدار سمت چپ بزرگتر از مقدار سمت راست باشد، فعال میشود.
روی دستهبندی Control در پالت بلوکها کلیک کنید و بلوک if then را پیدا کنید. سپس روی آن کلیک کرده و آن را به ناحیه کد بکشید و زیر بلوک say loops for 2 seconds قرار دهید. این بلوک به طور خودکار بلوک change loops by 1 را در بر میگیرد؛ بنابراین روی آن کلیک کنید و آن را بکشید تا زیر بلوک if then قرار بگیرد. روی دستهبندی Looks در پالت بلوکها کلیک کنید. سپس بلوک say Hello! for 2 seconds را پیدا کنید و آن را داخل بلوک if then قرار دهید. روی دستهبندی Operators در پالت بلوکها کلیک کنید. سپس بلوک ● > ● را پیدا کنید و آن را بین دو O در بلوک if then قرار دهید.

بلوک if then یک بلوک شرطی است؛ یعنی بلوکهای داخل آن وقتی اجرا میشوند که یک شرط خاص برقرار باشد. روی دستهبندی Variables در پالت بلوکها کلیک کنید و بلوک ریپورتر loops را انتخاب و در فضای خالی بلوک ● > ● قرار دهید. سپس روی عدد 50 کلیک کرده و عدد 5 را تایپ کنید. در نهایت، روی کلمه !Hello در بلوک say Hello! for 2 seconds کلیک کنید و سپس عبارت !That s high را تایپ کنید.

روی پرچم سبز کلیک کنید. برنامه همانند قبل اجرا خواهد شد و گربه از صفر شروع به شمارش میکند. وقتی به ۶ برسد؛ یعنی اولین عددی که بزرگتر از ۵ است، بلوک if then فعال میشود (شکل زیر) و گربه پیام میدهد که این مقدار بزرگتر است (That’s high!). تبریک! حال یاد گرفتهاید که چگونه با متغیرها و شرطها کار کنید.

چگونه میتوانید برنامه را تغییر دهید تا گربه وقتی به اعداد کمتر از ۵ رسید پیام دهد؟ آیا میتوانید آن را بهگونهای تغییر دهید که گربه برای اعداد کمتر و بیشتر از 5 پیام دهد؟ برای راحتی کار میتوانید از بلوک if then else استفاده کنید.
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.