5.1.1. שפת תוכניות while

נגדיר את השפה על ידי כלל הגזירה הבא:

plot:$S::
 & x: = e|skip|{S_1};{S_2}|{\text{if }}B{\text{ then }}{S_1}{\text{ else
 }}{S_2}{\text{ fi}}|{\text{while }}B{\text{ do }}S{\text{ od}}$

הפעולות:

  1. plot:$x: = e$ - הצבה.
  2. plot:$skip$ - פקודה שאינה עושה דבר. (שימושי למשל בתנאי ה-if הדורשים לפי התחביר else, ולא בכל מקרה נרצה לבצע פעולה במקרה כזה).
  3. plot:${S_1};{S_2}$ - שרשור של שתי פקודות אחת אחרי השניה.
  4. plot:${\text{if }}B{\text{ then }}{S_1}{\text{ else }}{S_2}{\text{ fi}}$ - משפט תנאי. כל חלקי המשפט הם חובה.
  5. plot:${\text{while }}B{\text{ do }}S{\text{ od}}$ - לולאה.

כאשר:

  • B הינו תנאי בוליאני מעל משתני התוכנית.
  • plot:$skip,x: = e$ הינן פעולות אטומיות. שאר הפעולות הינן פעולות מורכבות.

מכיוון ששפת התכנות מודולרית אנחנו יכולים להשתמש במערכת הוכחה מודולרית.

סמנטיקה אופרטיבית של תוכניות while:

  • plot:$\sigma $ הינו מצב התוכנית, פונקציה בין משתני התוכנית לערכיהם.
  • קונפיגורציה plot:$C =
      \left\langle {{S_i},\sigma } \right\rangle $ כאשר plot:${S_i}$ היא תוכנית while, ומתארת את המשך החישוב  (בכל רגע plot:${S_i}$ היא יתרת התוכנית לביצוע).
  • עבור הגדרת הסמנטיקה נגדיר תוכנית ריקה E המקיימת: plot:$S;E = E;S = S$. התוכניתplot:$E$ היא תוכנית שאינה עושה דבר – אם נשרשר אותה לפני או אחרי תוכנית אחרת כלשהי, נקבל את אותה תוכנית.
  • קונפיגורציה עוצרת היא קונפיגורציה מהצורה plot:$\left\langle {E,\sigma } \right\rangle $.

אין תגובות!
שיתוף:
| עוד