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

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

תרגול 1

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

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

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

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

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

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

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

Slide 1

PowerPoint Presentation

Slide 1

תרגול 1

PowerPoint Presentation

תרגול 1

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

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

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

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

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

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

Microsoft PowerPoint - 05_collections.ppt

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

PowerPoint Presentation

Slide 1

Microsoft Word - pitaron222Java_2007.doc

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

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

Slide 1

PowerPoint Presentation

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

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

PowerPoint Presentation

PowerPoint Presentation

Microsoft PowerPoint - 10_threads.ppt

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

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

Microsoft Word B

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

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

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

Microsoft PowerPoint - rec3.ppt

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

PowerPoint Presentation

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

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

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

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

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

PowerPoint Presentation

PowerPoint Presentation

תוכנה 1 אביב תשע"ח תרגיל מספר 8 אוספים גנריים ו- framework collection הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת ה

פייתון

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

Slide 1

PowerPoint Presentation

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

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

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

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

Microsoft Word - דוגמאות ב

Slide 1

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

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

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

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

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

PowerPoint Presentation

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

PowerPoint Presentation

מקביליות

1

Slide 1

Microsoft PowerPoint - lec10.ppt

PowerPoint Presentation

Microsoft PowerPoint - lec 04 Gui Form_Item.pptx

Slide 1

Programming

Microsoft Word - c_SimA_MoedB2005.doc

Tutorial 11

Microsoft Word a_moed_a_solution.doc

PRESENTATION NAME

המשימה תרגול מס' 5: קלט-פלט במערכות הפעלה שונות יש סימונים שונים עבור ירידת שורה :)newline( ב- UNIX/Linux )Line Feed( \n ב- Windows )Carriage Return +

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

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

1

Slide 1

Data Structure Assignment no.3 תאריך הגשה: p.m. 11/09/16, 23:59 את העבודה יש להגיש בזוגות במערכת ההגשות.submission system על העבודה להיות מוגשות כקובץ

שעור 6

תוכנה 1 בשפת Java שיעור מספר 3: "חתיכת טיפוס"

שאלה אחת

Slide 1

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

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

תמליל:

מבוא למדעי המחשב הממשקים Iterable,Set ו- Iterator

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

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

תוכן עניינים מבנה נתונים הממשק קבוצה (Set)

הממשק Set public interface Set<T> { int size(); boolean isempty(); boolean add(t element); boolean contains(t element); boolean remove(t element);

מימוש Set באמצעות מערך דינאמי public class SetAsDynamicArray<T> implements Set<T> { private DynamicArray<T> elements; Type Inference public SetAsDynamicArray() { elements = new DynamicArray<>(); public int size() { return elements.size(); public boolean isempty() { return elements.isempty(); public boolean add(t element) { boolean ans = false; if (!contains(element)) { elements.add(element); ans = true; return ans; public boolean contains(t element) { return elements.contains(element); public boolean remove(t element) { return elements.remove(element); public String tostring() { return elements.tostring();

שימוש public static void main(string[] args) { Set<Integer> integerset1 = new SetAsDynamicArray<>(); integerset1.add(1); integerset1.add(1); integerset1.add(2); System.out.println(integerSet1); // {1, 2 Set<Integer> integerset2 = new SetAsDynamicArray<>(); integerset2.add(2); integerset2.add(3); integerset2.add(2); System.out.println(integerSet2); // {2, 3

תוכן עניינים מבנה נתונים הממשק Iterator

איטרציה הצורך לעבור על קבוצה של איברים (איטרציה על האיברים) הוא צורך מוכר ואוניברסלי למשל על האיברים של קבוצת נתונים מסוג,Set כדי להוסיף למחלקה SetAsDynamicArray בנאי מעתיק שמקבל כפרמטר אובייקט מסוג Set (לאו דווקא מסוג,(SetAsDynamicArray או כדי להוסיף למחלקה שיטה שמבצעת איחוד (union) של this עם עצם מסוג Set (לאו דווקא מסוג (SetAsDynamicArray מתבקש פתרון סטנדרטי להבדיל ממערך בו לכל איבר יש אינדקס ואפשר בלולאה על האינדקס לעבור על כל איברי המערך במקרה הכללי אין פתרון דומה בשפה עצמה הפתרון ש- Java מציעה הוא בעזרת שני ממשקים Iterator Iterable

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

הממשק Iterator מגדיר צורה סטנדרטית לעבור על קבוצה של נתונים public interface Iterator<T> { boolean hasnext(); T next();

למספרים Iterator טבעיים public class NaturalNumbersIterator implements Iterator<Integer> { private int nextnumber, maxnumber; public NaturalNumbersIterator(int maxnumber) { nextnumber = 1; this.maxnumber = maxnumber; public boolean hasnext() { return nextnumber <= maxnumber; public Integer next() { if (!hasnext()) throw new NoSuchElementException(); int output = nextnumber; nextnumber = nextnumber + 1; return output; public static void main(string[] args) { Iterator<Integer> iter = new NaturalNumberIterator(100); while (iter.hasnext()) System.out.println(iter.next());

למספרי Iterator פיבונצ'י public class FibonacciIterator implements Iterator<Integer> { private int currentvalue, nextvalue, maxvalue; public FibonacciIterator(int maxvalue) { currentvalue = 1; nextvalue = 1; this.maxvalue = maxvalue; public boolean hasnext() { return currentvalue <= maxvalue; public Integer next() { if (!hasnext()) throw new NoSuchElementException(); int result = currentvalue; currentvalue = nextvalue; nextvalue = nextvalue + result; return result; public static void main(string[] args) { Iterator<Integer> iter = new FibonacciIterator(100); while (iter.hasnext()) System.out.println(iter.next());

Iterator למערכים public class ArrayIterator<T> implements Iterator<T> { private T[] array; private int size; private int index; public ArrayIterator(T[] array, int size) { this.array = array; this.size = size; index = 0; public boolean hasnext() { return index < size; public T next() { if (!hasnext()) throw new NoSuchElementException(); index = index + 1; return array[index - 1];

Iterator לרשימות מקושרות public class LinkedListIterator<T> implements Iterator<T> { private Link<T> first; public LinkedListIterator(Link<T> first) { this.first = first; public boolean hasnext() { return first!= null; public T next() { if (!hasnext()) throw new NoSuchElementException(); T data = first.getdata(); first = first.getnext(); return data;

תוכן עניינים מבנה נתונים הממשק Iterator הממשק Iterable

public interface Iterable<T> { Iterator<T> iterator(); הממשק Iterable עכשיו שיש בידנו שיטה סטנדרטית לעבור על קבוצה של נתונים, נחזור למבנה הנתונים set ונגדיר אותו בעזרת הממשק השני כ- Iterable המשמעות: מבנה הנתונים יודע לתת Iterator שאותחל באברים של מבנה הנתונים למשל, SetAsDynamicArray יחזיר אובייקט מסוג ArrayIterator מאותחל במערך של איברי הקבוצה ו- SetAsLinkedList יחזיר אובייקט מסוג LinkedListIterator שמאותחל ברשימה המקושרת של איברי הקבוצה Iterable Iterator boolean hasnext() T next() Program Iterator<T> iterator().1 מבקשת Iterator 3. פועלת על ה- Iterator

הממשק Iterable כל Iterator מאפשר מעבר יחיד על האיברים Iterable Iterator boolean hasnext() T next() Program Iterator<T> iterator().1 מבקשת Iterator 3. פועלת על ה- Iterator

Iterator למה שה- Iterable לא יהיה בעצמו? Iterable מאפשר מימוש מחוץ למחלקה למשל, לכל מבני הנתונים שמשתמשים במערך מספיק לממש Iterator אחד מאפשר לתוכנית לבקש בו-זמנית מספר Iterator -ים מאותו אובייקט חשוב בתוכניות עם מקביליות (אבל - לא רק) Iterator boolean hasnext() T next() Program Iterator<T> iterator().1 מבקשת Iterator 3. פועלת על ה- Iterator

התמונה הסופית public interface Iterable<T> { Iterator<T> iterator(); Iterable Iterator boolean hasnext() T next() Program Iterator<T> iterator().1 מבקשת Iterator 3. פועלת על ה- Iterator

תוכן עניינים מבנה נתונים הממשק Iterator הממשק Iterable הוספת Iterable לממשק List

הוספת Iterable לממשק List public interface List<T> extends Iterable<T> { int size(); boolean isempty(); void add(t element); void insert(int index, T element); T set(int index, T element); T get(int index); boolean remove(t element); boolean contains(t element); הוספה לממשק מחייבת כל מחלקה שמממשת את הממשק

השינוי הנדרש מ- DynamicArray List היא DynamicArray מכוון ש- public Iterator<T> iterator() { return new ArrayIterator<>(data, size); Type Inference

השינוי הנדרש מ- LinkedList List היא LinkedList מכוון ש- public Iterator<T> iterator() { return new LinkedListIterator<>(first); Type Inference

שימוש public static void main(string[] args) { List<String> daguests = new DynamicArray<>(); daguests.add("hellokitty"); daguests.add("taz"); Iterator<String> daiterator = daguests.iterator(); while (daiterator.hasnext()) System.out.println(daIterator.next()); List<String> llguests = new LinkedList<>(); llguests.add("hellokitty"); llguests.add("taz"); Iterator<String> lliterator = llguests.iterator(); while (lliterator.hasnext()) System.out.println(llIterator.next());

List<String> daguests = new DynamicArray<>(); List<String> llguests = new LinkedList<>(); שימוש daguests List llguests List DynamicArray data size Object[] int 2 LinkedList first Link

daguests.add("hellokitty"); daguests.add("taz"); llguests.add("hellokitty"); llguests.add("taz"); שימוש daguests List llguests List DynamicArray data size Object[] int 2 LinkedList first Link "HelloKitty" Taz" "HelloKitty" Taz"

Iterator<String> daiterator = daguests.iterator(); שימוש daguests List DynamicArrayIterator index size int int 0 2 array DynamicArray DynamicArray data size Object[] int 2 "HelloKitty" Taz"

while (daiterator.hasnext()) System.out.println(daIterator.next()); HelloKitty שימוש daguests List DynamicArrayIterator index size int int 1 2 array DynamicArray DynamicArray data size Object[] int 2 "HelloKitty" Taz"

while (daiterator.hasnext()) System.out.println(daIterator.next()); HelloKitty Taz שימוש daguests List DynamicArrayIterator index size int int 2 2 array DynamicArray DynamicArray data size Object[] int 2 "HelloKitty" Taz"

Iterator<String> lliterator = llguests.iterator(); שימוש llguests List LinkedListIterator current Link LinkedList first Link "HelloKitty" Taz"

while (lliterator.hasnext()) System.out.println(llIterator.next()); HelloKitty שימוש llguests List LinkedListIterator current Link LinkedList first Link "HelloKitty" Taz"

while (lliterator.hasnext()) System.out.println(llIterator.next()); HelloKitty Taz שימוש llguests List LinkedListIterator current Link LinkedList first Link "HelloKitty" Taz"

תוכן עניינים מבנה נתונים הממשק Iterator הממשק Iterable הוספת Iterable לממשק List הוספת Iterable לממשק Set

הוספת Iterable לממשק Set public interface Set<T> extends Iterable<T> { int size(); boolean isempty(); boolean add(t element); boolean contains(t element); boolean remove(t element);

השינוי הנדרש מ- SetAsDynamicArray Set הוא SetAsDynamicArray מכוון ש- public Iterator<T> iterator() { return elements.iterator();?setaslinkedlist מה עם

תוכן עניינים (אובייקטים מסוג (Set מבנה נתונים הממשק Iterator הממשק Iterable הוספת Iterable לממשק List הוספת Iterable לממשק Set מחלקה של פונקציות סטטיות לקבוצות

(AA BB) הפונקציה IsSubset Generic Method public class Sets { public static <T> boolean issubset(set<t> seta, Set<T> setb) { boolean issubset = true; Iterator<T> iterb = setb.iterator(); while (iterb.hasnext() && issubset) issubset = seta.contains(iterb.next()); return issubset;

(AA BB) הפונקציה union public class Sets { public static <T> Set<T> union(set<t> seta, Set<T> setb) { Set<T> union = new SetAsDynamicArray<>(); Iterator<T> iterseta = seta.iterator(); Iterator<T> itersetb = setb.iterator(); while (iterseta.hasnext()) union.add(iterseta.next()); while (itersetb.hasnext()) union.add(itersetb.next()); return union;

(AA BB) הפונקציה union public class Sets { public static <T> Set<T> union1(set<t> seta, Set<T> setb) { Set<T> union = new SetAsDynamicArray<>(); for (T element : seta) union.add(element); for (T element : setb) union.add(element); return union; כל מה ש- Iterable

(AA BB) הפונקציה intersection public class Sets { public static <T> Set<T> intersection(set<t> seta, Set<T> setb) { Set<T> intersection = new SetAsDynamicArray<>(); for(t element : seta) if (setb.contains(element)) intersection.add(element); return intersection;

שימוש public static void main(string[] args) { Set<Integer> integerset1 = new SetAsDynamicArray<>(); integerset1.add(1); integerset1.add(1); integerset1.add(2); System.out.println(integerSet1); // {1, 2 Set<Integer> integerset2 = new SetAsDynamicArray<>(); integerset2.add(2); integerset2.add(3); integerset2.add(2); System.out.println(integerSet2); // {2, 3 System.out.println (Sets.<Integer>union(integerSet1, integerset2)); // {1, 2, 3