پردازه نویسی در جئوجبرا

آشنایی با جئوجبرااسکریپت (GGBScript)

آشنایی با جئوجبرااسکریپت  (GGBScript)

گاهی وقتها روشهای تعامل دانش‌آموزان با کاربرگهای پویا که از طریق امکانات اولیه‌ی جئوجبرا صورت می‌گیرد آنچنان قدرتمند نیست یا کاربرد آنها برای دانش‌آموزان، بویژه دانش‌آموزان کم سن تر بسیار دشوار است. در این شرایط اسکریپت‌نویسی جئوجبرا به ایجاد ساختاری کمک می‌کند که کاربرد ساده‌ای دارد و امکان تعامل کارامدتری را فراهم می‌سازد. روش نوشتن اسکریپت(برنامه‌ی کوچک) در جئوجبرا ساده است.

کاربردهای معمول اسکریپت‌نویسی عبارتند از:

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

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

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

-          و کاربردهایی ازاین قبیل.

در جئوجبرا از دو زبان اسکریپت‌نویسی جاوااسکریپت و جئوجبرااسکریپت استفاده می‌شود. در نوشته‌ی حاضر زبان جئوجبرااسکریپت مورد بررسی قرار می‌گیرد چون درآن از دستورهای خود جئوجبرا استفاده می‌‌شود که فهم و یادگیریش برای کاربران ساده‌تر است . از لحاظ قابلیتها بین جاوااسکریپت و جئوجبرااسکریپت تفاوتهایی هست اما جئوجبرااسکریپت در بیشتر موارد به اندازه کافی کارامد است.

توجه: مبحث اسکریپت‌نویسی برای کاربران حرفه‌ای جئوجبرا درنظرگرفته شده است. چنانچه در این سطح با جئوجبرا آشنایی ندارید پیشنهاد می‌شود که پیش از ورود به این مطلب سایرمطالب آموزشی را مطالعه کنید. (در اینجا اساس کار اسکریپت‌نویسی و روش افزودن اسکریپت به ساختارهایی که ایجاد کرده‌اید توضیح داده شده است) 

 

دستورها 

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

مثال: دستور  Circle[(1,2),3] دایره‌ای به مرکز(2و1) و شعاع 3 رسم می‌کند.

حتی درصورت به‌کارگیری ابزارها برای ایجاد اشیاء، درواقع، جئوجبرا در پس‌زمینه از دستورها برای ایجاد اشیاء استفاده می‌کند. دستورات به‌کاررفته در ایجاد یک شیء را می‌توان در بخش «تعریف» پنجره‌ی ویژگی‌ها مشاهده کرد. بنابراین ابزارها درواقع کمکی هستند برای وارد کردن دستورها  از طریق ماوس. در قسمت راهنمای جئوجبرا فهرست تمام دستورهایی را که در ساخت شیء کاربرد دارند می‌توان یافت.

تاکنون فقط درباره‌ی دستورهایی که شیء می‌سازند گفته‌ایم. اکثر دستورها شیء می‌سازند اما دستورهایی هم وجود دارند که به منظور اسکریپت‌نویسی به‌کارمی‌روند [و مثلا ویژگیهای شیء را کنترل می‌کنند]. در این مورد بعدا به تفصیل سخن خواهیم گفت. (برای مطالعه بیشتر به این لینک مراجعه شود: http://wiki.geogebra.org/en/Scripting_Commands)

 

مبانی اسکریپت‌نویسی

اسکریپتها در اصل توالی‌ای از دستورهای جئوجبرا هستند که در دو حالت زیر اجرا می‌شوند:

-          کلیک: اسکریپت هنگامی‌که کاربر برروی شیء کلیک می‌کند اجرا می‌شود

-          به‌روز شدن: اسکریپت درصورت تغییر ویژگی یا مقدار شیء اجرا می‌شود. تغییر مقدار لغزنده یا حرکت دادن بخشی از یک ساختار توسط کاربر، مثالی از به‌روزشدن است.

اسکریپت‌نویسی در جئوجبرا شیء‌محور است یعنی می‌توان برای هر شیء اسکریپتهایی تعریف کرد که در اثر کلیک یا به‌روز‌شدن اجرا می‌شوند اما بدون وجود شیء هیچ اسکریپتی نمی‌توان تعریف کرد(به غیر از یک استثنا درمورد جاوااسکریپت).

برای افزودن اسکریپت به یک شیء در نمای گرافیکی یا جبری، بر روی شکل کلیک راست کنید و گزینه‌ی «ویژگی‌ها(Object Prpperties…)» را انتخاب کنید و سپس به صفحه‌ی «برنامه‌نویسی(Scripting)» بروید. سه گزینه‌ی جدید «به محض کلیک(On Click)»، «به محض به‌روزشدن(On Update)»و «جاوااسکریپت جهانی(Global JavaScript)» نمایان خواهد شد. در این متن تنها با دو مورد اول سروکار داریم که در ساخت اسکریپتهای وابسته به کلیک و به‌روز‌شدن برای اشیاء استفاده می‌شوند.

 

اکنون برای تمرین یک نمونه اسکریپت ساده وابسته به «به‌روز‌شدن» ایجاد می‌کنیم:

مثال: (برای بررسی کاملتر به این لینک مراجعه کنید: http://www.geogebratube.org/material/show/id/1519)

1- یک صفحه جدید جئوجبرا4 بازکنید

2- نقطه‌ی A و خط a را از طریق ابزار یا نوار دستور(مثلا Line[a]) ایجاد کنید.

3- صفحه‌ی «برنامه‌نویسی» در قسمت «به محض به‌روزشدن» را برای نقطه‌ی A مطابق آنچه در بالا گفته شد باز کنید.

4- حالا این دستورات را وارد کنید:

SetLineThickness[a, Distance[A, a]*2]

SetPointSize[A, Distance[A,xAxis]]

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

5- سعی کنید پیش بینی کنید که این اسکریپت چه کاری انجام می‌دهد. درستی فرض خود را با حرکت دادن نقطه‌ی A بررسی کنید.

همانطور که مشاهده می‌کنید اسکریپت وابسته به «به‌روزشدن» مختص نقطه‌ی A تعریف شده است و به تغییر شیء دیگری مثلا خط a وابسته نیست. یعنی اسکریپت زمانی اجرا می‌شود که نقطه حرکت داده شود و به‌خودی‌خود ویژگیهای شیء را تغییر نمی‌دهد.

در اسکریپت فوق از SetLineThickness[] و SetPointSize[] استفاده کردیم که جزء همان دستوراتی هستند که گفتیم به منظور اسکریپت‌نویسی به‌کارمی‌روند. با مراجعه به لینک http://wiki.geogebra.org/en/Scripting_Commands و نگاهی گذرا به فهرست دستوراتی که مختص اسکریپت‌نویسی هستند می‌توانید تصوری کلی از عملکرد احتمالی آنها بدست آورید. برای نوشتن اسکریپتها، علاوه بر این دستورها می‌توانیم از کلیه‌ی دستورهای جئوجبرا نظیر f(x)=x^2 یا c=Circle[(0,0,5)] استفاده کنیم.

به جز برخی حالات خاص که درباره‌ی آنها بیشتر توضیح خواهیم داد اجرای یک اسکریپت نتیجه‌ای معادل با وارد کردن تک تک دستورات تشکیل‌دهنده‌ی آن در نواردستور دارد. در حال حاضر شما بطور اجمالی با نوشتن اسکریپت در جئوجبرا آشنا شده‌اید. در ادامه‌ی این راهنما، اسکریپت‌نویسی برخی اشیاء خاص نظیر فیلدهای متنی و دکمه‌ها بررسی می‌شود.

بدون درنظرگرفتن دستورهای ویژه‌ی اسکریپت‌نویسی، دستور If[…] احتمالا پرکاربردترین دستورهاست.

توجه: همانطور که احتمالا باتوجه به متغیرهای وابسته دریافته‌اید بیشتر دستورهای اسکریپت‌نویسی هر عمل را فقط یکبار اجرا می‌کنند و موجب برقراری ارتباط دائمی نمی‌شوند مثلا دستور SetLineThickness[a,Distance[A,a]*2]  فقط مقدار Distance[A,a] در لحظه‌ی اجرا را، جهت اجرای دستور SetLineThickness ثبت می‌کند و این مقدار تا زمان اجرای مجدد دستور یا زمانی که به‌صورت دستی مقدار آن را تغییردهیم بدون تغییر خواهد ماند. این مثال شاید درظاهر نمایانگر برقراری نوعی ارتباط باشد اما فقط بخاطر این است که هرگاه که نقطه جابجا ‌شود دستور اجرا می‌شود. برای بررسی وجود ارتباط، می‌توانید به جای جابجا کردن نقطه، خط را حرکت دهید. همانطور که مشاهده می‌کنید تا زمانی که نقطه جابجا نشود ضخامت خط هیچ تغییری نخواهد کرد.

توجه: چنانچه با سایر زبانهای برنامه‌نویسی آشنا باشید حتما تابه حال متوجه شده‌اید که درپایان هر خط از دستورات جئوجبرااسکریپت، نیازی به گذاشتن نقطه‌بند(سمی‌کالن) نیست.

 

دکمه ها

استفاده از دکمه‌ها درجئوجبرا بسیار ثمربخش است چون همه‌ی دانش‌آموزان می‌دانند که می‌توانند آنها را کلیک کنند و این کار را امتحان هم می‌کنند. دکمه‌ها به‌خودی خود کار خاصی انجام نمی‌دهند بنابراین با تعریف یک اسکریپت «به محض کلیک» برای آنها می‌توان آنها را فعال ساخت. برای ایجاد دکمه می توانید از  (ابزار ایجاد دکمه) در منوی ابزار استفاده کنید.

 

جعبه‌های ورودی (فیلد متن)

جعبه های ورودی که ابزار فیلد متن هم نامیده می‌شود (و در منوی نوار ابزار با نشان مشخص شده است) احتمالا قویترین اشیاء درجئوجبرا هستند. دانش‌آموزان می‌توانند در این جعبه‌ها متن، عدد، توابع یا سایر ورودیهای را که می‌توان آنها را به اشیاء جئوجبرا اختصاص داد وارد کنند.  

برای استفاده از جعبه‌های ورودی در ساختاری که ساخته‌اید روشهای مختلفی وجود دارد، می‌توانید آنها را با اشیاء مرتبط کنید، برای آنها یک اسکریپت «به محض کلیک» بنویسید یا شیئی دیگری (مثل دکمه) تعریف کنید که مقدار ورودی را پردازش کند. نگران نباشید! جزئیات همه‌ی این موارد همین‌جا توضیح داده می‌شود.

 

جعبه‌های ورودی مرتبط با اشیاء صفحه ترسیم

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

مثال: می‌توانید این فایل را ملاحظه کنید: http://www.geogebratube.org/material/show/id/1522

1- یک صفحه‌ی جدید جئوجبرا باز کنید.

2- در نوار دستور یک تابع مثلا f(x)=x^2 را وارد کنید

3-در منوی ابزار، ابزار (اضافه کردن فیلدمتن) را انتخاب کنید (که در دومین گروه ابزارها از سمت راست قرار دارد)

4- حالا در مکانی دلخواه از صفحه ترسیم کلیک کنید. پنجره‌ای باز خواهد شد که از شما می‌خواهد عنوان و شئ متصل شده‌ي جعبه ورودی را مشخص کنید. در این مثال عنوان«f(x)=» و شئ متصل شده  f است.

5- جعبه‌ی ورودی مثال ما آماده است! حال با حرکت دادن نمودار رسم‌شده درصفحه تصویر(بکمک ماوس) مقدار جدید تابع f در هر لحظه بصورت خودکار در فیلدمتن نوشته می‌شود. همچنین می‌توانید بکمک جعبه ورودی که ساخته‌اید مقدار جدید تابع را در فیلد متن وارد کنید که با زدن کلید Enter مقدار جدید به تابع f اختصاص می‌یابد.

توجه: همانطور که در بالا گفته شد علاوه بر توابع می توان جعبه‌های ورودی را مرتبط با اعداد و کلیه‌ی اشیاء دیگر نیز تعریف کرد.

 

جعبه‌ های ورودی تعریف شده با اسکریپت «به محض کلیک»

برخلاف مثال قبلی در اینجا ما جعبه‌ی ورودی را به شیء خاصی مرتبط نمی‌کنیم بلکه با تعریف یک اسکریپت ازنوع «به محض کلیک» مقدار آنرا به سایراشیاء نسبت می‌دهیم. اسکریپتی که در اینجا تعریف می کنیم بسیار شبیه اسکریپت مثال نخست است. در اینجا این سوال مطرح است که چگونه باید ارزش فیلدمتن در اسکریپت را مشخص کرد. پاسخ این سوال مقدار %0 است.

مثال: برای مشاهده‌ی یک نمونه جعبه ورودی که با اسکریپت از نوع «به محض کلیک» تعریف شده است فایل زیر را بارگذاری و مشاهده کنید: http://www.geogebratube.org/material/show/id/1523

1- یک پنجره‌ی جدید جئوجبرا باز کنید

2- نقطه‌ی A و خط a را ایجاد کنید.

3- با انتخاب ابزار «اضافه کردن فیلد متن» در منو ابزار،یک جعبه‌ی ورودی بسازید. نام آن را «اندازه» بگذارید و قسمت «شیء متصل شده» را خالی رها کنید.

4- به صفحه‌ی «به محض کلیک» از منوی «برنامه‌نویسی» پنجره‌ی ویژگیهای جعبه‌ی ورودی‌ای که ساخته‌اید بروید.

5- حالا اسکریپت زیر را وارد کنید(به %0 توجه کنید)

[SetPointSize[A,%0/2

[SetLineThickness[a,%0

6- دکمه‌ی «قبول» را فشرده و پنجره برنامه‌نویسی را ببندید.

7- حالا در جعبه‌ی ورودی مقدار جدیدی را وارد کنید و کلید «Enter» را بزنید.

همانطور که گفته شد در اسکریپت فوق %0 نشانگر ارزش مقدار جعبه‌ی ورودی است.

 

یک مثال: ایجاد دکمه‌ی افزاینده/کاهنده به کمک اسکریپت‌نویسی

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

مثال

-          یک لغزنده عدد صحیح به نام steps بسازید

-          بکمک ابزار درج دکمه، یک دکمه با عنوان مدنظرخود بسازیدو اسکریپت زیر را در قسمت برنامه‌نویسی آن وارد کنید:

[SetValue[steps,steps+1

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

steps=steps+1

به این ترتیب یک دکمه‌ی افزاینده ساخته‌ایم که با هربار فشردن دکمه 1 واحد به مقدار متغیر steps می‌افزاید. برای ساختن یک دکمه‌ی کاهنده به همان ترتیب بالا عمل می‌کنیم با این تفاوت که کافیست در قسمت برنامه‌نویسی بنویسیم:

[SetValue[steps,steps+1

 

یا

 steps=steps-1

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

 

شما هم مشارکت کنید

اگر هرقدراسکریپت‌نویسی بلدید(حتی اندک) ما از کمک و مشارکت شما استقبال می‌کنیم. شما می‌توانید مطالبی درزمینه‌ی موضوعات زیر یا موارد دیگر اضافه کنید:

-          می‌توانید به تولید تعداد بیشتری از دستورات گام به گام برای مبتدیان کمک کنید

-          می‌توانید مثالهای عملی که در آنها از اسکریپت نویسی استفاده شده است تولید کنید و در GeoGebratube قرار دهید یا سایر فایلهای تولیدشده مرتبط با اسکریپت‌نویسی را بررسی کنید.

 این متن ترجمه‌ای است از Introduction to GeoGebraScript. برای مطالعه‌ی متن اصلی به این آدرس مراجعه کنید: http://wiki.geogebra.org/en/Tutorial:Introduction_to_GeoGebraScript

مترجم: امیر قاضی میرسعید