דלג לתוכן הראשי
8200 University Pro

מחשבון קרב במיון: איך עובד המודול ואיך פותרים אותו בטבלת מעקב

מחשבון קרב הוא השם שמועמדים נותנים לאחד המבחנים ביום המיון למקצועות המחשב. מסבירים לכם שפת תכנות שאף אחד לא ראה קודם, נותנים קטעי קוד בשפה הזאת, ושואלים מה יקרה כשהם ירוצו. לפי התיאורים, הקושי בו הוא לא מתמטי אלא של דיוק: האם אתם מבצעים הוראה אחרי הוראה בדיוק כפי שנכתב, או שאתם "מבינים את הכוונה" ומדלגים. במאמר תמצאו מה זה ואיך פותרים, עם שתי דוגמאות פתורות. את מה שקורה ביום המבחן עצמו בגאמ"א תמצאו במאמר נפרד.

מוכנים להתחיל לתרגל?

אלפי שאלות תרגול ב-3 רמות קושי ממתינות לכם

התחילו לתרגל ממר"ם ומקצועות המחשב עכשיו

מה זה מחשבון קרב ואיפה הוא מופיע

"מחשבון קרב" הוא הכינוי של מועמדים. השם שמופיע במקורות הכנה הוא "מבחן שפות מומצאות". לפי מקור הכנה אחד זהו מבחן בן כ-90 דקות, ולפי אותו מקור הוא אחד ממספר מבחנים ביום המיון לאשכול מקצועות המחשב של חיל התקשוב. מועמדים מדווחים על מודול כזה גם בכנס המבחנים של גאמ"א סייבר, ושם מתוארת כשעה. ההבדל בין שני המספרים הוא דוגמה טובה למה שכדאי לדעת: אין פרסום רשמי של מבנה המבחנים, והמקורות אינם תמיד מסכימים.

מה שכן אפשר להגיד בביטחון הוא הקו של הצבא עצמו. באתר ההתגייסות כתוב שיום המיונים לאשכול מקצועות המחשב כולל מספר בחינות שאינן מחייבות ידע מוקדם, אך בודקות יכולות אלגוריתמיות ותכנותיות. זה משפט על היום כולו, ולא תיאור של מבחן מסוים, אבל מחשבון קרב מתאים לו בדיוק: כל מה שצריך נמצא בדף ההוראות, ומה שנבדק הוא היכולת לפעול לפי אלגוריתם שמישהו אחר כתב.

אם אתם בונים תוכנית הכנה כוללת, המאמר על יום המיון לממר"ם, בסמ"ץ ומצו"ב מסדר את כל המבחנים של היום במקום אחד, ומחשבון קרב הוא רק אחד מהם.

מה נותנים לכם ומה שואלים

כל שאלה במבחן כזה בנויה משני חלקים. החלק הראשון הוא מפרט, דף הוראות שמגדיר את השפה. הוא כולל בדרך כלל:

החלק השני הוא קטע קוד והשאלה עליו. השאלות שמתוארות במקורות הן בסגנון: מה יהיה באוגר X, כמה פעמים נכנסים ללולאה, ומה לתקן כדי שהתוכנית תעבוד. לא צריך להכיר שפת תכנות אמיתית. הידע היחיד שעוזר הוא הרעיון שמחשב מבצע שורה אחת בכל פעם, בסדר, ולא עושה שום דבר שלא כתוב.

הנה דוגמה שכתבנו להדגמה, לא מהמבחן האמיתי. זה דף ההוראות של שפה קטנה שהמצאנו:

SET  X, n      ; X = n
ADD  X, Y      ; X = X + Y
SUB  X, Y      ; X = X - Y
DEC  X         ; X = X - 1
JNZ  X, label  ; jump to label if X is not 0, else continue
HALT           ; stop

שיטת טבלת המעקב, צעד אחר צעד

השיטה פשוטה עד כדי כך שקל לזלזל בה. שרטטו טבלה עם עמודה לכל אוגר, וכתבו שורה חדשה אחרי כל פקודה שמתבצעת. בכל שורה רושמים את הערך של כל האוגרים כפי שהם אחרי הפקודה, גם אלה שלא השתנו. שלושה כללים שומרים על הדיוק:

נתחיל מתוכנית של תשע שורות, בשפה שהוגדרה למעלה. שאלה: מה הערך ב-A אחרי ההרצה, וכמה פעמים התבצעה שורה 4?

1       SET  A, 0
2       SET  B, 3
3       SET  C, 6
4 loop: ADD  A, C
5       SUB  C, B
6       DEC  B
7       JNZ  B, loop
8       ADD  A, C
9       HALT
ביצועהפקודהABCהערה
1SET A, 00--
2SET B, 303-
3SET C, 6036
4ADD A, C636סיבוב 1
5SUB C, B633
6DEC B623
7JNZ B, loop623B=2, קופצים
8ADD A, C923סיבוב 2
9SUB C, B921
10DEC B911
11JNZ B, loop911B=1, קופצים
12ADD A, C1011סיבוב 3
13SUB C, B1010
14DEC B1000
15JNZ B, loop1000B=0, לא קופצים
16ADD A, C1000שורה 8
17HALT1000סוף

התשובה: A שווה 10, ושורה 4 התבצעה שלוש פעמים. שימו לב לשני רגעים בטבלה. בביצוע 15 הערך של B הוא 0, ולכן JNZ לא קופצת והביצוע נופל לשורה 8. ובביצוע 16, שורה 8 מוסיפה 0, כך ש-A נשאר 10. מי שמדלג על שורה 8 כי "היא כבר לא משנה" מקבל את אותה תשובה במקרה הזה, אבל בתוכנית אחרת הדילוג הזה יעלה לו בשאלה.

הטעות שמפילה: לדלג על שורה או לפרש קפיצה לא נכון

בתרגול שלנו יש תשעה סטים בנושא שפת התכנות המומצאת, בסך הכל 90 שאלות, וההסברים שלהם בנויים שורה אחר שורה בדיוק כדי למנוע כשל אחד: הפותר מבין את הרעיון, ובכל זאת טועה בתוצאה כי שורה אחת לא בוצעה או כי קפיצה נקראה לפי מה שנראה הגיוני ולא לפי מה שההגדרה אומרת. הנה דוגמה קצרה שמראה איך זה קורה, בשפה שלנו:

1       SET  A, 2
2       SET  B, 3
3 loop: ADD  A, A
4       DEC  B
5       JNZ  B, loop
6       DEC  A
7       HALT

השאלה: מה הערך ב-A בסוף? הטבלה מציגה את המעקב הנכון מול מעקב של פותר שקורא את הקפיצה בקצרה:

נקודה בהרצהמעקב נכוןמעקב שגוי
אחרי סיבוב 1 (שורות 3-5)A=4, B=2, קופציםA=4, B=2, קופצים
אחרי סיבוב 2A=8, B=1, קופציםA=8, B=1, הטעות: "B כמעט אפס", יוצאים מהלולאה
אחרי סיבוב 3A=16, B=0, לא קופציםלא מגיעים לכאן
שורה 6: DEC AA=15A=7

התשובה הנכונה היא 15, והשגויה היא 7. ההבדל לא נובע מחישוב שגוי אלא ממשפט אחד: ההגדרה אומרת ש-JNZ קופצת בכל פעם ש-B אינו 0, ו-B הוא 1 אחרי הסיבוב השני, כלומר עדיין לא אפס. מי שרשם את הערך של B בשורת הקפיצה ראה את זה מיד. מי שעבד בראש הרגיש שהם כבר כמעט סיימו. יש גם טעות שנייה מאותה משפחה, והיא לעצור בסוף הלולאה ולשכוח את DEC A שבשורה 6: זה נותן 16 במקום 15.

הלקח פשוט: ערכו של אוגר נקרא מהטבלה ולא מהזיכרון, וקפיצה נבדקת מול הערך שרשום בשורה שלפניה. עדיף לכתוב את התנאי ליד הקפיצה בכל פעם, גם כשנראה מיותר.

אסטרטגיית זמן

איך מתרגלים

המיומנות הזאת נבנית בחזרות. התחנה הראשונה היא התרגול בשפת תכנות מומצאת: שאלות עם דף הוראות בראש כל שאלה, אוגרים, לולאות וקפיצות מותנות, והסבר שורה אחר שורה אחרי התשובה. הסטים הקלים מלמדים את הפקודות הבסיסיות, והקשים מוסיפים תת-שגרות ומחסנית. התחנה השנייה היא תרגול קוד בסגנון מבחן להב, שמתאמן על אותה משמעת ביצוע. חשוב לומר ביושר: אנחנו לא יודעים איך נראות השאלות במבחן האמיתי, והתרגול מאמן את המיומנות ולא משחזר את המבחן.

אם אתם מתכוננים גם למיון שחקים, שימו לב שהשפה שם בלשנית ולא תכנותית, והשיטה שונה: המדריך לשפה מומצאת בשחקים מסביר את ההבדל. ואם אתם בדרך לגאמ"א, הכנס מתואר במדריך כנס המבחנים של גאמ"א סייבר, כולל מקום מחשבון קרב בשאר המודולים של היום.

רקע קצר שיעזור להרגיש בבית: מה שתעשו הוא בעצם ביצוע ידני של אלגוריתם, ובצורתו הקוד שתראו קרוב לפסאודו-קוד. מספיק להכיר את הרעיון הכללי של כל אחד מהם.

שאלות נפוצות

מה זה מחשבון קרב?

מחשבון קרב הוא השם שמועמדים נותנים למבחן שפות מומצאות במיון למקצועות המחשב. מסבירים לכם שפת תכנות שהומצאה לצורך המבחן, עם פקודות, אוגרים וקפיצות, ואחר כך נותנים קטעי קוד בשפה הזאת ושואלים מה יהיה במצב המערכת אחרי ההרצה.

כמה זמן נמשך מבחן מחשבון קרב?

אין נתון רשמי. מקור הכנה אחד מציין כ-90 דקות למבחן שפות מומצאות, אבל זה אינו פרסום של הצבא ומשכים כאלה משתנים בין מחזורים. אל תבנו תוכנית על המספר, ותרגלו בקצב שבו אתם מסיימים כל שאלה עם טבלה מסודרת.

צריך לדעת שפת תכנות כדי לעבור את מחשבון קרב?

לא. מה שמתואר במקורות הוא שהשפה מוסברת בתוך המבחן עצמו, ולכן אין מה ללמוד מראש. הצבא כותב שיום המיון לאשכול מקצועות המחשב כולל מספר בחינות שאינן מחייבות ידע מוקדם אך בודקות יכולות אלגוריתמיות ותכנותיות, אבל זה משפט על היום ולא על מבחן מסוים. ניסיון קודם בקוד יחסוך לכם זמן בהבנת הוראות, אבל אינו תנאי.

האם מחשבון קרב הוא אותו מבחן כמו בכנס המבחנים של גאמ"א?

לפי תיאורי מועמדים זו אותה משפחה של מבחנים: שפה מומצאת שמוגדרת על המקום ושאלות מעקב אחרי קוד. מה שלא ידוע הוא אם התוכן, האורך והקושי זהים, כי הצבא אינו מפרסם את מבנה המבחנים. התרגול בשיטת הטבלה מועיל בשני המקרים.

במה מחשבון קרב שונה ממבחן להב?

מקורות הכנה מתארים את שני המבחנים כמבחני קוד, ואחד מהם אף מכנה את להב דומה למחשבון קרב. המחלוקת היא אם הקוד בלהב כתוב בשפה קיימת או בסימון שהמבחן מספק, ואין מסמך רשמי שמכריע. המיומנות המתורגלת זהה: לבצע הוראות בדיוק, צעד אחר צעד.

האם הדוגמאות במאמר הן שאלות אמיתיות מהמבחן?

לא. הדוגמאות כתובות על ידינו כדי להמחיש שיטה, והשפה שבהן מומצאת. הן בנויות באותו היגיון של אוגרים, לולאות וקפיצות מותנות שמופיע בתרגול שלנו, אבל אין לנו דרך לדעת איך נראות השאלות במבחן עצמו.

מוכנים להתחיל לתרגל?

אלפי שאלות תרגול ב-3 רמות קושי ממתינות לכם

התחילו לתרגל ממר"ם ומקצועות המחשב עכשיו