תרגיל 4בקורס מבוא לתכנות ,JAVA 202.1.9031סמסטר א רקורסיות תאריך אחרון להגשה בציון מלא 10.01.17 :עד שעה ,23:55 :כל יום איחור לא מאושר או חלק ממנו מוריד 10נקודות מציון העבודה. מתרגל אחראי :הודי גולדמן .שעות קבלה :יום ד' 16:00 – 18:00,בבניין 37חדר ,205אלא אם צוין אחרת באתר הקורס )יש להתעדכן לפני שעת הקבלה על שינויים בשעות ובמיקום( .שעות קבלה נוספות יפורסמו באתר הקורס. בכל בעיה ניתן לשאול שאלות בפורום המטלה ,או בשעות הקבלה של המתרגל האחראי בלבד. • • • • שימו לב – קובץ זה מכיל 11עמודים. אסור להשתמש בלולאות לאורך התרגיל ,גם חזרה על התפריט צריך לממש ברקורסיה .השימוש אפילו בלולאה אחת יגרור ציון 0בעבודה. אם לא נאמר אחרת כל הדפסה מתבצעת בשורה נפרדת. שימו לב – העבודה בזוגות בלבד. תיאור המטלה: במטלה זו תתבקשו לממש מספר פונקציות רקורסיביות אשר פותרות בעיות חשובות בתחום מדעי המחשב. באתר העבודה מצורף שלד ) (Templateתכנית עם חתימות המתודות הנדרשות ויש להשתמש בהן כפי שהן הוגדרו ובהתאם להוראות במסמך זה. דגשים נוספים יובהרו בדף האחרון של מסמך זה. בכל סעיף תממשו שיטה אחרת מקובץ ה"שלד" עד שבסוף נממש את השיטה mainונקבל תוכנית שלמה ,לכן לפני תחילת העבודה יש לפתוח את קובץ השלד מהאתר ב eclipseולממש את כל הקוד בקובץ זה. תחילה נתאר את התפריט הראשי ואת מבנה התוכנית ולאחר מכן נתאר בפרוט את חלקי העבודה. התפריט: • הערה :יש להשתמש במערך arrayשמופיע בתחילת קובץ השלד. שימו לב – מערך זה מכיל ערכים התחלתיים ,אתם מוזמנים לשנות ערכים אלו כדי לבדוק בנוחות את המתודות שלכם ללא צורך בקליטת מספרים למערך בכל פעם. • יש להשתמש בשיטות שתממשו בסעיפים הבאים כדי להשלים את המשימה. תחילה נייצר תפריט ,יש לממש את השיטה: )(public static void showMenu זו השיטה העיקרית של התוכנית ,תפקידה להציג למשתמש את התפריט ולהפעיל את שאר השיטות במערכת ,שיטה זו תרוץ באופן רקורסיבי עד שהמשתמש בוחר באפשרות לסיים .תחילה השיטה תדפיס למסך את התפריט הבא )מבלי לרדת שורה אחרי השורה האחרונה(: 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array > Enter your choice ולאחר מכן תקלוט מהמשתמש את בחירתו מאפשרויות התפריט ,ותבצע את המשימה המתאימה. אם המשתמש הכניס ערך לא חוקי תודפס למסך הודעת שגיאה מתאימה ושוב יוצג התפריט ונקלוט מהמשתמש ערך חדש לדוגמא: 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > -1 !Error: wrog input 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array > Enter your choice אפשרות :0יציאה לאחר בחירה באפשרות זו תוצג הודעת פרידה והמתודה תסתיים ,לדוגמא: 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 0 Good bye. אפשרות :1קליטת ערכים למערך array לאחר בחירה באפשרות זו תודפס למשתמש ההודעה הבאה )מבלי לרדת שורה(: ?How much numbers to read ואחר כך המתודה תקלוט מספר מהמשתמש )נקרא לו (Sשמציין את מספר האיברים שברצונו להכניס ,ולאחר מכן תקלוט S איברים מהמשתמש לתוך המערך arrayשמוגדר בקובץ השלד שקיבלתם כאשר arrayמערך בגודל ,Sתבצע קליטה של הנתונים בעזרת השיטה readToArrayכפי שמוגדר בסעיף ,1לדוגמא: How much numbers to read? 2 Enter number to index 0 > 1 Enter number to index 1 > 2 התוצא תהיה שמערך arrayיכיל את האיברים{2 ,1} : לאחר מכן יוצג שוב התפריט והמתודה תחכה לבחירה הבאה. אם המשתמש הכניס גודל Sקטן מ 1תוצג הודעת שגיאה הבאה ושוב יוצג התפריט הראשי לניסיון חוזר: Error: must be positive number of elements אפשרות sub-set-sum :2 לאחר בחירה באפשרות זו המתודה תדפיס למסך את ההודעה )מבלי לרדת שורה(: > Enter target sum הקבוצות של arrayשסכומם ואחר כך המתודה תקלוט מספר מטרה מהמשתמש ,ולאחר מכן תדפיס למסך את מספר תתי שווה למספר המטרה ,החישוב יבוצע בעזרת השיטה subSetSumכפי שמוגדר בסעיף ,3בתוצאה תודפס באופן הבא: כאשר במקום > <targetיופיע מספר המטרה שהוכנס ובמקום שווה למספר המטרה. >There is <count> subsets of sum <target > <countיופיע מספר תתי הקבוצות של arrayשסכומן לדוגמא כאשר המערך arrayהוא }:{2 ,1 Enter target sum > -1 There is 0 subsets of sum -1 ודוגמא נוספת לאותו המערך: Enter target sum > 3 There is 1 subsets of sum 3 לאחר מכן יוצג שוב התפריט והמתודה תחכה לבחירה הבאה. אפשרות :3חלוקה לשתי קבוצות שוות סכום לאחר בחירה באפשרות זו המתודה תפתור את בעיית החלוקה כפי שמוסבר בסעיף 4בעזרת השיטה twoGrupsעבור המערך arrayכלומר תבדוק האם איברי המערך arrayניתנים לחלוקה לשתי קבוצות בעלות סכום זהה ,במידה וכן ,המתודה תדפיס למסך את ההודעה: The array can be splitted אחרת תדפיס את ההודעה: The array cannot be splitted לדוגמה כאשר המערך arrayהוא } {2 ,3 ,1יודפס: The array can be splitted וכאשר המערך arrayהוא } {4 ,2יודפס: The array cannot be splitted לאחר מכן יוצג שוב התפריט והמתודה תחכה לבחירה הבאה. אפשרות :4ספירת מספר מופעים אפשרות זו משתמשת בשיטה countOccurrencesכפי שמוסבר בסעיף .5 לאחר בחירה באפשרות זו המתודה תדפיס למסך את ההודעה )מבלי לרדת שורה(: > Enter number to cont ואחר כך המתודה תקלוט מספר מהמשתמש ,ותדפיס למסך את ההודעה הבאה שאומרת כמה פעמים מופיע המספר שנקלט במערך :array >number of occurrences: <occurrences כאשר במקום > <occurrencesיוצג מספר המופעים של המספר שנקלט, לדוגמה אם המערך arrayהוא }:{1 ,2 ,1 Enter number to cont > 1 number of occurrences: 2 דוגמה נוספת עם אותו מערך :array Enter number to cont > 3 number of occurrences: 0 לאחר מכן יוצג שוב התפריט והמתודה תחכה לבחירה הבאה. אפשרות :5הדפסת המערך לאחר בחירה באפשרות זו המתודה תדפיס למסך את איברי המערך arrayלפי הסדר שלהם ,כל איבר בשורה נפרדת. לאחר מכן יוצג שוב התפריט והמתודה תחכה לבחירה הבאה. המתודה תשתמש בשיטה printArrayכפי שמוסבר בסעיף .1 array התוכנית המלאה: יש להשלים את פונקציית ה mainכך שתתקבל תוכנית שמדפיסה למסך את ההודעה: Assignment 4 - Recursion ותממש את התפריט כמתוער לעיל בעזרת השיטה .showMenu כאשר המשתמש בוחר באפשרות 0תוצג הודעת הפרידה ולאחר מכן התוכנית תסתיים. סעיף :1 מימוש השיטה: )public static void printArray(int[] arr, int length שיטה זו מקבלת כפרמטר מערך של מספרים שלמים arrואורך . length השיטה תדפיס למסך את כל האיברים בתת המערך של arrהמתחיל באינדקס 0ובאורך ,lengthכל איבר יודפס בשורה חדשה. אין צורך לבדוק תקינות הפרמטרים ,אפשר להניח שהמערך תקין וש lengthלא שלילי ולא יותר מאורך המערך. סעיף :2 מימוש השיטה: )public static void readToArray(int[] arr, int fromIndex שיטה זו מקבלת כפרמטר מערך של מספרים שלמים arrואינדקס . fromIndex השיטה תבקש מהמשתמש להכניס מספרים שלמים ותשמור אותם לפי הסדר במערך arrהחל מהאינדקס fromIndexבאופן הבא: עבור כל תא החל מ fromIndexבמערך השיטה תדפיס למסך את המשפט )בלי לרדת שורה(: > >Enter number to index <index אך במקום > <indexיופיע האינדקס במערך אליו יכנס הערך. לדוגמה עבור אינדקס 0במערך יודפס: > Enter number to index 0 fromIndexבמערך .arr ולאחר מכ ן תחכה לקליטת מספר שלם מהמשתמש ותשמור אותו באינדקס השיטה תסתיים כשכל התאים של arrהחל מאינדקס fromIndexמולאו בערכים מהמשתמש. אם הפרמטר fromIndexחורג מגודל המערך השיטה תסתיים מבלי לשנות את המערך. אין צורך לבדוק תקינות הפרמטרים ,אפשר להניח שהמערך תקין וש fromIndexלא שלילי. סעיף :3 בסעיף זה נפתור וריאציה של בעיית ה ,sub-set-sumבעיה זו הינה בעיה חשובה בתחום מדעי המחשב ושייכת לקבוצת בעיות שנחשבות "קשות" ונקראות NPשלמותsub-set-sum wiki . בבעיה זו יש לנו קבוצת מספרים )מערך( ומספר נוסף ,עלינו לספור את מספר תתי הקבוצה של המספרים הללו )ללא כפילויות( שסכום האיברים בהן שווה בדיוק למספר הנוסף ,כלומר כמה תתי מערכים של המערך המקורי המכילים אפס או יותר איברים מהמערך המקורי )לא בהכרח באותו הסדר או ברצף( ,סכום איבריהם הוא המספר הנוסף. נפתור את הבעיה באופן רקורסיבי ע"י מימוש השיטה: )public static int subSetSum(int[] arr, int fromIndex, int target שיטה זו מקבלת כפרמטר מערך של מספרים שלמים arrאינדקס fromIndexוערך יעד .target השיטה תחזיר את מספר תתי המערכים בעלי הסכום targetשל המערך arrהמתחיל מאינדקס .fromIndex כל תת מערך מורכב רק מהאיברים ב arrהחל מאינדקס fromIndexכך שכל איבר ב arrמופיע לכל היותר פעם אחת. אין צורך לבדוק תקינות הפרמטרים ,אפשר להניח שהמערך תקין וש fromIndexלא שלילי. דוגמאות קלט פלט: 0 1 3 1 ;}3 // return: // return: // return: // return: int[] arr = {-1, 1, 2, ;)subSetSum(arr, 1, -1 ;)subSetSum(arr, 0, -1 ;)subSetSum(arr, 0, 3 ;)subSetSum(arr, 2, 3 סעיף :4 בסעיף זה נפתור את בעיית החלוקה ,גם בעיה זו נקראת -NPשלמהwiki . בבעיה זו יש לנו קבוצת מספרים )מערך( ,עלינו להחליט האם אפשר לחלק את הקבוצה לשתי קבוצות בעלות סכום זהה. נפתור וריאציה של הבעיה באופן רקורסיבי ע"י מימוש השיטה: )public static boolean twoGrups(int[] arr, int length, int balance שיטה זו מקבלת כפרמטר מערך של מספרים שלמים ,arrגודל lengthומספר שלם .balance השיטה תחזיר trueאם קימת לתת המערך של arrבגודל lengthהחל מאינדקס 0חלוקה לשתי תתי קבוצות שההפרש בין סכום איברי הקבוצות בוא בדיוק balanceותחזיר falseבכל מקרה אחר. לדוגמא: ;}int[] arr = {1, 2, 5 twoGrups(arr, 3, 0); // false twoGrups(arr, 3, 2); // true - {5} and {1, 2}: 5-3 = 2 twoGrups(arr, 3, -8); // true - {} and {1, 2, 5}: 0-8 = -8 אין צורך לבדוק תקינות הפרמטרים ,אפשר להניח שהמערך תקין וש lengthלא שלילי ולא יותר מאורך המערך. סעיף :5 בסעיף זה יש לממש את השיטה: )public static int countOccurrences(int[] arr, int length, int number שיטה זו מקבלת כפרמטר מערך של מספרים שלמים ,arrגודל lengthומספר שלם .number השיטה תספור ותחזיר כמה פעמים מופיע המספר numberבתת המערך של arrהמתחיל מאינדקס 0באורך .length לדוגמא: ;}2 4, 2); // return 2 2, 2); // return 1 1, 2); // return 0 int[] arr = {1, 2, 3, countOccurrences(arr, countOccurrences(arr, countOccurrences(arr, אין צורך לבדוק תקינות הפרמטרים ,אפשר להניח שהמערך תקין וש lengthלא שלילי ולא יותר מאורך המערך. דוגמאות: להלן דוגמאות הרצה של התוכנית כולה ,התוכנית שלכם צריכה לעבוד בדיוק כמו הדוגמאות: .1 5 -1 -2 2 5 2 Assignment 4 - Recursion 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 1 ?How much numbers to read > Enter number to index 0 > Enter number to index 1 > Enter number to index 2 > Enter number to index 3 > Enter number to index 4 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 5 -1 -2 2 5 2 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 2 Enter target sum > 2 There is 4 subsets of sum 2 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 3 The array can be splitted 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 4 Enter number to cont > 2 number of occurrences: 2 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > -1 Error: wrog input! 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 1 How much numbers to read? 0 Error: must be positive number of elements 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 6 Error: wrog input! 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 5 -1 -2 2 5 2 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 0 Good bye. .2 Assignment 4 - Recursion 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 1 How much numbers to read? Enter number to index 0 > Enter number to index 1 > Enter number to index 2 > 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 2 Enter target sum > 3 There is 0 subsets of sum 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 2 Enter target sum > 2 There is 1 subsets of sum 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 3 -2 6 4 3 2 4. Count Occurrences of X 5. Print the Array Enter your choice > 3 The array can be splitted 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 4 Enter number to cont > 4 number of occurrences: 1 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 4 Enter number to cont > 2 number of occurrences: 0 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 5 -2 6 4 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 1 How much numbers to read? -3 Error: must be positive number of elements 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 1 How much numbers to read? 3 Enter number to index 0 > 1 Enter number to index 1 > 2 Enter number to index 2 > 1 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 5 1 2 1 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 0 Good bye. .3 Assignment 4 - Recursion 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 1 How much numbers to read? 7 Enter number to index 0 > -3 Enter number to index 1 > -2 Enter number to index 2 > -1 Enter number to index 3 > 0 Enter number to index 4 > 1 Enter number to index 5 > 2 Enter number to index 6 > 3 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 3 The array can be splitted 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 2 Enter target sum > 1 There is 16 subsets of sum 1 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 2 Enter target sum > -3 There is 12 subsets of sum -3 0. Exit 1. Read Array of numbers 2. Check sub-set sum 3. Check if can split 4. Count Occurrences of X 5. Print the Array Enter your choice > 0 Good bye. :להלן דגשי כתיבה נדרשת עם קובץ השלד . כל הקוד שלכם צריך להיכתב בתוך קובץ השלד שקיבלתם.1 שהוגדר בשלד בראש המחלקה לקליטת מספר מהמשתמש ולא להגדירsc יש להשתמש לאורך כל התוכנית במשתנה.2 .עוד כמוהו או לשנות את שמו .4 ויש להשתמש רק בו לסעיף, בראש המחלקהarray אין לשנות את הגדרת המערך.3 .( אין לשנות אף חתימת פונקציה )טיפוס ערך החזרה ורשימת טיפוסי הפרמטרים.4 .( ניתן )אך לא חובה( להוסיף שיטות למחלקה )רקורסיביות או לא רקורסיביות.5 .(for וwhile לאורך כל התוכנית אין להשתמש בכל צורת לולאה שהיא )כמו, להזכירכם.6 : ותפקידםASM פירוט שיטות המחלקה בשיטהeclipse • טבלה זו היא נוצרה באופן אוטומטי מההערות וחתימות השיטות בקובץ השלד שקיבלתם ע"י תוכנת String JavaDocs : שלמדנוString כן גם נוצר התיאור של המחלקה,JavaDocs שנקראת wiki :להעשרה עצמית Method Summary Modifier and Type Method and Description static int countOccurrences(int[] arr, int length, int number) This method count the number of occurrences of the given 'number' in the first 'length' elements of the array 'arr'. static void main(java.lang.String[] args) the main program method. static void printArray(int[] arr, int length) This method print the 'length' first elements of the array 'arr'. static void readToArray(int[] arr, int fromIndex) This method reads numbers from the user and save them in the array starting from specific index. static void showMenu() This method will show the program menu, read the user choice and execute the the corresponding code and methods to complete the task. static subSetSum(int[] arr, int fromIndex, int target) This method count the number of sub-set's of sum 'target' in 'arr' starting from index 'fromIndex'. int static boolean twoGrups(int[] arr, int length, int balance) this method check if the first 'length' elements of 'arr' can be partitioned into two subsets that the difference between their sum is exactly 'balance' קראו היטב את ההערות בדף הבא הערות: לתרגיל זה מצורף קובץ המכיל את תבנית הפונקציות שיש למלא .עבודה נכונה ויעילה תהיה למלא את הפונקציות בהתאם לדרישות כל סעיף ובסיום כל אחת לבדוק את תקינותה ,ורק אחר כך להמשיך לסעיף הבאה. .1העבודות יוגשו בזוגות בלבד. .2כל יום איחור או חלק ממנו יהיה במחיר 10נקודות ,לדוגמא איחור ב 27שעות יקנה ציון מקסימאלי של 80לעבודה. .3יש להגיש קובץ zipבשם <id>.zipכאשר > <idהוא מספר תעודת הזהות שלכם .בתוך הקובץ הנ"ל יהיה קובץ javaבודד )ללא תיקיות( בשם Assignment4.javaבדיוק. .4ניתן להניח שבסוף הזנת הקלט המשתמש יקליד enterולא כל כפתור אחר. .5ניתן להניח שהקלט תמיד יהיה מספר שלם .כלומר עליכם להשתמש ב )( nextIntבשביל קלט מספר מהמשתמש. )תזכורת (https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html:הוגדר לכם משתנה Scannerבראש ה Class -לכל ההזנות בכל הסעיפים .יש לעבוד רק איתו למניעת בעיות זיכרון. .6במטלה זו אין להשתמש בלולאות בצורתן השונות ) ,(while / do while / forאו כל מבנה נתונים אחר וכל נושא שטרם נלמד .אין לשנות את חתימת השיטות שהוגדרו. .7העבודה צריכה להיות מוכלת בחבילת ברירת המחדל ) .(default packageכלומר בתחילת הקובץ שלכם לא אמור להופיע המשפט ;>package <name .8באחריות כל סטודנט להתעדכן בשינויים/עדכונים באתר הקורס. .9יש לשמור על הקוד במקום שנגיש אך ורק לכם ,סיבות כגון מחשב שניזוק או דיסק און קי שנשרף לא יתקבלו כסיבות מוצדקות להגשת עבודה באיחור. .10יש לתת שמות משמעותיים למשתנים ,יש להעיר הערות ברורות ומבארות על העבודה כחלק מהקוד עצמו, מרכיבים אלו הינם חלק מהניקוד על העבודה. .11על ההערות להיות כתובות באנגלית בלבד מתומצתות ובשיקול דעת. .12יש להקפיד שהעבודה תהיה קריאה .אין לכתוב שורות קוד ארוכות מאוד ויש להקפיד על הזחה )אינדנטציה( :על קטעי הקוד הנמצאים בתוך לולאה או ifלהיות מוזזים ימינה ב .tabלמידע נוסף על אינדנטציה ראה ערך https://en.wikipedia.org/wiki/Indent_style .13אין להשתמש בחומר שאינו נלמד בכיתה עד מערכים ומחרוזות .בפרט אין להשתמש בכל ספריה ,פונקציה ,או כל קטע קוד אחר שלא הועבר בשיעור /תרגול. .14מומלץ לא לכתוב את כל הקוד ורק אז לקמפל ולדבג ,אלא לכתוב חלק אחד ורק לאחר שחלק זה מקומפל ומדובג היטב להמשיך הלאה. .15מומלץ לא לחכות לרגע האחרון ולהתחיל את העבודה בהקדם האפשרי. .16שאלות בנוגע לעבודה יש לפרסם בפורום העבודה הנמצא באתר הקורס .לפני פרסום שאלה ,יש לעבור על השאלות שכבר נענו בפורום ולוודא שהשאלה לא נשאלה כבר וקיבלה מענה .שאלות שיישלחו למיילים של צוות הקורס או שאלות חוזרות לא יקבלו מענה .כמו כן ,אין לשאול שאלות בנוגע לעבודה במהלך התרגול או בהפסקות. .17נא לשמור על הגינות אקדמית. !Have Fun
© Copyright 2024