נשלח בתאריך: 28 April 2009 בשעה 13:23 | | IP רשוּם
|
|
|
|
שלום,
דבר ראשון, כמעט ואף פעם לא משתמשים בתיכנות עם "קפיצות" (goto) בשפות עיליות. הסיבה שלא עושים זאת זה כיוון שכל קטע קוד שקופצים אליו יכול להיכתב כפונקציה משל עצמה, במקום שימוש ב-goto ניתן פשוט לקרוא לפונקציה. שימוש בפונקציה תעשה בצורה גינרית ללא תלוי במצב התוכנית הכללית. לדוגמא פונקציה הכותבת לקובץ, מחזירה ערך מוחלט, מזיזה את העכבר למיקום מסוים... וכן הלאה, אינה תלויה במצב התוכנית הנוכחי. לעומת זאת הפונקציה תלויה ישירות בערכי הפרמטרים שנשלחים אליה, וכך התנהגות הפונקציה משתנה בהתאם לאלו.
בבעיה שלך ניתן לראות בבירור שקטעי הקוד First,Second,Third מבצעים את אותו קטע קוד. לכן ניתן היה לבנות פונקציה גינרית המקבלת פרמטרים מסוימים ומציגה אותם למסך. וכך כאשר צריך היה להציג את First שולחים את פרמטרי first לפונקציה והיא מציירת אותם.
הלוגיקה (קטע הלולאה) נשארת אך כעת במקום "לקפוץ" כל הזמן מקטע לקטע, קוראים לפונקציה בכל ציור. וכאשר מקבלים ערך enter יכולים פשוט לבצע break במקום קפיצה ל-next.
פתרון נוסף אלגנטי נקי ודינאמי, המאפשר בניית והוספת מסכים בקלות, אפילו בזמן ריצה יהיה - הוספת מחלקה בשם Screen כאשר יש לה פונקציית ציור, קישור (Reference) למסך הבא ולמסך הקודם, פונקציית קלט, ופונקציית לוגיקה. התוכנית היא פשוטה: בתחילתה אתה בונה את המסכים ומקשר בינהם מפעיל על המסך הראשון את פונקצית הלוגיקה, הפונקציה קוראת לפונקצית הציור ואחריה לפונקצית הקלט ומחליטה לאיזה מהמסכים המקושרים לעבור אם בכלל. פשוט נוח וקל.
|