בכיתה
1. החזרת מבדקי ש.ב.
2. פתרון משותף של תרגילי הבית + מענה על שאלות
2. פתרון משותף של תרגילי הבית + מענה על שאלות
א. הפעולה IsSortedAny.
ב. הפעולה IsCharSeven.
לבית
*** להכנה עד ליום ב' הבא בעוד 11 ימים, ה- 13.2.2023,
בו יהיה מבדק ש.ב על 8 השאלות א'-ו' שלהלן: ***
בו יהיה מבדק ש.ב על 8 השאלות א'-ו' שלהלן: ***
אגד פעולות על מערכים:
א. כתבו פעולה Fibonacci10 המחזירה מערך שלמים בגודל 10 עם איברי פיבונאצ'י הראשונים.
סדרת פיבונאצ'י היא סדרה ששני איבריה הראשונים הם 1 ,1, וכל איבר לאחר מכן שווה לסכום שני
קודמיו. בהתאם לכך, 10 איבריה הראשונים של הסדרה הם:
55 ,34 ,21 ,13 ,8 ,5 ,3 ,2 ,1 ,1 <--
על הפעולה ליצור מערך שלמים בגודל 10, ובאמצעות לולאת חישוב להשים במערך את 10 האיברים
הראשונים של הסדרה, ולהחזיר את המערך.
ב. כתבו פעולה FibonacciX המקבלת כפרמטר מספר שלם.
הפעולה מחזירה מערך בגודל X (המספר שהתקבל) עם X האיברים הראשונים של הסדרה.
לדוגמה, אם הפעולה זומנה עם ערך הפרמטר 12, יוחזר המערך הבא:
144 ,89 ,55 ,34 ,21 ,13 ,8 ,5 ,3 ,2 ,1 ,1 <--.
ג. כתבו פעולה PrintRand15 המציבה מספרים אקראיים בטווח שבין 0 ל- 5 במערך שלמים
בגודל 15.
1) הפעולה תדפיס את המערך השלמים.
2) הפעולה תדפיס מערך נוסף בגודל 15, לאחר שכל האפסים מהמערך המקורי הועברו לסופו.
לדוגמה, אם הוגרלו למערך המספרים הבאים:
1 ,2 ,3 ,4 ,5 ,0 ,1 ,3 ,0 ,5 ,4 ,5 ,2 ,0 ,1 <--.
הרי שתודפסנה שתי השורות שלהלן:
1 ,2 ,3 ,4 ,5 ,0 ,1 ,3 ,0 ,5 ,4 ,5 ,2 ,0 ,1 <--.
0 ,0 ,0 ,1 ,2 ,3 ,4 ,5 ,1 ,3 ,5 ,4 ,5 ,2 ,1 <--.
סדרת פיבונאצ'י היא סדרה ששני איבריה הראשונים הם 1 ,1, וכל איבר לאחר מכן שווה לסכום שני
קודמיו. בהתאם לכך, 10 איבריה הראשונים של הסדרה הם:
55 ,34 ,21 ,13 ,8 ,5 ,3 ,2 ,1 ,1 <--
על הפעולה ליצור מערך שלמים בגודל 10, ובאמצעות לולאת חישוב להשים במערך את 10 האיברים
הראשונים של הסדרה, ולהחזיר את המערך.
ב. כתבו פעולה FibonacciX המקבלת כפרמטר מספר שלם.
הפעולה מחזירה מערך בגודל X (המספר שהתקבל) עם X האיברים הראשונים של הסדרה.
לדוגמה, אם הפעולה זומנה עם ערך הפרמטר 12, יוחזר המערך הבא:
144 ,89 ,55 ,34 ,21 ,13 ,8 ,5 ,3 ,2 ,1 ,1 <--.
ג. כתבו פעולה PrintRand15 המציבה מספרים אקראיים בטווח שבין 0 ל- 5 במערך שלמים
בגודל 15.
1) הפעולה תדפיס את המערך השלמים.
2) הפעולה תדפיס מערך נוסף בגודל 15, לאחר שכל האפסים מהמערך המקורי הועברו לסופו.
לדוגמה, אם הוגרלו למערך המספרים הבאים:
1 ,2 ,3 ,4 ,5 ,0 ,1 ,3 ,0 ,5 ,4 ,5 ,2 ,0 ,1 <--.
הרי שתודפסנה שתי השורות שלהלן:
1 ,2 ,3 ,4 ,5 ,0 ,1 ,3 ,0 ,5 ,4 ,5 ,2 ,0 ,1 <--.
0 ,0 ,0 ,1 ,2 ,3 ,4 ,5 ,1 ,3 ,5 ,4 ,5 ,2 ,1 <--.
ד. כתבו פעולה SwitchXY המקבלת כפרמטרים שני שלמים ומחליפה בין ערכיהם.
לדוגמה, הפעולה מקבלת לפרמטר x את הערך 5 ולפרמטר y את הערך 6,
בסיומה x יכיל את הערך 6 ו- y יכיל את הערך 5.
נניח שבוצעה מתוך ה- Main הדפסת ערכי שני המשתנים, לאחר מכן
בוצע הזימון הבא: (SwitchXY(x, y ולאחריו הדפסה פעם נוספת של שני המשתנים.
בנוסף לכתיבת הפעולה, ענו על 3 השאלות שלהלן:
1) מה הודפס בפעם הראשונה? מה הודפס בפעם השנייה?
2) האם ניתן להגיד שלאחר זימון וביצוע הפעולה הוחלפו ב- Main הערכים של x ו- y המקוריים?
3) נסו להסביר מדוע?
ה. כתבו פעולה ChangeArray המקבלת כפרמטר מערך שלמים והופכת כל ערך שלילי בו
לערך חיובי, וכל ערך חיובי לערך שלילי. לדוגמה, אם התקבל מערך arr הנראה כך:
6 ,3 ,5- ,0 ,1- <-- בתום ביצועה של הפעולה על המערך להיראות כך: 6- ,3- ,5 ,0 ,1 <--
נניח שמתוך ה- Main הודפסו ערכי arr, ואז בוצע הזימון הבא: (ChangeArray(arr,
ואז שוב הודפסו ערכי המערך.
בנוסף לכתיבת הפעולה, ענו על 3 השאלות שלהלן:
1) מה הודפס בפעם הראשונה? מה הודפס בפעם השנייה?
2) האם ניתן להגיד שלאחר זימון וביצוע הפעולה התבצע בפועל שינוי של ערכי המערך המקורי?
3) נסו להסביר מדוע?
ו. הוחלט לבדוק את הסימונים התזונתיים הרשומים על אריזות של חטיפים,
במטרה לקבוע אם חטיף אינו מזיק לבריאות או מזיק לבריאות.
הסימונים התזונתיים שנבדקו הם מספר הקלוריות בחטיף, ומשקל השומן שבו בגרמים.
חטיף אינו מזיק לבריאות אם מספר הקלוריות שבו קטן מ- 130 ומשקל השומן שבו נמוך מ- 5 גרמים.
1) כתבו פעולה GoodOrBad המקבלת את מספר הקלוריות בחטיף ומשקל השומן שבו.
הפעולה תחזיר את המחרוזת "Good" אם החטיף בריא, ואת המחרוזת "Bad" אם לא.
2) כתבו תכנית הקולטת 10 חטיפים (תוכנית כותבים ב- Main).
א. עבור כל חטיף יש לקלוט את שמו ואת מספר הקלוריות ומשקל השומן.
ב. התוכנית תבדוק בעזרת הפעולה מסעיף 1) האם החטיף בריא או לא,
ותדפיס "Good" או "Bad" בהתאם.
ג. התוכנית תמנה ותציג את כמות החטיפים הבריאים.
ד. התוכנית תציג את שם החטיף בעל מספר הקלוריות הגדול ביותר.
ז. כמות המחלקים של מספר שלם חיובי num היא כמות המספרים השלמים הקטנים ממנו, המחלקים את
num ללא שארית (החל מ- 1). דוגמה: כמות המחלקים של המספר 10 היא 3 (5 ,2 ,1).
1) כתבו פעולה Divider המקבלת כפרמטר מספר שלם וחיובי ומחזירה את כמות המחלקים שלו.
2) נגדיר שני מספרים שלמים חיוביים כ- "ידידותיים" אם כמות מחלקיהם שווה.
למשל, 10 (5 ,2 ,1) ו- 15 (5 ,3 ,1) הם מספרים "ידידותיים".
כתבו תכנית המשתמשת בפעולה מסעיף 1) בה הקלט הוא מספר חיובי שלם,
והפלט הוא כל המספרים הידידותיים שלו בתחום 3 עד 300 (כולל).
ח. כתבו פעולה Kalmanson המקבלת שני מערכי שלמים בעלי גודל זהה.
הפעולה מחזירה ערך בוליאני 'אמת' אם התאים המקבילים של שני המערכים זוגיים, או ששניהם אי-זוגיים.
למשל, במקרה שלהלן הפעולה תחזיר 'אמת' כי קיימת התאמה:
לדוגמה, הפעולה מקבלת לפרמטר x את הערך 5 ולפרמטר y את הערך 6,
בסיומה x יכיל את הערך 6 ו- y יכיל את הערך 5.
נניח שבוצעה מתוך ה- Main הדפסת ערכי שני המשתנים, לאחר מכן
בוצע הזימון הבא: (SwitchXY(x, y ולאחריו הדפסה פעם נוספת של שני המשתנים.
בנוסף לכתיבת הפעולה, ענו על 3 השאלות שלהלן:
1) מה הודפס בפעם הראשונה? מה הודפס בפעם השנייה?
2) האם ניתן להגיד שלאחר זימון וביצוע הפעולה הוחלפו ב- Main הערכים של x ו- y המקוריים?
3) נסו להסביר מדוע?
ה. כתבו פעולה ChangeArray המקבלת כפרמטר מערך שלמים והופכת כל ערך שלילי בו
לערך חיובי, וכל ערך חיובי לערך שלילי. לדוגמה, אם התקבל מערך arr הנראה כך:
6 ,3 ,5- ,0 ,1- <-- בתום ביצועה של הפעולה על המערך להיראות כך: 6- ,3- ,5 ,0 ,1 <--
נניח שמתוך ה- Main הודפסו ערכי arr, ואז בוצע הזימון הבא: (ChangeArray(arr,
ואז שוב הודפסו ערכי המערך.
בנוסף לכתיבת הפעולה, ענו על 3 השאלות שלהלן:
1) מה הודפס בפעם הראשונה? מה הודפס בפעם השנייה?
2) האם ניתן להגיד שלאחר זימון וביצוע הפעולה התבצע בפועל שינוי של ערכי המערך המקורי?
3) נסו להסביר מדוע?
ו. הוחלט לבדוק את הסימונים התזונתיים הרשומים על אריזות של חטיפים,
במטרה לקבוע אם חטיף אינו מזיק לבריאות או מזיק לבריאות.
הסימונים התזונתיים שנבדקו הם מספר הקלוריות בחטיף, ומשקל השומן שבו בגרמים.
חטיף אינו מזיק לבריאות אם מספר הקלוריות שבו קטן מ- 130 ומשקל השומן שבו נמוך מ- 5 גרמים.
1) כתבו פעולה GoodOrBad המקבלת את מספר הקלוריות בחטיף ומשקל השומן שבו.
הפעולה תחזיר את המחרוזת "Good" אם החטיף בריא, ואת המחרוזת "Bad" אם לא.
2) כתבו תכנית הקולטת 10 חטיפים (תוכנית כותבים ב- Main).
א. עבור כל חטיף יש לקלוט את שמו ואת מספר הקלוריות ומשקל השומן.
ב. התוכנית תבדוק בעזרת הפעולה מסעיף 1) האם החטיף בריא או לא,
ותדפיס "Good" או "Bad" בהתאם.
ג. התוכנית תמנה ותציג את כמות החטיפים הבריאים.
ד. התוכנית תציג את שם החטיף בעל מספר הקלוריות הגדול ביותר.
ז. כמות המחלקים של מספר שלם חיובי num היא כמות המספרים השלמים הקטנים ממנו, המחלקים את
num ללא שארית (החל מ- 1). דוגמה: כמות המחלקים של המספר 10 היא 3 (5 ,2 ,1).
1) כתבו פעולה Divider המקבלת כפרמטר מספר שלם וחיובי ומחזירה את כמות המחלקים שלו.
2) נגדיר שני מספרים שלמים חיוביים כ- "ידידותיים" אם כמות מחלקיהם שווה.
למשל, 10 (5 ,2 ,1) ו- 15 (5 ,3 ,1) הם מספרים "ידידותיים".
כתבו תכנית המשתמשת בפעולה מסעיף 1) בה הקלט הוא מספר חיובי שלם,
והפלט הוא כל המספרים הידידותיים שלו בתחום 3 עד 300 (כולל).
ח. כתבו פעולה Kalmanson המקבלת שני מערכי שלמים בעלי גודל זהה.
הפעולה מחזירה ערך בוליאני 'אמת' אם התאים המקבילים של שני המערכים זוגיים, או ששניהם אי-זוגיים.
למשל, במקרה שלהלן הפעולה תחזיר 'אמת' כי קיימת התאמה:
.12 ,10 ,3 ,6 ,5 <-- arr1
.4 ,100 ,9 ,2 ,7 <-- arr2
במקרה שלהלן הפעולה תחזיר 'שקר' כי אין התאמה:
.12 ,10 ,8 ,6 ,5 <-- arr1
.4 ,100 ,9 ,2 ,7 <-- arr2
.4 ,100 ,9 ,2 ,7 <-- arr2
במקרה שלהלן הפעולה תחזיר 'שקר' כי אין התאמה:
.12 ,10 ,8 ,6 ,5 <-- arr1
.4 ,100 ,9 ,2 ,7 <-- arr2
בשיעורים הבאים
1. מערך מונים
* קליטת דירוגי המשתמש 1-5. הדפסת כמות ההצבעות עבור כל דירוג.
* קליטת מספר שלם מהמשתמש, הדפסה כמה פעמים מופיעה כל אחת מהספרות 0-9 במספר.
* הצבעת 1000 שופטים עבור כל אחד מ- 20 השירים בגמר האירוויזיון 2023. כל שופט מצביע עבור
שיר אחד בלבד, השיר האהוב עליו ביותר. הדפסת השיר הזוכה.
2. לולאה מקוננת
* הדפסת צורות.
* הדפסת שעון.
* תוכנית לחישוב ממוצע 2 ציונים עבור 30 תלמידים.
* הדפסת כל המספרים הראשוניים בין 1-100.
* מיון לינארי.
* מיון בועות.
3. טווח החיים של משתנים
4. בונוס: טיפול בתצוגת פלט
* מחיקת תווים מסוף הפלט: הדפסת ערכי מערך בשורה אחת עם פסיק ביניהם ונקודה בסיום.
* נקודה עשרונית: הדפסת מספרים עם כמות ספרות רצויה לאחר הנקודה העשרונית
למשל: הדפסת 2 ספרות עשרוניות עבור כל אחד מהמספרים המודפסים:
-גם אם המספר שלם (למשל: 5.00)
-גם אם מספיק לייצגו באמצעות ספרה אחת בלבד לאחר הנקודה העשרונית (למשל: 5.50)
- גם אם כדי לייצג את המספר יש צורך ב- 3 או יותר ספרות עשרוניות. (למשל: אם המספר
המקורי הוא 5.123, יודפס 5.12, אם המספר המקורי הוא 5.125, יודפס 5.13.
* יישור: הדפסת מספרים מיושרת לימין או לשמאל.
* הזחה: הזחת הפלט ברמת הטאבים (במקום ברמת הרווחים).
* ביפ: השמעת צלילים.
* צבעים: צבע קידמה וצבע רקע.
* קליטת דירוגי המשתמש 1-5. הדפסת כמות ההצבעות עבור כל דירוג.
* קליטת מספר שלם מהמשתמש, הדפסה כמה פעמים מופיעה כל אחת מהספרות 0-9 במספר.
* הצבעת 1000 שופטים עבור כל אחד מ- 20 השירים בגמר האירוויזיון 2023. כל שופט מצביע עבור
שיר אחד בלבד, השיר האהוב עליו ביותר. הדפסת השיר הזוכה.
2. לולאה מקוננת
* הדפסת צורות.
* הדפסת שעון.
* תוכנית לחישוב ממוצע 2 ציונים עבור 30 תלמידים.
* הדפסת כל המספרים הראשוניים בין 1-100.
* מיון לינארי.
* מיון בועות.
3. טווח החיים של משתנים
4. בונוס: טיפול בתצוגת פלט
* מחיקת תווים מסוף הפלט: הדפסת ערכי מערך בשורה אחת עם פסיק ביניהם ונקודה בסיום.
* נקודה עשרונית: הדפסת מספרים עם כמות ספרות רצויה לאחר הנקודה העשרונית
למשל: הדפסת 2 ספרות עשרוניות עבור כל אחד מהמספרים המודפסים:
-גם אם המספר שלם (למשל: 5.00)
-גם אם מספיק לייצגו באמצעות ספרה אחת בלבד לאחר הנקודה העשרונית (למשל: 5.50)
- גם אם כדי לייצג את המספר יש צורך ב- 3 או יותר ספרות עשרוניות. (למשל: אם המספר
המקורי הוא 5.123, יודפס 5.12, אם המספר המקורי הוא 5.125, יודפס 5.13.
* יישור: הדפסת מספרים מיושרת לימין או לשמאל.
* הזחה: הזחת הפלט ברמת הטאבים (במקום ברמת הרווחים).
* ביפ: השמעת צלילים.
* צבעים: צבע קידמה וצבע רקע.
5. אלגוריתמיקה - 'השלבים בפתרון בעיה'
מדוע כדאי ליישמם כבר בשלב הזה
השלבים:
א. הבנת הבעיה.
ב. הצבת ערכים לווידוא הבנת הבעיה.
ג. זיהוי ואפיון הנתונים: קלט / חישוב / פלט.
ד. ציור תרשים זרימה.
ה. פירוט אסטרטגיית הפתרון בעברית, אותה מתרגמים לקוד התכנותי.
א. הבנת הבעיה.
ב. הצבת ערכים לווידוא הבנת הבעיה.
ג. זיהוי ואפיון הנתונים: קלט / חישוב / פלט.
ד. ציור תרשים זרימה.
ה. פירוט אסטרטגיית הפתרון בעברית, אותה מתרגמים לקוד התכנותי.