החומר המופיע בעמוד זה פורסם לראשונה בכתב העת "הבטים בהוראת מדעי המחשב" גליון ינואר 2007, עמודים 35-37

לא ניתן לעשות שימוש מסחרי בחומר זה ללא רשות בכתב מן המחברים או מערכת כתב העת

תלמידים מפתחים לומדה

 

 

עירית על-דור שפירא

תיכון עירוני חדש, הרצליה

 

במאמר אציג פעילות שאני מבצעת עם תלמידי, שלומדים את "יסודות תורת המחשב" ונמצאים בשלב הראשוני של הלמידה. הפעילות מבוססת על פיתוח לומדה המיועדת לתלמידים בכיתות ב'-ד' לתרגול תרגילים בחשבון.

עיתוי הפרויקט: לאחר שהתלמידים למדו על משתנים ולולאות, כתבו תוכניות פשוטות והריצו אותן על המחשב.

בשיעור הראשון, התלמידים מנסחים את המפרט של הלומדה ואנחנו רושמים על הלוח את כל היכולות של הלומדה. אני מאפשרת לתלמידים לבחור בכל כיוון אפשרי מבחינת פיתוח הלומדה.

 

דוגמה לתיאור המפרט על-ידי קבוצת תלמידים:

1.             הלומדה תציג לתלמיד המתרגל תרגיל ותבקש ממנו לפתור את התרגיל.

2.             הלומדה נותנת משוב לגבי נכונות הפתרון.

3.             הלומדה מייצרת תרגילים אקראיים.

4.             התרגילים ברמות קושי שונות.

5.             פעולות החשבון בתרגילים, מגוונות.

6.             תינתן לתלמיד המתרגל הזדמנות נוספת לענות, באם טעה.

7.             מספר התרגילים יקבע ע"פ רצון התלמיד.

8.             בדיקות תקינות קלט (תשובה)

9.             הלומדה  תחשב ציון סופי.

 

בשלב ראשון של תכנון הלומדה, אנחנו מתמקדים ביחד במפרט בסיסי.

 

מפרט בסיסי יכיל :

1.             יוצגו 5 תרגילי חיבור.

2.             כל התרגילים חד ספרתיים.

3.             התלמיד יקבל משוב

4.             יחושב ויודפס ציון של התרגילים שנפתרו נכונה.

 

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

 

int main()

{

int TotalGrade=0;

int X,Y,Answer;

srand(time(NULL));

for (int i=1;i<=5;i++)

{

    X = rand()%10;

    Y = rand()%10;

    printf("  %d + %d = ",X,Y);

    scanf("%d",&Answer);

    if (X+Y==Answer) TotalGrade++;

  }

printf("\n\nYour right answres  %d\n",TotalGrade);

system("Pause");

return 0;

}

 

במהלך השעורים הבאים ילמדו ו/או יורחבו נושאים רלוונטים לפיתוח הלומדה על מנת שהתלמידים יוכלו להמשיך ולפתח את הלומדה למפרט הסופי.

 

הנושאים שיש ללמד ו/או להרחיב (נובעים מצרכי התלמידים לשפר את הלומדה) :

1. העמקה של מספרים אקראיים.

2. תרגילים עם ארבע פעולות החשבון: פקודת switch case .  

3. תכנון מסכים, חלוקת בעיה לתת בעיות.

4. בדיקות תקינות קלט.

5. פונקציות (עם ובלי החזרת ערך), העברת פרמטר ערך, העברת פרמטר כתובת.

 

נושא מרכזי שמלווה את כל פיתוח הפרויקט הוא שימוש בפונקציות תוך העברת פרמטרים (בין על פי ערך או על פי כתובת).

 

1. העמקה של מספרים אקראיים

המתרגל נשאל לרמת התרגילים שהוא מעוניין לתרגל. תשובות אפשריות:

1 - מספרים חד ספרתיים

2 - מספרים עד דו ספרתיים (כולל)

3 - מספרים עד תלת ספרתיים (כולל)

(אין שליטה לגבי מספר הספרות של התוצאה – תיתכן תוצאה ברמה גבוהה יותר)

בשלב הראשון התלמידים מציעים את הפתרון הבא :

if (rama==1

{

    X=rand()%10; 

    Y=rand()%10;          

{

else

if (rama==2)

{

    X=rand()%100;     

    Y=rand()%100;          

}

 else if (rama==3

{

    X=rand()%1000;      

    Y=rand()%1000;   

}

 

בשלב הבא, התלמידים לומדים את נושא ההכללה ומציעים את הפתרון הבא:

X=rand()%(int)pow(10,rama);        

Y=rand()%(int)pow(10,rama);

 

*  יש צורך בטעינת ספריית math.h

*  יש צורך ללמד את ה-casting

פונקציית pow מחזירה  float     

ופונקצית  rand צריכה משתנים מסוג int

 

2. תרגילים עם ארבע פעולות החשבון: פקודת switch case

מתקיים דיון בכיתה על האופן שבו תבחר הפעולה. אפשרות א' היא שכל התרגילים יהיו מאותו סוג (על פי בחירה מוקדמת) ואפשרות ב' היא שכל תרגיל יקבל פעולה אקראית, לפי המתואר לעיל.

 

void ActPeula(int*peula, char*peula_c(

)

 *peula=rand()%4;

   switch (*peula) {

   case  0: *peula_c=  '+';

             break;

   case  1: *peula_c  '_'=;

             break;

   case  2: *peula_c=  '*';

             break;

   case  3: *peula_c  '/'=;

             break;

} 

 

עתה, עולה לדיון בכיתה הטיפול בתוצאות התרגילים:

·                תרגילי חיבור וכפל: התוצאה עלולה לחרוג ממספר ספרות ברמה המבוקשת.

·                תרגילי חיסור: התוצאה עלולה להיות שלילית. ניתן למניעה ע"י  החלפת ערכים.

·                תרגילי חילוק: התוצאה עלולה לצאת לא שלמה. התלמידים מציעים לשלוף באקראי מספרים עד שיתקיים המצב של חלוקה שלמה (לולאה שעלולה לרוץ הרבה מאוד פעמים - לא מומלץ). הדרך המתגבשת היא שליפת מספרים אקראיים  X.Y והפעלת האלגוריתם הבא:

X=

Y=

X=X*Y;

 

נניח שהוגרלו המספרים      X=2 ,Y=4

התרגיל שהלומדה תציג יהיה 8/4 וכך מובטח שהתוצאה תהיה שלמה. (ההנחה היא שהמחולק יחרוג מתחום רמת המספרים המבוקשת).

 

3. תכנון מסכים וחלוקת בעיה לתת בעיות

מסך פתיחה: מציג את הלומדה, מתאר את אופן התרגול ושואל את המתרגל מספר שאלות.

מסך תרגול: מציג את התרגילים, מצפה לתשובת המתרגל, נותן משוב לפתרון התרגיל, מאפשר בשלב מתקדם לתשובות מתוקנות (עד 3 נסיונות). אם לבסוף לא מתקבלת תשובה נכונה, הלומדה מציגה את הפתרון הנכון. באותו מסך תרגול ניתן כל זמן התרגול להציג את מצב הנקודות עד כה.

מסך סיום: מציג את תוצאת הסיכום של התרגול הנוכחי עם משוב על הציון.

 

void Screen_Pticha(int *rama, int *num_ex)

{

  printf("הקש את מספר הרמה המבוקשת );

  scanf("%d",rama);

  printf("הקש מס' תרגילים לתרגול");

  scanf("%d",num_ex);

}

 

void Screen_Tirgul(int rama, int num_ex, int* TotalGrade)

{

הצגת התרגילים, בדיקת נכונות תשובה + משוב

ואפשרות למספר תשובות עד שמתקבלת תשובה נכונה

}

 

void Screen_Siyum(int TotalGrade, int Num_Ex)

{

printf("\n\n\n הציון שלך הוא %lf \n", (float)TotalGrade/Num_Ex * 100);

  if (TotalGrade>80)

   printf("!כל הכבוד");

 else if (TotalGrade>55)

   printf("יש מקום לשיפור!");

 else

   printf("יש צורך בתרגול נוסף, הפעם נכשלת!");

 }

 

4. בדיקות תקינות קלט

לאורך כל פיתוח הלומדה ניתן לבדוק תקינות קלט.

א. כמה תרגילים ברצונך לתרגל, יש לתחום מספר תרגילים. (לדוגמא 1-10)

ב. באיזו רמת תרגילים ברצונך לתרגל, יש לתחום רמת תרגילים. (לדוגמא 1-3 מס' ספרות במספר המופיע בתרגול)

ג. תשובת המתרגל, חייבת להיות מורכת מספרות בלבד.

 

דוגמה לבדיקת תקינות רמה:

printf("הקש רמה מבוקשת לתרגול 1-3 " (;

    scanf("%d",rama(;

 while ((rama<1) || (rama>3()

  {

        printf ("הקש רמה מבוקשת לתרגול 1-3") ;

        scanf("%d",rama(;

  }

 

5. פונקציות (עם ובלי החזרת ערך), העברת פרמטר ערך, העברת פרמטר כתובת

בשלב הראשוני, כל פיתוח הלומדה יכול להיכתב ללא חלוקה, ללא תכנון top-down, וללא מבניות. תוך כדי הפיתוח (ראה דוגמאות למעלה), התלמידים לומדים כיצד לארגן את הלומדה באופן לוגי. ניתן לבצע חלוקת נוספת בהצגת התרגילים עצמם, בדיקת פתרון או נסיונות נוספים וכדומה.

בשלב האחרון, כל צוות תלמידים ירחיב את הלומדה שלו למפרט המתואר כאן, לפחות בשילוב כל האלמנטים שנלמדו. כמובן שניתן לשלב צבע וצליל וכך הלומדה תשתדרג מבחינה ויזואלית.

 

גליון ינואר 2007

אתר הבטים

אתר המרכז הארצי