מצגת יעל והילה

Download Report

Transcript מצגת יעל והילה

‫אורט אבין‪ ,‬רמת‪-‬גן‬
‫תיכון רבין‪ ,‬כפר‪-‬סבא‬
‫‪[email protected]‬‬
‫‪1‬‬
‫תיכון צפית‪ ,‬כפר‪-‬מנחם‬
‫‪www.kadman.net‬‬
‫השינויים בתכנית הלימודים‬
‫‪ ‬מהות השינוי‪:‬‬
‫מעבר משפות תכנות פרוצדוראליות‬
‫‪ pascal‬ו‪ C -‬לשפות תכנות מונחה עצמים‬
‫‪ Java‬ו‪.C# -‬‬
‫‪ ‬מועד השינוי המתוכנן‪:‬‬
‫שנה"ל תשס"ז – התחלת הניסוי‪.‬‬
‫שנה"ל תשס"ט – החלפת השפות‪.‬‬
‫‪2‬‬
‫כיצד ללמד‬
‫‪ ‬גישה ‪I‬‬
‫המשך הוראה בגישת יסודות‪,‬‬
‫השוני הוא בשפה בלבד‪.‬‬
‫‪ ‬גישה ‪II‬‬
‫שינוי הפרדיגמה התכנותית‪,‬‬
‫מתכנות פרוצדוראלי לתכנות ‪. OOP‬‬
‫‪3‬‬
‫בעיית המבוך – פרק ב שאלה ‪6‬‬
‫בגרות ‪ ,899222‬תשס"ג‬
‫‪ ‬בגן משחקים יש כניסה המובילה לשני מבוכים‪:‬‬
‫‪ big‬ו‪.small -‬‬
‫‪ ‬המבוך ‪ big‬מיועד לאנשים שגובהם ‪1.70‬מ' ומעלה‪,‬‬
‫והמבוך ‪ small‬מיועד לאנשים שגובהם פחות מ‪-‬‬
‫‪1.70‬מ'‪.‬‬
‫‪ ‬כתוב תכנית שתקלוט את הגובה של כל אחד מהאנשים‬
‫המגיעים לכניסה‪ ,‬ותדפיס את שם המבוך שאליו ייכנס‪.‬‬
‫התכנית תמנה ותדפיס את מספר האנשים שנכנסו לכל‬
‫אחד מהמבוכים ביום מסויים‪.‬‬
‫קליטת הגבהים של האנשים תסתיים כאשר ייקלט‬
‫הגובה ‪.0‬‬
‫‪4‬‬
‫בעיית המבוך – אלגוריתם לפתרון‬
‫בגרות ‪ ,899222‬תשס"ג‬
‫מבוך‬
‫(‪)1‬‬
‫(‪)2‬‬
‫(‪)3‬‬
‫(‪)4‬‬
‫‪5‬‬
‫איפוס מונים‪countBig  0, countSmall  0 :‬‬
‫קלט‪ :‬גובה מבקר ‪height ‬‬
‫כל עוד ‪ ,height ≠ 0‬בצע‬
‫(‪ )3.1‬אם ‪- height ≥ 1.70‬‬
‫(‪ )3.1.1‬הדפס ”‪“big‬‬
‫(‪ )3.1.2‬הגדל את ‪ countBig‬ב‪1 -‬‬
‫(‪ )3.2‬אחרת ‪-‬‬
‫(‪ )3.2.1‬הדפס‪“small” :‬‬
‫(‪ )3.2.2‬הגדל את ‪ countSmall‬ב‪1-‬‬
‫(‪ )3.3‬קלט‪ :‬גובה מבקר ‪height ‬‬
‫הצג כפלט את ערכי המונים‪.‬‬
Java -‫בעיית המבוך – הפתרון ב‬
‫ תשס"ג‬,899222 ‫בגרות‬
//--- 2003 - 899222 ‫ בגרות‬- 6 ‫ שאלה‬--//--‫מבוך‬
--public class Maze {
public static void main(String[] args) {
int countBig=0, countSmall=0;
double height;
height = InputRequestor.requestDouble ("\n"+"Enter Your Height (0 to finish)");
while (height != 0){
if (height >= 1.7){
OutputWindow.print(height+" Big"+"\n");
countBig++;
}
else{
OutputWindow.print(height+" Small"+"\n");
countSmall++;
}
height = InputRequestor.requestDouble ("\n"+"Enter Your Height (0 to finish)");
}
OutputWindow.println ("\n"+"Number of big peaple enterd to Mase is "+countBig);
OutputWindow.println ("Number of small peaple enterd to Mase is "+countSmall);
}
}
6
C# -‫בעיית המבוך – הפתרון ב‬
‫ תשס"ג‬,899222 ‫בגרות‬
public class maze {
static void Main (string[] args) {
int countBig=0, countSmall=0;
float height;
Console.WriteLine("Enter Your Height (0 to finish)");
height = float.Parse(Console.ReadLine());
while (height != 0) {
if (height >= 1.7) {
Console.WriteLine("{0} Big", height);
countBig++;
}
else {
Console.WriteLine("{0} Small", height);
countSmall++;
}
Console.WriteLine("Enter Your Height (0 to finish)");
height = float.Parse(Console.ReadLine());
}
Console.WriteLine("Number of big peaple enterd to Mase is {0}",countBig);
Console.WriteLine("Number of small peaple enterd to Mase is {0}",countSmall);
}
}
7
‫תכנית הלימודים – יסודות ‪2 + 1‬‬
‫יסודות ‪:1‬‬
‫‪ ‬מבוא‬
‫‪ ‬מודל חישוב בסיסי‬
‫‪ ‬מבוא לפיתוח אלגוריתמים‬
‫‪ ‬ביצוע מותנה‬
‫‪ ‬נכונות של אלגוריתם‬
‫‪ ‬ביצוע חוזר‬
‫‪ ‬יעילות של אלגוריתם‬
‫‪ ‬פונקציות‬
‫‪ ‬מערכים חד‪-‬ממדיים‬
‫‪ ‬שילוב והרכבה של מבני בקרה‬
‫‪8‬‬
‫יסודות ‪:2‬‬
‫‪ ‬פיתוח אלגוריתמים‬
‫‪ ‬פרוצדורות‬
‫‪ ‬תווים ומחרוזות‬
‫‪ ‬בעיות אלגוריתמיות מתקדמות‬
‫‪ ‬יעלות ונכונות של אלגוריתמים‬
‫‪ ‬טיפוסים ומבני נתונים‬
‫‪ ‬יחידת ספריה‬
‫תכנית הלימודים – יסודות ‪2 + 1‬‬
‫יסודות ‪:1‬‬
‫‪ ‬מבוא‬
‫‪ ‬מודל חישוב בסיסי‬
‫‪ ‬מבוא לפיתוח אלגוריתמים‬
‫‪ ‬ביצוע מותנה‬
‫‪ ‬נכונות של אלגוריתם‬
‫‪ ‬ביצוע חוזר‬
‫‪ ‬יעילות של אלגוריתם‬
‫‪ ‬פונקציות‬
‫‪ ‬מערכים חד‪-‬ממדיים‬
‫‪ ‬שילוב והרכבה של מבני בקרה‬
‫‪9‬‬
‫יסודות ‪:2‬‬
‫‪ ‬פיתוח אלגוריתמים‬
‫‪ ‬פרוצדורות‬
‫‪ ‬תווים ומחרוזות‬
‫‪ ‬בעיות אלגוריתמיות מתקדמות‬
‫‪ ‬יעלות ונכונות של אלגוריתמים‬
‫‪ ‬טיפוסים ומבני נתונים‬
‫‪ ‬יחידת ספריה‬
‫תכנית הלימודים – יסודות ‪2 + 1‬‬
‫יסודות ‪:1‬‬
‫‪ ‬מבוא‬
‫‪ ‬מודל חישוב בסיסי‬
‫‪ ‬מבוא לפיתוח אלגוריתמים‬
‫‪ ‬ביצוע מותנה‬
‫‪ ‬נכונות של אלגוריתם‬
‫‪ ‬ביצוע חוזר‬
‫‪ ‬יעילות של אלגוריתם‬
‫‪ ‬פונקציות‬
‫‪ ‬מערכים חד‪-‬ממדיים‬
‫‪ ‬שילוב והרכבה של מבני בקרה‬
‫‪10‬‬
‫יסודות ‪:2‬‬
‫‪ ‬פיתוח אלגוריתמים‬
‫‪ ‬פרוצדורות‬
‫‪ ‬תווים ומחרוזות‬
‫‪ ‬בעיות אלגוריתמיות מתקדמות‬
‫‪ ‬יעלות ונכונות של אלגוריתמים‬
‫‪ ‬טיפוסים ומבני נתונים‬
‫‪ ‬יחידת ספריה‬
‫בעיית המבחן הארצי – פרק ג שאלה ‪10‬‬
‫בגרות ‪ ,899222‬תשס"ג‬
‫לקראת תחרות ארצית במדעי המחשב‪ ,‬נערכה בחינת מיון ל‪-‬‬
‫‪ 1750‬תלמידים‪.‬‬
‫לתחרות הארצית יתקבלו תלמידים שציוניהם בבחינת המיון גבוה‬
‫מהציון הממוצע של כל הנבחנים בבחינה זו‪.‬‬
‫פתח אלגוריתם שיקלוט לכל מועמד רשומה הכוללת את הנתונים‬
‫האלה‪ :‬שם‪ ,‬כתובת‪ ,‬מספר תעודת זהות‪ ,‬שפת התכנות המועדפת‬
‫עליו (פסקל או ‪ )C‬וציון בבחינת המיון‪.‬‬
‫האלגוריתם יציג כפלט שתי רשימות המכילות את שמות התלמידים‬
‫שיתקבלו לתחרות הארצית‪ ,‬כתובותיהם ומספרי תעודות הזהות‬
‫שלהם‪.‬‬
‫הרשימה הראשונה תכלול את פרטי התלמידים ששפת התכנות‬
‫שלהם היא פסקל‪ ,‬והרשימה השנייה תכלול את פרטי התלמידים‬
‫ששפת התכנות שלהם היא ‪.C‬‬
‫‪11‬‬
‫בעיית המבחן הארצי – אלגוריתם לפתרון‬
‫בגרות ‪ ,899222‬תשס"ג‬
‫(‪)1‬‬
‫(‪)2‬‬
‫(‪)3‬‬
‫קלט למערך הכללי‬
‫חישוב הציון הממוצע בבחינה ‪avg ‬‬
‫העברת כל התלמידים שציונם גבוה מ‪avg-‬‬
‫ושפת התכנות שלהם היא פסקל‪ ,‬למערך‬
‫מצטייני‪-‬פסקל‪.‬‬
‫העברת כל התלמידים שציונם גבוה מ‪avg-‬‬
‫ושפת התכנות שלהם היא ‪ ,C‬למערך מצטייני‪.C-‬‬
‫הדפסת אברי מערך מצטייני‪-‬פסקל‪.‬‬
‫הדפסת אברי מערך מצטייני‪.C-‬‬
‫(*)‬
‫ניתן להדפיס את פרטי המצטיינים מבלי לשמור את הנתונים במערך‪.‬‬
‫(‪)4‬‬
‫)‪) 5‬‬
‫(‪)6‬‬
‫‪12‬‬
‫בעיית המבחן הארצי – קבצי הפתרון‬
‫ תשס"ג‬,899222 ‫בגרות‬
:C# ‫קבצי‬

class StudentArr.cs

class contest
:Java ‫קבצי‬

class StudentType.java

class Contest.java
13
‫רשומה‪/‬מבנה – אובייקט‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪14‬‬
‫טיפוס‪-‬תלמיד הוגדר בפסקל כרשומה וב‪ C-‬כמבנה‪.‬‬
‫רשומה ‪ /‬מבנה הינו סוג של אובייקט (עצם)‪.‬‬
‫אובייקט הינו מופע ‪ instance‬של מחלקה‪.‬‬
‫מחלקה ‪ class‬הינה ייצוג מופשט של טיפוס נתונים‬
‫שיש לו‪:‬‬
‫תכונות ‪ – attributes‬משתנים‪/‬שדות הרשומה‬
‫ופעולות ‪ – methods‬פונקציות שפועלות עליו‪.‬‬
‫רשומה‪/‬מבנה – אובייקט‬
‫ ניתן להגדיר רשומה‪.‬‬‫‪ ‬בשפת ‪C#‬‬
‫בשפת ‪ - Java‬מושג הרשומה אינו קיים‪.‬‬
‫‪ ‬לא נוכל להימנע מלכתוב אובייקטים במידה‬
‫ונרצה לשמור על הרעיון של מבנים ‪ /‬רשומות‪.‬‬
‫‪15‬‬
‫התחרות כאובייקט‬
‫‪ ‬נפשט את הבעיה (של תרגיל ‪:)10‬‬
‫נניח והמערך הוא מערך של ציונים (מערך של‬
‫מספרים שלמים) ולא של רשומות‪.‬‬
‫‪ ‬תרגיל ‪ 10‬עוסק בתחרות‪.‬‬
‫התחרות היא אובייקט‪.‬‬
‫‪16‬‬
‫התחרות כאובייקט‬
‫‪ ‬תכונות התחרות – רשימות הציונים‪.‬‬
‫‪ ‬פעולות של התחרות‪:‬‬
‫‪ ‬התחרות יודעת לאתחל את הרשימות שלה‪.‬‬
‫‪ ‬התחרות יודעת לקלוט את הציונים‪.‬‬
‫‪ ‬התחרות יודעת לחשב ציונים מנצחים‪.‬‬
‫‪ ‬התחרות יודעת להדפיס את המנצחים‪.‬‬
‫‪17‬‬
‫התחרות כאובייקט‬
‫‪ ‬אם רוצים לעשות סימולציה של "הדבר האמיתי"‪,‬‬
‫יש להתחיל לחשוב מנקודת המבט של‬
‫האובייקט‪.‬‬
‫‪ ‬החלופות‪:‬‬
‫‪‬הוראה בשפה מונחת עצמים ללא אובייקטים‪,‬‬
‫ומכך ‪ -‬ללא סימולציות‪.‬‬
‫‪‬הוראת ‪" OOP‬אמיתי"‪.‬‬
‫התלמיד יחשוב ‪ OOP‬מהתחלה‪.‬‬
‫‪18‬‬
‫תכנות ‪ OOP‬במבטא פרוצדוראלי‬
‫‪ ‬אחרת ‪ -‬יתקבל תכנות מונחה עצמים במבטא‬
‫פרוצדוראלי‪.‬‬
‫‪The Program Went Out Something‬‬
‫* ‪Something. End Of The Road.‬‬
‫*‬
‫‪19‬‬
‫יצאה תכנית משהו משהו‪ ,‬סוף הדרך‪.‬‬
‫תכנות ‪ OOP‬במבטא פרוצדוראלי‬
‫דוגמא ‪ :1‬שימוש במחרוזת‬
‫‪ ‬מחרוזת היא אובייקט של המחלקה ‪.String‬‬
‫‪ ‬פעולות על מחרוזת מופעלות דרך האובייקט‪:‬‬
‫;)(‪str.Length‬‬
‫;)‪str1.Equals(str2‬‬
‫‪ ‬הגדרת פעולות ‪ static‬על מחרוזת‪:‬‬
‫;)‪strDelete(str,5,3‬‬
‫‪20‬‬
‫תכנות ‪ OOP‬במבטא פרוצדוראלי‬
‫דוגמא ‪ :2‬בדיקת תקינות תאריך‬
‫‪ ‬תכנות פונקציונאלי‪:‬‬
‫‪ ‬פונקציה המקבלת כפרמטר יום‪ ,‬חודש ושנה‪:‬‬
‫;)‪valid = validate (day, month, year‬‬
‫‪ ‬פונקציה המקבלת תאריך‪:‬‬
‫;)‪valid = validate (today‬‬
‫‪OOP ‬‬
‫‪ ‬התאריך בודק את עצמו‪:‬‬
‫;)(‪valid = today.validate‬‬
‫‪21‬‬
‫סכום ביניים‬
‫יסודות ‪:1‬‬
‫‪ ‬מבוא‬
‫‪ ‬מודל חישוב בסיסי‬
‫‪ ‬מבוא לפיתוח אלגוריתמים‬
‫‪ ‬ביצוע מותנה‬
‫‪ ‬נכונות של אלגוריתם‬
‫‪ ‬ביצוע חוזר‬
‫‪ ‬יעילות של אלגוריתם‬
‫‪ ‬פונקציות‬
‫‪ ‬מערכים חד‪-‬ממדיים‬
‫‪ ‬שילוב והרכבה של מבני בקרה‬
‫‪22‬‬
‫יסודות ‪:2‬‬
‫‪ ‬פיתוח אלגוריתמים‬
‫‪ ‬פרוצדורות‬
‫‪ ‬תווים ומחרוזות‬
‫‪ ‬בעיות אלגוריתמיות מתקדמות‬
‫‪ ‬יעלות ונכונות של אלגוריתמים‬
‫‪ ‬טיפוסים ומבני נתונים‬
‫‪ ‬יחידת ספריה‬
‫סכום ביניים‬
‫‪ ‬גישה ‪I‬‬
‫המשך הוראה בגישת יסודות‪,‬‬
‫השוני הוא בשפה בלבד‪.‬‬
‫‪ ‬גישה ‪II‬‬
‫שינוי הפרדיגמה התכנותית‪,‬‬
‫מתכנות פרוצדוראלי לתכנות ‪. OOP‬‬
‫‪23‬‬
‫קשיים צפויים‬
:‫קושי שנובע ממבנה התכנית‬
.‫ תכניות‬3-5 ‫בבחינת הבגרות נדרש התלמיד לכתוב‬
:java-‫מבנה התכנית ב‬


public class mainClass {
public static void main(String[] args) {
…
}
}
:C# -‫מבנה התכנית ב‬

using System;
class MainClass {
public static void Main(string[] args){
…
}
}
24
‫קשיים צפויים‬
:"‫פלט "ארוכות‬/‫קושי שנובע מהוראות קלט‬
: java ‫ בשפת‬
x = InputRequestor.requestDouble (“…”);
OutputWindow.print(“…”);
:C# ‫בשפת‬
x = int.Parse(Console.ReadLine());
Console.WriteLine(“…”);

25
‫קשיים צפויים‬
‫קושי שנובע מסביבת העבודה‪:‬‬
‫‪ ‬בשתי השפות‪ ,‬סביבת העבודה מורכבת יותר‪.‬‬
‫‪ ‬יצירת פרוייקט חדש‪.‬‬
‫‪ ‬הוספת מחלקה קיימת לפרוייקט‪.‬‬
‫קשיים נוספים‪:‬‬
‫‪ ‬מוסכמות ‪ -‬מתי יש להשתמש באות גדולה ומתי לא‪.‬‬
‫‪ ‬תחביר – מתי יש לשים נקודה ומתי לא‪.‬‬
‫‪26‬‬
‫סיכום – הצעה לארגון מחדש של ת"ל‬
‫לפי הגישה האומרת שינוי בשפה בלבד‪:‬‬
‫יסודות – אלגוריתמיקה‪ ,‬קלט‪/‬פלט‪ ,‬מחרוזות‪ ,‬מבני‬
‫בקרה‪ ,‬מערכים חד‪-‬ממדיים ודו‪-‬ממדיים‪.‬‬
‫פונקציות ‪ static‬תוך הקפדה של הפעלתן על‬
‫טיפוסים פשוטים בלבד (ללא סימולציות)‪.‬‬
‫עיצוב תכנה – מחלקות‪ ,‬אובייקטים‪ ,‬שילוב של‬
‫אובייקטים והתקשורת ביניהם‪.‬‬
‫מבני נתונים מתקדמים‪.‬‬
‫יחידה ‪ – OOP - 5‬הורשה ופולימורפיזם‪.‬‬
‫‪27‬‬
‫סיכום – הצעה לארגון מחדש של ת"ל‬
‫לפי הגישה של שינוי בפרדיגמה התכנותית‪:‬‬
‫יסודות – אלגוריתמיקה‪ ,‬קלט‪/‬פלט‪ ,‬מחרוזות‪ ,‬מבני‬
‫בקרה‪ ,‬מערכים חד‪-‬ממדיים ודו‪-‬ממדיים‪.‬‬
‫אובייקט מהו‪ ,‬שימוש באובייקט יחיד‪.‬‬
‫עיצוב תכנה – שילוב של אובייקטים והתקשורת‬
‫ביניהם‪ .‬מבני נתונים מתקדמים‪.‬‬
‫יחידה ‪ – OOP - 5‬הורשה ופולימורפיזם‪.‬‬
‫‪28‬‬
29