עוד שאלה בנוגע לממשק הגרפי

מנהלים: TA_nimrod, TA_Igor, TA_Adi

שלח תגובה
shaysw
הודעות: 78
הצטרף: 16:23 08/11/2008

עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי shaysw » 12:48 06/11/2009

סיימתי לבנות את התוכנית כך שההדפסות מהקומפיילר יוצאות כנדרש.
לעומת זאת, כשניסיתי לבצע את הבדיקה מהממשק הגרפי בכל בסיס פרט ל-9, התוכנית המשיכה להריץ ניחושים גם לאחר שמצאה את הקוד הסודי.
שאלתי היא מהו המשקל שיש לתת לבדיקה זו, בהנחה שהבדיקה בקומפיילר יוצאת כמו שצריך? ובמידה ויש לבדיקה הגרפית חשיבות, כיצד ניתן ל"דבג" אותה מבלי להתעסק עם קובץ הפריים?

matandro
הודעות: 68
הצטרף: 15:16 26/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי matandro » 13:07 06/11/2009

לא הבנתי מה התקלה שהייתה לך...
כשאתה לוחץ start בממשק הגרפי הוא מפעיל את פונקציה play וכל פעם שאתה לוחץ next guess הוא קורא שורה מתוך ההיסטוריה שהפונקציה מחזירה לו
כלומר אם נתקע לך כשאתה לוחץ start זה לא בעיה בממשק הבעיה בפונקציה שלך...
זה אומר שכדי לדבג את זה ולראות איפה הוא נופל

כל קוד שכותבים יש בו באגים, פשוט צריך לדעת למצוא אותך.
אם הבעיה משתחזרת בצורה קבועה זה הכי טוב תעבור על אותה שיטה ותוסיף הדפסות לקוד שלך
תדפיס משתנים וסתם שורה שכתוב בה שטויות כדי שתדע איפה הוא נעצר בקוד ומה ערכי המשתנים שמעניינים אותך
עזרתי ל-2 חברה שגם להם הכל עבד עם הבדיקה ולא עם הממשק הגרפי וככה מצאנו את התקלה, הדפסנו את secret וראינו שהמספר הרנדומלי שלהם יצא עם ספרות חוזרות

אין מה לעשות כשכותבים קוד זה 20% זמן על כתיבה 80% על מציאת תקלות...
ובדרך כלל זה תקלות שקורות במקרים מאוד ספציפיים שקשה לשים לב אליהם

בהצלחה ב-debug

shaysw
הודעות: 78
הצטרף: 16:23 08/11/2008

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי shaysw » 13:27 06/11/2009

תודה על התגובה המהירה, אבל הבעיה שלי היא לא שהממשק נתקע-
כאשר התוכנית מוצאת את הקוד הסודי (N פגיעות) היא לא עוצרת ורושמת הודעת סיום מתאימה (פרט למשחק בבסיס 10 משום מה), אלא מגרילה מס' המורכב כולו מאפסים וממשיכה
עם ניחוש זה עד לגמר הסיבובים. הסתכלתי קצת בקובץ הפריים ותהיתי האם התנאי המוגדר שם לניצחון במשחק שונה מהתנאי שהגדרתי אני, מאחר ובהדפסות מהקומפיילר התוצאה יוצאת נכונה בכל בסיס.
אשמח לעצות והארות...

matandro
הודעות: 68
הצטרף: 15:16 26/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי matandro » 14:34 06/11/2009

כשאתה מפעיל את האפליקציה בלי הממשק הגרפי אתה יוצר מספר סודי
כשאתה משתמש בבמשק הגרפי אתה שולח מספר סודי שמיוצר ע"י randomizeSequance
שם הבאג שלך ואני גם יודע מה הוא...
נכון עשית?

קוד: בחירת הכל

a[i] = (int) Math.random * BASE;
במקום

קוד: בחירת הכל

a[i] = (int)(Math.random() * BASE)
ראיתי את זה אצל חברה שעזרתי להם

shaysw
הודעות: 78
הצטרף: 16:23 08/11/2008

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי shaysw » 14:59 06/11/2009

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

matandro
הודעות: 68
הצטרף: 15:16 26/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי matandro » 16:28 06/11/2009

מה זה הפלט מהממשק הגרפי?
הממשק הרגפי מפעיל את randomizeSequance
ואז את play
ואז את printGame
מצטער אם טעיתי בשמות של פונקציות

קיצר הממשק הגרפי לא באמת עושה דברים הוא סתם קורה לפונקציות שלך...
אז אני לא יודע באמת אבל נראה לי שזה משהו שצריך לבדוק... ובלי להתעסק בקוד של ה-frame

hodgav
הודעות: 44
הצטרף: 15:06 22/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי hodgav » 03:04 07/11/2009

יש לי את אותה בעיה בדיוק!!
משום מה - בממשק הרגיל - התוכנית שלי עובדת פרפקט. אך לפעמים בממשק הגרפי נוצרת הבעיה ההיא (שלמרות שהקוד הסודי נוחש - הממשק הגרפי ממשיך לנחש "אפסים")
כשמסתכלים על תוצאות הממשק הרגיל לאחר שהממשק הגרפי "מתחרבש" - הכל ניראה טוב.
יכול להיות שיש באג בממשק הגרפי?

TA_Yoni
הודעות: 236
הצטרף: 13:44 18/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי TA_Yoni » 11:37 07/11/2009

כפי שכבר הסברתי באחת מהתגובות ( תעברו על הפורום לפני שאתם מוסיפים שאלות ) "הפלט" של הממשק הגרפי מבוסס על מה שנמצא במערך history. אם אתם מקבלים ניחושים של אפסים לאחר שכבר הסוד התגלה כנראה שאתם מכניסים ערכים לתוך history שלא כנדרש.
זהו באג רציני. 
המתרגל יוני

hodgav
הודעות: 44
הצטרף: 15:06 22/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי hodgav » 13:32 07/11/2009

מספר שאלות
1. נניח כי האפדייט אינו תקין. מדוע הפלט של התוכנית שלי תקין, ושל הממשק הגרפי לא תקין?
2. נניח כי האפדייט אינו תקין. מדוע ברוב המקרים הממשק הגרפי דווקא כן עובד לי טוב? (אם האפדייט לא היה עובד טוב, אז הממשק הגרפי כלל אל היה עובד לי)
3. נניח כי האפדייט תקין. ממה נובע השוני בין הפלטים ? כיצד ייתכן שהתוכנית שלי מדפיסה את המערך בסדר גמור, ואילו הממשק הגרפי לא ?

shaysw
הודעות: 78
הצטרף: 16:23 08/11/2008

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי shaysw » 23:31 07/11/2009

אני לא כ"כ מסכים לגבי הקביעה שאם הניחושים בממשק הגרפי ממשיכים לרוץ למרות שכבר התגלה הסוד מדובר בבאג רציני,
הרי מטרת התוכנית היא להריץ הדפסה לפי הקריטריונים שניתנו בתרגיל, הממשק הגרפי אמור רק לסייע (או שמא לא כך הדבר?).
מהבדיקות שעשיתי בניסיון למצוא את הסיבה לכך בתוכנית הFRAME, מצאתי כי ישנן הגדרות שונות מאלו שהגדרתי אני להמשך הרצת לולאת
חיפוש הקוד הסודי, משהו שקשור לאיתחול מערך הHISTORY, ומכאן ההבדלים בין ההדפסות.
שוב, איני יודע כמה זמן ו/או מאמצים יושקעו בבדיקת תוכניותיהן של 300 תלמידים, אך לדעתי יש לתת את הדעת על כך שבסופו של דבר
(ואני מניח שאני לא מחדש כלום) הרבה אנשים שהשקיעו זמן רב ומאמצים ניכרים בכתיבת תוכנית שאשכרה עובדת, יקבלו ציון נמוך בהרבה מזה
שמגיע להם, וזאת בשל חוסר התאמה בין התוכניות שכתבו, שבסופו של דבר הן ברמה הרבה יותר נמוכה, לתוכנית הFRAME שנכתבה ע"י הסגל.

TA_Yoni
הודעות: 236
הצטרף: 13:44 18/10/2009

Re: עוד שאלה בנוגע לממשק הגרפי

שליחה על ידי TA_Yoni » 10:53 08/11/2009

נכון, הממשק הגרפי אמור רק לסייע לכם. אולם אם מתבצע בו משהו שלא אמור להתבצע, יש באג באחת מהפונקציות שלך. אל תקלו ראש בערכי ההחזרה של הפונקציות - תעברו על השאלות באופן קפדני ותראו אם מה שהפונקציה מחזירה זהה לדרישה בשאלה.

לדוג' : אם באחת השאלות אני אמור להחזיר מערך באורך N ואני אחזיר מערך באורך N+1 , הדבר אינו תקין.

לגבי הבדיקות - רובן נעשות באופן אוטומטי ( ... 300 תלמידים ) לכן אם יש לכם חריגה קטנה מהפלט המצופה ירדו לכם נקודות. ישנו קו דק מאד בין תכנית תקינה לתכנית לא תקינה. דיוק הוא דבר חשוב מאד בתכנות.
המתרגל יוני

שלח תגובה

חזור אל “- מבוא למדעי המחשב 2010”