Slide 1

גודל: px
התחל להופיע מהדף:

Download "Slide 1"

תמליל

1 פיתוח מערכות תוכנה מבוססות Java מקביליות אוהד ברזילי

2 מקביליות רמת התהליך )multithreading( ההפעלה processes( )multi לעומת רמת מערכת ריבוי מעבדים processors( )multi זמן עיבוד slicing( )time לעומת חלוקת 2

3 חוטים תהליך )process( הוא הפשטה של מחשב וירטואלי חוט context( )execution thread, execution הוא הפשטה מעבד וירטואלי אנו מבדילים בין: CPU, Code, Data 3

4 חוטים עד עכשיו ראינו כי שני שרותים אינם רצים ביחד כאשר שרות קורא לשרות אחר, מצביע התוכנית "קופץ" לשרות האחר וכאשר הוא מסיים הוא חוזר לשרות הקורא למשל אם ב main מופיעה קריאה ל ()f ביצוע main נעצר והוא ממשיך רק אחרי סיום ()f main() call f() f() זמן main() 4

5 חוטים לעומת זאת אם main יריץ את ()f main ו- ()f ימשיכו במקביל )!( בחוט נפרד ריצות זמן main() בשפת :C createthread) f)( ( main() f() בהקשרים מסוימים אומרים כי ()f מתבצעת א-סינכרונית לפונקציה main() 5

6 למה חוטים? הנדסת תוכנה: מודלריות, הכמסה שימוש יעיל במשאבים חישוב מבוזר משימות אופיניות: Non blocking I/O Timers משימות בלתי תלויות אלגוריתמים מקביליים ומבוזרים דברים ש"רצים ברקע" Collection( )Garbage 6

7 חשוב לזכור לשימוש בחוטים יש תקורה והוא אינו בהכרח משפר את ריצת התוכנית! מעבד אחד יכול לבצע לכל היותר פעולה אחת בו זמנית כאשר בתוכנית יש מרכיב I/O דומיננטי השימוש בחוטים עשוי להשתלם 7

8 Performance Issues Synchronization is expensive! Comparison table (in time units): Non-synchronized method Synchronized method Single thread accessing the methods n threads accessing simultaneously 1 ~3 1 ~3*n 8

9 Performance Issues Thread creation and start are expensive! Comparison table (in time units): Creating a String 1 Creating a Thread ~10 Creating a Thread and starting it ~200 (!) 9

10 חוטים ב- Java כמו כל דבר ב-,Java מופע של המחלקה Thread גם חוט ב Java הוא עצם חוט תמיד מריץ מתודה עם חתימה קבועה: main() public void run() חוץ מהחוט הראשי שמריץ את מחלקה שמממשת את run() Runnable בעצם מממשת את המנשק כלומר, חוט ב Java הוא מופע של המחלקה Thread שהועבר לו כארגומט )למשל בבנאי( עצם ממחלקה שהיא implements Runnable 10

11 public class ThreadTester { public static void main(string args[]) { HelloRunner r = new HelloRunner(); Thread t = new Thread(r); t.start(); // do other things... class HelloRunner implements Runnable { int i; קריאה ישירות ל run תריץ אותה בצורה סינכרונית! public void run() { i = 0; while (true) { System.out.println("Hello " + i++); if (i == 50) { break; 11

12 מה ההבדל בין 2 התוכניות הבאות? public class TwoThreadTester1 { public static void main(string args[]) { HelloRunner r1 = new HelloRunner(); HelloRunner r2 = new HelloRunner(); Thread t1 = new Thread(r1); Thread t2 = new Thread(r2); t1.start(); t2.start(); public class TwoThreadTester2 { public static void main(string args[]) { HelloRunner r = new HelloRunner(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); 12

13 שיתוף מידע ההבחנה עדינה על אותו עצם Runnable יכולים לרוץ במקביל 2 חוטים הדבר מאפשר לשני החוטים לחלוק מידע בינהם public class TwoThreadTester { public static void main(string args[]) { HelloRunner r = new HelloRunner(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); מה יודפס? כדי להבין טוב יותר מי מדפיס מה, נוסיף פרטים להדפסה 13

14 public class TwoThreadTesterId { public static void main(string args[]) { HelloRunnerId r = new HelloRunnerId(); Thread t1 = new Thread(r, "first"); Thread t2 = new Thread(r, "second"); t1.start(); t2.start(); class HelloRunnerId implements Runnable { int i; public void run() { i = 0; while (true) { System.out.println( Thread.currentThread().getName() + ": Hello " + i++); if (i == 50) break; 14

15 מחזור החיים של חוט )חלקי( 15

16 חסימת חוט public class Runner implements Runnable { public void run() { while (true) { // do lots of interesting stuff //... // Give other threads a chance try { Thread.sleep(10); catch (InterruptedException e) { // This thread s sleep was // interrupted by another thread שיטה זו מחליפה את השימוש ב- suspend ו- resume שהתגלו כבעיתיות והוכרזו deprecated 16

17 סיום חוט public class Runner2 implements Runnable { private boolean timetoquit = false; public void run() { while (!timetoquit) { // continue doing work // clean up before run() ends public void stoprunning() { timetoquit = true; 17

18 סיום חוט public class ThreadController { private Runner2 r = new Runner2(); private Thread t = new Thread(r); public void startthread() { t.start(); public void stopthread() { // use specific instance of Runner r.stoprunning(); שיטה זו מחליפה את השימוש ב- stop runfinalizersonexit שהתגלו 18 כבעיתיות והוכרזו deprecated ו-

19 מתודות מיושנות המאמר המלא: 19

20 עבודה עם חוטים isinterrupted(), שאילתות: isalive() interrupted() עדיפות ריצה: getpriority() setpriority() )static( )static( חסימת חוט Thread.sleep() join() Thread.yield() 20

21 שימוש ב join public static void main(string[] args) { Thread t = new Thread(new Runner()); t.start(); //... // Do stuff in parallel with the other thread for a while //... // Wait here for the other thread to finish try { t.join(); catch (InterruptedException e) { // the other thread came back early // Now continue in this thread //... 21

22 ירושה מ Thread public class MyThread extends Thread { public void run() { while (true) { // do lots of interesting stuff try { Thread.sleep(100); catch (InterruptedException e) { // sleep interrupted public static void main(string args[]) { Thread t = new MyThread(); t.start(); 22

23 ירושה לעומת הכלה המחלקה Thread עצמה היא Runnable ולכן ניתן לרשת ממנה, לדרוס את run() ולקבל בקלות מחלקה שהיא גם חוט עצמאי להכלה יתרונות מתודולוגיים כגון: עיצוב נקי התאמה לירושה יחידה עיקביות עם ספריות אחרות ירושה ממחישה את הערוב )השגוי בדרך כלל( שבין הלוגיקה העסקית שיש לבצע והאופן שבו יש לבצע אותה )ה'מה' וה'איך'( 23

24 שימוש ב synchronized public class MyStack { int idx = 0; char[] data = new char[6]; public void push(char c) { data[idx] = c; idx++; public char pop() { idx--; return data[idx]; ננסה לתאר תרחישים שבהם עבודה עם המחלקה לא תצליח בתוכנית מרובת חוטים הפעולות push ו- pop צריכות להתבצע ללא הפרעה יש לבצע אותן כפעולות אטומיות כדי לשמור על עקביות מבנה הנתונים 24

25 מנעול לעצמים Java מספקת לכל עצם )במחלקה )Object מנעול פרטי אנלוגיה: מפתח יחיד לשימוש בשרותים ציבוריים כאשר מספר חוטים רצים על אותו העצם יכול אחד מהם לקחת את המפתח לעצמו ובכך לחסום את ריצת האחרים public void push(char c) { synchronized (this) { data[idx] = c; idx++; 25

26 מנעול לעצמים Java מספקת לכל עצם )במחלקה )Object מנעול פרטי אנלוגיה: מפתח יחיד לשימוש בשרותים ציבוריים כאשר מספר חוטים רצים על אותו העצם יכול אחד מהם לקחת את המפתח לעצמו ובכך לחסום את ריצת האחרים public void push(char c) { synchronized (this) { data[idx] = c; idx++; 26

27 מנעול לעצמים כאשר מגיע חוט אחר לאותו קטע קוד, המנעול חסר, והחוט מחכה לחזרתו public void push(char c) {? synchronized (this) { data[idx] = c; idx++; שחרור המנעול מתבצע אוטומטית ביציאה מבלוק :synchronized אחרי סיום הבלוק אחרי break, return, throw מתוך הבלוק 27

28 עקביות בשימוש במנעולים כדי שהמנגנון יעבוד יש לסנכרן את כל הגישות לנתונים המשותפים מתוך pop וגם מתוך )push )גם יש להגן על נתונים משותפים רגישים ע"י private אחרת קוד לקוד יוכל לשנות אותם בצורה לא מסונכרנת public void push(char c) { synchronized (this) { // The push method code שני קטעי הקוד הבא שקולים: public synchronized void push(char c) { // The push method code 28

29 מחזור החיים של חוט )חלקי( 29

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

31 תקשורת בין חוטים notify( )wait & אנלוגיה: נהג המונית והנוסע לצורך מימוש הרעיון מספקת :Java את המתודות wait ו- notify הגדרת wait pool מאחורי הקלעים( נוסף על ה lock pool )הממומשים - השימוש במתודות wait synchronized context ו- notify הוא מתוך 31

32 מחזור החיים של חוט 32

33 דוגמת הצרכן-יצרן public class Producer implements Runnable { private SyncStack thestack; private int num; private static int counter = 1; public Producer (SyncStack s) { thestack = s; num = counter++; 33

34 לוגיקת היצרן public void run() { char c; for (int i = 0; i < 200; i++) { c = (char)(math.random() * 26 +'A'); thestack.push(c); System.out.println("Producer" + num + ": " + c); try { Thread.sleep((int)(Math.random() * 300)); catch (InterruptedException e) { // ignore it // END run method // END Producer class 34

35 הצרכן public class Consumer implements Runnable { private SyncStack thestack; private int num; private static int counter = 1; public Consumer (SyncStack s) { thestack = s; num = counter++; 35

36 לוגיקת הצרכן public void run() { char c; for (int i = 0; i < 200; i++) { c = thestack.pop(); System.out.println("Consumer" + num + ": " + c); try { Thread.sleep((int)(Math.random() * 300)); catch (InterruptedException e) { // ignore it // END run method // END Consumer class 36

37 המחסנית public class SyncStack { private List<Character> buffer = new ArrayList<Character>(400); public synchronized char pop() { //... public synchronized void push(char c) { //... איך נכתוב את המתודות pop ו- push כך שישמר העיקרון שפעולת pop ממתינה לכך שיהיה איבר במחסנית? 37

38 pop() public synchronized char pop() { char c; while (buffer.size() == 0) { try { this.wait(); catch (InterruptedException e) { // ignore it... c = buffer.remove(buffer.size() - 1); return c; אובייקט המחסנית עצמו מגלם ארוע לוגי "StackNotEmpty" הארוע לא מופיע בקוד בצורה מפורשת והמתכנתת צריכה לשמור על עיקביותו 38

39 push() public synchronized void push(char c) { this.notify(); buffer.add(c); המתודה push מבטיחה )ע"פ תנאי האחר של החוזה שלה( כי בסיומה המחסנית אינה ריקה על כן המחסנית מודיעה )notify( לאחד המעוניינים בארוע )אם קיים כזה( שהארוע התרחש אם יש יותר מממתין אחד לארוע, תודיע מערכת ההפעלה רק לאחד הממתינים על התרחשותו אם יש צורך להודיע לכולם ניתן להשתמש במתודה notifyall() 39

40 2 יצרנים, 2 צרכנים public class SyncTest { public static void main(string[] args) { SyncStack stack = new SyncStack(); Producer p1 = new Producer(stack); Thread prodt1 = new Thread (p1); prodt1.start(); Producer p2 = new Producer(stack); Thread prodt2 = new Thread (p2); prodt2.start(); Consumer c1 = new Consumer(stack); Thread const1 = new Thread (c1); const1.start(); Consumer c2 = new Consumer(stack); Thread const2 = new Thread (c2); const2.start(); 40

41 נושאים מתקדמים בעבודה עם חוטים מבוסס על פרק 5.7 ב- Java in a Nutshell 5 th edition By David Flanagan

42 תזמון משימות בעזרת המחלקות ו- Executor נותן לתזמן בקלות משימות דחויות ומשימות חוזרות Timer // Define the time-display task TimerTask displaytime = new TimerTask() { public void run() { System.out.printf("%tr%n", System.currentTimeMillis()); ; // Create a timer object to run the task (and possibly others) Timer timer = new Timer(); // Now schedule that task to be run every 1,000 milliseconds, // starting now timer.schedule(displaytime, 0, 1000); // To stop the time-display task displaytime.cancel(); 42

43 Executor ב Java5 הוגדרה הספריה java.util.concurrent להחביא את האופן שבו מבוצעת הלוגיקה אשר מספקת כלים למשל: מבני נתונים א-סינכרונים כגון BlockingQueue המנשק Executor העוטף את טיפוס ה Runnable /** Execute a Runnable in the current thread. */ class CurrentThreadExecutor implements Executor { public void execute(runnable r) { r.run(); /** Execute each Runnable using a newly created thread */ class NewThreadExecutor implements Executor { public void execute(runnable r) { new Thread(r).start(); 43

44 /** * Queue up the Runnables and execute them in order using a single thread * created for that purpose. */ class SingleThreadExecutor extends Thread implements Executor { BlockingQueue<Runnable> q = new LinkedBlockingQueue<Runnable>(); public void execute(runnable r) { // Don't execute the Runnable here; just put it on the queue. // Our queue is effectively unbounded, so this should never block. // Since it never blocks, it should never throw InterruptedException. try { q.put(r); catch(interruptedexception never) { throw new AssertionError(never); // This is the body of the thread that actually executes the Runnables public void run() { for(;;) { // Loop forever try { Runnable r = q.take(); // Get next Runnable, or wait r.run(); // Run it! catch(interruptedexception e) { // If interrupted, stop executing queued Runnables. return; 44

45 ThreadPoolExecutor בפועל אין אפילו צורך לממש בעצמנו Executors java.util.concurrent מספקת חזק וגמיש הספריה ThreadPoolExecutor ניתן לעבוד איתו בעזרת מחלקת המפעל :Executors Executor onethread = Executors.newSingleThreadExecutor(); // pool size of 1 Executor fixedpool = Executors.newFixedThreadPool(10); // 10 threads in pool Executor unboundedpool = Executors.newCachedThreadPool(); // as many as needed או ליצור אותו בצורה מפורשת )כדי להגדיר את מאפיניו( 45

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

47 Callable, ExecutorService יורש מ Executor ויודע לטפל גם בטיפוס המנשק ExecutorService Callable call מכיל מתודה אחת בשם Runnable בדומה ל Callable השרות call של Callable בשונה מ- :Runnable יכול להחזיר ערך יכול לזרוק חריג מה המשמעות של החזרת ערך משרות שאולי מתבצע א-סינכרונית? קריאה ישירות ל call תבצע אותו בצורה סינכרונית קריאה ל submit תבצע אותו בצורה א-סינכרונית מה יקרה בינתיים למי שקרא ל?submit האם הוא?blocked זה הרי סותר את כל רעיון ה א-סינכרוניות! 47

48 בחזרה לעתיד השרות call מחזיר ערך מטיפוס Future<T> שעליו ניתן להפעיל את המתודות: isdone() cancel() iscanceled() get() הקריאה היא blocked השרות עשוי לזרוק חריג ExecutionException 48

49 import java.util.concurrent.*; import java.math.biginteger; import java.util.random; import java.security.securerandom; דוגמא /** This is a Callable implementation for computing big primes. */ public class RandomPrimeSearch implements Callable<BigInteger> { static Random prng = new SecureRandom(); // self-seeding int n; public RandomPrimeSearch(int bitsize) { n = bitsize; public BigInteger call() { return BigInteger.probablePrime(n, prng);... // Try to compute two primes at the same time ExecutorService threadpool = Executors.newFixedThreadPool(2); Future<BigInteger> p = threadpool.submit(new RandomPrimeSearch(512)); Future<BigInteger> q = threadpool.submit(new RandomPrimeSearch(512)); BigInteger product = p.get().multiply(q.get()); 49

50 Putting it all together הטיפוס ScheduledExecutorService משלב את תכונות ה Callable ו- Runnable עם הרצת טיפוסי Timer ניתן להגדיר טיפוסי ScheduledFuture השהייה עם מחזוריות ו\או Executors מתודות Factory מתאימות מסופקות במחלקה עבודה עם Future היא העבודה עם callback גישה תכנותית מתחרה לגישת 50

51 עידון מנגנוני הסנכרון בגרסאות Java הראשונות )לפני )Java5 לא ניתן לגשת ישירות למנעולים, אלא רק דרך בלוק synchronized בתחילה היה נראה שהדבר מפשט את מנגנון התזמון כשם ש Java בחרה להפקיע את ניהול הזיכרון מהמשתמש אולם התגלה כי יש אלגוריתמי סינכרון שלא ניתן לממש כאשר הנעילה היא block-scoped החבילה java.util.concurrent.locks מגדירה מבנים המחזירים למתכנתת את הכח שנגזל ממנה 51

52 דוגמא import java.util.concurrent.locks.*; // New in Java 5.0 /** * A partial implementation of a linked list of values of type E. * It demonstrates hand-over-hand locking with Lock */ public class LinkList<E> { E value; // The value of this node of the list LinkList<E> rest; // The rest of the list Lock lock; // A lock for this node public LinkList(E value) { // Constructor for a list this.value = value; // Node value rest = null; // This is the only node in the list lock = new ReentrantLock(); // We can lock this node 52

53 /** * Append a node to the end of the list, traversing the list using * hand-over-hand locking. This method is threadsafe: multiple threads * may traverse different portions of the list at the same time. **/ public void append(e value) { LinkList<E> node = this; // Start at this node node.lock.lock(); // Lock it. // Loop 'till we find the last node in the list while(node.rest!= null) { LinkList<E> next = node.rest; // This is the hand-over-hand part. Lock the next node and then // unlock the current node. We use a try/finally construct so // that the current node is unlocked even if the lock on the // next node fails with an exception. try { next.lock.lock(); // lock the next node finally { node.lock.unlock(); // unlock the current node node = next; // At this point, node is the final node in the list, and we have // a lock on it. Use a try/finally to ensure that we unlock it. try { node.rest = new LinkList<E>(value); // Append new node finally { node.lock.unlock(); 53

54 מנגנוני תזמון נוספים Semaphore acquire() release() tryaquire() CountDownLatch await() countdown() Exchanger exchange() CyclicBarrier await() (Reentrant) ReadWriteLock read() write() 54

55 מבני נתונים מסונכרנים מימושי Set, List, and Map ב java.util אינם )Vector,Hashtable ל )פרט synchronized כאשר עובדים עם כמה חוטים ניתן לעטוף אותם בטיפוסים מסונכרנים: List synclist = Collections.synchronizedList(list); Map syncmap = Collections.synchronizedMap(map); )עם הפעולות put() ו- ב Java5 התווספו 5 מימושים למנשק Queue :)take() ArrayBlockingQueue LinkedBlockingQueue PriorityBlockingQueue DelayQueue SynchronousQueue 55

56 פעולות אטומיות java.util.concurrent.atomic מספקת בחבילה Java טיפוסים בעלי פעולות אטומיות מובנות כגון compareandset ו- getandincrement import java.util.concurrent.atomic.atomicinteger; // The count1(), count2() and count3() methods are all threadsafe. Two // threads can call these methods at the same time, and they will never // see the same return value. public class Counters { // A counter using a synchronized method and locking int count1 = 0; public synchronized int count1() { return count1++; 56

57 AtomicInteger // A counter using an atomic increment on an AtomicInteger AtomicInteger count2 = new AtomicInteger(0); public int count2() { return count2.getandincrement(); // An optimistic counter using compareandset() AtomicInteger count3 = new AtomicInteger(0); public int count3() { // Get the counter value with get() and set it with compareandset(). // If compareandset() returns false, try again until we get // through the loop without interference. int result; do { result = count3.get(); while (!count3.compareandset(result, result + 1)); return result; 57

58 יצירת אנימציה ניתן להשתמש בחוטים כדי ליצור אנימציה ציור סדרת תמונות עם המתנה בין תמונה לתמונה public class AnimationBounce { private static final int IMAGE_WIDTH = 100; private static final int TIMER_INTERVAL = 10; private static int x = 0; private static int y = 0; private static int directionx = 1; private static int directiony = 1; private static Canvas canvas; public static void animate() {... public static void main(string[] args) {... 58

59 public static void main(string[] args) { final Display display = new Display(); final Shell shell = new Shell(display); shell.settext("animator"); shell.setlayout(new FillLayout()); canvas = new Canvas(shell, SWT.NO_BACKGROUND); canvas.addpaintlistener(new PaintListener() { public void paintcontrol(paintevent event) { // Draw the background event.gc.fillrectangle(canvas.getbounds()); event.gc.setbackground(shell.getdisplay().getsystemcolor(swt.color_red)); event.gc.filloval(x, y, IMAGE_WIDTH, IMAGE_WIDTH); ); shell.open(); Runnable runnable = new Runnable() { public void run() { animate(); display.timerexec(timer_interval, this); ; display.timerexec(timer_interval, runnable); while (!shell.isdisposed()) { if (!display.readanddispatch()) { display.sleep(); // Kill the timer display.timerexec(-1, runnable); display.dispose(); 59

60 animate() public static void animate() { x += directionx; y += directiony; // Determine out of bounds Rectangle rect = canvas.getclientarea(); if (x < 0) { x = 0; directionx = 1; else if (x > rect.width - IMAGE_WIDTH) { x = rect.width - IMAGE_WIDTH; directionx = -1; if (y < 0) { y = 0; directiony = 1; else if (y > rect.height - IMAGE_WIDTH) { y = rect.height - IMAGE_WIDTH; directiony = -1; // Force a redraw canvas.redraw(); 60

61 Flickering בעיית ההבהוב במימוש היא בעיה חוזרת היא נובעת מהעובדה כי בכל עדכון של התמונה אנו מציירים את כל המסך מחדש הציור מתחיל מציור הרקע על כל המסך, אגב מחיקת הכדור הציור כולל גם ציור מיותר של חלקים שאין צורך לעדכן ניתן להתמודד עם הבעיה בשתי אסטרטגיות עדכון של האזור הדינאמי בלבד )clipping( עדכון של התמונה כולה מאחורי הקלעים Buffering( )Double 61

62 Double Buffering public void paintcontrol(paintevent event) { // Create the image to fill the canvas Image image = new Image(shell.getDisplay(), canvas.getbounds()); // Set up the offscreen gc GC gcimage = new GC(image); gcimage.setbackground(event.gc.getbackground()); gcimage.fillrectangle(image.getbounds()); gcimage.setbackground(shell.getdisplay().getsystemcolor(swt.color_red)); gcimage.filloval(x, y, IMAGE_WIDTH, IMAGE_WIDTH); // Draw the offscreen buffer to the screen event.gc.drawimage(image, 0, 0); ); image.dispose(); gcimage.dispose(); 62

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

64 עבודה עם מחלקות בטוחות קיימות כמה מחלקות אשר ידועות כ thread safe מחלקות אלו אוכפות בעזרת מבני synchronize שלמות המידע ואחרים את לבטיחות זו יש מחיר בביצועים ולכן הוגדרו לאותן מחלקות גם גרסאות קלילות יותר לשימוש בישומי single thread לדוגמא: StringBuilder ומקבילתה StringBuffer ArrayList ומקבילתה Vector 64

Microsoft PowerPoint - 10_threads.ppt

Microsoft PowerPoint - 10_threads.ppt נוש אים מתקדמים ב Java תכ נות מ ר ובה חו ט י ם אוהד ברזילי אוניברסיטת תל אביב מק בי ל יות ריבוי מעבדים processors) (multi זמן עיבוד slicing) (time ל עו מת חלוק ת רמת התהליך (multithreading) ההפעלה processes)

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תכנות מתקדם בשפת Java אוניברסיטת תל אביב 1 תוכנה 1 תרגול 3: עבודה עם מחרוזות )Strings( מתודות )Methods( 1 תכנות מתקדם בשפת Java אוניברסיטת תל אביב 2 מחרוזות )STRINGS( 3 מחרוזות String s = Hello ; מחרוזות

קרא עוד

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

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

קרא עוד

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

מהוא לתכנות ב- JAVA מעבדה 3 מבוא לתכנות ב- JAVA מעבדה 3 נושאי התרגול לולאות ניפוי שגיאות לולאות - הקדמה כיצד הייתם כותבים תוכנית שתדפיס את המספרים השלמים בין 1 ל- 100 בעזרת הכלים שלמדתם עד עתה? חייבת להיות דרך אחרת מאשר לכתוב 100

קרא עוד

הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תכנה מרושתות ניסוי בתכנות מקבילי ב- Java המאחר ביותר מ 51 דקות לא יורשה לבצע את הניס

הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תכנה מרושתות ניסוי בתכנות מקבילי ב- Java המאחר ביותר מ 51 דקות לא יורשה לבצע את הניס הטכניון - מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תכנה מרושתות ניסוי בתכנות מקבילי ב- Java המאחר ביותר מ 51 דקות לא יורשה לבצע את הניסוי! המעבדה למערכות תוכנה הפקולטה להנדסת חשמל בניין

קרא עוד

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

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

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב מחרוזות, חתימה של פונקציה ומעטפות תוכן עניינים טיפוסים מורכבים טיפוסים מורכבים ערך שם טיפוס 12 m int undef. x boolean true y boolean arr int[] כאלה שעשויים להכיל יותר מערך פרימיטיבי אחד

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב המחלקה Object תוכן עניינים Object הורשה והמחלקה ערך שם טיפוס DynamicIntArray da data size incrementsize DynamicArray תזכורת - Object[] data; int size; int incrementsize; DynamicArray זה

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב תכנות מונחה אובייקטים תוכן עניינים טיפוסי נתונים מורכבים המחלקה String תזכורת לשימוש שעשינו במחלקה String str = new String( Hello ); s.o.p(str.tostring()); s.o.p(str.charat(4)); s.o.p(str.equals(

קרא עוד

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

מבוא לתכנות ב- JAVA  תרגול 11 מבוא לתכנות ב- JAVA תרגול 11 רשימה מקושרת אוסף סדור של איברים מאותו טיפוס. קודקוד ברשימה )Node( מכיל את המידע + הצבעה לקודקוד הבא ברשימה data next first רשימה :)List( מיוצגת ע"י מצביע לאיבר הראשון ברשימה

קרא עוד

Homework Dry 3

Homework Dry 3 Homework Dry 3 Due date: Sunday, 9/06/2013 12:30 noon Teaching assistant in charge: Anastasia Braginsky Important: this semester the Q&A for the exercise will take place at a public forum only. To register

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java אלכסיי זגלסקי ויעל אמסטרדמר 1 בירוקרטיה אלכסיי זגלסקי שעת קבלה: שני 13:00-14:00, בתיאום מראש משרד: בניין הנדסת תוכנה, חדר 209 יעל אמסטרדמר שעת קבלה: חמישי 15:00-16:00,

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 5 מחרוזות, חתימות ורקורסיה מחרוזות רצף של תווים רקורסיה קריאה של מתודה לעצמה באופן ישיר או עקיף ראינו בהרצאה מחרוזות: תווים, חתימות: העמסה- String,הצהרה, overloading אתחול רקורסיה:

קרא עוד

Slide 1

Slide 1 1 אובייקטים היום בתרגול: 2.)objects מחלקות )classes( ואובייקטים )מופעים, )fields( שדות המחלקה שיטות הכמסה )methods של מחלקה. ( class מחלקה - עד עכשיו השתמשנו בעיקר בטיפוסים מובנים ופונקציות המבצעות חישובים

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java 1 מנהלות אתר הקורס: http://courses.cs.tau.ac.il/software1/1516b/ מתרגלים: ברית יונגמן )שעת קבלה: שלישי ב- 8:00 בתיאום מראש( לנה דנקין )שעת קבלה: שלישי ב- 17:00,

קרא עוד

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

תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1 תוכנה 1 תרגול מספר 12: GUI כתיבת מחלקות גנריות בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 SWT בנויה על העיקרון של publish/subscribe אלמנטים בסיסיים )Widgets( מייצרים מאזינים )Listener( אירועים )Events(

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב שימוש במחסנית - מחשבון תוכן עניינים prefix כתיבת ביטויים ב-,infix ו- postfix postfix prefix,infix ביטויים ב- כתיבת ו- infix נוסח כתיבה ב- (operator אנו רגילים לכתוב ביטויים חשבוניים כדוגמת

קרא עוד

Microsoft PowerPoint - rec3.ppt

Microsoft PowerPoint - rec3.ppt תכנו ת מונח ה עצ מים משתני מחלקה, עצמים מוכלים ועצמים מוצבעים א וה ד ברז יל י א ונ יברס י ט ת תל אביב משתנ י מח ל קה Static Members משתני מחלקה members) (static משתנים סטטיים מוגדרי ם בתוך מח לקה ואולם

קרא עוד

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

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

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב משפחות של מחלקות ומחלקות מופשטות תזכורת בשיעור הקודם ראינו מחלקה של Student והרחבה שלה למחלקה של Milgae למעשה Student יכול לעמוד בראש היררכיה שלמה של מחלקות שונות של סטודנטים למשל, בנוסף

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Slide 1

Slide 1 מבוא לתכנות ב- JAVA תרגול 5 מה בתרגול מחרוזות מערכים דו ממדיים מחרוזות (Strings) מחרוזת היא רצף של תווים. immutable על מנת ליצור ולטפל במחרוזות נשתמש במחלקה String למחלקה String מתודות שונות שמאפשרות פעולות

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה == vs equals Point p = new Point(,2) Point p2 = new Point(,2) p == p2 p.equals(p2) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם

קרא עוד

PowerPoint Presentation

PowerPoint Presentation == vs equals תוכנה תרגול 7 :מנשקים, פולימורפיזם ועוד Point p = new Point(,) Point p = new Point(,) p == p p.equals(p) מתי נכון להשתמש בכל אחד מהם? שימו לב, במחלקה שכתבתם בעצמכם יש לכתוב מתודת equals על

קרא עוד

Slide 1

Slide 1 בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1- תרגול הורשה מחלקות אבסטרקטיות חריגים 2 ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה הכלה )aggregation( במחלקה

קרא עוד

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

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

קרא עוד

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

סדנת תכנות ב   C/C++ פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: 15.2.2017 משך הבחינה: שעתיים שם המרצה: ד"ר אופיר פלא חומר עזר: פתוח שימוש במחשבון: לא הוראות כלליות:

קרא עוד

מקביליות

מקביליות תכונות שמורה Invariant Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 בדיקות מודל Checking( )Model מערכת דרישות מידול פירמול בדיקות מודל )Model Checking( מודל של המערכת תכונות פורמליות סימולציה

קרא עוד

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

מבוא לתכנות ב- JAVA  תרגול 7 מבוא לתכנות ב- JAVA תרגול 8 תזכורת - מבנה של פונקציה רקורסיבית.2 פונקציה רקורסיבית מורכבת משני חלקים עיקריים 1. תנאי עצירה: מקרה/מקרים פשוטים בהם התוצאה לא מצריכה קריאה רקורסיבית לחישוב צעד רקורסיבי: קריאה

קרא עוד

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

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג מנ' אב תשע"ז 15.08.17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' ב' שנה תשע"ז 3 שעות

קרא עוד

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

תכנות מונחה עצמים א' –  תשע 1 תכנות מונחה עצמים והנדסת תוכנה תשע"ו 2 בנאי העתקה בניית העתק של אובייקט קיים. בניית העתק בעת העברת אובייקט לפונקציה. בניית העתק בעת החזרת אובייקט מפונקציה. ניתן להגדיר בנאי העתקה. אם לא מגדירים, אז הקומפיילר

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 12 מחסנית )Stack( memoization ראינו בהרצאה מחסנית Infix/Postfix Notations בתרגול היום מחסנית בדיקת איזון סוגריים בביטוי אריתמטי מימוש תור באמצעות מחסנית memoization דוגמאות

קרא עוד

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

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

קרא עוד

Microsoft PowerPoint - lec10.ppt

Microsoft PowerPoint - lec10.ppt תכנו ת מ ונחה ע צמ י ם בשפת ++C אוהד ברזילי אוניברסיטת תל אביב ירו ש ה מרו בה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand

קרא עוד

Microsoft Word - pitaron222Java_2007.doc

Microsoft Word - pitaron222Java_2007.doc 1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א a mul k k a פלט b זוגי? b :1 Ï 3 1 5 1 5 F קלט: 3, 5, 8, 4 20 2 8 40 40 3 4 4 F :2 Ï m x x 0 פלט 70 x 50 0 א. 10 F 1 64 2 2 51 30 F -4 F ב. ג. 1- (כל

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 3 תרגול מס' מתודות ותיכון לפי חוזים חוזה בין ספק ללקוח חוזה בין ספק ללקוח מגדיר עבור כל שרות: תנאי ללקוח - "תנאי קדם" precondition - - תנאי לספק "תנאי אחר".postcondition לקוח ספק 2 תנאי קדם )preconditions(

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 4: משתנים בוליאניים ופונקציות מבוא למדעי המחשב מ' - תירגול 4 1 משתנים בוליאניים מבוא למדעי המחשב מ' - תירגול 4 2 ערכי אמת מבחינים בין שני ערכי אמת: true ו- false לכל מספר שלם ניתן

קרא עוד

Microsoft Word B

Microsoft Word B מרצה: שולי וינטנר. מתרגל: שלמה יונה מבוא למדעי המחשב מועד ב', סמסטר א' תשס"ג, 17/2/03 משך המבחן: שעתיים וחצי. חומר עזר: מותר כל חומר עזר, מלבד מחשב. הנחיות: 1. ודאו כי בטופס שבידיכם 8 עמודים. יש לכתוב

קרא עוד

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

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

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 9 חזרה על תכנות מונחה עצמים Part II ראינו בהרצאה ממשקים Set Iterable Iterator בתרגול היום חזרה על: ממשקים Iterator Iterable )iterator נראה: )set ממשק )מימוש SetAsLinkedList

קרא עוד

מקביליות

מקביליות PROMELA גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון עדכון אחרון: 21:40 15/06/2013 2 שפת מ פ ר ט עם ס מ נ ט יק ה מוגדרת באופן מתמטי "שפת תכנות" למודלים המטרה: לאפשר גם לכאלה שאינם חוקרים בתחום לבנות

קרא עוד

בחן במערכות הפעלה

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

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

קרא עוד

Slide 1

Slide 1 מבוא למדעי המחשב תירגול 7: פונקציות 1 מה היה שבוע שעבר? לולאות מערכים מערכים דו-ממדיים 2 תוכנייה )call by value( פונקציות העברת פרמטרים ע"י ערך תחום הגדרה של משתנה מחסנית הקריאות 3 פונקציות 4 הגדרה של

קרא עוד

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

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

קרא עוד

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

מתכונת עיצוב 3013 מדעי המחשב פרק ראשון Java שאלה 1 שאלה 1 נכתב ע"י ראמי ג'באלי C# Java 2 א. שאלה ב. הערה: במבחן כתוב שיש שלשה אחת בלבד של פנסים כאלו. ולמרות זאת נשאיר את המשתנה הבוליאני כך שאם נמצאו הפנסים בתחילת המערך

קרא עוד

תרגול 1

תרגול 1 מבוא למדעי המחשב 2019 תרגול 9 חזרה על תכנות מונחה עצמים Part II ראינו בהרצאה ממשקים Set Iterable Iterator בתרגול היום חזרה על: ממשקים Iterator Iterable )iterator נראה: )set ממשק )מימוש SetAsLinkedList

קרא עוד

מקביליות

מקביליות תכונות בטיחות Safety Properties גרא וייס המחלקה למדעי המחשב אוניברסיטת בן-גוריון 2 תזכורת: תכונות זמן ליניארי Linear Time Properties תכונות זמן-ליניארי מתארות קבוצת עקבות שהמערכת צריכה לייצר מכוונים ללוגיקה

קרא עוד

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

תורת הקומפילציה תורת הקומפילציה תרגיל בית 2 הוראות לתרגיל 2 בשפת MINI-PASCAL הפרוייקט המצורף הינו קוד שלד של מהדר לשפת mini-pascal עליכם לממש בסביבת (Eclipse (Java את הפונקציות המתאימות לפי החומר שנלמד בהרצאה ע"מ שהמהדר

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 6: כתובות ומצביעים 1 תוכנייה מצביעים מצביעים ומערכים, אריתמטיקה של מצביעים 2 3 מצביעים תזכורת- כתובות זיכרון הזיכרון כתובת התא #1000 #1004 #1008 ערך השמור בתא תא 10-4 לא מאותחל

קרא עוד

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

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ג חשון תשע"ח 12/11/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

קרא עוד

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

מבוא למדעי המחשב, סמסטר א', תשסח תרגול מס' 2 מבוא למדעי המחשב תרגול מס' 2 נושאים משתנים טיפוסים אופרטורים פונקציות מתמטיות מהמחלקה Math המרת טיפוסים תנאים ולולאות 1 2 תזכורת משיעור קודם תזכורת... תכנית מחשב נכתבת כטקסט בקובץ. הטקסט כתוב בשפת תכנות

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 Generics תרגול - 1 תכנות גנרי תמיכה בתכנות גנרי נוספה בגרסה 5 ניתן להגדיר מחלקות ושירותים גנריים מונע שכפול קוד )מוכללים( ניתן לכתוב תוכניות שאינן תלויות בטיפוסי המשתנים מאפשר בטיחות טיפוסים מנגנון

קרא עוד

PowerPoint Presentation

PowerPoint Presentation 1 תוכנה 1 תרגול 1: מנהלות, סביבת העבודה ומבוא ל- Java 1 2 מנהלות I מתרגלים: יעל אמסטרדמר )שעת קבלה: חמישי ב- 12, בתיאום מראש( דביר נתנאלי )שעת קבלה: רביעי ב- 17, בתיאום מראש( http://courses.cs.tau.ac.il/software1/1415a

קרא עוד

Microsoft PowerPoint - rec1.ppt

Microsoft PowerPoint - rec1.ppt תכנות מונחה עצמים בשפת ++C תר גול מ ספר 1 אוהד ב ר זילי אוניברסיטת תל א ביב חדש חדיש ומחודש תוספות של + +C לשפ ת C 1 #include Hello World using namespace std; int main() cout

קרא עוד

Slide 1

Slide 1 בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 9: הורשה מחלקות אבסטרקטיות ואתחול עצמים 2 ירושה ממחלקות קיימות ראינו בהרצאה שתי דרכים לשימוש חוזר בקוד של מחלקה קיימת: הכלה + האצלה הכלה כאשר

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תרגול מס' 3: המתרגם שימוש במחלקות קיימות מחרוזות, קבצים, וקבלת קלט מהמשתמש שלבי הפיתוח - חזרה קצרה ישנם שני שלבים נפרדים: שלב פיתוח התוכנית בשלב זה אנו משתמשים במהדר )קומפיילר( כדי להמיר קבצי.java )קבצי

קרא עוד

Microsoft PowerPoint - lec2.ppt

Microsoft PowerPoint - lec2.ppt מרחב הש מות (namespace) אוהד ברזילי אוניברסיטת תל אביב מה בתו כנית? לקוח וס פק במערכת תוכנה ממשקים הכרת מרחב השמות מניעת תלות פוטנציאלית בין רכיבים במערכת ע"י עיצוב חלופי של מבנה הממשקים 2 א ונ י ב רס

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

מבוא למדעי המחשב מבוא למדעי המחשב גרפים 1 תוכן עניינים סיכום ביניים מה היה לנו? מושג האלגוריתם, תכנות פרוצדורלי הכרות עם בעיות במדעי המחשב הכרות עם בעיות ברקורסיה מתקדמת (כולל (memoization תכנות מונחה עצמים (מחלקה, הורשה,

קרא עוד

מצגת של PowerPoint

מצגת של PowerPoint מבוא כללי לתכנות ולמדעי המחשב תרגול מס' 1 דין שמואל dshmuel110@gmail.com 1 1. מנהלות מרצה: אמיר רובינשטיין, amirr@tau.ac.il שעות קבלה: לשאלות קצרות - מייד לאחר השיעור. ניתן לתאם במייל שעות אחרות. מתרגל:

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 8: פונקציות שבוע שעבר... מערכים מיזוג מערכים ממויינים מערכים דו-ממדיים מבוא לשפת סי - תירגול 8 2 תוכנייה פונקציות ברמת התקשורת הבין-אישית חלוקה לתתי בעיות בדומה למפתח של ספר קריאות גבוהה

קרא עוד

מבוא לאסמבלי

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

קרא עוד

Slide 1

Slide 1 בעיית התוכנית הגדולה C תוכנית גדולה המבצעת פעולות רבות, יכולה להפוך לקשה מאוד לניהול אם נשתמש רק בכלים שלמדנו עד כה: 1. קשה לכתוב ולנפות את התוכנית,. קשה להבין אותה, 3. קשה לתחזק ולתקן אותה, 4. קשה להוסיף

קרא עוד

פייתון

פייתון שיעור 12: מילונים ברק גונן 1 או מילון, :hash table או,dictionary זוגות של מפתחות keys וערכים values מילון מוגדר על ידי סוגריים מסולסלים { } לדוגמה: מילון שמכיל ציונים, המפתח הוא מספר ת.ז ערך מפתח הגדרה

קרא עוד

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

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

קרא עוד

1

1 תאריך הבחינה: 24.7.2016. שמות המרצים: ד"ר עזאם מרעי שם הקורס: עקרונות תכנות מונחה עצמים מספר הקורס: 202-15181 שנה: 2016 סמסטר: ב' מועד: א' משך הבחינה: שלוש שעות חומר עזר: אסור מבחן סיכום לקורס " עקרונות

קרא עוד

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec9.ppt ת כנ ות מונ ח ה עצמי ם בשפת + +C ירוש ה אוהד ברזילי אונ יברסיטת תל אביב ירוש ה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand

קרא עוד

Microsoft Word - c_SimA_MoedB2005.doc

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

קרא עוד

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

איטרטורים: 1 תוכנה 1 סתיו תשעג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodl איטרטורים: 1 תוכנה 1 סתיו תשע"ג תרגיל מספר 9 הנחיות כלליות: קראו בעיון את קובץ נהלי הגשת התרגילים אשר נמצא באתר הקורס. הגשת התרגיל תעשה במערכת ה moodle בלבד.(http://moodle.tau.ac.il/) יש להגיש קובץ zip

קרא עוד

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

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשעב בחינת סיום, מועד א', הנחי אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', 6.2.2012 הנחיות: 1. משך הבחינה: 120 דקות. 2. היציאה מהכיתה במהלך

קרא עוד

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

Microsoft PowerPoint - T-10.ppt [Compatibility Mode] מבוא למחשב בשפת Matlab לולאות בלוקי try-catch :10 תרגול מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור, סאהר אסמיר וטל כהן עבור הקורס "מבוא למדעי המחשב" נכתב על-ידי רמי כהן,אולג רוכלנקו,

קרא עוד

Slide 1

Slide 1 מבוא למחשב בשפת C : מערכים חד ודו-ממדיים מבוסס על השקפים שחוברו ע"י שי ארצי, גיתית רוקשטיין, איתן אביאור וסאהר אסמיר עבור הקורס "מבוא למדעי המחשב". עודכן ע"י דן רביב נכתב על-ידי טל כהן, נערך ע"י איתן אביאור.

קרא עוד

Slide 1

Slide 1 פוליטיקה ארגונית למנהלי משאבי אנוש תמר חושן יעוץ ניהולי "ולחשוב שאני צריכה לבזבז עכשיו כל כך הרבה זמן על הדבר הזה..." למה לי פוליטיקה עכשיו?! "אם אתה מקצוען אמיתי. באמת טוב במה שאתה עושה אתה לא רוצה ולא

קרא עוד

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

תרגול 3 - מערכים Introduction to Programming in Java תרגול 5 1 היום בתרגול void מה הן פונקציות הגדרת פונקציה, קריאה לפונקציה העברת ארגומנטים, החזרת ערך או דוגמאות 2 מוטיבציה לעיתים,אנו נזקקים לבצע פעולה מסוימת או לעשות

קרא עוד

Microsoft PowerPoint - rec8.ppt

Microsoft PowerPoint - rec8.ppt על טיפ ו סי ם וירו שה תרגול אוהד ברזילי אונ יברסיטת תל אביב תנ אי ק ד ם מופ שט תנאי קדם מופשט ראינו שבקבלנות משנה החוזה של המחלקה היורשת חייב לקיים 3 עקרונות: תנאי קדם יכולים להיות חלשים תנאי בתר יכולים

קרא עוד

Microsoft PowerPoint - lec9.ppt

Microsoft PowerPoint - lec9.ppt תכ נות מונח ה עצמים בשפת ++C ירו שה אוה ד ברזילי אוני ברסיטת תל אביב ירו שה המצגת מכילה קטעים מתוך מצגת של פרופ' עמירם יהודאי ע"פ הספר: Object-Oriented Software Construction, 2nd edition, by Bertrand Meyer

קרא עוד

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

תוכנה 1 בשפת Java  שיעור מספר 3: חתיכת טיפוס שיעור מספר 3: מודל הזיכרון ושירותים שחר מעוז בית הספר למדעי המחשב על סדר היום מודל הזיכרון של Java Heap and Stack העברת ארגומנטים מנגנוני שפת Java שרותים הפשטה חוזה של שרותים 2 העברת ארגומנטים כאשר מתבצעת

קרא עוד

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

תוכן העניינים הוצאת חושבים קדימה הילה קדמן חלק ב יעוץ מקצועי: חיים אברבוך מותאם לתכנית הלימודים החדשה בבתי הספר התיכוניים מהדורה חמישית הוצאת חושבים קדימה ת.ד. 1293 רעות 71908 www.kadman.net הילה קדמן 0522 525527 kadman11@gmail.com

קרא עוד

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

שאלהIgal : מערכים דו מימדיים רקורסיה: אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ח תשרי תשע"ז 30.10.16 שמות המורים: ציון סיקסיק א' תכנות ב- C מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : ב' מועד סמ' קיץ שנה תשע"ו 3 שעות משך

קרא עוד

PowerPoint Presentation

PowerPoint Presentation תוכנה 1 אוניברסיטת תל אביב INTERFACES תרגול מס' 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה מנשקים )Interfaces( 2 מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות

קרא עוד

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

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

קרא עוד

HTML - Hipper Text Makeup Language

HTML - Hipper Text Makeup Language תכנות בסביבת האינטרנט 1 תיבת טקסט טופס הטופס הוא הדרך של בעלי האתר לקבל משוב מהגולשים, מאפשר לגולש להתחבר לאתר כחבר, מאפשר לבצע רכישות באתרי קניות וכד'. כשהגולש ממלא את הטופס, מועבר תוכן הטופס לדף מיוחד

קרא עוד

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

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

קרא עוד