הוראת פעולות במציאות החדשה

35
תתתתת תתתתתת תתתתת תתתתתת תתתתתתת תתתתת תתתתתתת תתתתת תתתת: תתתתתתתתת' תתתת תתתת: תתתתתתתתת' תתתת

Upload: gay

Post on 06-Jan-2016

57 views

Category:

Documents


7 download

DESCRIPTION

הוראת פעולות במציאות החדשה. מגיש: בונימוביץ' לביא. מעבר בין תכנות פרוצדורלית לתמ"ע. הבעיה הגדולה היא:. גישה שונה לתכנות. גישה פרוצדורלית. לזהות נתונים ופעולות. להגדיר מבני נתונים ופעולות. לממש פעולות. בעזרת הפעולות לממש את התרגיל. גישה מונחית עצמים. לזהות עצמים. להגדיר התנהגות עצמים. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: הוראת פעולות במציאות החדשה

הוראת פעולות במציאות הוראת פעולות במציאות החדשההחדשה

מגיש: בונימוביץ' לביאמגיש: בונימוביץ' לביא

Page 2: הוראת פעולות במציאות החדשה

מעבר בין תכנות פרוצדורלית מעבר בין תכנות פרוצדורלית לתמ"עלתמ"ע

הבעיה הגדולה היא:הבעיה הגדולה היא:

גישה שונה לתכנות

Page 3: הוראת פעולות במציאות החדשה

גישה פרוצדורליתגישה פרוצדורלית

לזהות נתונים ופעולותלזהות נתונים ופעולות

להגדיר מבני נתונים ופעולותלהגדיר מבני נתונים ופעולות

לממש פעולותלממש פעולות

בעזרת הפעולות לממש את התרגילבעזרת הפעולות לממש את התרגיל

Page 4: הוראת פעולות במציאות החדשה

גישה מונחית עצמיםגישה מונחית עצמים

לזהות עצמיםלזהות עצמים

להגדיר התנהגות עצמיםלהגדיר התנהגות עצמים

להגדיר תכונות ולממש פעולותלהגדיר תכונות ולממש פעולות

בעזרת המחלקות שנבנו לממש את הפתרוןבעזרת המחלקות שנבנו לממש את הפתרון

Page 5: הוראת פעולות במציאות החדשה

תכנית הלימודיםתכנית הלימודים

שעות( שעות(1010: טיפוסים ומבוא למבני-נתונים ): טיפוסים ומבוא למבני-נתונים )66"פרק "פרק מטרות הפרקמטרות הפרק

להכיר את המושג 'טיפוס נתונים'להכיר את המושג 'טיפוס נתונים'

להכיר את מושג המחלקה הבסיסילהכיר את מושג המחלקה הבסיסי

לבנות מבנים מורכביםלבנות מבנים מורכבים

פירוט התכניםפירוט התכנים

המושג טיפוס: הצהרת טיפוס, המחלקה כמגדירה טיפוס.המושג טיפוס: הצהרת טיפוס, המחלקה כמגדירה טיפוס.

מחלקות בעלות תכונות פומביות מחלקות בעלות תכונות פומביות מבני נתונים מורכבים: מערכים, מבני נתונים מורכבים: מערכים, גישה ישירה גישה ישירה , הגדרת מחלקה, תכונות של מחלקה, , הגדרת מחלקה, תכונות של מחלקה, בלבדבלבד

, קליטת ערך לתכונה...", קליטת ערך לתכונה..."לתכונה של מחלקהלתכונה של מחלקה

Page 6: הוראת פעולות במציאות החדשה

כיצד לשרוד?כיצד לשרוד?

כיצד לא לקלקל את הקונצפט של תמ"ע

כיצד לא לקלקל את הקונצפט של תמ"ע

כיצד לעבור בחינת כיצד לעבור בחינת

בגרותבגרות

Page 7: הוראת פעולות במציאות החדשה

דוגמא לפתרון בשתי גישותדוגמא לפתרון בשתי גישות, תשס"ג, תשס"ג1010תרגיל תרגיל

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

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

פתח אלגוריתם שיקלוט לכל מועמד רשומה הכוללת את פתח אלגוריתם שיקלוט לכל מועמד רשומה הכוללת את הנתונים האלה: שם, כתובת, מספר תעודת זהות, שפת הנתונים האלה: שם, כתובת, מספר תעודת זהות, שפת

( וציון בבחינת המיון.( וציון בבחינת המיון.CCהתכנות המועדפת עליו )פסקל או התכנות המועדפת עליו )פסקל או האלגוריתם יציג כפלט שתי רשימות המכילות את שמות האלגוריתם יציג כפלט שתי רשימות המכילות את שמות

התלמידים שיתקבלו לתחרות הארצית, כתובותיהם ומספרי התלמידים שיתקבלו לתחרות הארצית, כתובותיהם ומספרי תעודות הזהות שלהם. תעודות הזהות שלהם.

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

..CCהתלמידים ששפת התכנות שלהם היא התלמידים ששפת התכנות שלהם היא

Page 8: הוראת פעולות במציאות החדשה

)פתרון של ראמי גבאלי( )פתרון של ראמי גבאלי(StudentStudentפתרון תמ"ע, מחלקה פתרון תמ"ע, מחלקה classclass Student Student { { privateprivate stringstring name; name; privateprivate stringstring address; address; privateprivate intint id; id; privateprivate intint grade; grade; privateprivate stringstring proglang; proglang; publicpublic Student) Student)stringstring name, name, stringstring address, address, intint grade, grade, stringstring proglang, proglang, intint id( id( {{ thisthis.name = name;.name = name; thisthis.address = address;.address = address; thisthis.grade = grade;.grade = grade; thisthis.proglang = proglang;.proglang = proglang; thisthis.id = id;.id = id; }} publicpublic stringstring GetName)({ GetName)({returnreturn thisthis.name;}.name;} publicpublic stringstring GetAddress)({ GetAddress)({returnreturn thisthis.address;}.address;} publicpublic intint GetGrade)({ GetGrade)({returnreturn thisthis.grade;}.grade;} publicpublic intint GetID)({ GetID)({returnreturn thisthis.id;}.id;} publicpublic stringstring GetProgLang)({ GetProgLang)({returnreturn thisthis.proglang;}.proglang;}

Page 9: הוראת פעולות במציאות החדשה

publicpublic voidvoid SetAddress) SetAddress)stringstring address( address( {{ thisthis.address = address;.address = address; }} publicpublic voidvoid SetGrade) SetGrade)intint grade( grade( {{ thisthis.grade = grade;.grade = grade; }} publicpublic voidvoid SetProgLang) SetProgLang)stringstring proglang( proglang( {{ thisthis.proglang = proglang;.proglang = proglang; }} publicpublic voidvoid Print)( Print)( {{ ConsoleConsole.WriteLine).WriteLine)"Name : {0}""Name : {0}", , thisthis.name(;.name(; ConsoleConsole.WriteLine).WriteLine)"Address : {0}""Address : {0}", , thisthis.address(;.address(; ConsoleConsole.WriteLine).WriteLine)"Id :{0} ""Id :{0} ", , thisthis.id(;.id(; ConsoleConsole.WriteLine).WriteLine)"-------------------------------""-------------------------------"(;(; }} }}

)פתרון של ראמי גבאלי( )פתרון של ראמי גבאלי(StudentStudentפתרון תמ"ע, מחלקה פתרון תמ"ע, מחלקה

Page 10: הוראת פעולות במציאות החדשה

)פתרון של ראמי גבאלי()פתרון של ראמי גבאלי( ContestContestפתרון תמ"ע, מחלקה פתרון תמ"ע, מחלקה

classclass ContestContest{{ privateprivate StudentStudent[] arr;[] arr; privateprivate intint counter; counter; publicpublic ContestContest )( )( {{ arr = arr = newnew StudentStudent[1750];[1750]; counter = 0;counter = 0; }} publicpublic voidvoid AddStudent) AddStudent)stringstring name, name, stringstring address, address, intint grade, grade,

string proglang, string proglang, intint id( id( {{ arr[counter++] = arr[counter++] = newnew StudentStudent)name, address, grade, proglang, id(;)name, address, grade, proglang, id(; }} publicpublic voidvoid AddStudent) AddStudent)StudentStudent s( s( {{ arr[counter++] = arr[counter++] = newnew StudentStudent)s.GetName)(, s.GetAddress)(, s.GetGrade)(,)s.GetName)(, s.GetAddress)(, s.GetGrade)(,

s.GetProgLang)(, s.GetID)((;s.GetProgLang)(, s.GetID)((; }}

Page 11: הוראת פעולות במציאות החדשה

publicpublic doubledouble GetAverage)( GetAverage)( {{ intint sum = 0; sum = 0; doubledouble avg; avg; forfor ) )intint i = 0; i < i = 0; i < thisthis.counter; i++(.counter; i++( sum += arr[i].GetGrade)(;sum += arr[i].GetGrade)(; avg = )avg = )doubledouble(sum / (sum / thisthis.counter;.counter; returnreturn avg; avg; }}

publicpublic voidvoid print) print)doubledouble avg, avg, stringstring proglang( proglang( {{ forfor ) )intint i = 0; i < i = 0; i < thisthis.counter; i++(.counter; i++( ifif ) )thisthis.arr[i].GetGrade)( > avg &&.arr[i].GetGrade)( > avg && thisthis.arr[i].GetProgLang)( == proglang( .arr[i].GetProgLang)( == proglang( thisthis.arr[i].print)(;.arr[i].print)(; }} }}

)פתרון של ראמי גבאלי()פתרון של ראמי גבאלי( ContestContestפתרון תמ"ע, מחלקה פתרון תמ"ע, מחלקה

Page 12: הוראת פעולות במציאות החדשה

)פתרון של ראמי )פתרון של ראמי ProgramProgramפתרון תמ"ע, מחלקה פתרון תמ"ע, מחלקה גבאלי(גבאלי(

classclass ProgramProgram{{ staticstatic voidvoid Main) Main)stringstring[] args([] args( {{ ContestContest all = all = newnew ContestContest )(; )(; forfor ) )intint i = 0; i < 1750; i++( i = 0; i < 1750; i++( {{ ConsoleConsole.WriteLine).WriteLine)"Enter Name""Enter Name"(;(; stringstring name = name = ConsoleConsole.ReadLine)(;.ReadLine)(; ConsoleConsole.WriteLine).WriteLine)"Enter Address""Enter Address"(;(; stringstring address = address = ConsoleConsole.ReadLine)(;.ReadLine)(; ConsoleConsole.WriteLine).WriteLine)"Enter Grade""Enter Grade"(;(; intint grade = grade = intint.Parse).Parse)ConsoleConsole.ReadLine)((;.ReadLine)((; ConsoleConsole.WriteLine).WriteLine)"Enter C or Pascal""Enter C or Pascal"(;(; stringstring proglang = proglang = ConsoleConsole.ReadLine)(;.ReadLine)(; ConsoleConsole.WriteLine).WriteLine)"Enter Id""Enter Id"(;(; intint id = id = intint.Parse).Parse)ConsoleConsole.ReadLine)((;.ReadLine)((; all.AddStudent)name, address, grade, proglang, id(;all.AddStudent)name, address, grade, proglang, id(;

}} doubledouble avg = all.GetAverage)(; avg = all.GetAverage)(; all.Print)avg, all.Print)avg, ”C"”C"(;(; all.Print)avg, all.Print)avg, ”Pascal"”Pascal"(;(; }} }}

Page 13: הוראת פעולות במציאות החדשה

יתרונות/חסרונות של פתרון תמ"עיתרונות/חסרונות של פתרון תמ"ע

חסרונותחסרונות

דורש זמן רב )הרבה קוד(דורש זמן רב )הרבה קוד(

( מהווה משימה קשה מדי( מהווה משימה קשה מדיOODOODזיהוי עצמים )זיהוי עצמים )

יתרונותיתרונות

מלמד גישה תמ"ע נכונה: חלוקה למחלקות, כימוס מלמד גישה תמ"ע נכונה: חלוקה למחלקות, כימוס

Page 14: הוראת פעולות במציאות החדשה

פתרון פרוצדורלי )פתרון של ראמי גבאלי(פתרון פרוצדורלי )פתרון של ראמי גבאלי(class Studentclass Student{{ publicpublic string name; string name; publicpublic string address; string address; publicpublic int id; int id; publicpublic string proglang; string proglang; publicpublic int grade; int grade;}}class Programclass Program{{ static void InputData)Student[] arr(static void InputData)Student[] arr(קליטת פרטי תלמידים למערךקליטת פרטי תלמידים למערך//// {{ for )int i = 0; i < arr.Length; i++(for )int i = 0; i < arr.Length; i++( {{ arr[i]=new Student)(;arr[i]=new Student)(; Console.WriteLine)"Enter Name, Address, Id num ,Language,Grade Console.WriteLine)"Enter Name, Address, Id num ,Language,Grade

from Student "(; from Student "(; arr[i].name = Console.ReadLine)(;arr[i].name = Console.ReadLine)(; arr[i].address = Console.ReadLine)(;arr[i].address = Console.ReadLine)(; arr[i].id = int.Parse)Console.ReadLine)((;arr[i].id = int.Parse)Console.ReadLine)((; arr[i].proglang = Console.ReadLine)(;arr[i].proglang = Console.ReadLine)(; arr[i].grade = int.Parse)Console.ReadLine)((;arr[i].grade = int.Parse)Console.ReadLine)((; }} }}

Page 15: הוראת פעולות במציאות החדשה

פתרון פרוצדורלי )פתרון של ראמי גבאלי(פתרון פרוצדורלי )פתרון של ראמי גבאלי( static double Average)Student[] arr(static double Average)Student[] arr(חישוב ממוצע הציוניםחישוב ממוצע הציונים//// {{ int sum = 0;int sum = 0; double avg;double avg; for )int i = 0; i < arr.Length; i++(for )int i = 0; i < arr.Length; i++( sum += arr[i].grade;sum += arr[i].grade; avg = )double(sum / arr.Length;avg = )double(sum / arr.Length; return avg;return avg; }}

static void Print)Student[] arr, double avg, string language(static void Print)Student[] arr, double avg, string language( // // הדפסת שתי הרשימותהדפסת שתי הרשימות {{ for)int i=0; i<arr.Length; i++(for)int i=0; i<arr.Length; i++( if )arr[i].grade > avg && arr[i].proglang == language(if )arr[i].grade > avg && arr[i].proglang == language( {{ Console.WriteLine)"Name : {0}", arr[i].name(;Console.WriteLine)"Name : {0}", arr[i].name(; Console.WriteLine)"Address: {0}", arr[i].address(;Console.WriteLine)"Address: {0}", arr[i].address(; Console.WriteLine)"Id Num : {0}", arr[i].id(;Console.WriteLine)"Id Num : {0}", arr[i].id(; Console.WriteLine)"---------------------------------"(;Console.WriteLine)"---------------------------------"(; }} }}

Page 16: הוראת פעולות במציאות החדשה

פתרון פרוצדורלי )פתרון של ראמי גבאלי(פתרון פרוצדורלי )פתרון של ראמי גבאלי( static void Main)string[] args(static void Main)string[] args( {{ Student[] arr = new Student [1750];Student[] arr = new Student [1750]; double avg;double avg; InputData)arr(;InputData)arr(; avg = Average)arr(;avg = Average)arr(; Print)arr, avg, "Pascal"(;Print)arr, avg, "Pascal"(; Print)arr, avg, "C"(;Print)arr, avg, "C"(; } } }}

Page 17: הוראת פעולות במציאות החדשה

יתרונות/חסרונות של פתרון יתרונות/חסרונות של פתרון פרוצדורליפרוצדורלי

חסרונותחסרונות

)סותר עקרון כימוס( )סותר עקרון כימוס(publicpublicכל התכונות כל התכונות

הפעולות הן סטטיות ואינן קשורות לעצמיםהפעולות הן סטטיות ואינן קשורות לעצמים

יתרונותיתרונות

פתרון מצומצםפתרון מצומצם

מוכר למורים מבחינת תהליך ההוראהמוכר למורים מבחינת תהליך ההוראה

Page 18: הוראת פעולות במציאות החדשה

האם יש דרך בינייםהאם יש דרך ביניים

?בהמשך...

Page 19: הוראת פעולות במציאות החדשה

סוגי בעיות במבחן בגרותסוגי בעיות במבחן בגרות

מעקב, מציאת טעויותמעקב, מציאת טעויות

((1-51-5כתיבת תכניות קטנות )כתיבת תכניות קטנות )

התכניות ללא סיפור מעשה: דורשות לבצע התכניות ללא סיפור מעשה: דורשות לבצע משהו על מערך, לכתוב פעולה המוגדרת משהו על מערך, לכתוב פעולה המוגדרת

מראש, אינן דורשות עיבוד נתונים רב שלבימראש, אינן דורשות עיבוד נתונים רב שלבי

דורשות בניית מבנה נתוניםדורשות בניית מבנה נתונים

בעיות עם סיפור מעשה עשיר, רב עצמיםבעיות עם סיפור מעשה עשיר, רב עצמים

Page 20: הוראת פעולות במציאות החדשה

השאלה הגדולההשאלה הגדולה

כיצד ללמד פתרון משימות בעייתיות במסגרת כיצד ללמד פתרון משימות בעייתיות במסגרת פרדיגמת תכנות מונחית עצמים? פרדיגמת תכנות מונחית עצמים?

Page 21: הוראת פעולות במציאות החדשה

התחלת הוראת פעולותהתחלת הוראת פעולות

הגישה המסורתית: מחלקה יחידה שמכילה הגישה המסורתית: מחלקה יחידה שמכילה לשימוש לשימוש פעולות סטטיות, הסיבה העיקרית פעולות סטטיות, הסיבה העיקרית

היא הורדת רמת מורכבות היא הורדת רמת מורכבות בפעולותבפעולותהאלגוריתם.האלגוריתם.

הגישה "עצמים תחילה": מתחילים ישר הגישה "עצמים תחילה": מתחילים ישר מעצמים, שומרים על עקרון הכימוס, הסיבה מעצמים, שומרים על עקרון הכימוס, הסיבה

היא שהעולם היא שהעולם לשימוש בעצמיםלשימוש בעצמיםהעיקרית העיקרית סביבנו מורכב מעצמים, אנו מעוניינים סביבנו מורכב מעצמים, אנו מעוניינים

בפונקציות שעצמים נושאים.בפונקציות שעצמים נושאים.

Page 22: הוראת פעולות במציאות החדשה

כיצד אני התחלתיכיצד אני התחלתיclass Program { static void Main)string[] args( { int i, n; Console.WriteLine)"Enter number"(; n = int.Parse)Console.ReadLine)((; for )i = 1; i <= n; i++( { PrintStars)i(; } } // prints the row of n stars static void PrintStars)int n( { int i; for )i = 1; i <= n; i++( Console.Write)"*"(; Console.WriteLine)(; } }

Page 23: הוראת פעולות במציאות החדשה

המשך הוראת פעולות, היעד הסופיהמשך הוראת פעולות, היעד הסופי

הגישה "המסורתית"הגישה "המסורתית"

הפעולות נשארות סטטיותהפעולות נשארות סטטיות

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

הגישה "עצמים תחילה"הגישה "עצמים תחילה"

מתקדמים בבניית מחלקות תוך שמירה על עקרון הכימוסמתקדמים בבניית מחלקות תוך שמירה על עקרון הכימוס

העיצוב הוא רק באמצעות המחלקותהעיצוב הוא רק באמצעות המחלקות

ניתן להסביר את פעולות המחלקה, עבודה עם מספר ניתן להסביר את פעולות המחלקה, עבודה עם מספר מחלקותמחלקות

Page 24: הוראת פעולות במציאות החדשה

כיצד אני רואה את ההמשךכיצד אני רואה את ההמשך

התחלתי בפעולות סטטיותהתחלתי בפעולות סטטיות

ממשיך בפעולות סטטיות בכל המשימות שלא דורשות ממשיך בפעולות סטטיות בכל המשימות שלא דורשות שימוש ברשומהשימוש ברשומה

להתחיל להסביר שימוש במחלקות: או במחרוזת, או להתחיל להסביר שימוש במחלקות: או במחרוזת, או RandomRandom

בסיום הקורס להתחיל להסביר בניית מחלקות: תכונות בסיום הקורס להתחיל להסביר בניית מחלקות: תכונות setset ו- ו-getgetפנימיות, פעולות פנימיות, פעולה בונה, פנימיות, פעולות פנימיות, פעולה בונה,

9-109-10המטרה היא להגיע לפתרון בעיות ברמה של המטרה היא להגיע לפתרון בעיות ברמה של

לא בטוח שיש צורך להגיע להסבר פעולות מחלקהלא בטוח שיש צורך להגיע להסבר פעולות מחלקה

הוראת שימוש במחלקת שרותהוראת שימוש במחלקת שרות

Page 25: הוראת פעולות במציאות החדשה

StudentStudent, פתרון "הגיוני", מחלקה , פתרון "הגיוני", מחלקה TaharutTaharutתרגיל תרגיל class Student { private string name; private string address; private int id; private int grade; private string progLang;// "C" or "Pascal" public Student)string name, string address, int grade, string proglang, int id( { this.name = name; this.address = address; this.grade = grade; this.progLang = proglang; this.id = id; } public int GetGrade)({return this.grade;} public string GetProgLang)({return this.progLang;} public void print)( { Console.WriteLine)"Name : {0}", this.name(; Console.WriteLine)"Address : {0}", this.address(; Console.WriteLine)"Id :{0} ", this.id(; } }

Page 26: הוראת פעולות במציאות החדשה

ProgramProgram, פתרון "הגיוני", מחלקה , פתרון "הגיוני", מחלקה TaharutTaharutתרגיל תרגיל class Program { static void Main)string[] args( { Student[] arr = new Student[1750]; double avg; InputData)arr(; avg = Average)arr(; Print)arr, avg, "Pascal"(; Print)arr, avg, "C"(; } static void InputData)Student[] arr( { for )int i = 0; i < arr.Length; i++( { Console.WriteLine)"Enter Name, Address, Id num ,Language,Grade

from Student "(; string name = Console.ReadLine)(; string address = Console.ReadLine)(; int id = int.Parse)Console.ReadLine)((; string lang = Console.ReadLine)(; int grade = int.Parse)Console.ReadLine)((; arr[i] = new Student)name, address, grade, lang, id(; } }

Page 27: הוראת פעולות במציאות החדשה

ProgramProgram, פתרון "הגיוני", מחלקה , פתרון "הגיוני", מחלקה TaharutTaharutתרגיל תרגיל // returns the average grade static double Average)Student[] arr( { int sum = 0; double avg; for )int i = 0; i < arr.Length; i++( sum += arr[i].GetGrade)(; avg = )double(sum / arr.Length; return avg; }

// prints the student data static void Print)Student[] arr, double avg, string lang( { for)int i=0; i<arr.Length; i++( if )arr[i].GetGrade)( > avg && arr[i].GetProgLang)( == lang( arr[i].print)(; } }

Page 28: הוראת פעולות במציאות החדשה

הנחיות לפתרון תרגילי בגרות בגישה תמ"עהנחיות לפתרון תרגילי בגרות בגישה תמ"ע

לא חובה להגיע לעיצוב מונחה עצמים מושלםלא חובה להגיע לעיצוב מונחה עצמים מושלם

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

..setset ו- ו-getgetצורך בשיטות צורך בשיטות

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

הדגש הוא על השימוש הנכון במחלקה הדגש הוא על השימוש הנכון במחלקה שנבנתה בתכניתשנבנתה בתכנית

Page 29: הוראת פעולות במציאות החדשה

BazaarBazaar, מחלקה , מחלקה YaridYaridפתרון תרגיל פתרון תרגיל

class Bazaar { private int numParticipant; private int numTicketsLottery; private int numTicketsFree; private int numTicketsShow; private int numTicketsBuffet; public Bazaar)( { this.numParticipant = 0; this.numTicketsBuffet = 0; this.numTicketsLottery = 0; this.numTicketsFree = 0; this.numTicketsShow = 0; } public void UpdateTickets)int lottery, int buffet, int show( { this.numTicketsFree += lottery; this.numTicketsBuffet += buffet; this.numTicketsShow += show; if )lottery > 10( this.numTicketsFree++; }

Page 30: הוראת פעולות במציאות החדשה

BazaarBazaar, מחלקה , מחלקה YaridYaridפתרון תרגיל פתרון תרגיל

// increments the number of participants by 1 public void IncParticipant)( { this.numParticipant++; }

// prints the all bazaar statistics public void Print)( { Console.WriteLine)"Participants : {0}", this.numParticipant(; Console.WriteLine)"Lottery tickets : {0}", this.numTicketsLottery(; Console.WriteLine)"Free tickets : {0}", this.numTicketsFree(; Console.WriteLine)"Show tickets : {0}", this.numTicketsShow(; Console.WriteLine)"Buffet tickets : {0}", this.numTicketsBuffet(; } }

Page 31: הוראת פעולות במציאות החדשה

ProgramProgram, מחלקה , מחלקה YaridYaridפתרון תרגיל פתרון תרגיל

class Program { static void Main)string[] args( { int lottary, show, buffet; Bazaar bazaar = new Bazaar)(; Console.WriteLine)"Enter the lottery tickets number"(; lottary = int.Parse)Console.ReadLine)((; while )lottary != -1( { Console.WriteLine)"Enter the show tickets number"(; show = int.Parse)Console.ReadLine)((; Console.WriteLine)"Enter the buffet tickets number"(; buffet = int.Parse)Console.ReadLine)((; bazaar.IncParticipant)(; bazaar.UpdateTickets)lottary, buffet, show(; Console.WriteLine)"Enter the lottery tickets number"(; lottary = int.Parse)Console.ReadLine)((; } bazaar.Print)(; } }

Page 32: הוראת פעולות במציאות החדשה

ClassClass, מחלקה , מחלקה BakbukimBakbukimפתרון תרגיל פתרון תרגיל public class Class { private int bottles; private int batteries; public Class)( { this.batteries = 0; this.bottles = 0; } // adds the bottles to the total bootles amount public void AddBottles)int bottles( { this.bottles += bottles; } // adds the batteries to the total batteries amount public void AddBatteries)int batteries( { this.batteries += batteries; } // returns the total points amount public int TotalPoints)( { return this.bottles * 3 + this.batteries * 7; } }

Page 33: הוראת פעולות במציאות החדשה

ProgramProgram, מחלקה , מחלקה BakbukimBakbukimפתרון תרגיל פתרון תרגיל class Program { static void Main)string[] args( { int bottles, batteries, classNum; Class class1 = new Class)(; Class class2 = new Class)(; int points1, points2; for )int i = 1; i <= 3; i++( { Console.WriteLine)"Enter the class number"(; classNum = int.Parse)Console.ReadLine)((; Console.WriteLine)"Enter bottles number"(; bottles = int.Parse)Console.ReadLine)((; Console.WriteLine)"Enter batteries number"(; batteries = int.Parse)Console.ReadLine)((; if )classNum == 1({

class1.AddBatteries)batteries(; class1.AddBottles)bottles(; } else {

class2.AddBatteries)batteries(; class2.AddBottles)bottles(; } }

Page 34: הוראת פעולות במציאות החדשה

ProgramProgram, מחלקה , מחלקה BakbukimBakbukimפתרון תרגיל פתרון תרגיל

points1 = class1.TotalPoints)(; points2 = class2.TotalPoints)(; if )points1 > points2( Console.WriteLine)"The first won"(; else if )points1 < points2( Console.WriteLine)"The second won"(; else Console.WriteLine)"Teko"(; } }

Page 35: הוראת פעולות במציאות החדשה

בהצלחה!