כתיבת קוד — שיעור 13
פרוטוקול תקשורת מומצא
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי200 נק'~15 דק'algorithmic
רגיסטר ביט-פלאגים (Set/Clear/Toggle)
בפרוטוקולים רבים דגלים נשמרים כביטים ברגיסטר יחיד. נתון ערך התחלתי F ורשימת פעולות; כל פעולה היא "SET n" (הדלק את ביט n), "CLR n" (כבה את ביט n), "TOG n" (הפוך את ביט n). החזר את הערך הסופי של F.
דוגמאות
bit_ops(0, ['SET 0','SET 3']) → 9
bit_ops(0b1111, ['CLR 1']) → 13
bit_ops(0, ['TOG 2','TOG 2']) → 0
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני400 נק'~30 דק'algorithmic
פרסור מסגרות פרוטוקול + Checksum
פענח זרם בייטים (רשימת מספרים 0–255) של פרוטוקול ממוסגר. כל מסגרת: בייט התחלה 0x7E, ואז LEN, ואז LEN בייטים של מטען (payload), ואז בייט checksum ששווה ל-XOR של כל בתי המטען. סרוק את הזרם: דלג על בייטים עד 0x7E; קרא מסגרת; אם ה-checksum תקין — אסוף את המטען, אחרת דלג עליה; המשך. עצור אם מסגרת נקטעת (אין מספיק בייטים). החזר את רשימת המטענים התקינים (כרשימות).
דוגמאות
parse_frames([0x7E,3,1,2,3,0]) → [[1, 2, 3]]
parse_frames([0x7E,2,1,9,0]) → [] # xor=8 ≠ 0
הפתרון נשמר מקומית אוטומטית.