یک کاغذ ساده را جلوی کودک بگذارید و از او بخواهید با چند تا زدن، آن را به یک قایق، حیوان یا هواپیما تبدیل کند. در نگاه اول، این کار هیچ شباهتی به برنامه‌نویسی ندارد؛ نه خبری از کامپیوتر است، نه کد، نه ربات و نه حتی صفحه‌نمایش.

اما کافی است کمی دقیق‌تر به کاری که کودک انجام می‌دهد نگاه کنیم:

کاغذ را از وسط تا می‌زند، گوشه‌ها را به ترتیب مشخصی روی هم قرار می‌دهد، نتیجه هر مرحله را بررسی می‌کند و بعد سراغ مرحله بعد می‌رود. اگر یکی از مراحل را اشتباه انجام دهد، نتیجه نهایی هم تغییر می‌کند.

این فرایند به طرز جالبی شبیه چیزی است که در برنامه‌نویسی اتفاق می‌افتد.

به همین دلیل، اوریگامی می‌تواند یکی از فعالیت‌های ساده و جذاب برای آشنا کردن کودکان با تفکر الگوریتمی باشد؛ حتی قبل از اینکه اولین خط کد خود را بنویسند.

اول ببینیم الگوریتم چیست؟

وقتی اسم الگوریتم را می‌شنویم، ممکن است چیزی پیچیده و کامپیوتری به نظر برسد؛ اما مفهوم اصلی آن بسیار ساده است.

الگوریتم یعنی مجموعه‌ای از مراحل مشخص که با ترتیب معینی انجام می‌شوند تا به یک نتیجه برسیم.

مثلاً برای درست کردن یک ساندویچ، می‌توانیم بگوییم:

نان را بردار ← پنیر را روی آن قرار بده ← گوجه را اضافه کن ← نان دوم را روی مواد بگذار.

اگر مراحل را جابه‌جا کنیم یا یکی را انجام ندهیم، ممکن است نتیجه متفاوت شود.

برنامه‌نویس نیز هنگام نوشتن یک برنامه، دقیقاً با چنین مسئله‌ای روبه‌رو است: چه دستورهایی باید اجرا شوند و ترتیب اجرای آن‌ها چگونه باشد. حالا دوباره به اوریگامی برگردیم.

اوریگامی هم الگوریتم دارد

فرض کنید کودک می‌خواهد با یک کاغذ مربع، یک شکل اوریگامی بسازد.

ممکن است دستور کار چیزی شبیه این باشد:

کاغذ را از وسط تا بزن.

آن را باز کن.

دو گوشه را به خط وسط برسان.

قسمت پایین را به سمت بالا تا بزن.

شکل را برگردان.

مرحله بعد را انجام بده.

کودک نمی‌تواند به دلخواه مرحله ششم را اول انجام دهد و انتظار داشته باشد همان نتیجه را بگیرد.

هر مرحله به مرحله قبلی وابسته است.

در برنامه‌نویسی به این موضوع «ترتیب اجرای دستورها» یا Sequence گفته می‌شود.

بنابراین، وقتی کودک مراحل ساخت یک اوریگامی را دنبال می‌کند، بدون اینکه لازم باشد اصطلاحات تخصصی برنامه‌نویسی را بداند، در حال تجربه یکی از مفاهیم پایه تفکر الگوریتمی است.

۱. اوریگامی به کودک «ترتیب» را یاد می‌دهد

یکی از اولین چیزهایی که کودک برای برنامه‌نویسی نیاز دارد، درک «ترتیب» است.

فرض کنید قرار است یک شخصیت در یک بازی ابتدا جلو برود، سپس بپرد و بعد یک سکه را بردارد.

اگر ترتیب دستورها اشتباه باشد، اتفاق مورد انتظار رخ نمی‌دهد.

در اوریگامی هم همین اتفاق می‌افتد.

کودک کم‌کم متوجه می‌شود که:

اول چه کاری باید انجام دهم؟ بعد چه کاری؟ و مرحله بعدی به کدام مرحله وابسته است؟

این همان نوع فکری است که بعدها هنگام ساخت یک بازی، کنترل یک ربات یا نوشتن برنامه به آن احتیاج خواهد داشت.

۲. یک مسئله بزرگ را به مراحل کوچک تبدیل می‌کند

یک اوریگامی کامل ممکن است در نگاه اول برای کودک پیچیده به نظر برسد.

مثلاً کودک تصویر نهایی یک روباه کاغذی را می‌بیند و شاید نداند چگونه باید یک کاغذ ساده را به آن تبدیل کند.

اما وقتی فرایند به ۸ یا ۱۰ مرحله کوچک تقسیم شود، مسئله ساده‌تر می‌شود.

کودک دیگر قرار نیست «یک روباه بسازد».

فقط باید مرحله بعدی را درست انجام دهد.

این مهارت در برنامه‌نویسی اهمیت زیادی دارد.

برنامه‌نویس نیز معمولاً یک مسئله بزرگ را به مسئله‌های کوچک‌تر تقسیم می‌کند و هر قسمت را جداگانه حل می‌کند.

این مفهوم در تفکر محاسباتی با عنوان «تجزیه مسئله» (Decomposition) شناخته می‌شود.

۳. کودک نتیجه هر دستور را می‌بیند

یکی از ویژگی‌های جالب اوریگامی این است که نتیجه دستورها فوراً قابل مشاهده است.

کودک یک تا می‌زند و شکل کاغذ تغییر می‌کند.

مرحله دیگری را انجام می‌دهد و دوباره نتیجه را می‌بیند.

در نتیجه، رابطه بین دستور → اجرا → نتیجه برای او ملموس می‌شود.

در برنامه‌نویسی هم همین رابطه برقرار است.

برنامه‌نویس دستوری می‌نویسد، کامپیوتر آن را اجرا می‌کند و نتیجه ظاهر می‌شود.

به همین دلیل، فعالیت‌های فیزیکی مثل اوریگامی می‌توانند بعضی از مفاهیم انتزاعی برنامه‌نویسی را برای کودکان کم‌سن ملموس‌تر کنند.

۴. اگر یک مرحله اشتباه شود چه اتفاقی می‌افتد؟

اینجا یکی از جذاب‌ترین ارتباط‌های اوریگامی و برنامه‌نویسی شکل می‌گیرد.

فرض کنید کودک تا مرحله هفتم پیش رفته، اما ناگهان متوجه می‌شود شکل او با تصویر نمونه فرق دارد.

واکنش طبیعی چیست؟

برمی‌گردد و بررسی می‌کند:

کجا اشتباه کردم؟

کدام تا درست نبود؟

از کدام مرحله شکل من متفاوت شد؟

آیا می‌توانم آن را اصلاح کنم؟

این رفتار شباهت زیادی به اشکال‌زدایی (Debugging) در برنامه‌نویسی دارد.

وقتی یک برنامه درست کار نمی‌کند، برنامه‌نویس نیز باید مراحل و دستورها را بررسی کند تا متوجه شود خطا کجاست.

بنابراین اشتباه در اوریگامی لزوماً اتفاق بدی نیست.

گاهی همان شکل کج‌وکوله می‌تواند بخش مهم‌تری از یادگیری باشد!

۵. اوریگامی کودک را وادار به پیش‌بینی می‌کند

قبل از اینکه کودک یک قسمت از کاغذ را تا بزند، می‌توانیم از او سؤال کنیم:

«فکر می‌کنی اگر این گوشه را به این طرف تا بزنیم، شکل چه تغییری می‌کند؟»

این سؤال ساده کودک را از اجرای صرف دستور خارج می‌کند.

حالا باید نتیجه یک عمل را قبل از انجام دادن آن پیش‌بینی کند.

این مهارت در برنامه‌نویسی هم مهم است.

کودک هنگام برنامه‌نویسی باید کم‌کم بتواند حدس بزند:

اگر این دستور را اضافه کنم چه می‌شود؟

اگر ترتیب این دو دستور را عوض کنم چه اتفاقی می‌افتد؟

اگر این شرط برقرار نباشد برنامه چه کاری انجام می‌دهد؟

یعنی به جای اینکه فقط دستور اجرا کند، شروع به فکر کردن درباره نتیجه دستورها می‌کند.

یک بازی اوریگامی برای تقویت تفکر الگوریتمی

اگر می‌خواهید این فعالیت را در خانه انجام دهید، لازم نیست از همان ابتدا سراغ شکل‌های پیچیده بروید.

یک اوریگامی بسیار ساده انتخاب کنید که مثلاً ۵ یا ۶ مرحله داشته باشد.

اما این بار یک تغییر کوچک ایجاد کنید.

بعد از اینکه کودک شکل را ساخت، از او بخواهید خودش دستور ساخت آن را برای شما توضیح دهد.

مثلاً:

«اول کاغذ را از وسط تا بزن. بعد بازش کن. بعد این دو گوشه را بیار وسط…»

شما هم فقط طبق چیزی که کودک می‌گوید عمل کنید.

اگر دستور او مبهم بود، حدس نزنید منظورش چیست.

مثلاً اگر گفت:

«این قسمت را ببر آنجا.»

بپرسید:

«کدام قسمت؟ کجا ببرم؟ چقدر تا بزنم؟»

اینجاست که بازی جالب می‌شود.

کودک متوجه می‌شود برای اینکه شما بتوانید دستور او را اجرا کنید، باید دستورها واضح، دقیق و مرحله‌به‌مرحله باشند.

و این دقیقاً یکی از اصول برنامه‌نویسی است.

کامپیوتر هم نمی‌تواند منظور ما را حدس بزند؛ باید دقیقاً به آن بگوییم چه کاری انجام دهد.

مرحله بعدی بازی را سخت‌تر کنید

وقتی کودک با بازی قبلی آشنا شد، جای شما و او را عوض کنید.

یک شکل بسیار ساده انتخاب کنید و بدون اینکه تصویر نهایی را به کودک نشان دهید، فقط دستورها را برایش بخوانید.

مثلاً:

«کاغذ را از وسط تا بزن.»

«گوشه سمت راست را روی گوشه سمت چپ قرار بده.»

«حالا شکل را برگردان.»

در پایان شکل‌ها را با هم مقایسه کنید.

اگر نتیجه متفاوت بود، فوراً نگویید:

«اشتباه کردی.»

بهتر است بپرسید:

«فکر می‌کنی کدام مرحله باعث شد شکل ما متفاوت بشود؟»

این سؤال کودک را وارد فرایند پیدا کردن خطا می‌کند.

حتی می‌توانید عمداً یک «باگ» ایجاد کنید!

یک بار هنگام توضیح مراحل، عمداً یکی از دستورها را اشتباه بگویید.

بعد از کودک بخواهید بفهمد مشکل از کجاست.

مثلاً اگر ترتیب دو مرحله را عوض کردید، بپرسید:

«چرا این بار شکل درست نشد؟»

حالا کودک فقط اوریگامی نمی‌سازد؛ بلکه دارد یک الگوریتم را بررسی و اشکال‌زدایی می‌کند.

این فعالیت برای کودکان بسیار ملموس‌تر از این است که از همان ابتدا درباره واژه‌هایی مثل «الگوریتم» و «اشکال‌زدایی» برایشان توضیح نظری بدهیم.

آیا اوریگامی واقعاً برنامه‌نویسی یاد می‌دهد؟

اینجا باید یک نکته را روشن کنیم.

اوریگامی به‌تنهایی به کودک برنامه‌نویسی یاد نمی‌دهد.

کودک با ساختن یک قایق کاغذی قرار نیست برنامه‌نویس شود.

ارزش این فعالیت جای دیگری است.

اوریگامی می‌تواند فرصت تمرین بعضی از مهارت‌هایی را فراهم کند که بعدها در یادگیری برنامه‌نویسی هم کاربرد دارند؛ مهارت‌هایی مثل:

دنبال کردن مراحل

رعایت ترتیب دستورها

شکستن یک کار پیچیده به مراحل کوچک

توجه به جزئیات

پیش‌بینی نتیجه

پیدا کردن خطا

اصلاح مسیر

توضیح دقیق یک فرایند

این تفاوت مهم است.

هدف ما این نیست که هر فعالیت کودک را «برنامه‌نویسی» بنامیم؛ بلکه می‌خواهیم ببینیم چه فعالیت‌هایی می‌توانند شیوه فکر کردن موردنیاز برای حل مسئله و برنامه‌نویسی را تمرین دهند.

چرا قبل از کامپیوتر سراغ چنین بازی‌هایی برویم؟

برای آشنا کردن کودک با تفکر برنامه‌نویسی همیشه لازم نیست اولین قدم، نشاندن او پشت لپ‌تاپ باشد.

خصوصاً برای کودکان کم‌سن، مفاهیمی مثل الگوریتم، ترتیب، دستور و خطا را می‌توان ابتدا از طریق بازی و فعالیت‌های ملموس تجربه کرد.

مثلاً کودک می‌تواند:

اوریگامی بسازد، برای یک عروسک مسیر طراحی کند، به والد نقش «ربات» بدهد و برای او دستور صادر کند، الگوها را کامل کند یا با کارت‌های جهت یک مسیر ایجاد کند.

بعداً وقتی همین کودک وارد محیط‌هایی مثل برنامه‌نویسی بلوکی می‌شود، بسیاری از این ایده‌ها دیگر کاملاً غریبه نیستند.

ارتباط اوریگامی با روش آموزشی کدبازی

در کدبازی، مخصوصاً در مسیرهای آموزشی کودکان کم‌سن، هدف فقط این نیست که کودک هرچه زودتر پشت کامپیوتر بنشیند و چند دستور برنامه‌نویسی را حفظ کند.

فعالیت‌هایی مثل بازی، حل مسئله و اوریگامی می‌توانند به کودک کمک کنند ابتدا روش فکر کردن مرحله‌به‌مرحله را تجربه کند.

در واقع سؤال اصلی این نیست که:

«کودک من از چه سنی باید کدنویسی کند؟»

سؤال بهتر می‌تواند این باشد:

«از چه سنی می‌توانیم فرصت‌هایی برای فکر کردن، ساختن، آزمودن و اصلاح کردن در اختیار کودک قرار دهیم؟»

و برای شروع این مسیر، گاهی حتی یک برگ کاغذ کافی است.