رمز زائف من بعض البرامج التعليمية لمعهد ماساتشوستس للتكنولوجيا

StackOverflow https://stackoverflow.com/questions/1426840

  •  07-07-2019
  •  | 
  •  

سؤال

لم تكن لدي حاجة ماسة لكتابة كميات كبيرة من الأكواد الزائفة الرسمية ولكن ظهرت الحاجة لذلك، لذلك فكرت في اختيار بعض المعايير من أجل البقاء متسقًا عبر الأكواد البرمجية.

ولهذا الغرض، التقطت بعض مقاطع الفيديو التعليمية لبرنامج "iTunes U"، من بين أشياء أخرى 6.046J / 18.410J مقدمة في الخوارزميات (SMA 5503).

في أول فيديو للمحاضرة، يكتب المحاضر نوع الإدراج على السبورة، ويكتب ما يلي:

Insertion-Sort(A, N) // Sorts A[1..n]
  for j ← 2 to n
    do key ← A[j]
      i ← j-1
      while i > 0 and A[i] > key
        do A[i+1] ← A[i]
          i ← i-1
      A[i+1] ← key

لذا أسئلتي:

  • لماذا i ← j-1 متى A[i+1] = key؟ذلك هو السبب في بعض الحالات، و = في آخر؟لاحظ أنه في الكود أعلاه، يتم استخدامه للأخير أيضًا، ولكن في النشرات المتوفرة على الويب، = تم استخدامه، هل هذا مجرد خطأ مطبعي؟(أفترض ذلك)
  • والأهم لماذا do key ← A[j] متى i ← j-1؟ما هو خاص جدًا لدرجة أنه يتطلب أ do الأمر من هذا القبيل، والمسافة البادئة؟

بمعنى آخر، لماذا لم تتم كتابة الكود الزائف أعلاه على هذا النحو (مع أبرز ما لدي):

Insertion-Sort(A, N) // Sorts A[1..n]
  for j ← 2 to n
    key ← A[j]                  <-- lost the do here
    i ← j-1                     <-- no indentation
    while i > 0 and A[i] > key
      A[i+1] ← A[i]             <-- lost the do here
      i ← i-1                   <-- no indentation
    A[i+1] ← key

السؤال الأخير:هل لدى أي شخص معيار الكود للحصول على رمز زائف مفيد في مكان ما؟هدفي الرئيسي هو الاتساق، بحيث يتعين علي "تعليم" المتلقين مرة واحدة فقط.

هل كانت مفيدة؟

المحلول

الإنجليزية المنظمة هي لغة كود زائفة "موحدة".

نصائح أخرى

يعمل السهم كـ = في الكود العادي.

علامة المساواة الزائفة بمثابة == في الكود العادي

لذا j <- 1 يقصد j = 1

و j = 1 يقصد if( j == 1)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top