PowerPoint Presentation

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

Download "PowerPoint Presentation"

תמליל

1 חלוקה למודולים Abstract data types טיפוסי נתונים מופשטים ADT של מבני נתונים בחירת מבני נתונים

2 תכנות מודולארי מודולים ב- C דוגמה: מודול תאריך 2

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

4 מודול תוכנה מחולק לשני חלקים: הממשק והמימוש ממשק :(interface) מגדיר את הפעולות שניתן לעשות בעזרת המודול חלק זה חשוף למשתמש במודול מימוש :(implementation) מספק את המימוש לפעולות שניתן לבצע דרך ממשק המודול חלק זה אינו חשוף למשתמש למשל, עבור מכונית הגה הוא חלק מהממשק ואילו המנוע הוא חלק מהמימוש 4

5 h c כדי לכתוב מודולים ב- C ניצור לכל מודל קובץ וקובץ )למשל קודי שגיאה( קובץ ה- h יכיל את ממשק המודול: הכרזות על הפונקציות הגדרות טיפוסים הכרזות על קבועים שיש בהם עניין למשתמש קובץ ה- c יכיל את מימוש המודול: מימושי פונקציות הממשק ופונקציות פנימיות נוספות הגדרות טיפוסים לשימוש פנימי הכרזות על קבועים שאין בהם עניין למשתמש נראה כעת כיצד יוצרים מודול מטיפוס הנתונים עבור תאריך מתרגול 3 5

6 #ifndef DATE_H_ #define DATE_H_ #include <stdbool.h> #include <stdio.h> הגנה נגד include כפול, מה קורה בלעדיה? #define MIN_DAY 1 #define MAX_DAY 31 #define MONTH_NUM 12 #define DAYS_IN_YEAR 365 #define MONTH_STR_LEN 4 /** * A module for a date datatype */ typedef struct date_t { int day; char month[month_str_len]; int year; Date; 6

7 /** Possible error codes */ typedef enum { DATE_SUCCESS, DATE_NULL_ARG, DATE_FAIL, DATE_INVALID DateResult; /** writes the date to the stream fd */ DateResult dateprint(date date, FILE* fd); /** Reads a date from the stream fd */ DateResult dateread(date* date, FILE* fd); כדי לאפשר למשתמש שימוש נוח במודול עלינו לספק לו קודי שגיאה מפורטים, לכן נגדיר טיפוס מיוחד למטרה זו ונשתמש בו /** Returns true if both dates are identical */ bool dateequals(date date1, Date date2); /** Returns the number of days between the dates */ int datedifference(date date1, Date date2); /** Checks if the date has valid values */ bool dateisvalid(date date); #endif /* DATE_H_ */ יש לספק תיעוד מפורט יותר של ערכי החזרה והשגיאה. תיעוד זה אינו מסופק כאן מפאת חוסר המקום בשקף 7

8 #include "date.h" #include <string.h> אין צורך להכריז מחדש על הפונקציות, פשוט כוללים את הממשק בקובץ #define INVALID_MONTH 0 static const char* const months[] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ; static int monthtoint(char* month) { for (int i = 0; i < MAX_MONTH; i++) { if (strcmp(month, months[i]) == 0) { return i+1; return INVALID_MONTH; פונקציות עזר פנימיות אינן מעניינות את המשתמש ולכן יש להכריז עליהן כסטטיות static int datetodays(date date) { int month = monthtoint(date.month); return date.day + month*(max_day - MIN_DAY + 1) + DAYS_IN_YEAR * date.year; 8

9 DateResult dateprint(date date, FILE* fd) { if (!fd) { return DATE_NULL_ARG; fprintf(fd, "%d %s %d\n", date.day, date.month, date.year); return DATE_SUCCESS; DateResult dateread(date* date, FILE* fd) { if (!date!fd) { return DATE_NULL_ARG; if (fscanf(fd, "%d %3s %d", &(date->day), date->month, &(date->year))!= 3) { return DATE_FAIL; return dateisvalid(*date)? DATE_SUCCESS : DATE_INVALID; 9

10 bool dateisvalid(date date) { if (date.month[month_str_len-1]!= \0 ) return false; return date.day >= MIN_DAY && date.day <= MAX_DAY && monthtoint(date.month)!= INVALID_MONTH; bool dateequals(date date1, Date date2) { return date1.day == date2.day && strcmp(date1.month,date2.month) == 0 && date1.year == date2.year; int datedifference(date date1, Date date2) { int days1 = datetodays(date1); int days2 = datetodays(date2); return days1 - days2; 10

11 #include "date.h" int main() { Date date1 = { 21, "NOV", 1970 ; Date date2; DateResult result = dateread(&date2, stdin); if (result == DATE_FAIL) { fprintf(stderr,"bad date format\n"); return 0; else if (result == DATE_INVALID) { fprintf(stderr,"invalid date\n"); return 0; dateprint(date1, stdout); dateprint(date2, stdout); if (!dateequals(date1,date2)) { int diff = datedifference(date1,date2); int absolutediff = diff < 0? -diff : diff; printf("the dates are %d days apart\n", absolutediff ); return 0; כעת ניתן להשתמש במודול התאריך בתכניות שונות וגם לעדכן את מודול התאריך בקלות 11

12 נהוג לחלק את הקוד למודולים כדי לאפשר שימוש חוזר ותחזוקה נוחה מודול מוגדר משני חלקים - ממשק ומימוש הממשק מכיל רק את מה שהמשתמש במודול זקוק לו ב- C מגדירים את ממשק המודול בקובץ h ואת המימוש בקובץ c יש להגן על קבצי h מפני include כפול פונקציות פנימיות של המודול יש להגדיר כ- static 12

13 הסתרה ADT עבור תאריך 13

14 int main() { Date date1 = { 21, "NOV", 1970 ; Date date2; printf("enter a day number:"); scanf("%d", &date2.day); //... more code... return 0; משתמש במודול התאריך שלנו כתב את הקוד הבא: מה הבעיה? מה גורם לה? 14

15 הבעיה בטיפוסי הנתונים שלנו - המימוש חשוף המשתמש עלול לשכפל קוד במקום להשתמש בקוד קיים שינויים עתידיים במודול "ישברו" את הקוד של המשתמש בו הפתרון: נסתיר את המימוש של טיפוס הנתונים מהמשתמש כך שקוד אשר אינו משתמש בממשק לא יתקמפל חשוב לציין - המשתמש יכול להיות כותב המודול בעצמו 15

16 כדי להסתיר את המימוש מהמשתמש ב- C נשתמש בשיטה הבאה: בקובץ ה- h נכריז על טיפוס מצביע למבנה typedef struct datatype_t* Datetype; בקובץ ה- c נממש את המבנה struct datatype_t { // fields... ; משתמשים במודול לא יוכלו לבצע dereference למצביע משתמשים במודול חייבים להשתמש בו רק דרך הממשק המוגדר 16

17 #ifndef DATE_H_ #define DATE_H_ #include <stdbool.h> #include <stdio.h> /** * A module for a date */ typedef struct date_t* Date; רק טיפוס המצביע חשוף, עם הגדרה זו לא ניתן לבצע ל- Date dereference typedef enum { DATE_SUCCESS, DATE_NULL_ARG, DATE_FAIL, DATE_INVALID DateResult; 17

18 /** Allocates a new date */ Date datecreate(int day, int month, int year); /** Allocates a new date which is a copy of the argument */ Date datecopy(date date); /** Frees an existing date object */ void datedestroy(date date); DateResult dateprint(date date, FILE* fd); DateResult dateread(date date, FILE* fd); bool dateequals(date date1, Date date2); int datedifference(date date1, Date date2); bool dateisvalid(date date); #endif /* DATE_H_ */ מאחר והמשתמש לא יכול ליצור עצמים מטיפוס התאריך עלינו לספק לו ממשק לביצוע פעולות אלו 18

19 #include "date.h" #include <stdlib.h> #include <string.h> #define INVALID_MONTH 0 #define MIN_DAY 1 #define MAX_DAY 31 #define MONTH_NUM 12 #define DAYS_IN_YEAR 365 #define MONTH_STR_LEN 4 המבנה מוגדר בקובץ ה- C ולכן גישה לשדותיו אפשרית רק מיחידת הקומפילציה הזו struct date_t { int day; char month[month_str_len]; int year; ; static const char* const months[] = { "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ; 19

20 static int monthtoint(char* month) { assert(month[month_str_len-1] == \0 ); for (int i = 0; i < MONTH_NUM; i++) { if (strcmp(month, months[i]) == 0) { return i+1; return INVALID_MONTH; static bool isdayvalid(int day) { return day >= MIN_DAY && day <= MAX_DAY; static bool ismonthnumbervalid(int month) { return month >= 1 && month <= MONTH_NUM; static int datetodays(date date) { int month = monthtoint(date->month); return date->day + month*(max_day - MIN_DAY + 1) + DAYS_IN_YEAR * date->year; 20

21 Date datecreate(int day, int month, int year) { if (!isdayvalid(day)!ismonthnumbervalid(month)) { return NULL; Date date = malloc(sizeof(*date)); if (!date) { return NULL; date->day = day; strcpy(date->month, months[month-1]); date->year = year; return date; 21

22 Date datecopy(date date) { if (!date) { return NULL; return datecreate(date->day, monthtoint(date->month), date->year); void datedestroy(date date) { free(date); למה בכלל לטרוח? bool dateisvalid(date date) { assert(date!= NULL); return isdayvalid(date->day) && monthtoint(date->month)!= INVALID_MONTH; 22

23 DateResult dateprint(date date, FILE* fd) { if(!date!fd) { return DATE_NULL_ARG; fprintf(fd, "%d %s %d\n", date->day, date->month, date->year); return DATE_SUCCESS; DateResult dateread(date date, FILE* fd) { if(!date!fd) { return DATE_NULL_ARG; if(fscanf(fd,"%d %3s %d",&(date->day),date->month,&(date->year))!= 3) { return DATE_FAIL; return dateisvalid(date)? DATE_SUCCESS : DATE_INVALID; 23

24 bool dateequals(date date1, Date date2) { assert(dateisvalid(date1) && dateisvalid(date2)); return date1->day == date2->day && strcmp(date1->month,date2->month) == 0 && date1->year == date2->year; int datedifference(date date1, Date date2) { assert(dateisvalid(date1) && dateisvalid(date2)); int days1 = datetodays(date1); int days2 = datetodays(date2); return days1 - days2; 24

25 #include <stdlib.h> #include "date.h" int main() { Date date1 = datecreate(21, 11, 1970); Date date2 = datecreate(1,1,0); DateResult result = dateread(date2, stdin); if (result!= DATE_SUCCESS) { fprintf(stderr,"bad input\n"); return 0; if (!dateequals(date1,date2)) { int diff = datedifference(date1,date2); printf("the dates are %d days apart\n", abs(diff)); datedestroy(date1); datedestroy(date2); return 0; צריך לבדוק הצלחה של datecreate() מה הבעיה? לא לשכוח לשחרר! ההקצאות הן דינאמיות! 25

26 טיפוסי נתונים מופשטים נבדלים מטיפוסי נתונים רגילים בניתוק המימוש מהממשק כדי להסתיר את המימוש של struct את הגדרת המבנה נשים בקובץ C ב- C נשתמש במצביעים למבנה 26

27 תחביר דוגמאות קוד גנרי 27

28 מה משותף לשתי הפונקציות הבאות? bool isbigger(int a, int b); bool isbiggerabs(int a, int b); ביצוע קריאה לפונקציות בעלות אותה חתימה נעשה באותה צורה בקוד מכונה השמת המשתנים במקום מוגדר )בד"כ על המחסנית( 1. קפיצה לכתובת תחילת הפונקציה בזיכרון 2. כתיבת ערך החזרה למקום מוסכם 3. קפיצה לכתובת ממנה נקראה הפונקציה 4. שלבים 3 1, ו- 4 זהים לכל שתי פונקציות בעלות אותה חתימה לכן ניתן לקרוא לפונקציות שונות בעזרת קוד דומה 28

29 ניתן להכריז על מצביע לפונקציה בעלת חתימה מסוימת: <return type> (*<name>)(<parameters>) = <initial value>; למשל הכרזה על מצביע עבור פונקציה המקבלת משתנה יחיד מטיפוס int ומחזירה int המאותחל ל- NULL תיראה כך: int (*ptr)(int) = NULL; מה קורה בלי הסוגריים? ניתן לאחסן במצביע לפונקציה את כתובתה של פונקציה בעלת חתימה זהה לזו שהוגדרה במצביע int square(int n);... ptr = square; // &square also works ניתן לקרוא לפונקציה דרך המצביע: printf("%d", ptr(5)); // (*ptr)(5) also works לא נהוג להשתמש ב-& ו-* עבור מצביעים לפונקציות 29

30 ברשותנו שתי הפונקציות הבאות: bool isbigger(int a, int b) { return a > b; bool isbiggerabs(int a, int b) { int abs_a = a > 0? a : -a; int abs_b = b > 0? b : -b; return abs_a > abs_b; נכתוב את הפונקציה max המקבלת מצביע לפונקציה ומחזירה את האיבר הגדול מביניהם בהתאם לקריטריון שמועבר לה int max(int a, int b, bool (*compare)(int,int)) { return compare(a,b)? a : b; מה יהיו תוצאות כל אחת מההרצות הבאות של?max max(-7, 5, isbigger); max(-7, 5, isbiggerabs); 30

31 int main() { bool (*function)(int, int); if (getchar() == '1') { function = isbigger; else { function = isbiggerabs; int a = -5, b = 3; bool c = function(a, b); בעזרת מצביעים לפונקציות ניתן ליצור קוד שבכל הרצה שלו יתנהג אחרת: if (c) { printf("%d",a); else { printf("%d",b); return 0; 31

32 כתבו פונקציה למיון מערך של מספרים שלמים המאפשרת מיון לפי קריטריון משתנה typedef bool (*CmpFunction)(int, int); void sort(int* array, int n, CmpFunction compare) { assert(array!= NULL && compare!= NULL); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (compare(array[i], array[j])) { int tmp = array[i]; array[i] = array[j]; array[j] = tmp; כדי להימנע מהתחביר הלא נוח של מצביעים לפונקציות ניתן להשתמש ב- typedef 32

33 int main(){ int arr[] = { 1, -3, 9, -10, -5 ; sort(arr, 5, isbigger); // sort(arr, 5, isbiggerabs); // return 0; דוגמה לשימוש: 33

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

35 כתבו פונקציה למיון מערך של עצמים כלשהם המאפשרת מיון לפי קריטריון משתנה typedef bool (*CmpFunction)(void*, void*); void sort(void** array, int n, CmpFunction compare) { assert(array!= NULL && compare!= NULL); for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { if (compare(array[i], array[j])) { void* tmp = array[i]; array[i] = array[j]; array[j] = tmp; 35

36 כדי למיין באמצעות הפונקציה החדשה עלינו ליצור פונקציות השוואה מתאימות: bool intisbigger(void* a, void* b) { assert(a && b); return ( *(int*) a ) > ( *(int*) b ); bool dateisbigger (void* date1, void* date2) { assert(date1 && date2); int difference = datedifference(date1,date2); return difference > 0; למה לא חייבים המרה מפורשת? 36

37 int main() { void* dates[3]; dates[0] = datecreate(20, 5, 2010); dates[1] = datecreate(1, 1, 2000); dates[2] = datecreate(2, 2, 2001); int* numbers[3]; numbers[0] = malloc(sizeof(int)); *numbers[0] = 17; numbers[1] = malloc(sizeof(int)); *numbers[1] = 1; numbers[2] = malloc(sizeof(int)); *numbers[2] = 7; 37 sort(dates, 3, dateisbigger); sort((void**)numbers, 3, intisbigger); for (int i = 0; i < 3; i++) { dateprint(dates[i], stdout); printf("\n"); for (int i = 0; i < 3; i++) { printf("%d\n",*numbers[i]); return 0; למה דרושה המרה מפורשת? מה חסר? 1 JAN FEB MAY

38 ניתן להגדיר ב- C מצביעים אשר שומרים כתובת של פונקציה ניתן להריץ את הפונקציה שכתובתה שמורה במצביע נשתמש במצביעים לפונקציות כדי להעביר "הוראות" לחלקי קוד אחרים בעזרת מצביעים לפונקציות ניתן לכתוב קוד גנרי ולחסוך שכפול קוד 38

39 פתרון בעיה ישירות מבני נתונים מחסנית פתרון הבעיה בעזרת מחסנית 39

40 נרצה לקלוט 100 מספרים אי שליליים מהקלט ולהדפיס אותם בסדר הפוך בזמן הכנסת הקלט המשתמש יכול להתחרט ולבטל את הכנסת המספר האחרון לצורך כך הוא צריך להכניס 1- פעולת הביטול דומה לפעולת undo בעורכי טקסטים המשתמש undo לבצע יכול כמה פעמים ולבטל כמה מספרים נפתור תחילה את הבעיה הזו ישירות 40

41 #include <stdio.h> #include <assert.h> #define MAX_SIZE 100 #define UNDO_LAST_COMMAND -1 int main() { int input, size = 0, numbers[max_size]; while (size < MAX_SIZE && scanf("%d", &input) == 1) { if (input!= UNDO_LAST_COMMAND) { assert(size >= 0 && size < MAX_SIZE); numbers[size++] = input; else if (size > 0) { size--; printf("undo\n"); else { printf("cannot undo\n"); while (size > 0) { printf("%d\n", numbers[--size]); assert(size >= 0 && size < MAX_SIZE); return 0; 41

42 לא ניתן לעשות שימוש חוזר בקוד עבור בעיות דומות קל להכניס באגים?--size או size--?++size או size++?size או >= 0 size > 0?size או < 0 size < 1 הפתרון אינו מתעד את עצמו מוסיפים רק לסוף המערך מורידים מספרים רק מסוף המערך ההדפסה מתבצעת רק בסדר הפוך עבור בעיה גדולה יותר, כבר לא ניתן לשמור על הקוד פשוט כמו במקרה זה 42

43 מבני נתונים הם טיפוסי נתונים מיוחדים שמטרתם לשמור אוסף של משתנים ולאפשר עליהם פעולות מסוימות Array Get(i) Set(i) Linked List Head() Next(node) InsertAfter(node) RemoveAfter(node) דוגמאות: מערך - הממשק של מערך כולל קריאת איברים לפי אינדקס והשמה לאיברים לפי אינדקס רשימה מקושרת - הממשק של רשימה מקושרת כולל קבלת האיבר הראשון, קבלת האיבר שבא אחרי איבר נתון, והכנסה/הוצאה של איבר אחרי איבר נתון נוח לכתוב מבני נתונים נוספים כטיפוס נתונים ולהשתמש בהם עבור בעיות מתאימות 43

44 )מבלי מבנה הנתונים מחסנית מוגדר לפי הממשק הבא: - push הוסף איבר בראש המחסנית - pop הוצא את האיבר האחרון שהוכנס למחסנית להחזיר את ערכו( - top החזר את ערכו של האיבר האחרון שהוכנס למחסנית )מבלי להוציאו( מחסנית מאפשרת גישה רק לאיבר האחרון שהוכנס ורק אותו ניתן להוציא ברגע נתון Out) (LIFO - Last In First 44

45 #ifndef _STACK_H #define _STACK_H /** ADT of Stack of integers */ typedef struct stack_t* Stack; /** possible return values */ typedef enum { STACK_SUCCESS, STACK_BAD_ARGUMENT, STACK_EMPTY, STACK_FULL StackResult; /** creates a Stack with maximal capacity of 'maxsize'. if fails, returns NULL */ Stack stackcreate(int maxsize); /** releases the memory allocated for the stack */ void stackdestroy(stack stack); ערכי שגיאות מוסכמים כדי לאפשר למשתמש להתמודד עם שגיאות איפה המבנה עצמו? מדוע? לא לשכוח הגנה נגד include כפול 45

46 /** insert a number to the top of the stack. Error Codes: STACK_BAD_ARGUMENT if stack is NULL STACK_FULL if the stack is full. */ StackResult stackpush(stack stack, int number); /** removes the element at the top of the stack. Error codes: STACK_BAD_ARGUMENT if stack is NULL STACK_EMPTY if the stack is empty */ StackResult stackpop(stack stack); /** returns in 'number' the last element that was pushed. Error codes: STACK_BAD_ARGUMENT if stack or number are NULL STACK_EMPTY if the stack is empty */ StackResult stacktop(stack stack, int* number); 46

47 /** returns a flag indicating whether the stack is full (meaning elements cannot be pushed) stack must not be NULL */ bool stackisfull(stack stack); /** returns a flag indicating whether the stack is empty (meaning elements cannot be popped) stack must not be NULL */ bool stackisempty(stack stack); /** returns the number of elements in the stack. stack must not be NULL */ int stacksize(stack stack); #endif 47

48 #include <stdio.h> #include <assert.h> #include <stdlib.h> #include "stack.h" #define MAX_INPUT_SIZE 100 #define UNDO_LAST_COMMAND -1 int main() { Stack stack = stackcreate(max_input_size); if (stack == NULL) { fprintf(stderr, "failed to create stack\n"); return -1; int input; while (!stackisfull (stack) && scanf("%d", &input) == 1) { if (input!= UNDO_LAST_COMMAND) { StackResult result = stackpush(stack, input); assert(result == STACK_SUCCESS); continue; StackResult result = stackpop(stack); if (result == STACK_EMPTY) { printf("cannot undo\n"); else { assert(result == STACK_SUCCESS); printf("undo\n"); 48

49 while (!stackisempty (stack)) { int number; StackResult result = stacktop(stack, &number); StackResult result2 = stackpop(stack); assert (result == STACK_SUCCESS && result2 == STACK_SUCCESS); printf("%d\n", number); stackdestroy(stack); return 0; 49

50 נבחר לממש את המחסנית בעזרת מערך נשמור שלושה שדות במבנה 5 nextindex מערך בו יישמרו המספרים גודל המחסנית המקסימלי אינדקס המקום הפנוי הבא במערך 2 זהו גם מספר האיברים במבנה 17 איזו דרך נוספת קיימת למימוש מחסנית? 3 50

51 #include <stdlib.h> #include <assert.h> #include "stack.h" /** The Stack is implemented as an array of integers. * With nextindex as an index to the next available position and * the maximal size is stored in maxsize. */ struct stack_t { int* array; int nextindex; int maxsize; ; 51

52 Stack stackcreate(int maxsize) { if (maxsize <= 0) { return NULL; Stack stack = malloc(sizeof(*stack)); if (stack == NULL) { return NULL; stack->array = malloc(sizeof(int)*maxsize); if (stack->array == NULL) { free(stack); return NULL; stack->nextindex = 0; stack->maxsize = maxsize; return stack; שימו לב, בשלב זה כבר יש הקצאה שהצליחה 52

53 StackResult stackpush(stack stack, int number) { if (stack == NULL) { return STACK_BAD_ARGUMENT; if (stack->nextindex >= stack->maxsize) { return STACK_FULL; assert(stack->nextindex >= 0 && stack->nextindex < stack->maxsize); stack->array[stack->nextindex++] = number; return STACK_SUCCESS; StackResult stackpop(stack stack) { if (stack == NULL) { return STACK_BAD_ARGUMENT; if (stack->nextindex < 1) { return STACK_EMPTY; stack->nextindex--; return STACK_SUCCESS; 53

54 StackResult stacktop(stack stack, int* number) { if (stack == NULL number == NULL) { return STACK_BAD_ARGUMENT; if (stack->nextindex < 1) { return STACK_EMPTY; assert(stack->nextindex > 0 && stack->nextindex <= stack- >maxsize); *number = stack->array[stack->nextindex - 1]; return STACK_SUCCESS; void stackdestroy(stack stack) { if (stack!= NULL) { free(stack->array); free(stack); 54

55 int stacksize(stack stack) { assert(stack); return stack->nextindex; כיצד ניתן היה לכתוב פונקציות אלו בצורה שונה כך שיחזירו ערכי שגיאה? מה היתרונות והחסרונות של כל שיטה? bool stackisempty(stack stack) { assert(stack); return stacksize(stack) == 0; bool stackisfull(stack stack) { assert(stack); return stacksize(stack) == stack->maxsize; 55

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

57 בחירת מבני נתונים מבני הנתונים הנלמדים בקורס 57

58 בקורס זה אנו לומדים את מבני הנתונים הבסיסיים הבאים )כולם נלמדים כ- ADT (: - List רשימה: שומרת אוסף איברים עם סדר ביניהם ומאפשרת הכנסת אותו איבר מספר פעמים - Set קבוצה: מאפשרת הכנסת איבר פעם אחת בלבד ואינה שומרת סדר בין איברי הקבוצה - Stack מחסנית: מאפשרת הכנסה, גישה והוצאה רק מסופה. שומרת על סדר ומאפשרת כפילויות - Graph גרף: שומר קבוצת צמתים וקבוצת קשתות המחברות ביניהם מתאים לבעיות הדורשות אבסטרקציה של רשתות כגון רשת כבישים, רשת מחשבים וכו'

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

60 מבני הנתונים הנלמדים בקורס הם Stack,Set,List ו- Graph יש לבחור מבנה נתונים מתאים לבעיה כדי להקל על העבודה 60

PowerPoint Presentation

PowerPoint Presentation מצביעים הקצאת זיכרון דינאמית מבנים - Structures טיפוסי נתונים - types Data העברת פרמטרים ל- main טענות נכונות שימוש בסיסי אריתמטיקת מצביעים void* מצביע למצביע 2 כתובת ערך הבית int התופס 4 בתים 7 0 0 0

קרא עוד

PowerPoint Presentation

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

קרא עוד

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

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

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 3: טיפוסים והמרות 1 מה היה שבוע שעבר? משתנים קלט/פלט scanf( ו- printf ( Redirection The Input Buffer 2 תוכנייה טיפוסי משתנים קלט/פלט מעוצב המרה בין טיפוסים קבועים 3 חישוב ממוצע בין שני

קרא עוד

Microsoft Word B

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Slide 1

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Microsoft Word - c_SimA_MoedB2005.doc

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Slide 1

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation רשימות מקושרות עבודה קבצים דוגמה מבנים המצביעים לעצמם רשימות מקושרות 2 נסתכל על המבנה הבא: typedef struct node { int data; struct node* next; *Node; איך נראים המבנים בזיכרון לאחר ביצוע הקוד הבא: Node node1

קרא עוד

תרגול 1

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Microsoft PowerPoint - lec2.ppt

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

קרא עוד

Slide 1

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

קרא עוד

PowerPoint Presentation

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

קרא עוד

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

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

קרא עוד

PowerPoint Presentation

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

תרגול 1

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

קרא עוד

Slide 1

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

קרא עוד

Slide 1

Slide 1 מבוא לשפת C תירגול 10: מצביעים, מערכים ומחרוזות שבוע שעבר... מצביעים Call by reference 2 תוכנייה קשר מצביע-מערך )אריתמטיקה של מצביעים( העברת מערכים לפונקציה מחרוזות דוגמה 3 קשר מצביע-מערך 4 תזכורת: תמונת

קרא עוד

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

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

קרא עוד

Slide 1

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

קרא עוד

Microsoft PowerPoint - rec1.ppt

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא למדעי המחשב תירגול 2: מבוא לתיכנות ב- C 1 תוכנייה משתנים קלט/פלט משפטי תנאי מבוא למדעי המחשב מ' - תירגול 3 2 משתנים 3 משתנים- תמונת הזיכרון הזיכרון כתובת התא #1000 10-4 לא מאותחל 67 לכל תא בזיכרון

קרא עוד

Microsoft PowerPoint - rec3.ppt

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Programming

Programming קורס תכנות שיעור עשירי: מיונים, חיפושים, קצת ניתוח זמני ריצה, קצת תיקון טעויות ועוד על רשימות 1 רשימה מקושרת רשימה היא אוסף סדור של פעולות רשימה לעומת מערך ערכים 3 5 7 9 typedef struct node { int data;

קרא עוד

Microsoft Word - דוגמאות ב

Microsoft Word - דוגמאות ב הפקולטה למדעי המחשב פרופ' חיים גוטסמן, מר רן רובינשטיין עומר סטרולוביץ, כרמי גרושקו, אלכסנדר ליבוב, מיכאל בלטקסה, ראידה נעאמנה, שי מרקנטי, גיא שקד הטכניון - מכון טכנולוגי לישראל 3.10.2011 מבוא לתכנות מערכות

קרא עוד

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

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

קרא עוד

PRESENTATION NAME

PRESENTATION  NAME נכתב ע"י כרמי גרושקו. כל הזכויות שמורות 2010 הטכניון, מכון טכנולוגי לישראל הקצאה דינמית )malloc( מערכים דו-מימדיים סיבוכיות: ניתוח כזכור, כדי לאחסן מידע עלינו לבקש זכרון ממערכת ההפעלה. 2 עד עכשיו: הגדרנו

קרא עוד

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

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

קרא עוד

Slide 1

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

שקופית 1

שקופית 1 Computer Programming Summer 2017 תרגול 5 מערכים חד-מימדיים )תזכורת( לדוגמא: מערך בשם Arr בגודל 8 שאיבריו מטיפוס int 3 7 5 6 8 1 23 16 0 1 2 3 4 5 6 7 ב - arr[0] ב יושב ערך שהוא המספר השלם 3 arr[1] - יושב

קרא עוד

מצגת של PowerPoint

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

קרא עוד

Microsoft PowerPoint - lec10.ppt

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

קרא עוד

PowerPoint Presentation

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

קרא עוד

מקביליות

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

קרא עוד

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

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

קרא עוד

בס"ד תרגיל 3 מועד אחרון ל כללי בתרגיל זה עליכם לכתוב תוכנה שמדמה מאגר נתונים של חנות. את מוצרי החנות תייצגו באמצעות עצים ורשימות מקושרות יהיה עליכם לנ

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

קרא עוד

מבוא לאסמבלי

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

קרא עוד

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

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

קרא עוד

פייתון

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

קרא עוד

PowerPoint Presentation

PowerPoint Presentation מבוא ל-++ C משתנים מיוחסים הקצאת זיכרון דינאמית קלט/פלט ב-++ C מחלקות namespaces const 2 C היא שפת תכנות שנבנתה מעל ++C ++C מוסיפה מגוון רב של תכונות מתקדמות #include using namespace std; בעיקר

קרא עוד

Microsoft Word - c_SimA_MoedA2006.doc

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Slide 1

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

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

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

קרא עוד

Tutorial 11

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

קרא עוד

Slide 1

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

קרא עוד

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

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

קרא עוד

תרגול 1

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

קרא עוד

PowerPoint Presentation

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

קרא עוד

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

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

קרא עוד

Slide 1

Slide 1 Introduction to Programming in C תרגול 8 1 1 רקורסיה תזכורת הגדרה: המונח רקורסיה (recursion) מתאר מצב שבו פונקציה קוראת לעצמה באופן ישיר או באופן עקיף. שימוש: נוח להשתמש בפונקציות רקורסיביות על מנת לפתור

קרא עוד

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

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

קרא עוד

Microsoft Word - Ass1Bgu2019b_java docx

Microsoft Word - Ass1Bgu2019b_java docx ת ר ג י ל 1 ב ק ו ר ס מ ב ו א לתכנות 202.1.9031 JAVA סמסטר ב, ת נ א י ם ו ל ו ל א ו ת תאריך אחרון להגשה בציון מלא : 02.04.19 עד שעה : 23:55, כ ל יום איחור ל א מ א ו ש ר א ו ח ל ק ממנו מודריד 10 נקודות

קרא עוד

שעור 6

שעור 6 שעור 6 Open addressing אין רשימות מקושרות. (נניח שהאלמנטים מאוחסנים בטבלה עצמה, לחילופין קיים מצביע בהכנסה המתאימה לאלמנט אם אין שרשור). ב- addressing open הטבלה עלולה להימלא ב- factor α load תמיד. במקום

קרא עוד

מקביליות

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

קרא עוד

234114

234114 )234117 )234114 \ סמסטר חורף תשע"ז 2017 מבחן מסכם מועד א', 21 לפברואר 2 3 4 1 1 מספר סטודנט: רשום/ה לקורס: משך המבחן: 3 שעות. חומר עזר: אין להשתמש בכל חומר עזר. הנחיות כלליות: מלאו את הפרטים בראש דף זה

קרא עוד

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

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

קרא עוד

úåëðä 1 - çæøä

úåëðä 1 - çæøä Arrays and Strings מערך - אוסף משתנים בעלי שם משותף. הפנייה לכל איבר נעשית ע י אינדקס. ב- C מערך מוגדר בזיכרון רציף. האיבר הראשון נמצא בכתובת הנמוכה. לדוגמא, אם a מוגדר החל מכתובת :1000 char a[7]; Element

קרא עוד

שיעור 1

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

קרא עוד

ex1-bash

ex1-bash ביה"ס למדעי המחשב סמסטר חורף תשע"ח 13.12.2017 יסודות מערכות פתוחות פתרון תרגיל מס' 7 המכללה האקדמית נתניה שימו לב: כל ההערות שבתחילת תרגילים 1-6 תקפות גם לתרגיל זה. הערה 1: החל מתרגיל זה והלאה, בכל פעם

קרא עוד

Slide 1

Slide 1 Introduction to Programming in C תרגול 7 1 1 רקורסיה הגדרה: המונח רקורסיה (recursion) מתאר מצב שבו פונקציה קוראת לעצמה באופן ישיר או באופן עקיף. שימוש: נוח להשתמש בפונקציות רקורסיביות על מנת לפתור בעיות

קרא עוד

PowerPoint Presentation

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

קרא עוד

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט

דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמט דוגמאות שהוצגו בהרצאה 10 בקורס יסודות מערכות פתוחות דוגמה 1 דוגמאות של פונקציות ב- awk שמראות שהעברת פרמטרים של משתנים פשוטים היא by value והעברת פרמטרים של מערכים היא by reference וכן דוגמאות שמראות שמשתנים

קרא עוד

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

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

קרא עוד

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- (כל

קרא עוד

מקביליות

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

קרא עוד

תרגיל בית מספר 1#

תרגיל בית מספר 1# ב 4 תרגיל בית מספר - 1 להגשה עד 72 באוקטובר בשעה ::725 קיראו בעיון את הנחיות העבודה וההגשה המופיעות באתר הקורס, תחת התיקייה.assignments חריגה מההנחיות תגרור ירידת ציון / פסילת התרגיל. הנחיות והערות ספציפיות

קרא עוד