يو بيسك

يوباسيك هو برنامج مجاني لتفسير لغة بيسك لأنظمة MS-DOS وويندوز ، من تطوير يوجي كيدا في جامعة ريكيو باليابان . وهو متخصص في نظرية الأعداد ، واختبار الأعداد الأولية ، والتحليل إلى عوامل ، والأعداد الصحيحة حتى 2600 رقم. تحتوي ملفات المساعدة على مقالات ودروس للمبتدئين.

سمات

يحتوي UBASIC على محرر مدمج عبر الإنترنت مزود بالعديد من أدوات المساعدة لتصحيح الأخطاء. يمكنه عرض المراجع المتبادلة لأسطر الاستدعاء، والأسطر التي تحتوي على متغير، وقوائم المتغيرات/المصفوفات. كما يمكنه إعادة ترقيم الأسطر، وتغيير أسماء المتغيرات، وإضافة برامج إضافية. ويمكنه تتبع التنفيذ، والتنفيذ خطوة بخطوة، وقياس الوقت بالمللي ثانية للمساعدة في تحديد أسرع طريقة لتنفيذ المقاطع المتكررة. ويمكنه إعادة تعريف مفاتيح الوظائف، إما لتوفير وظيفة سهلة بضغطة زر واحدة، أو لمنع استخدام وظيفة قياسية عن طريق الخطأ. ويمكنه الوصول إلى موجه أوامر DOS أو تنفيذ أوامر DOS. ويمكنه التحويل بين مجموعة الأحرف أحادية البايت ومجموعة الأحرف ثنائية البايت ، ولكن للاستفادة القصوى من هذه الميزة، من المرجح أن يحتاج الحاسوب المضيف إلى نظام تشغيل يدعمها . ويمكن إضافة المستندات أو تعديلها في ملف UBHELP.HLP .

اختبار أولية الأعداد باستخدام خوارزمية APRT-CLE (حتى 884 رقمًا) (يُفضل تشغيل هذا الاختبار باستخدام UBASIC الإصدار 8.8F أو أحدث): يستغرق اختبار 500 رقم 5 ساعات على جهاز PP-200، و150 رقمًا حوالي 16 دقيقة على جهاز 486-100، وحوالي دقيقتين وربع على جهاز K6@233؛ بينما يستغرق اختبار 250 رقمًا حوالي 13 دقيقة ونصف على جهاز K6@233. ويمكن للأجهزة الحديثة أن تكون أسرع بعشر مرات. غالبًا ما تُعد خوارزمية APRT-CLE الخيار الأمثل لاختبار أولية الأعداد الصحيحة ضمن نطاقها.

يُعدّ التحليل إلى عوامل باستخدام برامج مثل ECMX سريعًا جدًا. فهو يستطيع إيجاد عوامل الأعداد التي يتراوح عدد أرقامها بين 20 و25 بسهولة نسبية، وبين 20 و25 بصعوبة أكبر، وبين 20 و25 بنسبة نجاح أقل. وقد وجد البرنامج عاملًا مكونًا من 30 رقمًا. (يبقى إيجاد العوامل باستخدام طريقة المنحنى الإهليلجي محفوفًا بالمخاطر دائمًا، خاصةً مع العوامل الكبيرة. فكلما زاد عدد المنحنيات التي يتم اختبارها، زادت فرص النجاح، ولكن العدد المطلوب (في المتوسط، قد يحالف المرء الحظ أو لا يحالفه) يزداد بسرعة مع حجم العوامل. لذا، يُفضّل دائمًا استخدام أسرع جهاز متاح. يستخدم ECMX المعايير المقبولة لتحديد متى يتوقف العمل مع منحنى معين وينتقل إلى المنحنى التالي. كما يتضمن البرنامج اختبارات أولية أولية، وإيجاد عوامل صغيرة، وقوى الأعداد.

تتيح خاصية التفسير تعديل البرامج ثم إعادة تشغيلها (باستخدام GOTO) أثناء التشغيل، حتى لو استمر لعدة أيام، دون فقدان البيانات المتراكمة. لا يُنصح بالإيقاف إلا إذا كان البرنامج يحفظ البيانات في مكان آمن، أو إذا نسي المستخدمون كتابة أي طريقة لحفظ البيانات عند الخروج (ربما لم يتوقعوا العثور على أي بيانات وكانوا يحاولون إثبات ذلك). عند القيام بأي شيء قد يؤدي إلى فقدان بيانات قيّمة، أو إذا كنت بحاجة إلى القيام بشيء آخر لفترة من الوقت، فيمكنك حفظ FREEZEالبرنامج الحالي في ملف ثم MELTاستخدامه لاحقًا (طالما أن إعدادات الذاكرة الدنيا هي نفسها).

تستخدم لغة UBASIC ترقيم الأسطر ، ولا تعتمد على المسافة البادئة للتحكم في بنية الكود. تحتوي على إجراءات فرعية ووظائف مستخدم مع مُعاملات مُمرَّرة ومتغيرات محلية. يمكن تمرير المُعاملات بالقيمة أو بالاسم. كما يمكن تمرير وظائف المستخدم والإجراءات الفرعية كمعاملات. تتميز UBASIC بقلة عدد التسميات، وتوفر خيارات متنوعة للدوال الشرطية. يمكن للمستخدمين تحديد مقدار المسافة البادئة أو إلغاؤها تمامًا، كما يمكنهم إنشاء بنية قوية أو كتابة كود غير منظم . من الخطأ اعتبار UBASIC لغة "غير حديثة" (كما قد يستنتج قارئ المقالات التي تخلط بين المسافة البادئة وبنية الكود ولا تُفضِّل ترقيم الأسطر). يتيح وجود ترقيم الأسطر سهولة الانتقال إلى نقطة وسيطة في الإجراء، مما قد يُجنِّب تكرار الأسطر.

يتميز الإصدار الثامن من لغة UBASIC بدقة عالية في العمليات الحسابية الحقيقية والمركبة (حتى 2600 رقم) كما في الإصدارات السابقة، ويضيف إليه العمليات الحسابية الكسرية الدقيقة، والعمليات الحسابية لكثيرات الحدود ذات المتغير الواحد بمعاملات مركبة أو كسرية أو بتردد p ، بالإضافة إلى معالجة السلاسل النصية وقدرات محدودة في معالجة القوائم. كما يتضمن توثيقًا تفاعليًا عبر الإنترنت (راجع ملف UBHELP.DOC للمزيد من المعلومات). يستخدم هذا الإصدار ملف ASCII ويمكن طباعته كمستند ورقي.

في عام ٢٠٠٥، احتوى ملف المساعدة على العديد من الأخطاء. وقد كان مشروع إعادة كتابة/تصحيح الملف، الذي استغرق عشر سنوات، جاهزًا تقريبًا للنشر، على الأرجح بحلول أواخر صيف ٢٠٠٥. يحمل ملف المساعدة الجديد الامتداد .hlp ، واسم الحزمة u3d748f*. تتوفر قائمة بالتحديثات، لكن العديد من التغييرات لم تُعلن بعد.

يتميز الإصدار 8.8 بدقة مختلفة عن الإصدار 8.74.

يوجد أمر جديد في الإصدار 8.8C POLYCONVيُحوّل كثيرات الحدود بين المعامل = 0 والمعامل = عدد أولي. لا توجد متطلبات تنسيق.

تحذير: لا تختبر أيًا من هذه الميزات أثناء تشغيل أو تعليق أي شيء مهم في مكان آخر، فقد يحدث توقف مفاجئ، خاصةً مع هذه الميزات KEYSCAN. انظر: FREEZE[رابط]، ROLL[ رابط]، MELT[رابط]. (للحصول على تحذير مماثل)

تحتوي لغة UBASIC على أنواع متعددة من المصفوفات ، وعوامل منطقية ، وعوامل بت ، وأربعة هياكل حلقات قياسية، وعوامل مركبة. يمكنها استدعاء إجراءات لغة الآلة لزيادة السرعة (كما يفعل ECMX)، ولكن يجب عليك معرفة لغة التجميع لفهم التعليمات - فمجرد القدرة على كتابة سجلات المعاملات في وضع التصحيح لا يكفي.

  • يمكن حساب قيم السلاسل النصية إذا كانت تمثل صيغة رياضية.
  • يمكن عادةً تنفيذ السلاسل النصية إذا كانت تمثل أمر UBASIC.
  • يمكن عادةً استبدال السلاسل النصية بالمتغيرات التي تحمل السلاسل النصية.
  • يمكن ترتيب السلاسل أبجديًا باستخدام MIN أو MAX.

يمكن استخدام لغة UBASIC لمعالجة أي نوع من البيانات تقريبًا. على سبيل المثال: ملفات WAV . يمكنها معالجة الملفات النصية لتحويل علامات الجدولة إلى مسافات أو العكس. بعض البرامج لا تستطيع إنشاء علامات الجدولة، وبعضها الآخر يتعطل عند التعامل معها.

تشمل أنواع المتغيرات ما يلي:

  1. عدد صحيح
  2. عاقِل
  3. حقيقي
  4. عدد مركب
  5. خيط
  6. حزمة (مختلطة من أي أنواع بما في ذلك الحزم الأخرى)
  7. متعدد الحدود
  8. متعدد الحدود mod (معاملات أعداد صحيحة modulo عدد أولي)

أظهر بحثٌ أُجري على الإنترنت في أوائل عام ٢٠٠٥ وجود الإصدارات التالية: ٨.٧٤(٣٢)، ٨.٧٤(١٦)، ٨.٧١(٤٠٠٠(١٦))، ٩.٠ZE، ٩.٠ZC، ٩.٠E، ٨.٨F(٣٢)، ٨.٨F(١٦)، ٨.٨F(C)، ٨.٧E(٣٢)، ٨.٧E(١٦)، ٨.٣٠(٣٢)، ٨.٣٠(١٦)، ٧.٢٥(٣٢)، ٧.٢٥(١٦)، ٨.٨A(٣٢)، ٨.٨A(١٦)، ٨.٨A(C)، ٨.٨C(٣٢)، ٨.٨C(١٦)، ٨.٨C(C)، ٨.٨E(٣٢)، ٨.٨E(١٦)، ٨.٨E(C) . ١٢ إصدارًا من أصل ٥٢ رقمًا معروفًا. العديد من هذه الإصدارات غير مُحددة بشكل مباشر. (يشير الرقمان (16) و(32) إلى عدد البتات في وحدة الضرب. أما الرقم (4000) فيشير إلى إصدارات خاصة يمكنها معالجة أكثر من 4000 رقم (قد يحتاج بعض المستخدمين إلى أحد هذه الإصدارات، مثلاً لتوليد أول 792 عددًا من أعداد برنولي ذات الفهرس المزدوج 1584: الإصدار الأحدث يمكنه فقط معالجة 540/1080). أما الحرف (C) فهو خاص بأجهزة CGA .)

إذا كنت تستخدم إصدارًا أحدث من 8.74، وخاصةً إذا كان أحدث من 8.7E، فننصحك بشدة بالترقية إلى أحدث إصدار (8.8F). قد لا تعمل بعض البرامج (مثل برنامج العرض المتقدم) المصممة للإصدار 8.74 على الإصدار 8.8F إلا بعد إعادة كتابتها بشكل كبير. لا تقوم الإصدارات الأحدث بإزالة أحرف الإرجاع / تغذية الأسطر من ملفات ASCII، وتحتاج برامج مثل UBH (حتى الموجودة في الإصدار 8.8F) إلى إضافة أسطر لإزالتها. لا تستخدم أي برنامج مصمم لإصدار معين على إصدار آخر دون التحقق منه.

بعض البرامج مثل NFS لن تعمل إلا على الإصدار التجريبي 9.**.

يحتاج إصدار ppmpx36e من غربال متعدد الحدود التربيعي إلى الإصدار 8.8F ونظام التشغيل Windows.

بعض إصدارات UBASIC تأتي بملف UBCONST7.DAT معيب . يجب عليك مقارنة ملفك بالملف المرفق في الإصدار 8.8F. إذا لم يكن متطابقًا، فعليك التبديل.

برنامج نموذجي

فيما يلي برنامج بسيط ومختصر لحساب عدد الأقسام. على الرغم من أنه لا يحتوي على العديد من البنى المعقدة، إلا أنه برنامج حقيقي، وليس مُصممًا خصيصًا لهذه المقالة. على معالج Athlon حديث وسريع، يُفترض أن يحسب عدد الأقسام من p(0) إلى p(1000) في حوالي نصف  ثانية. قارن ذلك بأكثر من نصف  قرن في المرة الأولى. لحفظ النتيجة في ملف، قم بإزالة علامة التعليق من السطر 40 (أزل الفاصلة العليا في البداية).

10 وحدة التحكم: وحدة التحكم 1 ، 24 ، 0 : تحديد الموقع 1 ، 0 20 طباعة الحرف ( 2 "N" ، "P(N)" ، "عدد الأقسام" 30 كلمة -19 : نقطة -8 : H %= 11 : 'لـ N حتى ~1200 40 'PRINT=PRINT+"PARTN5.TXT":'إعادة توجيه الإخراج 50 N = 0 : 'إدخال N 60 مسح الوقت 70 Mu = PI ( SQRT ( 24 * N -1 ) / 6 ) 80 مسح S 90 لـ K = 1 إلى H % 100 '110 إلى 160 هي صيغة سيلبيرج 110 مسح C 120 لـ L = 0 إلى 2 * K -1 130 إذا (( 3 * L ^ 2 + L ) \ 2 ) @ K = ( - N ) @ K 140 : C += ( -1 ) ^ L * COS ( PI (( 6 * L + 1 ) / ( 6 * K ))) 150 التالي 160 'للحصول على A(K,N)، اضرب C في SQRT(K/3) 170 U = EXP ( Mu / K ) 180 R = ( Mu + K ) / U: 'حد تقارب رادماخر 190 S += (( Mu - K ) * U + R ) * C 200 التالي 210 S = ROUND ( ABS ( S * 2 / ( MU *( 24 * N - 1 )))) 220 PRINT CUTSPC ( STR ( N )); 230 LOCATE 38 - ALEN ( S ) : PRINT S 240 IF N < 1000 : INC N: GOTO 70 250 Tt = TIME1000: PRINT = PRINT : PRINT Tt / 1000 260 أسرع بنسبة 1.7% تقريبًا إذا تم تغيير N,K,L إلى N%,K%,L%

دقة

عند التعامل مع الكسور المستمرة، يكون عدد الحدود محدودًا بدقة النظام المتاحة وحجم كل حد. الصيغة التقريبية هي دقة رقمين عشريين لكل حد (الحد مضروبًا في لوغاريتم الحد ذي الأساس عشرة ). الطريقة الوحيدة لإجراء هذا العمل بأمان هي تنفيذه مرتين بالتوازي، مع إبطاء إدخال البيانات في إحداهما في الأرقام الأخيرة (كلمة واحدة على الأقل). عندئذٍ، إذا لم تُعطِ العمليتان نفس الحدين، يتم التوقف عند الحد السابق.

يمكن للغة UBASIC حساب دالة التقسيم حتى p(1330521). (في الإصدار 8.74، تصل إلى p(1361911)، ومن المفترض أن تحصل الإصدارات ذات 4000 رقم على عدد أكبر بكثير).

انظر أيضاً

مراجع

ملحوظات

تتضمن الميزات الأساسية ما يلي:

  • الأعداد الأولية ذات الأرقام المتكررة القريبة، A(n)B، AB(n)، وUBASIC؛ كالدول، كريس ك.؛ مجلة الرياضيات الترفيهية، المجلد 22 (2) 101-109، 1990
  • يوباسيك: لغة بيسك مفتوحة المصدر للرياضيات؛ نيومان، والتر د.؛ إشعارات الجمعية الرياضية الأمريكية، مايو/يونيو 1989، المجلد 36، العدد 5، ص  557-559
  • تحديث UBASIC؛ نيومان، والتر د.؛ إشعارات الجمعية الرياضية الأمريكية، مارس 1991، المجلد 38، العدد 3، ص  196-197
  • 2 و 3 قديمان نوعًا ما، ويقول السيد نيومان "الملكية العامة" عندما كان ينبغي أن يقول "البرمجيات المجانية" (بدون شفرة المصدر).