يونيتي (لغة برمجة)
يونيتي هي لغة برمجة ابتكرها ك. ماني تشاندي وجاياديف ميسرا لكتابهما " تصميم البرامج المتوازية: أساس" . وهي لغة نظرية تركز على " ماذا " بدلاً من " أين " أو "متى " أو "كيف" . لا تحتوي اللغة على أي آلية للتحكم في تدفق البرنامج، وتُنفَّذ تعليمات البرنامج بطريقة غير حتمية حتى تتوقف عن إحداث تغييرات أثناء التنفيذ. وهذا يسمح بتشغيل البرامج إلى أجل غير مسمى، مثل أنظمة الطيار الآلي أو أنظمة أمان محطات الطاقة، بالإضافة إلى البرامج التي تنتهي عادةً (والتي تتقارب هنا إلى نقطة ثابتة ).
وصف
جميع العبارات عبارة عن عمليات إسناد ، وتفصل بينها فاصلة #. يمكن أن تتكون العبارة من عدة عمليات إسناد، على شكل أو . كما يمكن أن يكون لديك قائمة عبارات كمية ، حيث يتم اختيار x و y عشوائيًا من بين القيم التي تحقق التعبير . الإسناد الكمي مشابه. في ، يتم تنفيذ العبارة في وقت واحد لجميع أزواج و التي تحقق التعبير .a,b,c := x,y,za := x || b := y || c := z<# x,y : expression :: statement><|| x,y : expression :: statement>xy
أمثلة
فرز الفقاعات
تُرتّب المصفوفة باستخدام خوارزمية فرز الفقاعات عن طريق مقارنة الأرقام المتجاورة، وتبديلها إذا كانت بترتيب خاطئ.الوقت المتوقع،المعالجات والعمل المتوقع. السبب في أنك لا تملك سوىالوقت المتوقع ، هو الذي kيتم اختياره دائمًا بشكل عشوائي منيمكن إصلاح ذلك عن طريق قلبها kيدويًا.
برنامج فرز الفقاعات يعلن ن: عدد صحيح، أ: مصفوفة من الأعداد الصحيحة [0..n-1] بدءًا ن = 20 <|| i : 0 <= i and i < n :: A[i] = rand() % 100 > تعيين <# k : 0 <= k < 2 :: <|| i : i % 2 = k and 0 <= i < n - 1 :: A[i]، A[i+1] := A[i+1]، A[i] إذا كان A[i] > A[i+1] >> نهاية
فرز الترتيب
يمكنك فرزهاالوقت مع خوارزمية الترتيب. أنت بحاجة إلىالمعالجات، وعمل.
برنامج فرز الترتيب يعلن ن: عدد صحيح، A,R: مصفوفة من الأعداد الصحيحة [0..n-1] بدءًا ن = 15 <|| i : 0 <= i < n :: A[i], R[i] = rand() % 100, i > تعيين <|| i : 0 <= i < n :: R[i] := <+ j : 0 <= j < n and (A[j] < A[i] or (A[j] = A[i] and j < i)) :: 1 >> 8 <|| i : 0 <= i < n :: A[R[i]] := A[i] > نهاية
خوارزمية فلويد-وارشال
باستخدام خوارزمية فلويد-وارشال لأقصر مسار بين جميع الأزواج ، نقوم بتضمين العقد الوسيطة بشكل متكرر، ونحصل علىالوقت، باستخدامالمعالجات وعمل.
أقصر مسار في البرنامج يعلن n، k: عدد صحيح، D: مصفوفة من الأعداد الصحيحة [0..n-1, 0..n-1] بدءًا ن = 10 k = 0 <|| i,j : 0 <= i < n and 0 <= j < n :: D[i,j] = rand() % 100 > تعيين <|| i,j : 0 <= i < n and 0 <= j < n :: D[i,j] := min(D[i,j], D[i,k] + D[k,j]) > || k := k + 1 إذا كان k < n - 1 نهاية
يمكننا القيام بذلك بشكل أسرع. يحسب البرنامج التالي أقصر مسار بين جميع الأزواج فيالوقت، باستخدامالمعالجات وعمل.
برنامج shortestpath2 يعلن ن: عدد صحيح، D: مصفوفة من الأعداد الصحيحة [0..n-1, 0..n-1] بدءًا ن = 10 <|| i,j : 0 <= i < n and 0 <= j < n :: D[i,j] = rand() % 10 > تعيين <|| i,j : 0 <= i < n and 0 <= j < n :: D[i,j] := min(D[i,j], <min k : 0 <= k < n :: D[i,k] + D[k,j] >) > نهاية
بعد الجولة، D[i,j]يحتوي على طول أقصر مسار منلمن الطولفي الجولة التالية، ذات الطولوهكذا دواليك.
مراجع
- ك. ماني تشاندي وجياديف ميسرا (1988) تصميم البرنامج الموازي: الأساس . باستخدام UnityEngine؛
public class CarController : MonoBehaviour {
public float speed = 10f; public float turnSpeed = 50f;
void Update() { float move = Input.GetAxis("Vertical") * speed * Time.deltaTime; float turn = Input.GetAxis("Horizontal") * turnSpeed * Time.deltaTime; transform.Translate(0, 0, move); transform.Rotate(0, turn, 0); }}
- لغات البرمجة التجريبية
