PowerPoint Presentation

מסמכים קשורים
Slide 1

Slide 1

Microsoft Word B

Tutorial 11

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

Slide 1

PRESENTATION NAME

Slide 1

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

PowerPoint Presentation

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

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

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

Slide 1

Microsoft PowerPoint - rec1.ppt

Slide 1

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

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

Slide 1

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

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

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

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

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

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

Microsoft Word - c_SimA_MoedB2005.doc

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

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

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

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

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

Slide 1

Microsoft PowerPoint - rec3.ppt

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

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

Slide 1

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

PowerPoint Presentation

234114

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

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

Slide 1

Slide 1

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

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

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

Microsoft Word - c_SimA_MoedA2006.doc

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

תרגול 1

תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

שקופית 1

Homework Dry 3

PowerPoint Presentation

שעור 6

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

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

תיק משימטיקה מגרף הנגזרת לגרף הפונקציה להנגשה פרטנית נא לפנות: כל הזכויות שמורות

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

Microsoft Word - pitaron222Java_2007.doc

Slide 1

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

מבוא לאסמבלי

Slide 1

Microsoft Word - דוגמאות ב

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

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

Microsoft Word - עבודת פסח לכיתה י 5 יחל.doc

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

Programming

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

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

פייתון

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

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

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

שאלה 2. תכנות ב - CShell

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

Microsoft PowerPoint - lec2.ppt

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

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

2019 שאלות מומלצות לתרגול מס' דיפרנציאביליות של פונקציה סקלרית )המשך(. כלל השרשרת. S = ( x, y, z) z = x + 3y על המשטח מצאו נקודה בה מישור משיק

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

PowerPoint Presentation

. שאלה 1: ה אי x] T : R 4[ x] R 4[ אופרטור ליניארי מוגדר על-ידי T( ax bx cx d) bx ax cx c )13 נק'( א( מצאו את הערכים העצמיים, המרחבים העצמיים

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

Microsoft Word - 28

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

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

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

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

úåëðä 1 - çæøä

Slide 1

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

תמליל:

מבוא למדעי המחשב תירגול 6: כתובות ומצביעים 1

תוכנייה מצביעים מצביעים ומערכים, אריתמטיקה של מצביעים 2

3 מצביעים

תזכורת- כתובות זיכרון הזיכרון כתובת התא #1000 #1004 #1008 ערך השמור בתא תא 10-4 לא מאותחל לכל תא בזיכרון יש כתובת #1012 67 הזיכרון במחשב מחולק לתאים, כל אחד בגודל בית אחד. תאי הזיכרון ממוספרים. מס' התא נקרא גם הכתובת של התא. 4

תזכורת- כתובות זיכרון לכל תוכנית מוקצה איזור בזיכרון בו היא יכולה לאכסן את נתוניה. אוסף כתובות זה נקרא מרחב הכתובות של התוכנית כל משתנה מאוחסן באחד או יותר תאי זיכרון רצופים. כתובת המשתנה היא הכתובת של התא הראשון שמכיל אותו. כדי לקרוא מהזיכרון על התוכנית לציין את הכתובת הרצויה ואת מס' הבתים שיש לקרוא )מס' הבתים שהמשתנה תופס( 5

מצביעים מצביעים הם משתנים המחזיקים כתובות זיכרון של משתנים אחרים. הצהרה על מצביע: הצהרה על מצביע לint הצהרה על מצביע לdouble מיקום הכוכבית לא משנה להגדרה int* iptr; double *dptr; char* cptr, c; char *cptr, c;?c מה הטיפוס של המשתנה?cptr מה הטיפוס של על מנת למנוע בלבול נכתוב את השורה כך, עם * ליד המשתנה שהוא מצביע 6

אופרטור & &var_name int* iptr; double* dptr; int a = 3; double d = 6.4; iptr = &a; dptr = &d; אופרטור & מחזיר את כתובתו של משתנה: 2000 2008 2012 2016 d a dptr iptr דוגמא: 6.4 3 2000 2008 7

int* iptr; double* dptr; int a = 3; double d = 6.4; iptr = &a; dptr = &d; 2000 2008 2012 2016 d a dptr iptr מצביעים שימו לב! מצביעים הם משתנים לכל דבר, ולכן הם מאוחסנים במחסנית כמו כל משתנה אחר. כמות הבתים הדרושה לאחסון כתובת זיכרון היא זהה לכל סוגי המצביעים ללא תלות בטיפוס עליו מצביעים כמות הבתים הדרושה לאחסון כתובת זיכרון תלויה בארכיטקטורה של המחשב עליו רצה התוכנית. ברוב המחשבים כיום מצביע תופס 8 בתים )מערכות 64 ביט(. 6.4 3 2000 2008 8

אופרטור * *ptr_name בהינתן מצביע אופרטור * מחזיר את המשתנה שעליו הוא מצביע: דוגמא: מצביע למשתנה מטיפוס int int a = 3, b = 5; int* ptr; int* הוא ptr הטיפוס של ptr 2008??? ptr = &a; *ptr = 8; b = *ptr + 3; *ptr מתנהג כמו משתנה מטיפוס int b a 11 5 3 8 9

מתי נשתמש במצביעים? מתי נעביר מצביעים כפרמטר לפונקציה? נעביר כתובת של משתנה לפונקציה כאשר נרצה לשנות את ערכו של המשתנה- כך אנו מקנים לפונקציה גישה ישירה לזיכרון המשתנה דוגמא: )שראינו בהרצאה( void swap(int* x, int* y) ב- C לכל פונקציה ערך החזרה אחד. אם נרצה פונקציה שמחזירה יותר מערך החזרה אחד, נממש זאת באמצעות מצביעים. דוגמא: פונקציה עם החתימה: יכולה להחזיר 2 ערכים. ערכו של אחד מהם יוחזר כערכו של המשתנה.res int foo(int x, int* res) 10

מתי נשתמש במצביעים? )המשך( בשפת C ניתן להגדיר טיפוסים התופסים זיכרון רב )למשל מערכים(. במקרה זה העברתם לפונקציה by value )כלומר ע"י העתקה( תהיה פעולה כבדה מאוד. ניתן לחסוך את עבודת ההעתקה על ידי העברת הכתובת של משתנים מטיפוסים כאלה לפונקציה, במקום את התוכן. שימו לב! העברת מצביע לפונקציה נעשית תמיד,by value כלומר ערך המצביע מועתק למשתנה פנימי של הפונקציה 11

Swap )תזכורת( בהרצאה ראינו פונקציה המחליפה בין התוכן של 2 מספרים מטיפוס :int void swap(int* p, int* q) { int tmp = *p; *p = *q; *q = tmp; int a = 3, b = 7; swap(&a, &b); printf("a=%d, b=%d", a, b); נשתמש בפונקציה כך: מה היה קורה אם לא היינו משתמשים במצביעים? a=7, b=3 12

Swap )תרגיל( double עדכנו את הפונקציה שתחליף בין התוכן של 2 משתנים מטיפוס void swap(double* p, double* q) { double tmp = *p; *p = *q; *q = tmp; 13

מצביעים ופונקציות כתבו פונקציה המקבלת כקלט אורך רדיוס של מעגל שלם( ומחזירה את שטח המעגל והיקפו )לא בהכרח #include <stdio.h> #define PI 3.14 void calc_perimeter_and_area(double radius, double* p_perim, double* p_area) { *p_perim = 2 * PI * radius; *p_area = PI * (radius * radius); 14

מצביעים ופונקציות #include <stdio.h> void swap_int(int* p, int* q) { int tmp = *p; *p = *q; *q = tmp; כתבו פונקציה המקבלת 3 מצביעים b, a, ו- c, למספרים שלמים, ומחליפה את תוכנם כך שיהיו מסודרים בסדר עולה void sort3(int* a, int* b, int* c) { if (*a > *b) swap_int(a, b); if (*a > *c) swap_int(a, c); if (*b > *c) swap_int(b, c); מבוא למדעי המחשב מ' - תירגול 7 15

כתובת 0 והקבוע NULL כאשר משתני רגילים אינם מאוחלים הם מכילים זבל. מה קורה כאשר ניגשים לפוינטרים לא מאותחלים? char *ptr; *ptr= A ; מצביע לא מאותחל מצביע למקום שרירותי בזיכרון 16

כתובת 0 והקבוע NULL הכתובת 0 הינה כתובת מיוחדת, שאינה כתובת חוקית בזיכרון, ומשמשת לאתחול מצביע כאשר רוצים לציין שהוא אינו מאותחל לזיכרון חוקי כלשהו. במקום הערך 0, יש להשתמש בקבוע NULL זהו #define שמוגדר אוטומטית כאפס. מנגנון זה מאפשר לבדוק את חוקיותו של כל מצביע לפני השימוש בו: יש לאתחל ל- NULL כל מצביע שאינו מאותחל לזיכרון חוקי, וכן לשים NULL במצביע במידה והזיכרון שאליו הוא מצביע מפסיק להיות מוקצה if (p!= NULL) { *p = else { printf("p is unallocated!\n"); 17

כתובת 0 והקבוע NULL ניסיון לגשת לתוכן של מצביע NULL ריצה: גורר מיידית שגיאת זמן int *p = NULL; *p = 3; 18

מערכים ומצביעים אריתמטיקה של מצביעים 19

מערך כפרמטר לפונקציה פונקציה המקבלת מערך תראה כך: הפונקציה תקבל מצביע בתור פרמטר, שקול ל: void print(int array[], int len) כיוון שקיבלנו מצביע )ולא מערך( איננו יודעים מה אורכו של המערך ולכן נעביר אותו כפרמטר נפרד לפונקציה בתוך הפונקציה נעבוד עם המצביע כמו שהיינו עובדים עם מערך 20 בקריאה לפונקציה נציין את שם המערך )שיהפוך אוטומטית למצביע לתחילת המערך( void print(int *array, int len) { for (int i=0; i<len; ++i) printf("%d\n", array[i]); int my_array[8]; print(my_array, 8);

#define N 3 int main() { int salaries[n] = {3000, 8500, 5500; printf( Old salaries:\n ); for (i=0; i<n; ++i) printf( %d\n", salaries[i]); cutsalaries(salaries, N); printf( New salaries:\n ); for (i=0; i<n; ++i) printf( %d\n", salaries[i]); return 0; חידה: מה ידפיס קטע הקוד הבא? void cutsalaries (int array[], int len){ מערכים כפרמטר לפונקציה for (i=0; i<len; ++i) array[i] /= 2; 21

מערכים כפרמטר לפונקציה תרגיל: כתבו פונקציה המקבלת מערך של מצביעים ל- int ומחזירה את מספר המצביעים שאינם בשימוש. כתבו פונקציית main המשתמשת בפונקציה שלכם בצורה תקינה 22

מערכים כפרמטר לפונקציה #include <stdio.h> int get_non_used_ptrs(int* a[], int len) { int i, count = 0; for (i = 0; i < len; i++) if (a[i] == NULL) count++; return count; 23

מערכים כפרמטר לפונקציה int main() { int x = 3, y = 6; int* arr[] = {&x, NULL, &y, NULL, NULL; printf("non-used pointers in array: %d\n", get_non_used_ptrs(arr, 5)); return 0; 24

העברת מערך דו מימדי לפונקציה אם כן כיצד נעביר מערך דו מימדי כפרמטר לפונקציה? כמו במקרה החד מימדי, נעביר מצביע למערך ולא את תוכנו נהיה חייבים לציין באיזשהו אופן מה אורך השורות במערך נציין מפורשות את אורך השורה במטריצה באופן הבא: נציג פונקציה המקבלת מערך דו מימדי בעל אורך שורה 4. חתימת הפונקציה תראה כך: int funky(int matrix[][4]); 25

העברת מערך דו מימדי לפונקציה חשוב לשים לב שהפונקציה שהגדרנו זה עתה יכולה לקבל כפרמטר אך ורק מערכים שאורך השורה שלהם הוא 4! כל ניסיון להעביר לה מערך בעל אורך שורה אחר יגרור שגיאת קומפילציה. int funky(int matrix[][4]); 26

דוגמא- חישוב מינימום ומקסימום נכתוב פונקציה המקבלת מערך דו ממדי כפרמטר ומחזירה את האיבר המינימלי והמקסימאלי בו. מה תהיה החתימה של הפונקציה? void extremes(int a[][m], int n, int *min, int *max) שימו לב שבחתימה זו אנו חייבים לציין את אורך השורה של המערך הדו-ממדי )במקרה שלנו זהו M, המוגדר כ-.)#define עם זאת, איננו מניחים דבר בנוגע למספר השורות במערך, ולכן ערך זה מועבר כפרמטר n של הפונקציה. 27

דוגמא- חישוב מינימום ומקסימום void extremes(int a[][m], int n, int *min, int *max){ int i, j; *min = *max = a[0][0]; for (i = 0; i < n; ++i) { for (j = 0; j < M; ++j) { *min = (a[i][j] < *min)? a[i][j] : *min; *max = (a[i][j] > *max)? a[i][j] : *max; 28