תכנות תרגול 10 שבוע : 3.5.05. הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
Advertisements

Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
מחרוזות של תווים. מבוא לתכנות למנע"ס - שבוע מספר 5 - מאיר קומר - סמסטר ב' - תשס"ו מחרוזות - Strings Dim s As String s = “hello” s = s & “kita” או s =
מחרוזות נכתב ע " י כרמי גרושקו. כל הזכויות שמורות © 2010 הטכניון, מכון טכנולוגי לישראל 1.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
שאלות ממבחנים. 14 תרגולמבוא למדעי המחשב. כל הזכויות שמורות ©2 תרגיל 1: מטריצות כתבו פונקציהvoid Rotation(int in [N][N], int out [N][N]) אשר מקבלת שני.
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 9 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול. הבית האדום כתובת : רחוב קוקוריקו 2 הבית הירוק כתובת : רחוב קוקוריקו 4 הבית הצהוב כתובת : רחוב קוקוריקו 1 הבית הורוד כתובת.
תכנות תרגול 9 שבוע : מערכים int a; a=5; int a[10]; a[2] = 5; 5 a a[0] a[1] a[2] a[9]  5 משתנה בודד מערך גישה למשתנה השלישי במערך.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
שיעור שישי: מערכים ופונקציות
11 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מבוא למדעי המחשב מחרוזות, מצביעים וכתובות
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
#include void main() { int i; char c; char st1[]="abcd"; for (i=-128;i
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
מבוא כללי למדעי המחשב שיעור 5
תכנות – שיעור 7. חזרה -מערכים נגדיר בעזרתו קבוצת משתנים כאשר יהיה לנו מספר רב של משתנים זהים נגדיר בעזרתו קבוצת משתנים כאשר יהיה לנו מספר רב של משתנים.
תכנות תרגול 14 שבוע:
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 14 שבוע : רשימות מקושרות ישנו מבנה נתונים אשר מאפשר ישנו מבנה נתונים אשר מאפשר לנו לבצע את הוספת האיברים בצורה נוחה יותר. מבנה זה.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 12 שבוע : הקצאת זיכרון דינאמית הזיכרון המקסימאלי ששימש את התוכנית שלנו עד היום היה קבוע מראש. לפני הרצת התוכנית, לאחר שהתוכנית עברה.
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא ידעו.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול 9 – מערכים ומחרוזות, תרגילי חזרה שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול 7. מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
מבוא למדעי המחשב תרגול 12 – הקצאת זיכרון דינאמית שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 8 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
11 Introduction to Programming in C תרגול
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
קורס תכנות שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
מבנים קרן כליף. ביחידה זו נלמד :  מהו מבנה (struct)  איתחול מבנה  השמת מבנים  השוואת מבנים  העברת מבנה לפונקציה  מבנה בתוך מבנה  מערך של מבנים.
Programming Pointers. נדגים היום בעזרת מצביעים העברת משתנים לפונקציה שמשנה אותם  פונקציה שמקבלת מצביעים לסמן תא בזיכרון  פונקציה שמחזירה מצביע מערך.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Programming Arrays.
מבוא למדעי המחשב לתעשייה וניהול
מבוא למדעי המחשב סיבוכיות.
מערכים ומצביעים הקצאה דינאמית של מערכים דו-מימדיים
מחרוזות קרן כליף.
שיעור חמישי: מערכים ומחרוזות
מצביעים קרן כליף.
תירגול 14: מבני נתונים דינאמיים
קורס תכנות – סמסטר ב' תשס"ח
שיעור שישי: מחרוזות, מצביעים
מבוא כללי למדעי המחשב תרגול 4
תרגול 8 תחומי הכרה פונקציות
מבוא כללי למדעי המחשב תרגול 6
תיכון אהל שם, רמת גן קורס PHP – הרצאה מס' 10
מחרוזות קרן כליף.
מבוא למדעי המחשב מצביעים.
תירגול 8:מצביעים והקצאה דינאמית
Presentation transcript:

תכנות תרגול 10 שבוע :

הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו יש כתובת a[0] a[1] a[2] a[9]  כדי להגיע לכתובת של תא במערך פשוט נכתוב &a[2] אם נרצה את הכתובת של המערך עצמו אזי זה שם המערך

הקשר בין מערכים לפונקציות כיצד נכתוב פונקציה אשר תקבל כפרמטר מערך ? הפונקציה תקבל מערך ( את כתובתו ) ותדפיס אותו : void PrintArray(int a[],int size) { int i; for (i=0;i<size;i++) printf(“%d”,a[i]);}

הקשר בין מערכים לפונקציות הפונקציה תקלוט איברים לתוך מערך void GetArray(int a[],int size) { int i; for (i=0;i<size;i++) scanf(“%d”,&a[i]);}

void PrintArray(int a[],int size); int main() { int a[SIZE]; GetArray(a,SIZE); PrintArray(a,SIZE); return 0; } void GetArray(int a[],int size);

חשבון מצביעים a[0] a[1] a[2] a[9]  כדי להגיע לתא השלישי במערך נוכל לעשות a[2] או*(a+2)

void reverse_array(int *begin, int *end) { while (begin < end) { swap(begin, end); begin++; end--; } reverse_array(my_arr, my_arr + SIZE -1); חשבון מצביעים beginend

מחרוזות מחרוזת – מחרוזת זה מערך של תווים אשר מסתיים ב ‘\0’. a[0] a[1] a[2] a[3] a[4] a[5] ‘S’ ‘h’ ‘a’ ‘i’ ‘\0’ char a[6] = “Shai”; printf(“%s”,a); הדפסה באמצעות %s

מחרוזות הסיום ב ‘\0’ מאפשר לנו להעביר מחרוזות לפונקציות מבלי לציין את גודלם !!! פונקציה טיפוסית של מחרוזות תראה כך : void string_func(char *s) { … while (*s != ’\0’) … {

דרכים נוספות להגדיר מחרוזות h p ello\0 hello s char *p = “hello” char s[ ] = “hello” קלט למחרוזת scanf(“%s”, str); gets(str); עד לרווח עד לאנטר

#include #include int strlen(char *str) { char*eos; char*eos; eos = str; while ( *eos != ‘\0’ ) while ( *eos != ‘\0’ )eos++; return eos - str; return eos - str;} void main() { char str[]="LINUX"; printf("%d\n",strlen(str));} NUXIL‘\0’ str eos

תרגיל 1 כתבו פונקציה המקבלת שתי מחרוזות ובודקת האם הן זהות. אם כן, הפונקציה תחזיר 1. אם לא, אז יוחזר 0. אם כן, הפונקציה תחזיר 1. אם לא, אז יוחזר 0. הערה : יש להגביל אורך כל מחרוזת ל -10 תווים באופן הבא : char s[11]; scanf(“%10s”,s); אם רוצים שהמחרוזת תכיל גם רווחים : fgets(s,11,stdin); if ( strlen(s) > 0 && s[strlen(s)-1] == ‘\n’ ) s[strlen(s)-1] = ‘\0’;

#include #include int compare (char s1[ ],char s2[ ]) { intk; for ( k=0; s1[k] != ‘\0’ || s2[k] != ‘\0’; k++ ) if ( s1[k] != s2[k] ) return 0; return 1; } void main() { chars1[11],s2[11]; scanf(“%10s%10s”,s1,s2);printf(“%d\n”,compare(s1,s2));}

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

#include #include char *strstr ( char * str1, char * str2) { char *cp = str1; char *cp = str1; char *s1, *s2; char *s1, *s2; if ( *str2 == ‘\0’ ) if ( *str2 == ‘\0’ ) return str1; return str1; while ( *cp != ‘\0’ ) while ( *cp != ‘\0’ ) { s1 = cp; s1 = cp; s2 = str2; s2 = str2; while ( *s1 != ‘\0’ && *s2 != ‘\0’ && *s1 == *s2 ) while ( *s1 != ‘\0’ && *s2 != ‘\0’ && *s1 == *s2 ) { s1++; s2++; } if ( *s2 == ‘\0’ ) if ( *s2 == ‘\0’ ) return cp; return cp; cp++; cp++; } return NULL; return NULL;} void main() { char s1[]="I am a boy"; char s2[]="am"; printf("%s\n",strstr(s1,s2));} בדיקת תת המחרוזת

string.h הספריה מכילה בין השאר את הפונקציות הבאות לטיפול במחרוזות : strlen(s) – מחזירה את האורך של המחרוזת s. strlen(s) – מחזירה את האורך של המחרוזת s. strcpy(s,t) – מעתיקה את המחרוזת t ל -s. strcpy(s,t) – מעתיקה את המחרוזת t ל -s. strcmp(s,t) – משווה ביו המחרוזות s ו -t. strcmp(s,t) – משווה ביו המחרוזות s ו -t. strstr(s,t) – מחפשת את המחרוזת t בתוך המחרוזת s. strstr(s,t) – מחפשת את המחרוזת t בתוך המחרוזת s.

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

#include #include int main() { chars[101]; intk,len; scanf(“%100s”,s); len = strlen(s); for ( k=0; k<len/2; k++ ) if ( s[k] != s[len-1-k] ) { printf(“The string is not a palindrome!\n”); return 0; } printf(“The string is a palindrome!\n”); return 0; }

תרגיל 4 כתבו פונקציה לחישוב כמה מילים נמצאות בתוך מחרוזת. רמז : המילים מופרדות על ידי רווחים. ניתן להשתמש בפונקציה isspace(char c) שנמצאת ב #include ב #include

int word_cnt (char *s) { intcnt = 0; char*next = s + 1; if (*s == '\0') // empty string return 0; while(*next != '\0') { if (!isspace(*s) && isspace(*next)) cnt++;s++;next++;} if (!isspace(*s)) cnt++; return cnt; }