به نام خدا
39-39 تولید برنامه از توصیف رسمی – نیمسال دوم
)49 خرداد5 (مهلت ارسال تا3 تمرین
39 اردیبهشت49
B تمرین های تئوری1
: تعریف شده استsequence ماشین زیر برای پردازش
.4
MACHINE Stacks (maxbuff, MESSAGE)
VARIABLES
leftbuf, rightbuf
INVARIANT
leftbuf: seq(MESSAGE) &
rightbuf: seq(MESSAGE) &
size(leftbuf)<=maxbuff &
size(rightbuf)<=maxbuff
INITIALISATION
leftbuf :=<> || rightbuf :=<>
OPERATIONS
push(xx)=
PRE xx: MESSAGE &
size(leftbuf)<maxbuff
THEN
leftbuf := [xx]^ leftbuf
END;
Shift=
PRE size(rightbuf)<maxbuff
THEN
LET hd
BE hd=last(leftbuf)
IN
rightbuf := [hd]^rightbuf ||
leftbuf := front(leftbuf)
END
END
END
.الف) سازگاری داخلی ماشین را بررسی و در صورت عدم سازگاری تغییرات الزم را اعمال نمایید
. اول بازگردانده شودsequence ب) عملی تعریف کنید که در آن طول
. اول اضافه کرده و نتیجه را برمیگرداندsequence دوم را به انتهایsequence پ) عملی تعریف کنید که
:ماشین زیر برای مدیریت فروش بلیت طراحی شده است
.2
MACHINE Ticket
VARIABLES
serve, next
INVARIANT
serve ∈ ℕ ∧ next ∈ ℕ ∧ serve ≤ next
INITIALISATION
serve, next := 0, 0
OPERATIONS
ss ← serve_next ≙
PRE serve<next
THEN
ss, serve := serve+1, serve+1
END
tt ← take_ticket ≙
PRE true
THEN
tt, next := next, next+1
END
END
: ماشین سازگاری داردinvariant الف) آیا عملیات زیر با
undo_serve ≙ serve := serve+1
.ب) ماشین را به گونهای تغییر دهید که بیشتر از یک حد مجاز بلیت صادر نکند
- این سیستم باید لیست ماشین.هدف در این تمرین طراحی یک ماشین مجازی برای مدیریت یک پارکینگ با ظرفیت محدود است
.9
:هایی که در حال حاضر در پارکینگ هستند را نگهداری کرده و دو عملیات زیر را داشته باشد
الف) عملیات ثبت ورود و خروج ماشین
ب) گزارش تعداد ماشینها در پارکینگ
:ماشین زیر را در نظر بگرید
MACHINE Bus
VARIABLES
tickets, passengers
INVARIANT
tickets ∈ ℕ ∧ passengers ∈ ℕ ∧ tickets ≤ passengers+1
INITIALISATION
tickets, passengers:= 0, 0
OPERATIONS
buy(mm) ≙
PRE tickets<passengers ∧ mm ∈ ℕ
THEN
tickets := tickets + mm
END
board(nn) ≙
PRE nn ∈ ℕ
THEN
passengers := passengers+1
END
END
.9
توصیفی کوتاه به زبان طبیعی از ماشین بنویسید و مشخص کنید کدام یک از عملیاتها با invariantسازگار نیستند .تغییرات الزم را
برروی عملیاتها را انجام دهید.
.5
ماشین زیر را در نظر بگیرید:
)MACHINE Info(ITEM, sample, num
CONSTRAINTS
)sample ∈ ITEM ∧ num ∈ ℕ ∧ num > card(ITEM
CONSTANTS storage
PROPERTIES
storage ∈ ℕ1 ∧ storage < num
VARIABLES
current, next, counter
INVARIANT
current ⊆ ITEM ∧ next ∈ ITEM ∧ next ∉ current
∧ counter ∈ ℕ1 ∧ counter ≤ num
INITIALISATION
current, next, counter := {}, sample, 2
OPERATIONS
≙ )input(nn
PRE nn ∈ ITEM ∧ nn ∉ current
THEN
}next, current := nn, current ∪ {next
END
≙ nn ←output
}{ ≠ PRE current
THEN
}nn , current := next, current ∪ {next
END
≙ increment
PRE counter< storage
THEN counter:= counter+1
END
END
قواعد سازگاری را برای این ماشین بررسی و ناسازگاریهای احتمالی را مشخص کنید.
.6
در این تمرین ،هدف طراحی یک ماشین مجازی برای مدیریت یک شرکت کوچک ارسال کاال به مشتریان است .این شرکت دارای
یک اتومبیل برای ارسال کاال به مشتریان است .این سیستم باید قابلیت نگهداری آدرسها و کاالهای مربوطه را که باید ارسال آنها
انجام شود ،داشته باشد .همچنین ممکن است آدرسهایی وجود داشته باشد که فعال امکان سرویسدهی به آنها مقدور نیست .این
آدرسها در مجموعهای به نام not_supportedذخیره میشوند .اگر کاالیی برای برای ارسال ثبت شده باشد که آدرس آن در این
مجموعه باشد ،کاال نمیتواند ارسال شود.
در ابتدا ماشین ارسال خالی است و مجموعه not_supportedممکن است هر آدرسی در آن وجود داشته باشد.
عملیات زیر برای این ماشین مفروض است:
الف) :loadاضافه کردن یک آدرس و یک کاال برای ارسال
ب) :dropرساندن یک کاالی خاص به آدرس مربوطه
ج) :returnبرگرداندن کاالهایی که آدرس آنها مقدور نیست.
د) :deliv_unsupportاضافه کردن یک آدرس به not_supportedکه قبال ارسال به آن میتوانست انجام گیرد.
موفق باشید.
© Copyright 2026 Paperzz