Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

‫מדינת ישראל‬

‫המינהל הפדגוגי‬ ‫משרד החינוך‬ ‫המזכירות הפדגוגית ‪ -‬אגף המדעים‬


‫אגף בכיר בחינות‬ ‫הפיקוח על הוראת מדע וטכנולוגיה‬

‫בחינת מפמ"ר במדעי המחשב לכיתה ח'‬


‫אלגוריתמיקה באמצעות שפת פייתון (‪ - )Python‬חלק א'‬
‫מאי ‪ - 2022‬אייר תשפ"ב‬

‫הכיתה‪_______________ :‬‬ ‫שם התלמיד‪/‬ה‪______________ :‬‬

‫תלמיד‪/‬ה יקר‪/‬ה‪,‬‬
‫במבחן שלפניכם שני פרקים‪:‬‬
‫‪ 60‬נקודות‬ ‫פרק ראשון (חובה)‪ :‬יש לענות על כל השאלות ‪:1-5‬‬
‫‪ 40‬נקודות‬ ‫פרק שני (שאלת בחירה)‪ :‬יש לענות על שתיים מבין השאלות ‪:6-9‬‬
‫‪ 100‬נקודות‬
‫יש לקרוא בעיון את שאלות המבחן‪ ,‬ולענות עליהן בתשומת לב‪.‬‬
‫בשאלות בהן דרוש לכתוב תשובה‪ ,‬יש לכתוב אותה במקום המיועד לכך‪.‬‬
‫בשאלות בהן דרוש לבחור תשובה נכונה אחת מבין כמה אפשרויות‪ ,‬יש להקיף בעיגול את התשובה‬
‫הנכונה‪.‬‬
‫יש לבדוק את התשובות ולתקן לפי הצורך‪ ,‬לפני מסירת המבחן‪.‬‬
‫חומר עזר מותר בשימוש‪ :‬כל חומר עזר‪ ,‬למעט מחשבון‪/‬מחשב הניתן לתכנות‪.‬‬
‫משך הבחינה ‪ 120 -‬דקות‪.‬‬
‫הנחיה למורה‪ :‬בסוף הבחינה‪ ,‬יש לאסוף את שאלון הבחינה‪.‬‬

‫ההנחיות בשאלון זה מנוסחות בלשון רבים‪,‬‬


‫אך מכוונות הן לנבחנות והן לנבחנים‪.‬‬

‫בהצלחה!‬

‫‪1‬‬
‫פרק ראשון — חובה (‪ 60‬נקודות)‬
‫בפרק זה חמש שאלות‪ .‬ענו על כל השאלות ‪.1-5‬‬

‫שאלה ‪ 12( 1‬נקודות)‬


‫לפניכם טבלה ובה ארבעה קודים בשפת ‪.python‬‬
‫לכל קוד בטבלה יש לכתוב מהו הפלט המתקבל בעמודה הריקה‪.‬‬

‫סעיף‬ ‫קוד בשפת ‪python‬‬ ‫הפלט המתקבל‬


‫מס׳‬
‫‪1.‬‬ ‫‪num1 = 3‬‬
‫‪num2 = 10‬‬
‫‪num1 = num2‬‬
‫‪num2 = num1‬‬
‫)‪print("num1 = ", num1, "num2 = ", num2‬‬

‫‪2.‬‬ ‫"‪number = "12345‬‬


‫)‪print("4" in number‬‬

‫‪3.‬‬ ‫"‪msg1 = "He" + "l"*2 +"o‬‬


‫"‪msg2 = " world‬‬
‫)‪print(msg1 + msg2‬‬
‫))‪print(len(msg1‬‬

‫‪4.‬‬ ‫‪number = 123‬‬


‫)‪print(number // 100‬‬
‫)‪print(number % 100 % 10‬‬
‫)‪print(number % 10‬‬

‫‪2‬‬
‫שאלה ‪ 12( 2‬נקודות)‬
‫נתונים שלושה משתנים ‪ a,b,c‬שלהם הערכים הבאים‪:‬‬
‫‪a=10, b=15, c=0‬‬
‫יש לחשב את ערכו של כל אחד מהביטויים בטבלה לעדכן את הערך בעמודה הריקה‪.‬‬
‫סעיף מס'‬ ‫ביטוי בוליאני‬ ‫ערך הביטוי (‪)True/False‬‬
‫‪1.‬‬ ‫‪a >= b or b == c‬‬

‫‪2.‬‬ ‫‪a % 5 == 0 and b // 5 > c‬‬

‫‪3.‬‬ ‫)‪a < 0 or (b == c + 15 and a >= c‬‬

‫‪4.‬‬ ‫‪a % 2 == c % 2 and b % 3 > a % 3‬‬

‫‪5.‬‬ ‫‪a != b and b != c‬‬

‫שאלה ‪ 12( 3‬נקודות)‬


‫לפניכם טבלה ובה ארבעה קטעי קוד‪.‬‬
‫לכל קטע קוד בטבלה יש לכתוב מהו הפלט המתקבל בעמודה הריקה‪.‬‬
‫סעיף מס׳‬ ‫קוד בשפת ‪python‬‬ ‫הפלט המתקבל‬
‫‪1.‬‬ ‫‪i = 1‬‬
‫‪while i < 4:‬‬
‫)'‪print('wow‬‬
‫‪i += 1‬‬

‫‪2.‬‬ ‫‪for item in range (6):‬‬


‫‪if item % 2 == 1:‬‬
‫)‪print(item * item‬‬
‫‪3.‬‬ ‫‪for item in range (9, 0, -3):‬‬
‫)‪print (item‬‬

‫‪4.‬‬ ‫‪x = 5‬‬


‫‪i = 1‬‬
‫‪while i < 4:‬‬
‫‪x -= 1‬‬
‫‪i += 1‬‬
‫)‪print(i, x‬‬

‫‪3‬‬
)‫ נקודות‬12( 4 ‫שאלה‬
‫ יש למתוח קו בין זוגות של לולאות תואמות (בשתי הלולאות יתקבל‬.‫ טורים של לולאות‬2 ‫לפניכם‬
.)‫פלט זהה‬

5 6 7 8 9 10 :)‫ שתי הלולאות הבאות תואמות כי להן אותו פלט (משמאל לימין‬,‫לדוגמה‬
for item in range(5,11): for item in range(6):
print(item, end=" ") print(item+5, end=" ")

‫טור ב‬ ‫טור א‬
1) for x in range(100,200,2): a) x = 0
print(x) while x < 9:
print(x)
x += 1
2) for x in range(1,10): b) for x in range(7,8):
print(x-1) print(x)

3) for x in range(4,5): c) for x in range (100,200):


print(x+3) if x % 2 == 0:
print(x)
4) for x in range(-5,6): d) x = 1
print(x+6) while x < 12:
print(x)
x += 1

4
‫שאלה ‪ 12( 5‬נקודות)‬
‫לפניכם ארבעה קטעי קוד הכוללים פעולה בשם ‪.calc_avg‬‬
‫המטרה של כל אחד מקטעי הקוד היא לקבל מהמשתמש ציונים של תלמידי כיתה ח' במבחן‬
‫במתמטיקה עד אשר ייקלט ציון שלילי או אפס ולחשב את ממוצע הציונים שנקלטו‪.‬‬
‫שימו לב‪ ,‬הציון השלילי או אפס שהתקבל בסיום הקלט אינו חלק מחישוב הממוצע‪.‬‬
‫בכל קטע קוד נפלה טעות לוגית אחת‪ ,‬ולכן הקטע אינו ממלא את מטרתו‪.‬‬
‫יש לכתוב את ההוראה השגויה ולהסביר כיצד ניתן לתקן אותה‪.‬‬

‫הערה‪ :‬הטעות אינה שגיאת ריצה‪.‬‬


‫ניתן להניח שהקלט תקין וכולל רק מספרים שלמים ויש לפחות ציון אחד בסדרת הערכים‬
‫שנקלטים‪.‬‬

‫קטע א'‬

‫‪def calc_avg():‬‬
‫‪sum=0‬‬
‫‪count =0‬‬
‫))"‪grade = int(input("Please enter Math's grade:‬‬
‫‪while grade > 0:‬‬
‫‪sum +=grade‬‬
‫‪count +=1‬‬
‫‪avg = sum/count‬‬
‫)‪print(avg‬‬

‫מהי ההוראה השגויה ?‬


‫_________________________________________________‬

‫כיצד יש לתקנה?‬
‫_______________________________________________________‬

‫‪5‬‬
:'‫קטע ב‬

def calc_avg():
sum=0
count =0
grade = int(input("Please enter Math's grade:"))
while grade < 0:
sum +=grade
count +=1
grade = int(input("Please enter Math's grade:"))
avg = sum/count
print(avg)

? ‫מהי ההוראה השגויה‬


_________________________________________________

?‫כיצד יש לתקנה‬
_______________________________________________________

6
:'‫קטע ג‬
def calc_avg():
sum=0
count =0
grade = int(input("Please enter Math's grade:"))
while grade > 0:
sum +=grade
count +=1
grade = int(input("Please enter Math's grade:"))
avg = sum/count
print(avg)

? ‫מהי ההוראה השגויה‬


_________________________________________________

?‫כיצד יש לתקנה‬
_______________________________________________________

:'‫קטע ד‬
def calc_avg():
sum=0
count =0
grade = int(input("Please enter Math's grade:"))
while grade > 0:
sum +=grade
count -=1
grade = int(input("Please enter Math's grade:"))
avg = sum/count
print(avg)

? ‫מהי ההוראה השגויה‬


_________________________________________________

?‫כיצד יש לתקנה‬
_______________________________________________________

7
‫פרק שני — בחירה (‪ 40‬נקודות)‬
‫ענה על שתיים מבין השאלות ‪( 9—6‬לכל שאלה — ‪ 20‬נקודות)‪.‬‬

‫שאלה ‪ 20( 6‬נקודות)‬


‫מספר מושלם הוא מספר השווה לסכום כל מחלקיו (לא כולל המספר עצמו)‪ .‬לדוגמה‪ :‬המספר ‪28‬‬
‫הוא מספר מושלם כי שווה לסכום כל מחלקיו‪.1+2+4+7+14 =28 -‬‬

‫מחלק הוא מספר המחלק את המספר המחולק עם שארית אפס‪ .‬לדוגמה‪ 4 :‬הוא מחלק של ‪ 24‬אך‬
‫לא של ‪.23‬‬

‫‪ .1‬לפי ההגדרה שלעיל‪ ,‬האם ‪ 6‬הוא מספר מושלם? אם כן‪ ,‬הציגו ביטוי מתמטי‪ ,‬כפי שמוצג‬
‫בדוגמה‪ ,‬שמראה זאת‪ .‬אחרת‪ ,‬הסברו‪__________________________________ .‬‬

‫‪ .2‬לפניכם קטע קוד הקולט מספר מהמשתמש ובודק האם המספר הוא מושלם‪.‬‬
‫השלימו את הקטע‪.‬‬

‫‪def perfect_number():‬‬
‫))"‪num = int(input("Please enter a number:‬‬
‫______)‪sum = (1‬‬
‫‪x=1‬‬
‫‪while x < num:‬‬
‫___)‪if (2‬‬ ‫‪:‬‬
‫‪sum‬‬ ‫_________)‪= sum + (3‬‬
‫=‪x‬‬ ‫)‪(4‬‬
‫)‪if (5‬‬ ‫‪_______:‬‬
‫)" ‪print("Perfect number‬‬
‫‪else:‬‬
‫)" ‪print("Not perfect number‬‬

‫)( ‪perfect_number‬‬

‫‪8‬‬
‫שאלה ‪ 20( 7‬נקודות)‬

‫קטע הקוד שלפניכם קולט מספר ת‪.‬ז בן ‪ 9‬ספרות ‪ id_number‬וספרה נוספת ‪ digit‬ומדפיס את כל‬
‫המיקומים בת‪.‬ז בהן מופיעה הספרה ‪( digit‬מימין לשמאל)‪.‬‬

‫אם הספרה לא מופיעה במספר‪ ,‬הפעולה תדפיס ‪.-1‬‬

‫לדוגמה‪:‬‬
‫עבור ת‪.‬ז ‪ 334429969‬והספרה ‪ – 9‬יודפסו המיקומים הבאים‪. 4 3 1 :‬‬
‫עבור ת‪.‬ז ‪ 123457899‬והספרה ‪ – 6‬יודפס ‪ -1‬כי הספרה ‪ 6‬לא קיימת בת‪.‬ז ‪.‬‬

‫השלימו את הקטע על מנת שיבצע את הנדרש‪.‬‬

‫‪def find_location ():‬‬


‫))"‪id_number = int(input("Please enter ID number:‬‬
‫))"‪digit = int(input("Please enter a digit:‬‬
‫‪found = False‬‬
‫‪for index in range((1)_______,(2)_______):‬‬
‫‪if (3)__________________:‬‬
‫)____________)‪print((4‬‬
‫_____________)‪found = (5‬‬
‫_______________)‪id_number = (6‬‬
‫‪if found == False:‬‬
‫)__________)‪print((7‬‬
‫)(‪find_location‬‬

‫‪9‬‬
‫שאלה ‪ 20( 8‬נקודות)‬

‫לפניכם ארבעה קטעי קוד המשתמשים בספריה ‪.turtle‬‬


‫כל קטע קוד מצייר צורה שונה‪.‬‬
‫מתחו קו בין הקוד לצורה אותה הקוד מצייר‪.‬‬
‫הניחו שבתחילת כל קוד מופיעות השורות הבאות המשותפות לכל הקטעים‪:‬‬
‫‪import turtle‬‬
‫)(‪wn = turtle.Screen‬‬
‫)(‪player = turtle.Turtle‬‬
‫)"‪player.shape("turtle‬‬

‫‪10‬‬
python ‫קוד‬ ‫צורה‬

1) for x in range(360): a)
player.left(1)
player.forward(1)
turtle.mainloop()

2) for index in range(3): b)


player.forward(100)
player.left(360/3)

turtle.mainloop()

3) player.left(180) c)
player.forward(80)
player.left(90)
player.forward(70)
for index in range(4):
player.forward(80)
player.left(90)

turtle.mainloop()

4) d)
for index in range(4):
player.left(90)
player.forward(50)

player.right(90)
player.forward(50)

turtle.mainloop()

11
‫שאלה ‪ 20( 9‬נקודות)‬
‫"מחרוזת בדילוג ‪ "2‬הינה מחרוזת שנבנית מתוך מחרוזת קיימת תוך כדי דילוג על שני תווים בכל‬
‫פעם‪.‬‬
‫לדוגמה‪:‬‬
‫עבור מחרוזת הבאה‪paryertgfhyjogqn :‬‬
‫תיווצר מחרוזת בדילוג הבאה‪python :‬‬

‫קטע הקוד שלפניכם קולט מחרוזת ‪ st‬מהמשתמש ‪ ,‬ומציג "מחרוזת בדילוג ‪."2‬‬
‫השלימו את החלקים החסרים בקטע‪:‬‬

‫‪def create_skip2str ():‬‬

‫)"‪(1)___ = input("Please enter a string:‬‬


‫"" = ‪skip2str‬‬

‫‪for index in range((2)____, (3)____, (4)____):‬‬

‫_________)‪skip2str = skip2str + (5‬‬

‫)________)‪print((6‬‬
‫)( ‪create_skip2str‬‬

‫בהצלחה!‬

‫‪12‬‬

You might also like