דוגמא למבחן ביסודות מדעי המחשב
|
פרק א'
|
|
|
|
1. כתוב תכנית הקולט
מספר למשתנה N ולאחריו N
מספרים שלמים ומדפיס את כמות המספרים המתחלקים ב3- ללא שארית. (10 נקודות). |
|
|
|
2. כתוב ביטוי בוליאני המייצג את התנאי
הבא: |
|
ספרת העשרות
במספר NUM שווה לספרת האחרות בו והמספר גדול מ50-. |
|
(המספר NUM הוא דו ספרתי) (10
נקודות). |
|
|
|
3.
נתון קטע התוכנית: |
|
I:=24; |
|
while I>0 DO |
|
begin |
|
writeln(I); |
|
I:=I-4; |
|
end; |
|
א.
מה יהיה הפלט לקטע התוכנית (5 נקודות). |
|
ב כתוב קטע תוכנית שקול שבו מופיע המשפט REPEAT והפלט זהה לפלט הקטע הנתון. (5 נקודות). |
|
|
|
4.
נניח כי בתכנית מופיעה ההצהרה הבאה: VAR LIST:ARRAY[1..100] OF CHAR |
|
כתוב קטע תכנית המשים את הערך 'A' לכל האיברים במערך עם המציין האי זוגי (כלומר :[1]LIST, [3]LIST, [5]LIST.. יהיו בעלי הערך התחילי 'A'),
ראה הערך 'B' לכל האיברים במערך עם המציין
הזוגי. (10 נקודות). |
|
|
|
5.
התבונן בהצהרות ובקטע התוכנית הבא: |
|
var Num, Sum: integer; |
|
Sum:=0; |
|
Num:=1; |
|
while
Num 20 do |
|
begin |
|
writeln(Num); |
|
Sum:=Sum+Num; |
|
Num:=Num+2; |
|
end; |
|
writeln(Sum,
' :'סכום המספרים
); |
|
|
|
קטע התוכנית אמור
להדפיס את המספרים האי-זוגיים מ0- עד 20 ואת סכומם. |
|
|
|
א. בקטע נפלה שגיאה,
מהי השגיאה? (5
נקודות) |
|
ב. תקן את קטע
התכנית כך שיבצע את משימתו (5
נקודות) |
|
|
|
פרק
ב' |
|
|
|
1.
כתוב תוכנית המדפיסה את כל המספרים בני 3 ספרות המקיימים את התנאי הבא: |
|
סכום ספרת
העשרות והמאות שווה לרבוע ספרת האחדות. |
|
אם המספר מקיים את התנאי התוכנית תדפיס אותו. |
|
דוגמה: המספר 543 מקיים את התנאי: 32=9=5+4 (15
נקודות) |
|
|
|
2.
הנח כי בתכנית הופיעו ההגדרות וההצהרות הבאות: |
|
type Positive=1..maxint; |
|
var Num:Positive; |
|
Function Sum0fDigit(Num:Positive):Positive; |
|
הנח כי הפונקציה SumOfDigit
מקבלת מספר שלם חיובי ומחזירה את סכום ספרותיו. |
|
א מהו הערך שתחזיר הפונקציה אם ערך
הפרמטר Num הוא 45 ו376-. (5 נקודות). |
|
|
|
ב נניח שהפונקציה מחזירה את
הערך 9, תן שתי דוגמאות לערך הפרמטר Num. |
|
(5 נקודות) |
|
|
|
ג כתוב קטע תכנית הקולטת
סדרה של מספרים חיוביים, סוף הסדרה מצוינת ע"י מספר שלילי, ומדפיסה כל מספר
המתחלק בסכום ספרותיו וכמו כן מדפיסה את כמות המספרים המקיימים תנאי זה. |
|
לדוגמא: סדרת המספרים - 18 103 83 550 110 4000 |
|
המספרים 18
550 110 ו4000- מתחלקים בסכום ספרותיהם לכן
הפלט יהיה: |
|
4000
110 550 18 |
|
כמות המספרים מתחלקים בסכום ספרותיהם: 4 |
|
הערה:
אין צורך לכתוב את הפונקציה. (5
נקודות). |
|
|
|
3.
נתונה התכנית הבאה: |
|
Program Confusion; |
|
var X, Y:integer; |
|
procedure F(X:integer; var Y: integer); |
|
begin |
|
X:=X-Y; |
|
Y:=X+Y; |
|
end; (F) |
|
begin |
|
read(X,Y); |
|
F(X,Y); |
|
Writeln(X,Y); |
|
end |
|
מה יהיה פלט התכנית Confusion כאשר הקלט הוא 2
5 (כלומר המספר 5 מושם
במשתנה X והמספר 2 מושם במשתנה Y ). (5 נקודות). |
|
|
|
מה יהיה פלט התכנית Confusion כאשר הקלט הוא 2
5 וכותרת הפרוצדורה משתנה
ל-(procedure
F(X,Y:integer ) (5 נקודות). |
|
|
|
מה יהיה פלט התכנית Confusion כאשר הקלט הוא 2
5 וכותרת הפרוצדורה משתנה
לvar
X,Y:integer)- ) F procedure . (5 נקודות). |
|
|
|
פרק
ג' |
|
|
|
4. הנהלת בית הספר
החליטה להפיק דו"ח מעקב הישגי התלמידים במקצוע מחשבים. לצורך זה אתה מתבקש לכתוב תכנית הקולטת את ציוני
התלמידים במחשבים בשכבת כיתות י' (בשכבה קיימים 200 תלמידים) ומדפיסה את כל
הציונים הקטנים מהממוצע. |
|
|
|
א. נסח את הבעיה העומדת
בפני ההנהלה כבעיה אלגוריתמית, כלומר, תאר במדויק את הקלט והפלט לאלגוריתם
המבוקש . (5 נקודות) |
|
ב. בסעיף זה עליך לחשוב
על אלגוריתם לפתרון הבעיה שניסחת בסעיף א' ולענות רק על השאלה הבאה: |
|
מהם המשתנים או המערכים העיקריים שבהם תשתמש בכתיבת האלגוריתם? לכל משתנה
או מערך ציין את שמו ואת טיפוסו, והגדר במשפט אחד את תפקידו.
(7 נקודות). |
|
ג. כתוב תוכנית בפסקל המממשת את הבעיה
והיעזר בתשובתך בסעיף ב' (8 נקודות). |
|
|
|
10. במפעל נעלים ארבע מחלקות יצור: |
|
מחלקה 1 - נעלי נשים |
|
מחלקה 2 - נעלי גברים |
|
מחלקה 3 - נעלי
ילדים |
|
מחלקה 4 - נעלי
ספורט |
|
לכל סוג נעל קיים מספר בקטלוג המורכב מ3- ספרות. ספרת המאות
מציינת את קוד המחלקה (1-4) ושאר שתי הספרות מציינות את קוד המוצר. |
|
דוגמא: המספר 354 בקטלוג מציין נעל ילדים אשר קוד המוצר שלה הוא
54. |
|
|
|
כתוב תכנית הקולטת רשימה של מספרי קטלוג של נעלים אשר נמכרו
בחודש האחרון. הרשימה מסתיימת במספר 0. הנח כי הקלט תקין. |
|
על התכנית להדפיס את מספר זוגות הנעלים שמכרה כל מחלקה במשך
החודש ואת מספר זוגות הנעלים שמכר המפעל. |
|
עליך להשתמש בפונקציה Hundred
המחזירה את ספרת המאות של מספר חיובי שלם בין 3 ספרות. (20 נקודות). |
|
|
|
|
|
פתרון
המבחן |
|
Program Number; .1 |
|
ver N, I, num: integer; |
|
begin |
|
writln(('הקש מספר שלם'
; |
|
readln (N); |
|
for 1:=1 to N do |
|
begin |
|
read(num); |
|
if num mod 3 - 0 then |
|
counter:=counter + 1; |
|
end; |
|
writeln(counter, ' : ('מספר
המספרים המתחלקים ב3- ; |
|
end. |
|
(num mod 10 = num div 10) and (num 50)
.2 |
|
|
|
3.
א. פלט התכנית: 24 |
|
20 |
|
16 |
|
12 |
|
8 |
|
4 |
|
ב.
;
1:-24 |
|
repeat |
|
writeln(I); |
|
I:=1-4; |
|
until i = 0; |
|
|
|
for i:=1 to 100 do .4 |
|
if I mod 2=0 then |
|
list[I]:= 'B' |
|
else |
|
list[I]:='A'; |
|
|
|
5.
א. הטעות היא שנכנס ללולאה אין סופית כיוון שבקידום num ערכו לא יהיה 20. |
|
ב. שינוי תנאי
הכניסה ללולאה ל-while Num = 20 do |
|
Program
targil 6; .6 |
|
Var
1:integer; |
|
begin |
|
for 1:=100 to 999 do |
|
begin |
|
digitl: = 1 mod 10; |
|
digit2: = 1 mod 100; |
|
digit2: = digit2 div
10; |
|
digit3: = 1 div 100; |
|
if digitl+digit2 =
sqr(1) then |
|
writeln (1); |
|
end; |
|
end; |
|
|
|
7. א. הערכים שתחזיר הפונקציה הם: 9 ו16-. |
|
ב. ערך הפרמטר Num : 27 או 225 |
|
ג. |
|
sum:=0; |
|
read
(Num); |
|
while
Num 0 do |
|
if Num mod
SumOfDigit(Num) = 0 then |
|
begin |
|
writeln(Num); |
|
sum:=sum+1; |
|
end; |
|
writeln(sum, ':'כמות
המספרים המקיימים את התנאי); |
|
|
|
8.
א. פלט התכנית יהיה: 9 5 |
|
ב. פלט התכנית יהיה: 2 5 |
|
ג. פלט התכנית יהיה: 9 7 |
|
|
|
9.
א. קלט - ציוני 200 התלמידים במקצוע מחשבים |
|
פלט - הציונים הנמוכים מהממוצע. |
|
|
|
ב. משתנים ומערכים: |
|
avg - משתנה לחישוב ממוצע הציונים, טיפוסי ממשי. |
|
sum - משתנה עזר לחישוב הממוצע. |
|
grade array - מערך לקליטת ציוני התלמידים, טיפוס
האיברים במערך - שלם. |
|
|
|
ג. |
|
program
grades; |
|
const
students = 200; |
|
type
gr ar = array [1..students] of integer; |
|
var avg:real; |
|
sum,I:integer; |
|
grade array_:gr_ar; |
|
|
|
begin |
|
sum:=0; |
|
for i:=1 to students
do |
|
begin |
|
read (grade _
array[i]); |
|
sum: =sum + grade _
array [i]; |
|
end; |
|
avg:=sum/students; |
|
for I:= 1 to students
do |
|
if grade array
[I] avg then |
|
write (grade_array
[I]:5); |
|
end. |
|
|
|
|
|
10.
|
|
program
shoes; |
|
var
katalog, I:integer; |
|
dep1, dep2, dep3,
dep4:integer; |
|
|
|
function
hundred(katalog:integer):integer; |
|
begin |
|
hundred:=katalog div
100; |
|
end; |
|
begin |
|
dep1:=0; dep2; =0;
dep3:=0; dep4:0; |
|
read(katalog); |
|
while katalog 0 do |
|
begin |
|
case hundred(katalog)
of |
|
1 : dep1 : =dep1+1; |
|
2
: dep2 : =dep2+1; |
|
3
: dep3 : =dep3+1; |
|
4
: dep4 : =dep4+1; |
|
end; |
|
read(katalog); |
|
end; |
|
write(dep1, dep2, dep3, dep4, (dep1+dep2+dep3+dep4)/4; |
|
end; |