דוגמא למבחן ביסודות מדעי המחשב
פרק א'

 

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;