אני אשמח לדעת, מה היא הדרך הנכונה לגשת לשאלות במדעי המחשב. השיטה בה הכי נוח לי לעבוד בה היא בשלבים- כלומר
1.תעשה x
2. תעשה y
3. תעשה z
שלב ראשון
לקרוא את השאלה היטב, ואם יש צורך לקרוא שוב את השאלה.
(לא כל שאלה ניתן להבין מקריאה ראשונית), לפעמים השאלה נתונה עם דוגמאות העוזרות להבנה מעמיקה של השאלות)).
שלב שני
לתת דוגמאות מעצמינו או להסתפק בדוגמאות של השאלה. בצורה הזאת אנחנו מחדדים את ההבנה.
שלב שלישי
חשיבה אלגוריתמית כיצד לפתור את הבעיה? יש להדגים את דרכי הפתרון והחשיבה על הדוגמאות. לחשוב עם עצמינו מהי הדרך הנכונה, האם היא יעילה, האם זה יעבוד בכל המקרים (יש לקחת בחשבון מקרי קצה), לחשוב האם הדרך מסובכת? איזה כלים יש לנו על מנת לפתור את הבעיה. זה החלק המשמעותי ביותר של הפתרון.
שלב רביעי
אחרי שגיבשנו רעיון ובדקנו על דף שהוא עובד, זה הזמן להפוך את הרעיון לקוד. (כלומר עד עכשיו לא כתבתנו קוד).
שלב חמישי
בדיקת הקוד על מספר דוגמאות, תוך כדי חשיבה על מקרי קצה על מנת לגרום לקוד לעבוד על כל המקרים ולא על המקרים השכיחים.
ככל שנכיר יותר ויותר אלגוריתמים (דרכי פעולה לפתירת בעיות) נבצע את התהליכים האלה הרבה יותר מהר.
דוגמה:
כתוב תכנית המקבלת מספר תלת ספרתי וסוכמת את ספרותיו ומדפיסה מספר זה.
למשל עבור המספר: 321 , התכנית תדפיס 6.
עבור המספר 694 התכנית תדפיס 19.
שלב ראשון
קריאת השאלה פעמיים לפחות.
שלב שני
הדוגמאות בשאלה מספקות, ניתן להוסיף דוגמה נוספת:
עבור המספר 203 הפלט יהיה 5.
שלב שלישי
דיון עצמי: יש צורך לבודד כל ספרה בנפרד.
עבור הדוגמה 321 האם כדאי להגיע קודם ל-1, אחר כך ל-2, ואז ל-3. כלומר אחדות, עשרות ואז מאות? או האם עדיף להגיע למאות, לעשרות ואז לאחדות?
כיצד נגיע לאחדות?
x%10
כיצד נגיע למאות?
x/100
כיצד נגיע לעשרות?
x/10/%10
למשל:
321%10=1
321/10%10 = 2
321/100 = 3
הגענו לפתרון בעזרת הכלים שלמדנו.
שלב רביעי - הפיכת הפתרון לקוד
x=321; // get number for the user….
int units = x%10;
int tens = x/10%10;
int hundreds = x/100;
int sum =units + tens + hundreds;
System.out.println(“The sum of the digits iis ”+sum); //for java
//Console.WriteLine(“The sum of the digits iis ”+sum); //for c#
שלב חמישי
במקרה זה אין מקרי קצה יותר מידי. והקוד שלנו עובד עבור כל המספרים התלת ספרתיים.