המצגת נטענת. אנא המתן

המצגת נטענת. אנא המתן

פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע

מצגות קשורות


מצגת בנושא: "פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע"— תמליל מצגת:

1 פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע
מהי שפת Java? פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע

2 Copyright © Moti Ben-Ari, 2005.
תכנות מונחה עצמים מהו? הגישה הפונקציונאלית המסורתית לפיתוח תכנה מתרכזת במה שתכנית "צריכה לעשות": פתח תכנית לחישוב ממוצע ציונים. תכנות מונחה עצמים (תמ"ע) היא גישה לפיתוח תכנה המבוססת על פעילות של עצמים שהם ישויות על תכונותיהם והפעולות שניתן לבצע עליהם. עצם: ציונים של כיתה בספרות. תכונה: מערך של שלמים. פעולה: חשב ממוצע. Copyright © Moti Ben-Ari, 2005.

3 Copyright © Moti Ben-Ari, 2005.
למה תכנות מונחה עצמים? לא ניתן לתכנן תכניות גדולות מאוד לפי השיטה הפונקציונאלית, כי הקשרים בין הפונקציות השונות מסועפים מדי. תמ"ע מאפשר פיתוח של מספר רב של מודולים שהם "חסרי הקשר", ואח"כ את תפירתם למערך תכנה גדול מאוד. בגלל שהמודולים "חסרי הקשר", תמ"ע מקל על שימוש חוזר בחלקי תכנה קיימים. Copyright © Moti Ben-Ari, 2005.

4 שפות לתכנות מונחה עצמים
Simula [Pascal 1970] Smalltalk 1972/1980 [C 1972] Ada 1983/1995 C Eiffel 1992 Java 1995 C# 2002 Copyright © Moti Ben-Ari, 2005.

5 Copyright © Moti Ben-Ari, 2005.
Java מאפייני שפת תחביר דומה מאוד ל-C. ביטוים, משפטי השמה ובקרה דומים ל-C. בדיקת טיפוסים חזקה בדומה ל-Pascal!!! מצביעים סמויים -- reference semantics. (כמו פרמטר של משתנה var ב- Pascal.) טיפול ב"חריגים" (Exceptions) – שגיאות בזמן ביצוע. "שפה" קטנה יחסית. הספריות גדולות מאוד. Copyright © Moti Ben-Ari, 2005.

6 Copyright © Moti Ben-Ari, 2005.
Java מאפייני שפת בניית עצמים והקשרים ביניהם. מושגים חדשים ומינוחים חדשים: עצם (ערך): object טיפוס (מודול): class תכונה (משתנה): attribute, field פעולה (פונקציה, פרוצדורה):method פעולה בונה (אתחול): constructor Copyright © Moti Ben-Ari, 2005.

7 Copyright © Moti Ben-Ari, 2005.
מאפייני שפת Java Applications Program Interface (API). גראפיקה, צליל, ממשק גרפי, תקשורת, קלט-פלט, מקביליות, מבני נתונים, מתמטיקה, הגנה. "אין מה ללמוד". אין חידושים מבחינת התחביר והסמנטיקה, רק טיפוסים, פעולות, תכונות, וכו'. ה-API כבד מאוד: כ-2700 טיפוסים. התיעוד הוא 34 MB (דחוס)! ההבדלים בין "השפות" הם למעשה בין ה-API. Copyright © Moti Ben-Ari, 2005.

8 Copyright © Moti Ben-Ari, 2005.
דוגמה לטיפוס מה-API JButton void setEnabled(boolean b) void setFont(Font f) void setText(String text) boolean isEnabled() void addActionListener(ActionListener l) Copyright © Moti Ben-Ari, 2005.

9 Copyright © Moti Ben-Ari, 2005.
Java בהוראה שפת Java הפכה להיות שפת התכנות המרכזית להוראה באוניברסיטאות בעולם. שפת Java היא שפת התכנות בה משתמשים במבחני ה- Advanced Placement : בחינות ארציות המיועדת לתלמידי תיכון בארה"ב הממשיכים לאוניברסיטה. התכנים מקבילים ל"יסודות" ו-"עיצוב". שינוי בשפות: Pascal -> C++ -> Java Copyright © Moti Ben-Ari, 2005.

10 Copyright © Moti Ben-Ari, 2005.
Java מול C# עבור התכנים ב-"יסודות", "עיצוב", "מבוא לתכנות מונחה עצמים", אין כלל הבדל בין השפות, אלא ברמה תחבירית זניחה. לכן, אין הבדלים פדגוגיים, פרט להבדלים בחומרי הלמידה וכלי התכנה. למקצוענים שיקולים שונים: The Web services debate: J2EE vs. .NET Communications of the ACM, Volume 46 Issue 6 Copyright © Moti Ben-Ari, 2005.

11 Copyright © Moti Ben-Ari, 2005.
מה הבעיה ? Java היא שפה שניתן לתכנת בה רק לפי שיטת "תכנות מונחה עצמים". לדעתנו רצוי ללמד שפת תכנות לתמ"ע, בשיטת "עצמים תחילה". לפי החלטת המפמ"ר וועדת המקצוע, הסילבוס של "יסודות" לא משתנה. איך ללמד תכנות פרוצדוראלי תוך שימוש בשפה לתמ"ע כגון Java ??? Copyright © Moti Ben-Ari, 2005.

12 אז איך נראית תכנית ב- Java ?
תכנית Hello world ב- Pascal וב- Java. תכנית ב- Pascal מ"יסודות 2". אותה תכנית ב- C. אותה תכנית ב- Java, ללא תמ"ע. אותה תכנית ב- C#, ללא תמ"ע. אותה תכנית ב- Java עם תמ"ע. Copyright © Moti Ben-Ari, 2005.

13 Copyright © Moti Ben-Ari, 2005.
תכנית פשוטה ב- Pascal program Hello; begin writeln(‘Hello world’) end. Copyright © Moti Ben-Ari, 2005.

14 Copyright © Moti Ben-Ari, 2005.
תכנית פשוטה ב- Java class Hello { public static void main(String[] args) { OutputWindow.println("Hello world"); } Copyright © Moti Ben-Ari, 2005.

15 Copyright © Moti Ben-Ari, 2005.
program MostPoints(input, output); const LAST = 100; type PointType = array[1..LAST] of integer; var Points: PointType; MaxPoints, P, NumPlay: integer; function Max(A: PointType; Players: integer): integer; var PointMax, P: integer; begin PointMax := A[1]; for P := 2 to Players do if A[P] > PointMax then PointMax := A[P]; Max := PointMax end {Max}; Copyright © Moti Ben-Ari, 2005.

16 Copyright © Moti Ben-Ari, 2005.
begin writeln('Enter number of points:'); NumPlay := 1; read(Points[NumPlay]); while Points[NumPlay] > -1 do NumPlay := NumPlay + 1; read(Points[NumPlay]) end; NumPlay := NumPlay - 1; MaxPoints := Max(Points, NumPlay); for P := 1 to NumPlay do if Points[P] = MaxPoints then writeln('Prize to player', P) end. Copyright © Moti Ben-Ari, 2005.

17 Copyright © Moti Ben-Ari, 2005.
#include <stdio.h> const int LAST = 100; int max(int a[], int numPlay( { int pointMax = a[0]; int p; for (p = 1; p < numPlay; p++) if (a[p] > pointMax) pointMax = a[p]; return pointMax; { Copyright © Moti Ben-Ari, 2005.

18 Copyright © Moti Ben-Ari, 2005.
int main() { int points[LAST]; int maxPoints, numPlay, p = 0; printf("Enter number of points:”); scanf("%d", points[numPlay]); while (points[numPlay] > -1) { numPlay++; { maxPoints = max(points, numPlay); for (p = 0; p < numPlay; p++) if (points[p] == maxPoints) printf("Prize to player %d\n", p)’ Copyright © Moti Ben-Ari, 2005.

19 Copyright © Moti Ben-Ari, 2005.
class MostPointsJ { static int max(int[] a, int numPlay) { int pointMax = a[0]; for (int p = 1; p < numPlay; p++) if (a[p] > pointMax) pointMax = a[p]; return pointMax; } static final int LAST = 100; Copyright © Moti Ben-Ari, 2005.

20 Copyright © Moti Ben-Ari, 2005.
public static void main(String[] args) { int[] points = new int[LAST]; int maxPoints, numPlay = 0; points[numPlay] = InputRequestor.requestInt("Enter:"); while (points[numPlay] > -1) { numPlay++; points[numPlay] = InputRequestor.requestInt("Enter:"); } maxPoints = max(points, numPlay); for (int p = 0; p < numPlay; p++) if (points[p] == maxPoints) OutputWindow.println("Prize to" + p); Copyright © Moti Ben-Ari, 2005.

21 Copyright © Moti Ben-Ari, 2005.
using System; class MostPoints { static int max(int[] a, int numPlay) { int pointMax = a[0]; for (int p = 1; p < numPlay; p++) if (a[p] > pointMax) pointMax = a[p]; return pointMax; } static readonly int LAST = 100; Copyright © Moti Ben-Ari, 2005.

22 Copyright © Moti Ben-Ari, 2005.
static void Main() { int[] points = new int[LAST]; int maxPoints, numPlay = 0; Console.WriteLine("Enter:"); points[numPlay] = int.Parse(Console.ReadLine()); while (points[numPlay] > -1) { numPlay++; points[numPlay] = int.Parse(Console.ReadLine()); } maxPoints = max(points, numPlay); for (int p = 0; p < numPlay; p++) if (points[p] == maxPoints) Console.WriteLine("Prize to" + p); Copyright © Moti Ben-Ari, 2005.

23 Copyright © Moti Ben-Ari, 2005.
class MostPointsObj { static final int LAST = 100; int[] points = new int[LAST]; public MostPointsObj () { … } void getPoints () { … } void printPrizes () { … } int max() { … } public static void main(String[] args) { MostPointsObj m = new MostPointsObj(); m.getPoints(); m.printPrizes(); { Copyright © Moti Ben-Ari, 2005.

24 Copyright © Moti Ben-Ari, 2005.
הבנת שגיאות הודעות על שגיאות מנוסחות כמובן לפי תמ"ע! אין קיצורי דרך: יש להבין את העקרונות כדי לפענח אותן. public static void main(String args[]) public static void main(String args) public static main(String[] args) public static Hello(String[] args) Copyright © Moti Ben-Ari, 2005.

25 Copyright © Moti Ben-Ari, 2005.
הבנת שגיאות exception in thread "main" java.lang.NoSuchMethodError: main invalid method declaration: return type expected modifier static not allowed here Copyright © Moti Ben-Ari, 2005.

26 Copyright © Moti Ben-Ari, 2005.
מסקנה חובה/כדאי למורה הרוצה ללמד את שפת Java ללמוד תכנות מונחה עצמים, כדי להבין את מבנה השפה ועקרונותיה. בשלב שני ניתן להבין איך ללמד "יסודות" ו-"עיצוב" עם שפת Java, תחילה ללא תמ"ע כלל, ואח"כ תוך הוראה מדורגת, הכול לפי הנדרש בסילבוסים. Copyright © Moti Ben-Ari, 2005.

27 Copyright © Moti Ben-Ari, 2005.
מהדר ומפרש System Development Kit. ניתן להורדה בחינם מהאתר של חברת Sun. ניתן לערוך תכנית עם עורך פשוט כגון Notepad ולהריץ אותה מחלון Command! javac MostPoints.java java MostPoints Copyright © Moti Ben-Ari, 2005.

28 כל כלי התכנה שמוזכרים ניתנים להורדה בחינם!!
Copyright © Moti Ben-Ari, 2005.

29 Copyright © Moti Ben-Ari, 2005.
סביבות פיתוח לימודיות סביבות מלאות הכוללות מנפה שגיאות ותמיכה בבדיקת תכניות: BlueJ (U. Southern Denmark, Deakin U., U. of Kent) DrJava (Rice U.) jGrasp (Auburn U.) Copyright © Moti Ben-Ari, 2005.

30 Copyright © Moti Ben-Ari, 2005.
סביבות פיתוח לימודיות סביבות להוראה לתלמידים מתחילים וחלשים: Alice (Carnegie Mellon U.) JPIE (Washington U. in St. Louis) LIVE (Hamilton College) Copyright © Moti Ben-Ari, 2005.

31 Copyright © Moti Ben-Ari, 2005.
סביבות פיתוח JCreator LE בשימוש בקורס "תמ"ע בשפת ג'אווה". אין מנפה שגיאות (אלא בגרסה בתשלום). jEdit סביבה בקוד פתוח עם plugins רבים לניפוי שגיאות, סידור קוד המקור, בדיקת תכניות, ניהול תצורה, ועוד. Eclipse (IBM). JBuilder (Borland). Copyright © Moti Ben-Ari, 2005.

32 ספריות מותאמות לתלמידים
Java Power Tools (Northeastern U.) ספריה להקל על תלמידים לכתוב ממשקים GUI. ObjectDraw (Williams College) ספריה התומכת בגישת הוראה "אירועים תחילה", ובהוראת מקביליות בשלב מוקדם. Java Gently (U. of Pretoria) Copyright © Moti Ben-Ari, 2005.

33 Copyright © Moti Ben-Ari, 2005.
כלי תכנה לוויזואלזציה Jeliot (U. of Joensuu, Weizmann Institute) אנימציה מליאה של תכניות פשוטות ב-Java. ניתן להשתמש גם בסביבת פיתוח ראשונית. Dot.java (U. of Auckland) ספריה המאפשרת הצגה גראפית של כל מבנה נתונים בתכנית Java. MatrixPro (Helsinki U. of Technology) כלי לוויזואליזציה של מבני נתונים ואנימציה של אלגוריתמים. JAWAA, JIVE, jVisual, Animal, … Copyright © Moti Ben-Ari, 2005.

34 Copyright © Moti Ben-Ari, 2005.
הניסיון שלנו לימדנו תמ"ע ושפת Java בגישת "עצמים תחילה" לתלמידי כיתה יוד בגימנסיה גן נחום בראשל"צ (שני מחזורים בשנים תשס"א, תשס"ב). ההוראה לוותה במחקר מעמיק של נוע. (בסופו של דבר) התלמידים הצעירים תפסו את העקרונות של תמ"ע, והיו מסוגלים לפתח בהצלחה פרויקטי תכנה לפי העקרונות. יש חשיבות רבה לסדר הוראת הנושאים, לדיוק במינוחים, לאיכות ההסברים, ולתמיכה של כלי התכנה. Copyright © Moti Ben-Ari, 2005.


הורד את "ppt "פרופ' מוטי בן-ארי המחלקה להוראת המדעים מכון ויצמן למדע

מצגות קשורות


מודעות Google