ZAMYLA צ'אן: הקפיצה בואו למריו. מריו הוא תכנית שבו אנו עושים את שלנו שלו, אם כי פרימיטיבית, גרסה של קלאסי אחים סופר מריו רקע משחק. לקבוצה את הבעיה הזו, אנחנו הולכים כדי לשחזר את חצי הפירמידה עבור מריו לקפוץ על. התכנית שלנו תהיה אינטראקטיבית, ולכן ישאל את המשתמש לקלט מסוים גובה לפירמידה. והתכנית תהיה להדפיס חצי פירמידה בגובה זה, שבו חשיש שמאלי תחתון מתיישר עם התחתית פינה שמאלית של הטרמינל חלון פלט. בואו לשבור את הבעיה הזו לשני חלקים, אחד, לקבל קלט משתמש, ושתיים, להדפיס את הפירמידה. זכור כי למרות שתפקוד GetInt יהיה לאחזר מספר שלם, אתה יש לוודא כי קלט זה עושה הגיוני עבור התכנית שלך, ולכן ב מריו, זה לא יעשה רק מוצר עבור מספר שלם. אתה צריך לוודא שהמשתמש תשומות שלמים זה בתוך גבולות עליון והתחתון של פירמידה שתוכל להדפיס. למפרט זה, זה הוא 0 ו -23 ועד בכלל. אם תשומות המשתמש שלם מחוץ לתחום המקובל שלנו, אז אנחנו רוצים כדי להנחות אותם שוב ושוב עד הם נותנים לנו מספר שלם חוקי. דרך אחת להבטיח קלט משתמש נכון היא באמצעות Do-בעוד לולאה, שהוא דומה מאוד ללולאה בזמן. Do-בעוד לולאה מבצעת את הקוד בתוך הגוף פעם אחת, ולאחר מכן בודק אם התנאי מתקיים או לא. זה שימושי לקבלת קלט מהמשתמש כי אתה יודע שאתה צריך כדי להנחות אותם לפחות פעם אחת. אם התנאי אינו מתקיים, התכנית תבצע את הקו לאחר עשה ואל-בעוד הלולאה שלך. אם התנאי מתקיים, אם כי, הלולאה תחזור. עשה ואל-בעוד לולאה לאימות משתמש קלט נראה משהו כזה. אני מצהיר n משתנה, GetInt, וחזור עד n הוא חוקי. זכור כי כאשר אתה מצהיר משתנה, הוא צריך מתאים היקפו, בדיוק כמו בגרד. אם אני מצהיר n-Do בתוך הלולאה בזמן שלי, שאר התכנית לא יהיה תוכל לגשת אליו. זה מוגבל לגבולות מהסוגריים המסולסלים. בסדר, אז עכשיו שאנחנו כבר תוקף הקלט של המשתמש, אנחנו באמת צריכים לצייר חצי הפירמידה הזאת. זה מורכב של תווים מודפסים, ולכן בואו נעשה חצי פירמידה באופן פשוט עורך טקסט. אם אנחנו רוצים להפוך את פירמידה בסגנון מריו גובה של שלוש שמיושרים בצד השמאל של החלון שלנו, ולאחר מכן היינו להקליד שני hashes, לחץ על Enter, לאחר מכן הקלד את שלושה hashes, לחץ להיכנס, ולאחר מכן הקלד את ארבע. אבל בסט בעיה זו, שלנו יש חצי פירמידה להיות מיושרת לימין. שימוש בלוח מקשים רגילים, איך ייתכן שלך לשנות קובץ זה על מנת להזיז hashes לצד ימין? אני יכול להשתמש בו כדי מדגיש, שתיים על בשורה עליונה ואחת על השנייה. זה לא נראה טוב כמו, אם כי, כך בואו נחליף מדגיש עם רווחים, ויש לנו חצי פירמידה גובה של שלוש. נסה לזכור ועורך הטקסט הזה דוגמה כמו שאתה מתחיל לחשוב חזרה ל ג בואו ננסה להבין קצת סוג של תבנית שאנחנו יכולים לשים במבנה לולאה. קח את גובה דוגמה, תניח שמונה, ותראה אם ​​אתה יכול להתחיל לבוא עם דפוס. השורה הראשונה תהיה שבעה מקומות אחרי שני hashes. השורה השנייה תהיה שישה חללים ו שלושה hashes, וכן הלאה עד שורה שמינית. אבל איך היית לייצג שורת המי יודע כמה? זכור כי אמנת תכנות אינדקס הוא אפס. זה אומר שאתה מתחיל לספור ב אפס, ולכן בשורה הראשונה מבחינה טכנית אפס מספר שורה עם שני פתחים, שורה יש מספר אחד שלושה hashes, שורה יש מספר שתיים ארבעה Hash, כך שלאחר תבנית זו לכל שורה מספר n, יש n בתוספת 2 hashes. אני אשאיר לך את זה, אם כי, כדי למצוא את התבנית לחללים. זכור כי הדפוס שלך יהיה מעט שונה, אם תבחרו להתחיל לספור ממך אחד ולא אפס. עכשיו, יש לך דפוס כל n שורה מופשטת. אתה יודע כמה חללים רבים ולהדפיס כמה hashes, ולכן לכל שורה, כי מספר לא ישתנה. אבל את אותו התהליך של הדפסה תו בודד, או חלל או חשיש, חוזר על עצמו. אז כל מה שאתה צריך לעשות זה שוב ושוב להדפיס תו לכמה שיותר פעמים כדפוס שלך קובע. אז איך אנחנו חוזרים על תהליכים? בגרד, השתמשנו בבלוק חוזר. ב-C, אנו נשתמש ללולאה. בואו נסתכל על התחביר עבור ללולאות. כל אחד ללולאה מורכבת משלושה חלקים, אתחול, מצב, ועדכון. הלולאה עבורך תהיה לאתחל משתנה כאשר הוא ראשון נכנס ללולאה. אם התנאי מתקיים, הגוף של הלולאה יבצע. לאחר מכן, יבצע את העדכון. אם התנאי עדיין מתקיים, הלולאה תבצע ולעדכן ו לחזור כל זמן שהמצב שלך ערך TRUE. אתה חייב להעריך מצב סופו של דבר לכוזב, אם כי, כי שלא כמו גרד, אנחנו לא שום לולאות לנצח. התכנית שלך חייבת להסתיים סופו של דבר. הנה דוגמה של ללולאה ש אולי כדאי לך להשתמש במריו. האתחול מצהיר אני שלם עם ערך 0. כל עוד אני הוא פחות מ הגובה, הגוף של הלולאה יבצע ו תגדיל לי על ידי אחד וחזור עד שאני גדול או שווה לגובה. עכשיו, ללולאה שלי היא אפס מדד. אני int מתחיל באפס, לא אחד. אם אני בחרתי אחד, ואז היית המצב שלי גם צריך להיות שונה עבור לולאה לביצוע מספר זהה של פעמים. זכור את זה בזהירות כשאתה בחירת האתחול ושלך שלך מצב, ולהתייעץ זה תרשים כדי להכפיל את הסימון. אחד הדברים הגדולים על מחשב המדע הוא שיש פשוט כל כך הרבה דרכים לביצוע דברים. אתה יכול לבחור אם אתה תתחיל בשעה אפס או אחד. אם אתה לא רוצה להשתמש עבור לולאה, אתה יכול גם להשתמש בלולאה בזמן כדי לחזור על הדברים כל עוד אתה לשמור על מהותו של ללולאה, אתחול, מצב, ועדכון. ברגע שנבין שללולאה אנחנו הכי נוחים עם, אז אנחנו יכול להשלים את מריו. בדקנו ראשון לקלט מהמשתמש ולאחר מכן זיהה דפוס עבור כל n רציפות. אז עבור כל שורה מאפס עד n מינוס 1 ידפיס את המספר המתאים של רווחים, ואז את המספר המתאים של hashes על פי הדפוס שלנו, ו אז בשורה חדשה. עם זה, יש לך הפירמידה שלך. השם שלי הוא Zamyla, וזה היה מריו.