תרגול 1

מסמכים קשורים
תרגול 1

מבוא למדעי המחשב

מבוא למדעי המחשב

מבוא למדעי המחשב

מבוא לתכנות ב- JAVA תרגול 11

PowerPoint Presentation

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

מבוא למדעי המחשב

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

Slide 1

מבוא למדעי המחשב

PowerPoint Presentation

PowerPoint Presentation

תרגול 1

Slide 1

תרגול 1

מבוא לתכנות ב- JAVA תרגול 7

מבוא למדעי המחשב

מהוא לתכנות ב- JAVA מעבדה 3

Microsoft PowerPoint - 05_collections.ppt

PowerPoint Presentation

PowerPoint Presentation

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

סדנת תכנות ב C/C++

שאלהIgal : מערכים דו מימדיים רקורסיה:

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

Slide 1

עבודת בית מספר 5: מבני נתונים מבוא למדעי המחשב, סמסטר א' תשע"ט מבוא למדעי המחשב סמסטר א' תשע"ט צוות העבודה: מרצה אחראי: יוחאי טוויטו מתרגלים אחראים: א

הגשה תוך שבוע בשעת התרגול

Slide 1

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1

PowerPoint Presentation

Slide 1

PowerPoint Presentation

תכנות מונחה עצמים א' – תש"ע

PowerPoint Presentation

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

Microsoft Word - דוגמאות ב

תרגול מס' 4: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש

Microsoft Word B

מבוא למדעי המחשב

מס' סידורי: ת.ז.: עמוד 1 מתוך 20 בחינה בתוכנה 1 סמסטר ב', מועד א',תשס"ט 5/7/2009 וולף, ליאור ליאור שפירא, נעמה מאיר, מתי שמרת הוראות )נא לקרוא!( משך ה

PowerPoint Presentation

Microsoft Word - pitaron222Java_2007.doc

Microsoft PowerPoint - 10_threads.ppt

שאלהIgal : מערכים דו מימדיים רקורסיה:

מבוא למדעי המחשב - חובלים

Microsoft PowerPoint - rec3.ppt

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

יוםראשון, 02 ליולי 2014 סמסטר סוף מבחן )236703( עצמים מונחה תכנות - א' מועד 2014, אביב סמסטר קמחי יחיאל ד"ר מרצה: מסינג מיטל עבדאלקאדר, כרם גלעד, ערן

שאלהIgal : מערכים דו מימדיים רקורסיה:

מצגת של PowerPoint

PowerPoint Presentation

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

איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl

Microsoft Word - c_SimA_MoedB2005.doc

פייתון

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

משימה תכנית המתרגמת קטעי טקסט לשפה אחרת הקלט: קובץ המכיל את קטעי הטקסט וכן את השפה אליה רוצים לתרגם תרגול מס' 4: המתרגם שימוש במחלקות קיימות תכנות מתק

שאלה אחת

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

לנץ קרן מרצה: תכנותמונחהעצמים) ( יוםשישי 15 אוקטובר 0202 ב מועד 0202, אביב סמסטר סמסטר סוף מבחן גוטמן אייל רביב, אריאל משנה, אלון מתרגלים: הנחי

PowerPoint Presentation

מבוא למדעי המחשב, סמסטר א', תשס"ח תרגול מס' 2

Slide 1

Microsoft PowerPoint - lec10.ppt

מקביליות

מבוא למדעי המחשב - חובלים

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

תרגול 3 - מערכים

Microsoft PowerPoint - 07_tdd.ppt

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

מתכונת עיצוב 3013

תורת הקומפילציה

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

PowerPoint Presentation

Microsoft PowerPoint - rec1.ppt

Slide 1

Microsoft PowerPoint - 07_tdd.ppt

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

Microsoft Word - c_SimA_MoedA2006.doc

2013/14 אוניברסיטת חיפה מבוא למדעי מחשב, מעבדה מטרת המעבדה: לתרגל את המעבר מאלגוריתם לקוד C כמה שיותר. הוראות:.1.2 ניתן לעבוד ביחידים או בזוגות. (יש מ

תרגול מס' 7: תרגילים מתקדמים ברקורסיה

תוכן העניינים

מקביליות

BIG DATA תיאור הקורס המונח Big Data הולך וצובר תאוצה בשנים האחרונות, הוא הופך למגמה רווחת בתעשייה. המשמעות הפרקטית של המונח Big Data הינה טכנולוגיות נ

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

שקופית 1

1

Microsoft PowerPoint - lec2.ppt

מקביליות

Tutorial 11

תמליל:

מבוא למדעי המחשב 2019 תרגול 9 חזרה על תכנות מונחה עצמים Part II

ראינו בהרצאה ממשקים Set Iterable Iterator

בתרגול היום חזרה על: ממשקים Iterator Iterable )iterator נראה: )set ממשק )מימוש SetAsLinkedList Iterator לרשימה משורשרת )מימוש ממשק פעולות על קבוצות )שימוש בממשק )set?

חלק א: ממשקים

שבוע שעבר )בתרגול( המחלקה SimplePair הגנרית הרחבות של מחלקה זו ומימוש מספר מרוכב בדרך ראינו: המחלקה Object הורשה גנריות Reference vs. Instance type אופרטור instanceof

תזכורת: המחלקה SimplePair<T> public class SimplePair<T> { private T first ; private T second ; public SimplePair (T first, T second) {... public SimplePair (SimplePair<T> other) {... public T getfirst () {... public T getsecond () {... public void setfirst (T value) {... public void setsecond (T value) {... public to () {... public boolean equals (Object other) { return other instanceof SimplePair<?> && first.equals(((simplepair<?>) other).getfirst ()) && second.equals(((simplepair<?>) other).getsecond ()) ;

מוטיבציה : השוואת SimplePair, ArrayPair בואו נניח שמישהו החליט לייצר מחלקה בשם.ArrayPair גם בה יש זוג איברים )בתוך מערך(. ויש לה את השיטות: getfirst(), getsecond() )שימו לב לא ראינו מימוש, אבל זה לא משנה!(

דוגמא : השוואת SimplePair, ArrayPair public static void main ([] args){ SimplePair<Double> pair1 = new SimplePair<> (1, 2); ArrayPair<Double> pair2 = new ArrayPair<> (1, 2); System.out.println(pair1.equals(pair2)) // False!!! Name Type Value pair1 pair2 SimplePair ArrayPair הפונקציה דורשת! SimplePair אבל היינו רוצים להשוות רק על בסיס התוכן, getfirst(), getsecond() כלומר: SimplePair first second getfirst () getsecond () void setfirst (..) void setsecond (..) : ArrayPair????? Double getfirst () Double getsecond () void setfirst (..) void setsecond (..) :

ממשקים - אינטואיציה היה טוב לו יכולנו לתמצת את הרעיון של מפרטי המימוש "זוג סדור" כל מה שמעניין אותנו ברעיון של זוג זה היכולת לבצע: getfirst(), getsecond() ולהתעלם

ממשקים אינטואיציה 2 Apple מתכננת להשיק מכשיר חדש הם לא מעוניינים לחשוף את המימוש בנוסף, רק עוד שנה הוא יצא בנתיים הם רוצים שמפתחים ברחבי העולם יכתבו אפליקציות )לדוגמא, וייז רוצים שהאפליקציה שלהם תהיה מוכנה לרוץ על המכשיר החדש ביום ההשקה( Apple מפרסמת ממשק, רשימה של פונקציות: gettextmessag makecall, getgpslocation, וכולי

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

ממשקים הצהרה על ממשק: public interface <name> { <methods list> )public ללא מימושן ממשקים מתארים התנהגות )שיטות ממשקים אינם כוללים בנאים שכן אין דרך ליצר מופע אלא רק של מחלקה המממשת את הממשק אבל ממשק יכול להיות reference type של משתנה בדומה לשימוש במחלקות, המשתמש המימוש של השיטות השונות מחלקה אשר מממשת ממשק חייבת להכיל המופיעות בממשק )אובייקט( של ממשק )עוד בהמשך( בממשק אינו צריך להכיר את פרטי )לכל הפחות( את כל השיטות

ממשקים קוד הממשק /** * represent the ordered pair (first, second) * where first and second are of type T */ public interface Pair<T> { /** * get the first element of this pair */ public T getfirst () ; /** * get the second element of this pair */ public T getsecond () ; מהן ההתנהגויות המאפיינות זוג סדור? getfirst getsecond setfirst setsecond /** * change the first element of this pair */ public void setfirst (T value) ; /** * change the second element of this pair */ public void setsecond (T value) ;

ממשקים קוד הממשק /** * represent the ordered pair (first, second) * where first and second are of type T */ public interface Pair<T> { ממשק בשם Pair עם פרמטר טיפוס T /** * get the first element of this pair */ T getfirst () ; /** * get the second element of this pair */ T getsecond () ; /** * change the first element of this pair */ void setfirst (T value) ; שיטות הממשק )מחייבות כל מחלקה שתממש את )Pair<T> /** * change the second element of this pair */ void setsecond (T value) ;

ממשקים קוד המחלקה public class SimplePair<T> implements Pair<T> { private T first ; private T second ; public SimplePair (T first, T second) {... public SimplePair (Pair<T> other) {... public T getfirst () {... public T getsecond () {... public void setfirst (T value) {... public void setsecond (T value) {... כיצד נכריז ש- SimplePair מממש את הממשק?Pair המילה השמורה implements המחלקה SimplePair "מתחייבת " לממש את השיטות המופיעות ב- Pair במידה ו"חסרות" שיטות שגיאת קומפילציה שיטות הממשק )חייבות להופיע( public to () {... public boolean equals (Object other) {... שיטות נוספות

Pair<T> שמממש את SimplePair<T> public class SimplePair<T> implements Pair<T> { private T first ; private T second ; public SimplePair (T first, T second) { this.first = first ; this.second = second ; public SimplePair (Pair<T> other) { this (other.getfirst(), other.getsecond()) ; public T getfirst() { return first ; public T getsecond() { return second ; public void setfirst(t value) { first = value ; public void setsecond(t value) { second = value ; public to () { return "(" + getfirst () + ", " + getsecond () + ")" ; public boolean equals (Object other) { return other instanceof Pair<?> && getfirst().equals(((pair<?>) other).getfirst ()) && getsecond().equals(((pair<?>) other).getsecond());

דוגמת שימוש ב-< Pair<T public static void main ([] args){ Pair<Integer> pair1 = new SimplePair<>(1,2) ; Pair<Integer> pair2 = new ArrayPair<> (1,2) ; System.out.println(pair1); // (1, 2) System.out.println(pair2); // 1 : 2 System.out.println(pair2.getFirst()); // 1 System.out.println(pair1.equals(pair2)); // true Instance type first second SimplePair Integer Integer -> -> Type Name Value Pair pair1 Pair pair2 Reference type ArrayPair???? ArrayPair (Integer, Integer) ArrayPair (Pair<Integer>) Integer getfirst () Integer getsecond ()... SimplePair (Integer, Integer) SimplePair (Pair<Integer>) Integer getfirst () Integer getsecond ()...

חלק ב: SetAsLinkedList

תזכורת: ממשקים מההרצאה

תזכורת: ממשקים מההרצאה את זה נעשה היום:

תזכורת: הממשק Set<T> public interface Set<T> extends Iterable<T> { // test if element is in set public boolean contains(t element); // test if this is the empty set public boolean isempty(); public interface Iterable<T> { // get this object's iterator public Iterator<T> iterator () ; // number of elements in set public int size(); // add element to set if not already exists public void add(t element); // remove element from set if exists public void remove(t element);

מימוש של הממשק Set<T> עם רשימה מקושרת בהרצאה: מימוש של Set<T> באמצעות מערך דינמי כעת: מימוש של Set<T> באמצעות רשימה מקושרת למחלקה שלנו SetAsLinkedList<T> יהיה שדה אשר יכיל רשימה משורשרת של איברי הקבוצה כאשר נוסיף איברים לקבוצה נוודא כי אנו לא מוסיפים כפילויות

דוגמת שימוש ב- Set public static void main ([] args){ Set<Integer> set1 = new SetAsDynamicArray<> () ; set1.add (1); // set1 := {1 set1.add (2); // set1 := {1, 2 set1.add (3); // set1 := {1, 2, 3 System.out.println(set1); System.out.println(set1.contains (2)); System.out.println(set1.contains (-2)); // Set: {1, 2, 3 // true // false Set<Integer> set2 = new SetAsLinkedList<> () ; set2.add (-1) ; // set2 := {-1 set2.add (-2) ; // set2 := {-1, -2 set2.add (-3) ; // set2 := {-1, -2, -3 System.out.println(set2.contains (2)); System.out.println(set2.contains (-2)); SetAsDA List<Integer> elements boolean isempty () int size () boolean contains(integer element) void add (Integer element) : SetAsLL List<Integer> elements DynamicArray int size Object[] data int incrementsize boolean isempty () int size () Integer get(int index) Integer set(int index, Integer element) : LinkedList Link<Integer> first Name Type Value set1 Set set2 Set boolean isempty () int size () boolean contains(integer element) void add (Integer element) : boolean isempty () int size () Integer get(int index) Integer set(int index, Integer element) :

סיכום ביניים נרצה לייצר:.Set שיממש את המשק SetAsLinkedList 28

הפסקה 29

תזכורת: SetAsDynamicArray public class SetAsDynamicArray<T> implements Set<T> { private List<T> elements ; public SetAsDynamicArray() { elements = new DynamicArray<>(); public boolean isempty() { return elements.isempty(); public int size() { return elements.size(); public boolean contains(t element) { return elements.contains(element); public void add(t element) { if (! contains(element)) elements.add(element); public void remove(t element) { elements.remove(element); public Iterator<T> iterator() { return elements.iterator(); public to() { output = "Set: {"; Iterator<T> it= iterator (); while (it.hasnext()) { output = output+it.next()+", "; if (!isempty()) output = output.substring(0, output.length()-2); output = output+""; return output; שיטות הממשק )חייבות להופיע( public boolean equals(object other) { boolean isequal = true; if (!(other instanceof Set<?>)) isequal = false; else if (size()!= ((Set<?>)other).size()) isequal = false; else { Iterator<T> iter = iterator(); while (iter.hasnext() & isequal) isequal = (!((Set<Object>)other).contains(iter.next() )); return isequal;

המחלקה SetAsLinkedList<T> public class SetAsLinkedList<T> implements Set<T> { private List<T> elements ; public SetAsDynamicArray() { elements = new DynamicArray<>(); public boolean isempty() { return elements.isempty(); public int size() { return elements.size(); public boolean contains(t element) { return elements.contains(element); public void add(t element) { if (! contains(element)) elements.add(element); public void remove(t element) { elements.remove(element); public Iterator<T> iterator() { return elements.iterator(); public to() { output = "Set: {"; Iterator<T> it= iterator (); while (it.hasnext()) { output = output+it.next()+", "; if (!isempty()) output = output.substring(0, output.length()-2); output = output+""; return output; public boolean equals(object other) { if (!(other instanceof Set<?>)) return false ; Set<?> otherset = (Set<?>) other ; if (size ()!= otherset.size()) return false ; boolean isequal = true ; Iterator<T> it = iterator () ; while (it.hasnext() & isequal) isequal = otherset.contains(it.next()); return isequal ;

המחלקה SetAsLinkedList<T> public class SetAsLinkedList<T> implements Set<T> { private List<T> elements ; public SetAsLinkedList() { elements = new LinkedList<>(); public boolean isempty() { return elements.isempty(); public int size() { return elements.size(); public boolean contains(t element) { return elements.contains(element); public void add(t element) { if (! contains(element)) elements.add(element); public void remove(t element) { elements.remove(element); public Iterator<T> iterator() { return elements.iterator(); public to() { output = "Set: {"; Iterator<T> it= iterator (); while (it.hasnext()) { output = output+it.next()+", "; if (!isempty()) output = output.substring(0, output.length()-2); output = output+""; return output; public boolean equals(object other) { if (!(other instanceof Set<?>)) return false ; Set<?> otherset = (Set<?>) other ; if (size ()!= otherset.size()) return false ; boolean isequal = true ; Iterator<T> it = iterator () ; while (it.hasnext() & isequal) isequal = otherset.contains(it.next()); return isequal ;

תזכורת: הממשק Set<T> - חסר לנו איטרטור! public interface Set<T> extends Iterable<T> { // test if element is in set public boolean contains(t element); // test if this is the empty set public boolean isempty(); public interface Iterable<T> { // get this object's iterator public Iterator<T> iterator () ; // number of elements in set public int size(); // add element to set if not already exists public void add(t element); // remove element from set if exists public void remove(t element);

המחלקה SetAsLinkedList<T> public class SetAsLinkedList<T> implements Set<T> { private List<T> elements ; public SetAsLinkedList() { elements = new LinkedList<>(); public boolean isempty() { return elements.isempty(); public int size() { return elements.size(); public boolean contains(t element) { return elements.contains(element); public void add(t element) { if (! contains(element)) elements.add(element); public void remove(t element) { elements.remove(element); public Iterator<T> iterator() { return elements.iterator(); public to() { output = "Set: {"; Iterator<T> it= iterator (); while (it.hasnext()) { output = output+it.next()+", "; if (!isempty()) output = output.substring(0, output.length()-2); output = output+""; return output; public boolean equals(object other) { if (!(other instanceof Set<?>)) return false ; Set<T> otherset = (Set<T>) other ; if (size ()!= otherset.size()) return false ; boolean isequal = true ; Iterator<T> it = iterator () ; while (it.hasnext() & isequal) isequal = otherset.contains(it.next()); return isequal ;

סיכום ביניים 1. ממשק הוא "חוזה" המכיל רשימה של מטודות בהן המחלקה תומכת. 2. מימשנו את המחלקה,SetAsLinkedList שמממשת את הממשק Set שאלות על ממשקים? 35

חלק ג: הוספת Iterator LinkedList ל -

תזכורת: ממשקים מההרצאה

תזכורת: הממשק List<T> הוא Iterable public interface List<T> extends Iterable<T> { // Returns true if this list contains no elements. public boolean isempty(); // Returns the number of elements in this list. public int size(); // Returns true if this list contains the specified element. public boolean contains(t element); // Returns the element at the specified position in this list. public T get(int index); public interface Iterable<T> { // get this object's iterator public Iterator<T> iterator () ; // Replaces the element at the specified position in this // list with the specified element public T set(int index, T element); //Appends the specified element to the end of this list public boolean add(t element); public interface Iterator<T> { // test if iterator contain more values public boolean hasnext () ; //Inserts the specified element at the specified position //in this list public void add(int index, T element); //Removes the first occurrence of the specified element //from this list, if it is present public boolean remove(t element); // get the next value if exists // otherwise, throw NoSuchElement exception public T next () ;

תזכורת: המחלקה LinkedList<T> public class LinkedList <T> implements List<T> { private Link<T> first; public LinkedList() {... public LinkedList(List<T> mylist) {... public int size () {... public boolean isempty () {... public T get (int index) {... public boolean remove (Object toremove) {... public boolean contains (Object element) {... public T set (int index, T element) {... public void add (int index, T element) {... public boolean add (T element) {... public Iterator<T> iterator() {... public to () {... public boolean equals (Object other) {... public class Link <E> { private E data; private Link<E> next; public Link (E data, Link<E> next) {... public Link (E data) {... public Link<E> getnext () {... public void setnext (Link<E> next){... public E getdata () {... public E setdata (E data) {... public to() {... public class LinkedListIterator<T> implements Iterator<T> { : : public boolean hasnext () {... public T next () {...

תזכורת: ממשקים מההרצאה את זה נעשה כעת:

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ;

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ;

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; hello Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; hello world Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; hello world goodbye Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello world goodbye

LinkedList<T> עבור Iterator public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ;

השיטה iterator() ב-< LinkedList<T public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; :

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ; hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ; hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ; hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ; hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello world public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ; hello world goodbye

דוגמת שימוש ב- Iterator עבור LinkedList<T> public static void main ([] args){ List<> list = new LinkedList<>() ; list.add("hello") ; list.add("world") ; list.add("goodbye") ; Iterator<> it = list.iterator() ; while (it.hasnext()) System.out.print(it.next() + " "); System.out.println(); hello world goodbye public class LinkedList <T> implements List<T> { : public Iterator<T> iterator() { return new LinkedListIterator<>(first) ; : public class LinkedListIterator<T> implements Iterator<T> { private Link<T> current ; public LinkedListIterator (Link<T> start) { current = start ; public boolean hasnext() { return current!= null ; public T next() { if (!hasnext ()) throw new NoSuchElementException() ; T data = current.getdata() ; current = current.getnext() ; return data ; hello world goodbye

חלק ד: המחלקה הסטאטית Sets

פעולות נוספות על קבוצות )המחלקה )Sets public class Sets { // test if set1 subset of set2 public static <T> boolean subset (Set<T> set1, Set<T> set2) {... // return set1 union set2 public static <T> Set<T> union (Set<T> set1, Set<T> set2) {... // return the intersection of set1 and set2 public static <T> Set<T> intersection (Set<T> set1, Set<T> set2) {... // return the subtraction of set2 from set1 public static <T> Set<T> subtraction (Set<T> set1, Set<T> set2) {...

פעולות נוספות על קבוצות )המחלקה )Sets public class Sets { // test if set1 subset of set2 public static <T> boolean subset (Set<T> set1, Set<T> set2) {... // return set1 union set2 public static <T> Set<T> union (Set<T> set1, Set<T> set2) {... // return the intersection of set1 and set2 public static <T> Set<T> intersection (Set<T> set1, Set<T> set2) {... // return the subtraction of set2 from set1 public static <T> Set<T> subtraction (Set<T> set1, Set<T> set2) {... // return the product of set1 and set2 public static <T> Set<Pair<T>> product (Set<T> set1, Set<T> set2) {... // return the union of all sets in sets public static <T> Set<T> unionall (Set<Set<T>> sets) {...

שימוש בשיטה product public static void main ([] args){ Set<> streets = new SetAsDynamicArray<>() ; streets.add("street1"); streets.add("street2"); streets.add("street3"); System.out.println(streets); // Set: {... Set<> housenumbers = new SetAsLinkedList<>() ; housenumbers.add("1") ; housenumbers.add("2") ; housenumbers.add("3") ; housenumbers.add("4") ; System.out.println(houseNumbers); // Set: {... Set<Pair<>> streetsandnumbers = Sets.product (streets, housenumbers) ; System.out.println(streetsAndNumbers); // Set: {("Street1", "1"), ("Street1", "2"),..., ("Street3", "4")

מימוש השיטה product public class Sets {... public static <T> Set<Pair<T>> product (Set<T> set1, Set<T> set2) { Set<Pair<T>> prod = new SetAsLinkedList<>() ; Iterator<T> it1 = set1.iterator() ; while (it1.hasnext()) { T item1 = it1.next () ; Iterator <T> it2 = set2.iterator() ; while (it2.hasnext()) prod.add(new SimplePair<> (item1, it2.next())); return prod ;

שימוש בשיטה unionall public static void main ([] args){ Set<Integer> nums1 = new SetAsDynamicArray<>() ; nums1.add(0); nums1.add(1); nums1.add(3); Set<Integer> nums2 = new SetAsDynamicArray<>() ; nums1.add(1); nums1.add(3); nums1.add(5); Set<Integer> nums3 = new SetAsDynamicArray<>() ; nums1.add(0); nums1.add(2); nums1.add(4); Set<Set<Integer>> sets = new SetAsLinkedList<>() ; sets.add(nums1); sets.add(nums2); sets.add(nums3); Set<Integer> nums = Sets.unionAll(sets) ; System.out.println(nums); // Set: {0, 1, 2, 3, 4, 5

מימוש השיטה unionall public class Sets {... public static <T> Set<T> unionall (Set<Set<T>> sets) { Set<T> union = new SetAsLinkedList<>() ; Iterator<Set<T>> itsets = sets.iterator() ; while (itsets.hasnext()) { Iterator<T> it = itsets.next().iterator() ; while (it.hasnext()) union.add(it.next()); return union ;

סיכום ומשימות תרגלנו: ממשקים Iterator Iterable 4 משימות: עבודה קוויז