1 / 11

משתנה בוליאני לשמירת מצב

משתנה בוליאני לשמירת מצב. תזכורת. משתנה בוליאני זהו משתנה שיכול לקבל רק שני ערכים True או False . משתמשים במשתנים אלו כשיש רק שני מצבים אפשריים. משחק הקובייה. כתוב תוכנית המדמה את משחק קובייה לפי הכללים הבאים: 1) כל שחקן מטיל שתי קוביות בתורו.

suzy
Download Presentation

משתנה בוליאני לשמירת מצב

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. משתנה בוליאני לשמירת מצב

  2. תזכורת • משתנה בוליאני זהו משתנה שיכול לקבל רק שני ערכים True או False. • משתמשים במשתנים אלו כשיש רק שני מצבים אפשריים.

  3. משחק הקובייה כתוב תוכנית המדמה את משחק קובייה לפי הכללים הבאים: 1) כל שחקן מטיל שתי קוביות בתורו. 2) כל שחקן צובר את הנקודות מהטלות הקוביות שלו. 3) השחקן הראשון המגיע ל-100 (או יותר) מנצח. 4) אם שחקן מטיל מספר כפול (כגון 6-6), השחקן האחר מקבל ניקוד כפול בתור הבא.

  4. דוגמא נניח שהניקוד של שחקן 1 הוא 48, של שחקן שני הוא 52, כעת תורו של השחקן הראשון. אם הוא זורק 5-5 יש לעדכן את הניקוד של השחקן ל-? 58 נניח שהשחקן השני זורק 4-3 בתורו. הניקוד שלו מתעדכן ל-? 52 + 2 * (4 + 3) = 52 + 14 = 66

  5. אלגוריתם של התוכנית • אפס ניקוד של כל אחד משני השחקנים • שחקן א' מתחיל ראשון • כל עוד שום שחקן לא השיג או עבר 100 נקודות בצע • בחר זוג מספרים בין 1-6 • אם השחקן הקודם הטיל מספר כפול אזי • הכפל את ערכי זוג המספרים בשניים • הוסף את ערכי זוג המספרים לניקוד של השחקן הזה • קבע את התור הבא לשחקן האחר • הצג את שם השחקן המנצח

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

  7. השחקנים שלנו כל הזמן מתחלפים, על מנת לדעת מי מהם משחק ניתן להשתמש בשתי הדרכים הבאות: 1) אפשר לבחור במשתנה מטיפוס שלם ועל ידו ליצג כל שחקן 2) אפשרות שנייה היא להשתמש במשתנה מטיפוס בוליאני, למשל, בשם FirstPlayer. הערך true מסמן את תורו של שחקן ראשון ו-false מסמן את תורו של שחקן שני. שינוי התור נעשה בצורה פשוטה על ידי שימוש בפעולה not, המשנה את ערכו של FirstPlayer מ- true ל-false.

  8. איך נדע אם השחקן הקודם הטיל מספר כפול? • הפתרון הוא לשמור משתנה בוליאני Double כדי לשמור את תוצאות ההטלה הקודמת. ערכו הוא true אם ההטלה הקודמת הייתה של מספר כפול, אם לא, ערכו הוא false. המשתנה Double מקבל ערך בסוף ביצוע של הלולאה, ערך זה נבדק במשפט if בביצוע הבא של הלולאה.

  9. התוכנית program DiceGame(input, output); var Die1, Die2: integer; Sum1, Sum2: integer; FirstPlayer: boolean; Double: boolean; begin Randomize; Sum1 := 0; Sum2 := 0; FirstPlayer := True; Double := False; while (Sum1 < 100) and (Sum2 < 100) do begin Die1 := Random(6) + 1; Die2 := Random(6) + 1; if Double then מה זה Randomize? למה Random(6)+1?

  10. begin Die1 := Die1 * 2; Die2 := Die2 * 2; end; if FirstPlayer then Sum1 := Sum1 + Die1 + Die2; else Sum2 := Sum2 + Die1 + Die2; FirstPlayer := not FirstPlayer; Double := (Die1 = Die2) end; if Sum1 > Sum2 then writeln(‘first won’) else writeln(‘second won’); end. מה זה אומר?

  11. תרגול.. • כתבו תוכנית הקולטת סדרת תווים ובסופה ' * ' ומציגה את התווים תוך הכפלת כל תו המופיע לאחר נקודה. למשל, עבור הקלט abc.def.g* יתקבל הפלט כ-abc.ddef.gg*

More Related