הנה איפה שהפסקנו עם משחק הטלת המטבע שלנו.
התחלנו בכך שיצרנו מספר אקראי (רנדומלי) בין 0 ל-1,
ואז עיגלנו את המספר הזה למספר השלם הקרוב ביותר
כך שקיבלנו מספר שהוא או 0 או 1
ואז ציירנו את המטבע הסופר אמיתי שלנו עם אליפסה שהייתה או סגולה או צהובה, תלוי באיזה מספר יצא.
והנה הקוד שאיתו עשינו את זה.
אז אמרנו שאם המספר השלם (ה-integer), שווה ל-0, אז נמלא את האליפסה בצבע סגול, אחרת, נמלא אותה בצהוב.
ואז ציירנו את המטבע כאן למטה.
אבל עכשיו החלטתי שלמעשה למטבע שלי יש 3 צדדים. כן, מטבע עם שלושה צדדים.
אז בואו נוסיף צד שלישי.
אני הולכת להתחיל ביצירת מספר בין 0 ל-2,
ואחרי שנעגל אותו, נקבל מספר שלם שהוא או 0,1 או 2
אבל אם נסתכל על הקוד שלנו שמצייר, אנחנו מוכנים רק לשני מקרים.
אם integer הוא 0, המטבע סגול, אחרת, הוא צהוב.
אבל עכשיו, ה״אחרת״ יכול להיות גם 1 או 2.
אבל רגע, מה אם אני אעשה את מה שעשינו כבר קודם
בתוך הבלוק הזה של ה-else. אני פשוט אגיד:
אם integer שווה ל-1 אז צבע המילוי צריך להיות צהוב, כמו מקודם,
אחרת (else), צבע המילוי יהיה אדום. אדום זה טוב.
אז מה שזה אומר, שאם integer שווה ל-0, הצבע יהיה סגול,
אחרת, אם זה 1, הצבע יהיה צהוב,
אחרת, זאת אומרת, אם זה לא 0 וזה לא 1, זה חייב להיות 2, תעשה אותו אדום.
אני אלחץ אתחול כמה פעמים. זה עובד! ווהוו!
אז אם הייתי רוצה להוסיף עוד צדדים למטבע שלי,
יכולתי ללכת לכאן למעלה, לעשות את זה 0 עד 3, ואז להיכנס עמוק יותר לבלוק ה-else ולהוסיף עוד if-else-ים עוד ועוד
עד שיהיו לי זיליון בלוקים מיושרים אחד אחרי השני.
ורק אז אני אבין שהקוד הזה מזעזע! די דוחה!
קוד אמור להיות קל לקריאה ויפה, לא מכוער ומסובך.
אז הנה מה שאנחנו הולכים לעשות:
בכל פעם שיש לכם רק הצהרת if אחת או הצהרת if-else בתוך בלוק של else,
זה אומר שאנחנו לא עושים משהו אחר מעבר לבלוק הזה,
אנחנו לא משנים את צבע קו המתאר, אין לנו עוד הצהרות if, כלום.
כל מה שיש לנו הוא הצהרת ה-if היחידה הזו, ואולי היא באה עם בלוק של else
אז אנחנו יכולים לשלב את התנאי הזה עם השורה לפני ולהגיד:
else if integer = 1 אז תשנה את הצבע לצהוב.
ואז בלוק ה-else האחרון הזה לא צריך להיות מיושר פנימה יותר, הוא פשוט מגיע בסוף בעצמו.
נהדר! אז עכשיו מה שזה אומר זה שאם integer שווה ל-0, הצבע יהיה סגול,
אחרת אם integer שווה ל-1, הצבע יהיה צהוב,
אחרת, אם שני אלו הם שקר, הצבע יהיה אדום.
אני לוחצת על אתחול כמה פעמים ואתם רואים שזה עדיין עובד.
נהדר! והדבר המגניב ביותר בזה הוא שיכולים להיות להיות כמה משפטי else-if שאנחנו רוצים,
מה שעושה את זה ממש קל להוסיף עוד צדדים למטבע שלי.
אז בואו נעשה את זה עכשיו, אני הולכת לייצר מספר בין 0 ל-3,
ואז להוסיף עוד בלוק else שאומר שאם integer שווה ל-2
נעשה את צבע המילוי אדום,
ואז בלוק ה-else האחרון הזה יהיה למקרה ש-integer שווה ל-3,
ונעשה את זה כחול. נהדר!
אוקיי, אז בשביל לעשות את זה, אתם תמיד צריכים להתחיל עם הצהרת if,
ואז אתם יכולים לשים כמה הצהרות else-if שתרצו,
ואז הבלוק האחרון הזה פה הוא אופציונאלי.
למעשה אנחנו יכולים להסתדר בלעדיו, וזה אפשרי שכל אלו יהיו שקר,
כך שאף אחד מהבלוקים הללו לא ייתבצע.
אבל כל עוד יש לנו אותו שם, אז בטוח שאחד מהבלוקים האלו ירוץ.
מגניב? עכשיו זה מקרה שבו לא ממש משנה אם תכתוב f else-if else-if else
או שפשוט תכתבו הצהרות if כמו שעשינו בהתחלה, כמו למשל אם integer שווה ל-3.
וזה בגלל שזה לעולם לא אפשרי למספר שלם להיות שווה גם ל-0 וגם ל-1,2,3.
נהדר. אז התנאים האלו סותרים.
זאת אומרת שרק אחד מהבלוקים האלו ירוץ אי פעם.
אבל זה לא תמיד המקרה.
מה אם היינו עושים משחק מבלי לעגל את המספר העשרוני למספר שלם?
אז אני אפטר מהחלק שבו אנו מעגלים את המספר,
והחלק בו אנחנו מציירים את זה למסך
ובואו נמציא כמה חוקים חדשים למשחק שלי.
אז אני עדיין מייצרת מספר בין 0 ל-3,
בואו נשים כמה סמנים על הקו שלנו,
אז בואו נגיד שאם המספר בין 0 ל-1, הצבע יהיה סגול.
אוקיי, זה סגול.
ואז אם זה בין 1 ל-2, אנחנו נעשה את זה צהוב.
ואם זה בין 2 ל-3, נעשה את זה אדום.
נהדר. אז בואו נראה מה אנחנו יכולים לעשות עם if ו-else-if.
אז אני אתחיל בלהגיד שאם המספר קטן מ-1,
אז אם זה פחות מ-1, ואני יודעת שזה בין 0 ל-3, אז זה חייב להיות בטווח הזה.
אז אני אגדיר את צבע המילוי לסגול.
אחרת, אם המספר הוא קטן מ-2, אני אגדיר את צבע המילוי לצהוב...
ואחרת, אני אגדיר את צבע המילוי לאדום
נהדר! וזה עובד בדיוק כמו שתיכננתי.
אז אם המספר קטן מ-1, שוב, זה בטווח הזה.
אחרת, זה גדול או שווה ל-1, אבל זה גם קטן מ-2
אז זה אומר שזה בטווח הזה, אז הצבע יהיה צהוב.
אחרת, זה חייב להיות גדול או שווה מ-2 ולהיות בטווח הזה,
והנה מקרה שלא יכולנו להגיד אם המספר קטן מ-2
ואם המספר קטן מ-3,
מכיוון שאם המספר קטן מ-1, הוא בהחלט קטן מ-2
והוא גם בהחלט קטן מ-3
אז צבע המטבע שלנו יהיה אדום.
ולכן במקרה הזה, מאוד מועיל להשתמש ב-else-if.