מערכות מידע

Download Report

Transcript מערכות מידע

‫תרשים מצבים‪Statecharts-‬‬
‫נוסחא חזותית‬
‫‪‬‬
‫‪‬‬
‫‪ Statecharts‬הוא פורמאליזם ויזואלי המאפשר לתאר‬
‫תבנית התנהגותית של מערכות מורכבות‪.‬‬
‫‪ Statecharts‬פותחו ע”י דוד הראל‪.‬‬
‫]‪rest[break‬‬
‫‪Employee‬‬
‫‪Resting‬‬
‫‪work /punch card‬‬
‫‪Working‬‬
‫מצבים‬
‫לדוגמא‪ :‬די‪.‬וי‪.‬די יכול להיות במצב המתנה‪ ,‬מצב נכן‪ ,‬המתן וכו'‬
‫‪‬‬
‫‪‬‬
‫כל רכיב‪ ,‬או עצם במערכת יכול להיות במצב מסוים בזמן נתון‪ .‬כל רכיב‬
‫למשל כאשר ‪ DVD‬מחובר אין בו פעילות כאשר הוא מנגן‬
‫שוהה במצב פרק זמן מסוים‪.‬‬
‫הוא פעול‬
‫שם של מצב הנו ישות לוגית והוא אינו מתאר פעילות‪ .‬בזמן היות העצם‬
‫במצב הוא יכול לבצע פעילות (‪ )Activity‬הניתנת להפרעה‪ .‬יש לתאר‬
‫במפורש את הפעילות המתבצעת במצב‪.‬‬
‫כאשר מתארים מצב שיש בו פעילות יש‬
‫צריך לתאר את הפעילויות באותם הוא‬
‫מבצע‪.‬‬
‫רובוט‬
‫מצבים בהם הרובוט יכול להיות‬
‫שם מצב‪:‬‬
‫שם מצב‪:‬‬
‫בטל‬
‫נע לעבר המדפים‬
‫נוטל רכיב‬
‫נע לעבר הדלפק‬
‫יש ‪ 4‬מצבים שהרובוט‬
‫(במחסן אוט') יכול‬
‫להימצא בהם‬
‫לדוגמא‪:‬‬
‫פעולות במכונת‬
‫כביסה יכולה להיות‬
‫סיבוב מהיר של‬
‫התוף (מצב סחיטה)‬
‫פעילות‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מתבצעת במצב‪.‬‬
‫יכולה להיות רציפה (הצגה תמונה) או סדרתית‬
‫אורכת זמן‬
‫שם מצב‬
‫‪Take an item‬‬
‫‪State1‬‬
‫‪do: take‬‬
‫‪do:activity‬‬
‫שם הפעולה‬
‫‪ Do‬קבוע בתחביר‬
‫תיאור פעולה‬
‫מעברים‬
‫‪‬‬
‫בין מצבים‬
‫הקשר בין מצב למצב נעשה באמצעות מעבר שקורה בנקודת‬
‫זמן‪ .‬מעבר מסומן כחץ‪.‬‬
‫מעבר יכול להכיל מזניק (‪ )trigger‬ופעולה (‪.)Action‬‬
‫המזניק מכיל אירועים ותנאים המתנים את קיום המעבר‪.‬‬
‫פעולה הנה יחידה אטומית (אינה ניתנת להפרעה) המתבצעת‬
‫בעת במעבר (כאשר האירוע קורה ובאם התנאי מתקיים)‪.‬‬
‫כלומר מעבר זהו משהו שלא לוקח זמן‪ .‬למשל מכונת כביסה עוברת לסחיטה באופן נקודתי‬
‫הדק‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫תיאור המעבר ממצב למצב‬
‫מזניק מכיל שני דברים‪ :‬אירוע‬
‫ותנאי‬
‫מדבילים בין‬
‫פעולה‬
‫ולפעילות‬
‫מצב‪2‬‬
‫‪Trigger‬‬
‫‪event [condition] /action‬‬
‫מידי וקצר‪ :‬לדוגמא‪:‬‬
‫הפעל את משאבת‬
‫המים‬
‫במעבר יש פעולה‬
‫קצרה במצבים‬
‫יכולים להיות מס'‬
‫פעולות‬
‫מתאר משהו‬
‫מתמשך‬
‫מצב‪1‬‬
‫מזניק‬
‫‪‬‬
‫המזניק מכיל אירועים ותנאים המתנים את קיום המעבר‪ .‬בין‬
‫האירועים והתנאים יכולים להופיע יחסים לוגיים של ‪.AND, OR‬‬
‫המזניק מקבל ערך ‪ TRUE‬או ‪.FALSE‬‬
‫‪‬‬
‫אירוע הוא שינוי במערכת (יצירת עצם‪ ,‬ביטול עצם‪ ,‬שינוי במצב‬
‫עצם‪ ,‬תחילה או סיום של פעילות‪ ,‬קבלת פקודה או הודעה)‪.‬‬
‫דוגמא‪ :‬הגיע למדפים‪ .‬מזניק אינו חייב להכיל אירוע‪.‬‬
‫‪‬‬
‫תנאי הוא הצהרה לוגית לגבי מצב של העצם‪ .‬תנאי יסומן ע”י‬
‫סוגרים מרובעים‪ .‬דוגמא‪[ :‬האור ברמזור ירוק]‪.‬‬
‫‪‬‬
‫תנאי שאין לפניו אירוע ייבדק אך ורק עם סיום הפעילות במצב‪ .‬אם‬
‫אין במצב פעילות‪ ,‬התנאי ייבדק עם הכניסה למצב‪.‬‬
‫אירוע אומר שינוי במערכת‬
‫כמו לחיצה על ‪ pay‬או‬
‫‪pause‬‬
‫אם קמתי ב ‪ 6‬ע"י שעון מעורר אז ‪:‬‬
‫האירוע ‪ :‬השעון הגיע לשעה ‪6‬‬
‫תנאי‪ :‬השעון דרוך אז השעון יצלצל‬
‫סוגי אירועים‬
‫‪.1‬‬
‫אירועים עם שמות‪:‬‬
‫‪.reset, a, e, call‬‬
‫אירועים המודיעים על התחלת פעילות‪:‬‬
‫הודעה על תחילת הפעולה‪ :‬בדר"כ כאשר אח"כ‬
‫)‪.started(A), stopped(A‬‬
‫רוצים להתחיל אירוע נוסף‬
‫אירועים המודיעים על תחילת קיום תנאי‪:‬‬
‫)‪.true(c), false(c‬‬
‫אירועים המודיעים על כניסה למצב‪:‬‬
‫)‪.entered(S), exited(S‬‬
‫אירועים המודיעים על פסק זמן‪ :‬המערכת נכנסה ויצאה ממצב מסויים‬
‫)‪ ,tm(e, n‬כאשר ‪ e‬הוא אירוע ו‪ n -‬פרק‬
‫זמןבשניות)‬
‫(‬
‫למשל‪ :‬הדלק אור כבה אור‬
‫‪.2‬‬
‫‪.3‬‬
‫תנאי מסוים‬
‫להפסיק להתקיים‬
‫‪.4‬‬
‫תנאי מסוים להתקיים‬
‫לדוגמא‪ :‬כשמתחילה‬
‫הסחיטה במכונת כביסה‬
‫המשאבה תקבל הודעה‬
‫להתחיל לפעול‬
‫למשל‪ :‬השעון הגיע להשעה‬
‫מסויימת‬
‫השהיות‬
‫‪.5‬‬
‫מספר שניות‬
‫אירוע‬
‫‪time‬‬
‫)‪ Tm(3‬אומר שנמצאים במצב ‪ 3‬שניות ואז יוצאים ממנו (כמו קביעת תחנות ברדיו המכונית‬
‫למשל‪ :‬באזעקה ביתית אם היא דרוכה‬
‫ומישהו נכנס אז תוך ‪ 30‬שניות היא מתחילה‬
‫לצפצף‪.‬‬
‫דוגמא נוספת‪ :‬השהיית המזגן‪ -‬מרגע‬
‫הלחיצה (האירוע) עובר פסק זמן מסוים עד‬
‫לתחילת הפעולה‬
‫סוגי תנאים‬
‫נשוא‬
‫נושא‬
‫‪ .1‬נשוא (‪.)Predicate‬‬
‫‪ ,in(S) .2‬כאשר ‪ S‬הוא מצב‪.‬‬
‫‪ ,active(A) .3‬כאשר ‪ A‬היא פעילות‪.‬‬
‫הילד יפה‬
‫נושא‬
‫נשוא‬
‫החשמל פועל‬
‫סוגי פעולות (‪)Actions‬‬
‫‪ .1‬יצירת אירוע עם שם‪.‬‬
‫‪ .2‬השמה למשתנה (‪.)x:=x+1‬‬
‫‪ .3‬התחלת פעילות ‪.start(A), stop(A) -‬‬
‫‪ .4‬מחיקת היסטוריה – ‪.clh‬‬
‫‪ .5‬שרשור פעולות בטור (‪.)a;x:=x+1‬‬
‫לא לוקח זמן‬
‫ההבדל בין תנאי ואירוע‬
‫מצב ‪ :3‬האדם‬
‫נמצא על הרכבת‬
‫הוספת הקו הזה‬
‫הוא המידול הנכון‬
‫של התהליך‬
‫אירוע‪ :‬הרכבת נכנסה‬
‫והאדם עליה עלה עליה‬
‫אירוע‪ :‬נכנס‬
‫לתחנה‬
‫]‪[c‬‬
‫‪S3‬‬
‫‪Entered C‬‬
‫‪E1‬‬
‫‪S2‬‬
‫מצב ‪ 1‬האדם הולך‬
‫לתחנת רכבת‬
‫‪S1‬‬
‫אירוע‪ :‬הרכבת כבר‬
‫נמצאת ברכבת לפני‬
‫כניסת האדם‬
‫‪S3‬‬
‫]‪[C‬‬
‫‪E1‬‬
‫‪S2‬‬
‫‪S1‬‬
‫התנאי נבדק בסוף‬
‫פעולה ‪s2‬‬
‫‪‬‬
‫הוספנו את התנאי ]‪[c‬כדי לאפשר ‪ 2‬מצבים‪:‬‬
‫מה קורה כאשר ‪ C‬נהפך ל‪ TRUE-‬לפני שקרה ‪?E1‬‬
‫‪.1‬כשהרכבת בתחנה כשהאדם עולה‬
‫‪.2‬האדם ממתין לרכבת‬
‫מעבר מאופשר‪ -‬זאב‪" :‬לא נכנס לזה"‬
‫‪ ‬מעבר ‪ Ti‬נקרא מאופשר אם העצם נמצא במצב‬
‫המקדים למעבר ‪.Ti‬‬
‫‪S2‬‬
‫]‪E1 [C1‬‬
‫‪S1‬‬
‫‪ ‬מעבר מאופשר יופעל עם הפעלת המזניק שלו‪.‬‬
‫דוגמא‬
‫אם רוצים לרשום את הפעולות שהמצבים‬
‫עושים צריך לרשום למטה‪do….. :‬‬
‫‪ 3‬פעולות שמתרחשות יחד‬
‫מצב שני‬
‫שם מצב‬
‫נוטל רכיב‬
‫אירוע‬
‫‪actions‬‬
‫מצב ראשון‬
‫למדפים‬
‫לעבר המדפים‬
‫הפסק פעולת מנוע‪ .‬שים בלם‪ .‬הפעל זרוע‪ /‬הגיע נע‬
‫מעבר‬
‫=‬
‫‪+‬‬
‫פעולה‬
‫מזניק‬
‫יתחיל לנוח אם הוא נמצא במצב של הפסקה אז הוא עובר למצב‬
‫של מנוחה‪ .‬אבל אם הוא נח ואין מצב של הפסקה הוא לא נכנס‬
‫למצב מנוחה (כמו ‪ Pouse‬ו ‪stop‬‬
‫]‪rest[break‬‬
‫‪Employee‬‬
‫‪Resting‬‬
‫‪Working‬‬
‫‪work /punch card‬‬
‫מעבר‪ :‬ברגע שהוא מתחיל אירוע לעבוד אז הוא דופק‬
‫כרטיס‬
‫מצבים התחלתיים וסופיים‬
‫אם בתור של השחור הוא אומר שח מת אז כאשר‬
‫המגיע התור של הלבן השחור מנצח‬
‫בררת מחדל‪ :‬שהתחלשת‬
‫המשחק היא שהלבן מתחיל‬
‫מצבים סופיים‬
‫‪checkmate‬‬
‫‪Black wins‬‬
‫‪stalemate‬‬
‫‪white‬‬
‫‪moves‬‬
‫‪Draw‬‬
‫‪White’s‬‬
‫‪turn‬‬
‫העברת‬
‫תור‬
‫מאחד‬
‫לשני‬
‫‪stalemate‬‬
‫‪White wins‬‬
‫‪checkmate‬‬
‫‪Black’s‬‬
‫‪turn‬‬
‫משחק שח‬
‫‪start‬‬
‫‪black‬‬
‫‪moves‬‬
‫מעבר התחלתי‪ /‬מעבר ברירת מחדל‬
‫‪ ‬המעבר ההתחלתי מציין שברירת המחדל היא‬
‫להיכנס למצב ‪ .S2‬מעבר התחלתי הוא מעבר‬
‫חסר מזניק שיוצא ממצב התחלתי‪.‬‬
‫מתחיל ב ‪(s2‬לא מגיעים ל ‪s1‬‬
‫‪E2‬‬
‫‪S3‬‬
‫‪E1‬‬
‫‪S2‬‬
‫‪S1‬‬
‫מעברים — המשך‬
‫כניסה ויציאה לאותו מצב‬
‫‪ ‬מעבר יכול לצאת ולהיכנס חזרה לאותו מצב‪.‬‬
‫פעולה‬
‫עם הכניסה למצב ‪2‬‬
‫נותנים ל‪ c -‬את הערך‬
‫אפס‬
‫‪/ c=0‬‬
‫האירוע ‪ –E2‬מוציא ומכניס אותנו מהמצב‬
‫והפעולה סופרת כמה פעמיים נכנסנו ל ‪s2‬‬
‫(כל פעם הפרמטר ‪ c‬עולה ב ‪1‬‬
‫יש תכונות מחשב שלא מקבלות‬
‫פעולות על ברירת המחדל‬
‫‪E2 / c++‬‬
‫‪S2‬‬
‫פעילות ‪ -‬דוגמא‬
‫מצב הנקרא ‪ resting‬בתוכו יש מצבים‬
‫אחרים‪ -‬זהו מצב של קינון‪.‬‬
‫אנו צריכים לסמן איפה המערכת מתחילה (רק בפנים‬
‫מסומן)‬
‫‪Employee‬‬
‫‪Resting‬‬
‫‪doing nothing‬‬
‫]‪rest[break‬‬
‫‪Working‬‬
‫‪do: shovel‬‬
‫‪Cleaning‬‬
‫‪do: wash hands‬‬
‫‪work‬‬
‫‪Empty transition‬‬
‫זהו מעבר ריק‪-‬אנו‬
‫עוברים ממצב רק‬
‫בגמר הפעילות‬
‫מתחיל לעבוד כשיש הפסקה עוברים‬
‫ל ‪ resting‬וכשחוזרים לעבוד חוזרים‬
‫ל ‪working‬‬
‫מעבר ריק‬
‫‪ ‬מעבר ריק יתבצע כאשר הפעילות שמתבצעת‬
‫במצב המקדים לו (אם יש כזאת) הסתיימה‪.‬‬
‫כאן אנחנו נעבור ממצב ‪ 1‬רק כאשר‬
‫הפעילות הסתיימה ולא לפני‬
‫‪S1‬‬
‫בצע‪ :‬פעילות‬
‫‪S2‬‬
‫‪ ‬המעבר שלמטה יפסיק את הפעילות‪.‬‬
‫כאן אנחנו נעבור מהמצב ‪S1‬‬
‫כאשר המעבר ‪ E1‬יפסיק את‬
‫הפעילויות במצב ולא בהכרח‬
‫כאשר הפעילות במצב הסתיימה‬
‫‪E1‬‬
‫‪S2‬‬
‫‪S1‬‬
‫בצע‪ :‬פעילות‬
‫• אם במצב לא תהייה פעילות ויש‬
‫לנו מעבר ריק אז מיד כשנכנסנו למצב‬
‫אנחנו נצא ממנו ונכנס למצב הבא‪-‬‬
‫כלומר פעולות שהסתיימו ללא‬
‫הקצבת זמן‬
‫חוסר דטרמיניזם‬
‫‪ ‬אם שני מעברים היוצאים מאותו מצב מקדים‬
‫מאופשרים באותו רגע‪ ,‬אחד מהם יתבצע באופן‬
‫לא דטרמיניסטי‪.‬‬
‫יש כאן מצב כשהפעולה ‪ s1‬מסתיימת יש ‪ 2‬אפשרויות‪:‬‬
‫מעבר ל ‪S2‬דרך אירוע ‪e1‬‬
‫‪.1‬‬
‫‪.2‬‬
‫מעבר ישיר ל ‪s3‬‬
‫‪E1‬‬
‫‪S2‬‬
‫נפתור את בעיה זו ע"י הצבת התנאי ‪ c1‬ואם התנאי מתקיים נעבור ל‬
‫‪ S3‬ועם הוא לא נעבור למצב ‪S2‬‬
‫‪S1‬‬
‫]‪[C1‬‬
‫‪S3‬‬
‫דוגמא‪ :‬רמזור בצומתז‬
‫אם יש מכוניות שרוצות לפנות‬
‫שמאלה‬
‫)‪ - Tm(n‬סימן לזמן כאשר יש אירוע‬
‫‪ E‬במשך ‪ N‬שניות‬
‫אורך האור הירוק‬
‫הוא ‪ n‬שניות‬
‫צפון‪/‬דרום נוסעים ישר‬
‫‪N/S may‬‬
‫‪turn left‬‬
‫]‪tm(n) [cars in N/S left lanes‬‬
‫‪tm(n) [no cars in‬‬
‫]‪N/S left lanes‬‬
‫)‪tm(n‬‬
‫אחרי ‪ n‬שניות נעבור‬
‫למצב‬
‫אם התנאי‬
‫מתקיים אנו‬
‫ממשיכים‬
‫‪E/W may go‬‬
‫‪straight‬‬
‫אין מכוניות בנתיב‬
‫השמאלי‬
‫‪tm(n) [no cars in‬‬
‫]‪E/W left lanes‬‬
‫]‪tm(n) [cars in E/W left lanes‬‬
‫‪N/S may go‬‬
‫‪straight‬‬
‫)‪tm(n‬‬
‫‪E/W may‬‬
‫‪turn left‬‬
‫לצלם מלימור‬
‫ קו טלפון‬:‫דוגמא‬
on hook
on hook
Idle
‫הרמת שפרפרת‬
‫מצב השמעת צליל‬
‫חיוג‬
on hook
off hook
Dial tone
do: sound dial tone
digit (n)
Busy tone
do: sound busy tone
Time out
digit (n)
invalid number
Dialing
valid number
busy
Recorded
message
do: play message
Connecting
do: find connection
on hook
on hook
routed
message done
Ringing
on hook / disconnect line
on hook
time out
time out
Connected
called phone answers
/ connect line
called phone hangs up
/ disconnect line
Disconnected
‫‪ push F‬מעביר למצב קדימה ואז ברירת‬
‫המחדל שלי היא להתחיל בהילוך ראשון‬
‫קינון מצבים והכללה‬
‫בררת המחדל של‬
‫המערכת היא להיות ב‬
‫‪neutral‬‬
‫‪Push R‬‬
‫‪Reverse‬‬
‫קינון ‪ ‬מצב המורכב‬
‫ממספר מצבים‬
‫‪Transmission‬‬
‫‪Neutral‬‬
‫‪Push N‬‬
‫‪Push F‬‬
‫‪Push N‬‬
‫לא משנה באיזה הילוך קדמי אנו‬
‫נמצאים כאשר אנו לוחצים על‬
‫‪ push N‬אנו מגיעים ל ‪neutral‬‬
‫‪Forward‬‬
‫‪upshift‬‬
‫‪Third‬‬
‫‪stop‬‬
‫‪upshift‬‬
‫‪First‬‬
‫‪Second‬‬
‫‪downshift‬‬
‫‪downshift‬‬
‫קינון המצבים ראשון‪ ,‬שני ושלישי משיג הכללה וחוסך במעברים‪.‬‬
‫המעבר ל ‪ N‬ממצב ‪ F‬דומה בראשון שני ושלישי ולכן הם במצב קינון‪‬‬
‫יש חץ אחד במקום שלושה‬
‫‪Stop‬יצוא מהיקף המלבן כי‬
‫ברגע שהגעתי ל‪ stop‬לא‬
‫חשוב באיזה הילוך אני נמצא‬
‫אני עובד להילוך ראשון‪.‬‬
‫בגלל שהוא יוצא מהיקף‬
‫המלבן אז הוא קשור לכל‬
‫המצבים בקינו וניתן להגיע‬
‫אליו מכל ההילוכים‬
‫הקינון כאן חוסך לנו חזרה על מעברים‬
‫דומים‪ ,‬למשל אם לא היה לנו קינון היינו‬
‫צריכים עוד שני חצים נוספים של ‪push N‬‬
‫בררת המחדל‬
‫של המצב היא‬
‫‪first‬‬
‫קינון מצבים — דוגמא נוספת‬
‫אם היינו רוצים לתת הפסקה לעובד בין‬
‫‪ 9:00‬ל ‪: 9:10‬‬
‫‪working‬‬
‫)‪True (t=9:10‬‬
‫)‪True (t=9:00‬‬
‫‪Min/min++‬‬
‫עובד יכול להיות בשני מצבים או בעבודה או‬
‫בבית‬
‫‪resting‬‬
‫‪Employee‬‬
‫תנאי‪ :‬נבדוק את התנאי כאשר‬
‫הפעילות מסתיימת (אם אין פעילות‬
‫אז ברגע תחילת מצב)‬
‫‪At home‬‬
‫‪do: sleep‬‬
‫אם הוא קם בבוקר אז הוא‬
‫‪Working‬‬
‫הולך לעבוד‬
‫]‪[In morning‬‬
‫‪do: shovel‬‬
‫]‪rest [break‬‬
‫]‪[In evening‬‬
‫תנאי אם הוא מתחיל לנוח‬
‫ב\זמן הפסקה אז הוא הולך‬
‫למנוחה‬
‫כאשר גומרים לרחוץ ידיים בודקים או ערב‪ .‬אם‬
‫זה ערב אז הולכים הביתה ואם לא אז לא‬
‫עושים כלום‬
‫]‪[evening arrived‬‬
‫‪doing nothing‬‬
‫מכיוון שאין כאן פעילות לא נבדוק כאן‬
‫אם הגיע ערב או לא ולכן ניתן להוסיף‬
‫עוד אירוע ‪evening arrived‬‬
‫‪At Work‬‬
‫‪work/‬‬
‫‪punch card‬‬
‫‪Resting‬‬
‫‪Cleaning‬‬
‫‪do: wash hands‬‬
‫בררת מחדל במנוחה היא הניקוי‬
‫כניסות ויציאות ממצבים מקוננים‬
‫‪‬‬
‫כניסה‪/‬יציאה ל‪/‬מתת‪-‬מצב של מצב‪-‬העל ‪( A‬מבלי לפרט ברמה‬
‫זו)‪.‬‬
‫מצב מורכב שאנו לא רוצים לפרט את מה שקורה בתוכו‪ .‬אנו נפרט את‬
‫מה שהולך בתוכו בתרשים אחר‬
‫‪a‬‬
‫‪A‬‬
‫‪b‬‬
‫היסטוריה‬
‫‪‬‬
‫‪‬‬
‫‪ - H‬חזרה למצב‪-‬העל האחרון (‪ F‬או ‪– )G‬היסטוריה רדודה‬
‫*‪ - H‬חזרה לרמת הקינון העמוקה ביותר ( ‪ -)A-D‬היסטוריה‬
‫עמוקה‬
‫מצב ‪ k‬מורכב מה ‪ g‬ו ‪F‬‬
‫‪F‬‬
‫‪G‬‬
‫‪C‬‬
‫‪A‬‬
‫‪D‬‬
‫‪B‬‬
‫‪K‬‬
‫‪H‬‬
‫מעבר מ ‪ e‬ל ‪ K: K‬מורכב משני מצבים ‪ a :‬ו ‪B‬‬
‫‪ H‬אומרת שאם הייתי לאחרונה ב ‪ A‬או ‪ B‬אז היסטוריה רדודה תחזיר אותי ל‪ G‬ובתוך ‪ G‬ל ‪ .B‬ואם היית לאחרונה ב‬
‫‪ C‬או ב ‪ D‬אז היסטוריה רדודה תחזיר אותי ל‪ F‬ובתוך ‪ F‬ל ‪C‬‬
‫אם היה *‪ H‬אז הייתי חוזר בדיוק לאותו מצב שהייתי בו ולא לבררת מחדל‬
‫‪E‬‬
‫אם היינו לאחרונה ב ‪ B‬או ‪ D‬אז ההיסטוריה‬
‫הרדודה תחזיר אותנו ל ‪ G‬או ל ‪ F‬ובהם אל ברורות‬
‫המחדל שלהן‬
‫היסטוריה — המשך‬
‫אם יש התנגשות בין היסטוריה‬
‫לבררת מחדל אז היסטוריה‬
‫"מנצחת"‬
‫‪K‬‬
‫‪F‬‬
‫אם היינו לאחרונה ב ‪ C‬אז נלך ל ‪ C‬או‬
‫ואם היינו לאחרונה ב ‪ D -‬אז נחזור ל‬
‫‪( .D‬אם לא היינו לאחרונה ב ‪ F‬בכלל‬
‫אז בררת נלך לבררת המחדל שלנו)‬
‫‪‬‬
‫‪G‬‬
‫‪H‬‬
‫‪C‬‬
‫‪A‬‬
‫‪D‬‬
‫‪B‬‬
‫‪H‬‬
‫‪E‬‬
‫הסטוריה רדודה אם היינו‬
‫לאחרונה ב ‪ F‬אז נחזור ל ‪F‬‬
‫ואם היינו ב ‪ G‬נחזור ל ‪G‬‬
‫נחזור למצב‪-‬העל האחרון בו ביקרנו‪ F ,‬או ‪ ,G‬ואם ל‪F-‬‬
‫אז גם בו למצב האחרון בו ביקרנו‪ .‬אם זו הפעם‬
‫הראשונה בה בקרנו ב‪ F-‬אזי ניכנס למצב ההתחלתי‪,‬‬
‫‪.C‬‬
‫מצבים מקביליים‬
‫מספר המצבים של כל המכונית הוא מכפלה קרטזית של מצבי רכיביה )‪(3X5X2X2‬כך שהמקביליות משיגה חסכון רב‬
‫במספר המצבים‪.‬‬
‫שימו לב שיש תקשורת בין רכיבים‪ .‬רכיב ההתנעה תלוי ברכיב ההילוכים‪.‬‬
‫אנו ננתח את בנפרד כל רכיב ורכיב‬
‫התנאי אומר שיש קשר בין הנעה לתיבת הילוכים בכך שאם רוצים להתניע צריך להיות‬
‫ונוטרל (הנעה ותיבת הילוכים הם מצבים מקבילים‬
‫‪turn key to start‬‬
‫‪[Transmission‬‬
‫]‪in Neutral‬‬
‫‪Ignition‬‬
‫‪release key‬‬
‫‪On‬‬
‫‪Off‬‬
‫‪Starting‬‬
‫‪turn key off‬‬
‫סימון למצבים‬
‫מקבילים‬
‫‪Transmission‬‬
‫‪Push R‬‬
‫‪Neutral‬‬
‫‪Reverse‬‬
‫‪Push N‬‬
‫‪Push F‬‬
‫‪Push N‬‬
‫‪Forward‬‬
‫‪upshift‬‬
‫‪Third‬‬
‫‪upshift‬‬
‫‪First‬‬
‫‪Second‬‬
‫‪downshift‬‬
‫‪downshift‬‬
‫‪Brake‬‬
‫‪depress‬‬
‫‪On‬‬
‫‪depress‬‬
‫‪Off‬‬
‫‪stop‬‬
‫‪On‬‬
‫‪release‬‬
‫‪Off‬‬
‫‪release‬‬
‫‪ 4‬מצבים מקבילים נפרדים אי אפשר לחבר בניהם‬
‫‪Accelerator‬‬
‫מס' המצבים ‪2*3=6‬‬
‫מצבים מקביליים ‪ -‬חסכון בהצגה‬
‫אם אנו נמצאים במצב‬
‫שימוש במצבים‬
‫מקבילים‬
‫אם אנו במצב ‪ CG‬אז אנו נעבור למצב ‪BG‬‬
‫‪m‬‬
‫אם אנו במצב ‪ BE‬אז נעבור ל ‪( BG‬במצב למדה)‬
‫‪d‬‬
‫‪a‬‬
‫‪a‬‬
‫‪D‬‬
‫‪E‬‬
‫‪F‬‬
‫כאשר אנו מצב‬
‫‪b‬‬
‫‪A‬‬
‫‪B‬‬
‫‪g‬‬
‫‪b‬‬
‫‪a‬‬
‫)‪(in G‬‬
‫‪G‬‬
‫אם נמצאים במצב ‪ BE‬אז עוברים למצב ‪.CE‬‬
‫‪C‬‬
‫אם אנו נמצאים ב מצב ‪ BF‬אז אנו עוברים למצב ‪.CG‬‬
‫אם אנו נמצאים במצב ‪ BG‬אז אנו עוברים למצב ‪CG‬‬
‫ללא שימוש‬
‫במצבים מקבילים‬
‫‪d‬‬
‫‪B,F‬‬
‫‪B,G‬‬
‫לפי המעברים האפשריים ללא שימוש במצבים מקבילים ננסח את‬
‫השימוש במצבים המקבילים‪:‬‬
‫‪b‬‬
‫‪a‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.3‬‬
‫‪g‬‬
‫‪B,C‬‬
‫‪E,F,G‬‬
‫אשר בתוך הקבוצות הללו אין חיבור‬
‫‪C,G‬‬
‫‪d‬‬
‫‪g‬‬
‫‪B,E‬‬
‫‪a‬‬
‫‪a‬‬
‫רואים שיש כאן ‪ 2‬קבוצות‪:‬‬
‫‪m‬‬
‫‪a‬‬
‫‪C,F‬‬
‫‪m‬‬
‫‪C,E‬‬
‫מצבים מקביליים — דוגמא נוספת‬
Working
Employee
Mouth
Hands
humming
Resting
client
left
client
arrive
d
Busy
filing
true(in
humming)
idle
true(in talking)
talking
typing
‫פעילויות מקביליות וסינכרוניזציה‬
Emitting
Setting
up
ready
Take cash
do: dispense cash
Take card
do: eject card
c1=cash taken [in Take card]
c3=cash taken [in wait2]
c3
c1 wait1
c2 wait2
c4
Ready
to reset
c2= card taken [in Take cash]
c4= card taken [in wait1]
.‫ עוברים סימולטנית לשני המצבים‬ready ‫כאשר קורה האירוע‬
‫ נפסקות‬card taken, cash taken ‫כאשר קורים האירועים‬
.‫הפעילויות‬
‫ מעביר לשני מצבים עוקבים‬Ready ‫שימו לב שהמעבר‬
‫ יש שני מצבים‬Ready to reset ‫מקביליים ושלמעבר למצב‬



‫תגובת שרשרת‬
‫סדרת מעברים‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫מעבר יכול להוות אירוע‬
‫האירוע יכול להזניק מעברים נוספים‬
‫הרבה מעברים יכולים להתרחש בצעד בודד‪.‬‬
‫נגביל את מספר המעברים שיכולים להתרחש בכל‬
‫צעד‪.‬‬
‫‪C‬‬
‫‪c/b‬‬
‫‪A‬‬
‫‪d/a‬‬
‫‪D‬‬
‫‪b/d‬‬
‫‪a/c‬‬
‫‪B‬‬
‫ברירות מחדל במצבים מקביליים‬
‫ומקוננים‬
‫‪H‬‬
‫‪d‬‬
‫]‪h [in B‬‬
‫‪D‬‬
‫‪E‬‬
‫‪J‬‬
‫‪A‬‬
‫‪g‬‬
‫‪B‬‬
‫‪w‬‬
‫‪F‬‬
‫‪G‬‬
‫‪e‬‬
‫‪H‬‬
‫‪a‬‬
‫‪C‬‬
‫‪q‬‬
‫‪I‬‬
‫‪b‬‬
‫‪K‬‬
‫אורגנית‬
‫‪.1‬‬
‫‪.2‬‬
‫לכל שיר יש ‪ 9‬מצבים שונים‬
‫(סגנון) כ‬
‫‪.3‬‬
‫כדי להחליף שיר צריך להיות בצב ‪( c‬שיר)‬
‫‪.4‬‬
‫‪ Display‬מייצג ‪ mode‬שאני נמצא בו‬
‫(שיר או סגנון) את מספרו (‪ )1-9‬ואת‬
‫שמו‬
‫‪.5‬‬
‫כאשר נגמר שיר עוצרים‬
‫כפתור ‪ a‬משמש להדלקה וכיבוי של האורגנית‪.‬‬
‫האורגנית מאפשרת בחירה של שיר ושל הסגנון בו יושמע השיר‪ .‬כאשר‬
‫האורגנית דלוקה התצוגה מראה האם ה‪ Mode-‬הנוכחי הוא סגנון או שיר‬
‫ובהתאם את מספר ושם השיר או הסגנון הנוכחיים‪ .‬כאשר מדליקים את‬
‫האורגנית נבחרים אוטומטית שיר מספר ‪ 1‬וסגנון מספר ‪ 1‬כשיר והסגנון‬
‫הנוכחיים וה‪ Mode-‬מוגדר כסגנון‪.‬‬
‫על מנת לבחור סגנון יש ללחוץ על כפתור ‪ b‬המעביר את האורגנית ל‪Mode-‬‬
‫סגנון ואז ללחוץ על מספר הסגנון הרצוי (‪( .)1-9‬לכל סגנון יש פונקציה אשר‬
‫מחזירה את שמו בהנתן מספרו )‪)StyleName(x‬‬
‫על מנת לבחור שיר יש ללחוץ על כפתור ‪ c‬המעביר את האורגנית ל‪Mode-‬‬
‫שיר ואז ללחוץ על מספר השיר הרצוי (‪( .)1-9‬לכל שיר יש פונקציה אשר‬
‫מחזירה את שמו בהנתן מספרו )‪)SongName(x‬‬
‫לחיצה על כפתור ‪ START‬גורמת להתחלת נגינה של השיר הנוכחי בסגנון‬
‫הנוכחי‪ .‬לחיצה נוספת על כפתור זה מפסיקה את המוסיקה‪ .‬ניתן לשנות את‬
‫הסגנון ו‪/‬או השיר תוך כדי נגינה‪.‬‬
‫אם באמצע שיר מחליפים סגנון אז נתחיל את‬
‫השיר מהתחלה במצב הסגנון החדש‬
‫אורגנית‬
‫ מקצבים שונים‬9‫ שירים ב‬9 ‫יכול לנגן‬
ON\OFF
a
Display
STYLE
SONG
b
c
1
2
3
4
5
6
7
8
9
START
Name
Mode
Number
‫אורגנית‬
‫סימוני ארועים‪:‬‬
‫‪ – a‬לחיצה על כפתור ‪a‬‬
‫‪ – b‬לחיצה על כפתור ‪b‬‬
‫‪ – c‬לחיצה על כפתור ‪c‬‬
‫‪ – s‬לחיצה על כפתור ‪START‬‬
‫‪ – i‬לחיצה על כפתור ‪i{2,…,9} i‬‬
‫‪ – 1‬לחיצה על כפתור ‪1‬‬
‫‪ – songend‬הסתיימה השמעת השיר הנוכחי‬
‫סימוני משתנים‪:‬‬
‫‪ – i,j‬משתנים היכולים לקבל ערכים בין ‪ 2‬ל‪9 -‬‬
‫‪ – k,m‬משתנים היכולים לקבל ערכים בין ‪ 1‬ל‪9 -‬‬
‫‪ – W‬משתנה היכול לקבל שם שיר או שם סגנון‬
‫‪Somg_number-song#‬‬
‫‪mose in song  c1‬‬
‫‪mode in style  C2‬‬
‫‪  g‬ערך מסום של השיר הנוכחי‬
‫‪  t‬סגנון נוכחי‬
t=1 ‫ ואת‬song ‫ ב‬g=1 ‫על מנת לחסוך את‬
\t=1,g=1 On ‫ אנו נרשום על‬style ‫ב‬
‫אורגנית‬
style ‫ וב‬sing ‫ הם מצבים מקוננים ב‬1-9 ‫כל המוצרים‬
on
play
a
mode
song#
/g=1
disable
off
Song end
enable
Do: play song g
In style t
‫מסמן חזרה לתחילת‬
‫השיר כשמנים את השיר‬
‫או את הסגנון‬
b
song
display
disp-mode
1
Style
Do: x1
c
1[c1]/g=1
1[c2]/t=1
Song
Do: x2
current item
e4
k
Do: display k & w
j
i
e1
any numeric
button pressed
true(c1)
true(c2)
1
a
/t=1
style
s
S or
style#
j[c1]/g=j
e2
i[c2]/t=i
c1= mode in song, c2= mode in style,
e1= true(c1)/ w=songname(g),k=g. e2= true(c2)/ w=stylename(t), k=t.
e3= true(song# in m)/ w=songname(m),k=m. e4= true(style# in m)] / w=stylename(m), k=m.
X1= display “style”, x2= display “song”
‫ או‬1 '‫ למשל אם נחליף שיר אז נגיע למקום שלחצנו שיר מס‬.‫החץ הוא מההיקף כי לא משנה איפה נמצאים לשם נגיע‬
‫ אם לחצנו אחד‬1 ‫סגנון‬
e3
‫אורגנית‬
a/g=1, t=1
on
play
mode
song#
style#
display
disp-mode
disable
off
a
S or
songend
s
enable
Do: play song g
In style t
style
b
true(c2)
c
change
song
change
style
song
m[c1]/g=m
m[c2]/t=m
Style
Do: x1
true(c1)
Song
Do: x2
e4
current item
k
Do: display k & w
e1
e2
any numeric
button pressed
c1= mode in song, c2= mode in style,
e1= true(c1)/ w=songname(g),k=g. e2= true(c2)/ w=stylename(t), k=t.
e3= true(g= m)/ w=songname(m), k=m. e4= true(t= m)] / w=stylename(m), k=m.
X1= display “style”, x2= display “song”
e3