לולאות ומערכים : `1 עבודה מס

‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫עבודה מס' ‪ :1‬לולאות ומערכים‬
‫מתרגל אחראי‪ :‬אבי יצחקוב‬
‫תאריך פרסום העבודה‪16/11/15 :‬‬
‫מועד אחרון להגשה‪03/12/15 :‬‬
‫הקדמה‬
‫בעבודה זו עליכם לממש תוכנית המציגה למשתמש תפריט‪ .‬על המשתמש יהיה לבחור באחת מן האפשרויות‬
‫בתפריט‪ ,‬ולאחר שהמשתמש יזין את בחירתו על התוכנית לבצע את המטלה הנדרשת ובסיומה להציג את‬
‫התפריט שוב להמשך אינטראקציה עם המשתמש‪ .‬התוכנית תסתיים רק כאשר תיבחר האפשרות לסיום התוכנית‪.‬‬
‫כמו כן עליכם לבדוק שהאפשרות שנבחרה היא חוקית ולהציג הודעת שגיאה במקרה הצורך‪.‬‬
‫התפריט‬
‫בהפעלת התוכנית התפריט שיודפס למסך הוא כדלקמן‪:‬‬
‫‪ 0‬יציאה מהתוכנית‬
‫בהיבחר אפשרות ‪ 0‬התוכנית תסתיים ותדפיס למסך ”‪“Program terminated.‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫‪ 1‬הרצף הארוך ביותר של מספרים ראשוניים עוקבים‬
‫בהיבחר אפשרות ‪ 1‬בתפריט‪ ,‬על התוכנית לקלוט מהמשתמש רשימה של מספרים שלמים אי שליליים עד אשר‬
‫ייקלט המספר ‪ -1‬המסמן את סיום הקלט‪ .‬לאחר מכן על התוכנית להדפיס למסך את הסדרה הארוכה ביותר של‬
‫מספרים ראשוניים עוקבים שנקלטו ברצף‪( .‬שני מספרים ראשוניים הם עוקבים אם לא קיים אף מספר ראשוני‬
‫ביניהם)‪.‬‬
‫דוגמא‪ :‬נניח כי המספרים שנקלטו לפי סדר משמאל לימין הם‪ .4,8,2,3,5,6,9,11,17,19,23,29,31 :‬בקלט זה ישנם‬
‫שני רצפים של מספרים ראשוניים עוקבים ‪ 2,3,5 :‬וכן ‪. 17,19,23,29,31‬הרצף האחרון הינו הארוך יותר ולכן יהיה‬
‫זה שיודפס למסך‪.‬‬
‫דוגמת הרצה‪:‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫‪ 2‬פלינדרום‬
‫בהיבחר אפשרות ‪ 2‬בתפריט‪ ,‬על התוכנית לקלוט מהמשתמש מספר ולבדוק האם הוא פלינדרום‪ .‬אם המספר הוא‬
‫פלינדרום התוכנית תדפיס !‪ . Palindrome‬אחרת התוכנית תדפיס את המספר עצמו‬
‫נאמר על מספר שהוא פלינדרום אם רצף הספרות שמופיע משמאל לימין זהה לרצף הספרות מימין לשמאל‪.‬‬
‫לדוגמא‪ :‬המספרים ‪ 121‬ו‪ 1331-‬הם פלינדרומים‪.‬‬
‫דוגמאות‪:‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫‪ 3‬המחלק המשותף השני הכי גדול‬
‫בהיבחר אפשרות ‪ 3‬בתפריט‪ ,‬על התוכנית לקלוט מהמשתמש זוג מספרים ולאחר מכן להדפיס את המחלק‬
‫המשותף השני הכי גדול שלהם‪ .‬במידה ולצמד המספרים שנקלטו יש פחות משני מחלקים משותפים על התוכנית‬
‫להחזיר ‪1‬‬
‫‪ 4‬פולינום‬
‫בהיבחר אפשרות ‪ 4‬בתפריט הראשי על התוכנית להציג את התפריט הבא לפעולות על פולינום‪:‬‬
‫בסיום כל פעולה על התפריט של הפעולות על פולינום להיות מודפס להמשך אינטראקציה עם המשתמש‪ .‬רק‬
‫כאשר תיבחר אפשרות ‪ 0‬התוכנית תחזור לתפריט הראשי ותדפיס אותו‪.‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫בחלק זה עליכם לייצג פולינום (עד דרגה ‪ )10‬בעזרת מערך בגודל ‪ 11‬אשר יכיל את מקדמי הפולינום (כאשר‬
‫האיבר במקום ה‪ i-‬הוא המקדם של 𝑖 𝑥 )‪.‬‬
‫הערה‪ :‬מקדמי הפולינום הינם מספרים שלמים בלבד ( הבדיקה תתייחס למספרים שלמים בלבד)‪.‬‬
‫לדוגמא הפולינום ‪ 4𝑥 8 + 3𝑥 5 + 2𝑥 2 + 7‬מיוצג ע"י המערך‪:‬‬
‫‪0‬‬
‫‪0‬‬
‫‪4‬‬
‫‪0‬‬
‫‪0‬‬
‫‪3‬‬
‫‪0‬‬
‫‪0‬‬
‫‪2‬‬
‫‪0‬‬
‫‪7‬‬
‫‪ 4.1‬שינוי מקדם בפולינום‬
‫בהיבחר אפשרות ‪ 1‬בתפריט עבור פעולות על פולינום‪ ,‬עליכם להציג למשתמש הודעה להכניס את הדרגה של‬
‫המקדם אותו הוא מעוניין לשנות ולאחר מכן לבקש ולקלוט את המקדם ולעדכן בהתאם את המערך‪.‬‬
‫‪ 4.2‬הדפסה‬
‫בהיבחר אפשרות זו על התוכנית להדפיס את הפולינום‪ .‬שימו לב אם המקדם של 𝑖 𝑥 הוא אפס אין להדפיס אותו‬
‫דוגמת הרצה משולבת‪:‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫‪ 4.3‬ערך הפולינום בנקודה‬
‫בהיבחר אפשרות ‪ ,3‬עליכם לקלוט ערך ‪ x‬מהמשתמש להציב אותו בפולינום ולהדפיס את ערך הפולינום עבור ‪x‬‬
‫‪ 4.4‬נגזרת הפולינום‬
‫בהיבחר אפשרות זו על התוכנית לשנות את הפולינום לנגזרת שלו ולהדפיס את הפולינום לאחר השינוי‪.‬‬
‫דוגמת הרצה‪ :‬נניח שלאחר מספר פעולות הפולינום הוא ‪6𝑥 7 + 4𝑥 2‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫‪ 4.5‬העלאת פולינום בריבוע‬
‫בהיבחר אפשרות זו על התוכנית להעלות את הפולינום בריבוע ולהדפיס את הפולינום לאחר השינוי‪ .‬שימו לב‬
‫במידה והפולינום המתקבל הוא מדרגה גבוהה מ ‪ 10-‬רק המקדמים הקטנים מ ‪ 10‬ישמרו והשאר "יאבדו"‪.‬‬
‫מבוא לתכנות ב‪ ,java -‬סמסטר א תשע"ו‬
‫הוראות הגשה‪:‬‬
‫יש להגיש קובץ ‪ zip‬ששמו הוא ת‪.‬ז שלכם‪ ,‬לדוגמא ‪ 123456789.zip‬ובתוך קובץ זה יהיה קובץ בודד בשם‬
‫‪ Assignment1.java‬שבו כתבתם את הקוד של העבודה‪ .‬ההגשה היא דרך מערכת ה‪submission system-‬‬
‫הערות‪:‬‬
‫‪ .1‬על פלט התוכנית שלכם להיות זהה לחלוטין לקובץ פלט הריצה המפורסם לכל קלט‪ .‬יש להשוות את‬
‫הפלטים ע"י התוכנה ‪.textDiff‬‬
‫‪ .2‬בעבודה זו ניתן להשתמש אך ורק בלולאות‪ if else ,‬ומערכים חד מימדיים‪( .‬אין להשתמש בפונקציות)‬
‫‪ .3‬באחריות כל סטודנט להתעדכן בשינויים‪/‬עדכונים באתר הקורס‪.‬‬
‫‪ .4‬אפשר להניח שהקלט יהיה תמיד מטיפוס ‪int‬‬
‫‪ .5‬יש לתת שמות משמעותיים למשתנים ויש לתעד את הקוד ע"י הערות ברורות ובהירות‪.‬‬
‫‪ .6‬על ההערות להיות כתובות באנגלית בלבד‪.‬‬
‫‪ .7‬יש להקפיד שהעבודה תהיה קריאה‪ .‬אין לכתוב שורות קוד ארוכות מאוד ויש להקפיד על הזחה‬
‫(אינדנטציה)‪ :‬על קטעי הקוד הנמצאים בתוך לולאה או ‪ if‬להיות מוזזים ימינה ב‪ .tab -‬למידע נוסף על‬
‫אינדנטציה ראו ‪https://en.wikipedia.org/wiki/Indent_style‬‬
‫‪ .8‬אין להשתמש בספריות‪ ,‬פונקציות או כל קטע קוד שמשתמש בדברים שלא הועברו בשיעור‪.‬‬
‫‪ .9‬מומלץ לא לכתוב את כל הקוד בבת אחת ורק אז לדבג אותו‪ ,‬אלא לכתוב חלק אחד (לדוגמא אחת מן‬
‫האפשרויות בתפריט) ורק לאחר שחלק זה נבדק היטב להמשיך הלאה‪.‬‬
‫‪ .01‬מומלץ לא לחכות לרגע האחרון ולהתחיל את העבודה בהקדם האפשרי‪.‬‬
‫‪ .11‬שאלות בנוגע לעבודה יש לפרסם בפורום עבור עבודה ‪ 1‬הנמצא באתר הקורס‪ .‬לפני פרסום שאלה‪ ,‬יש‬
‫לעבור על השאלות שכבר נענו בפורום ולוודא שהשאלה לא נשאלה כבר וקיבלה מענה‪ .‬שאלות שיישלחו‬
‫למיילים של צוות הקורס או שאלות חוזרות לא יקבלו מענה‪.‬‬
‫‪ .21‬נא לשמור על הגינות אקדמית‪.‬‬
‫בהצלחה!‬