11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול 6 15.11.2010.

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

תכנות בשפת C תרגול 14 תרגול חזרה תרגילים ממבחנים
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
1 תרגול 4 – פונקציות מבוא למדעי המחשב/מבוא לתכנות מערכות – סמסטר א' תשע"א.
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 9 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 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 תרגול
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
תכנות תרגול 14 שבוע:
תכנות תרגול 10 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 5 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 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
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
פונקציות תכנות בשפת סי תרגול 6.
מערכים דו ממדי ו STRUCTS פונקציות בוליאנית Module Module1 Function Flip(ByVal word1 As String) As Boolean Dim i As Integer For i = 0 To word1.Length()
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא כללי למדעי המחשב תרגול 7. מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
1 מבוא למדעי המחשב backtracking. 2 מוטיבציה בעיית n המלכות: נתון: לוח שחמט בגודל. המטרה: לסדר על הלוח n מלכות כך שאף אחת לא תאיים על השנייה. דוגמא: עבור.
מבוא למדעי המחשב תרגול 12 – הקצאת זיכרון דינאמית שעת קבלה : יום שני 11:00-12:00 דוא " ל :
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Sscanf example #include int main () { char sentence []="Rudolph is 12 years old"; char str [20]; int i; sscanf (sentence,"%s %*s %d",str,&i); printf ("%s.
תכנות תרגול 8 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
11 Introduction to Programming in C תרגול
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
קורס תכנות שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
Dynamic Allocation. Malloc - Reminder void* malloc(unsigned int nBytes); Used to dynamically allocate nBytes in memory Returns a pointer to the allocated.
1 מבוא לתכנות – תוכנה פונקציות. 2 משחק החיים של Conway The Game of life סימולצית פעילות מערכת תאים שפותחה על ידי המתמטיקאי הבריטי ג'ון הורטון קונווי בשנת.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
C Programming.
Programming Arrays.
מבוא למדעי המחשב סיבוכיות.
מ- JAVA ל- C קרן כליף.
מצביעים והקצאה דינאמית
מערכים ומצביעים הקצאה דינאמית של מערכים דו-מימדיים
מיונים וחיפושים קרן כליף.
מערכים קרן כליף.
תירגול 14: מבני נתונים דינאמיים
Introduction to Programming in C
הקצאות דינאמיות קרן כליף.
מבוא כללי למדעי המחשב תרגול 4
מבוא כללי למדעי המחשב תרגול 6
מערכים של מצביעים הקצאה דינאמית
תירגול 8:מצביעים והקצאה דינאמית
שיעור עשירי: מיונים, חיפושים, וקצת סיבוכיות חישוב
Introduction to Programming in C
Presentation transcript:

11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול

2 מטרת התרגול מערכים דו מימדיים פונקציות 2 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

3 מערכים דו-מימדיים להלן 2 דרכים שקולות להגדרת מערך דו-מימדי המכיל 9 ערכים שלמים. int arr[3][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; int arr[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

4 התוכנית בשקופית הבאה קולטת ערכים מהמשתמש, מאחסנת אותם במערך דו-מימדי ולבסוף מדפיסה את המערך שנוצר. מערכים דו-מימדיים - דוגמא 1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

5 #define SIZE 3 void main() { int arr[SIZE][SIZE]; int i, j; for ( i=0; i<SIZE; i++ ) for ( j=0; j<SIZE; j++ ) scanf("%d", &arr[i][j]); for ( i=0; i<SIZE; i++ ) { for ( j=0; j<SIZE; j++ ) printf("%d ", arr[i][j]); printf("\n"); } Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

6 מערכים דו-מימדיים – דוגמא 2 התוכנית בשקופית הבאה מייצרת מערך דו-מימדי וממלאת אותו באופן הבא: –בכל שורה זוגית מציבה בעמודות הזוגיות את ערך השורה הנוכחית פלוס אחד ובשאר העמודות באותה שורה מציבה את הערך 0. –בכל שורה אי-זוגית מציבה בעמודות האי-זוגיות את ערך השורה הנוכחית פלוס אחד ובשאר העמודות באותה שורה את הערך דוגמא למערך בגודל 3x

7 int arr[SIZE][SIZE], i, j, curValue = 1; for ( i=0; i<SIZE; i++ ) { for ( j=0; j<SIZE; j++ ) { if ((i % 2) == 0)//even rown { if ( (j % 2) == 0 )//even columns arr[i][j] = curValue; else arr[i][j] = 0; } else//odd rows { if ( (j % 2) == 0 )//even columns arr[i][j] = 0; else arr[i][j] = curValue; } curValue++; } #define SIZE 10

8 פונקציות קבוצת משפטים המבצעים יחדיו מטלה מסויימת. לפני כתיבת הפונקציה main() נצהיר על הפונקציות שלנו. נעשה זאת על ידי כתיבת חתימתן. כתיבת הפונקציות תיעשה לאחר פונקציית main(). קריאה לפונקציה נעשית על ידי כתיבת שמה ואחריו סוגריים. אם נרצה להעביר לפונקציה פרמטרים, נכתוב אותם בין הסוגריים בזמן הקריאה לפונקציה. בסיום פעולתה, יכולה פונקציה להחזיר ערך מטיפוס מסויים, כמו למשל int או float. Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

9 פונקציות - תיעוד להלן תיעוד שנוסיף לכל פונקציה שנכתוב: /* General description of the function. What it does.. name1 – what is this variable used for…..... …. nameK – what is this variable used for… return value – What this function returns (meaning not type) */ ret-type func-name(type1 name1,…typeK nameK)

10 דוגמא 1: מיון / הדפסה (פונקציות) התוכנית הבאה קולטת סדרה של 6 מספרים שלמים לתוך מערך וממיינת אותם בעזרת מיון " בועות ". בתרגיל זה קיימות תת משימות כגון : – מיון בועות – ביצוע swap בין שני ערכים במערך – הדפסת המערך הממוין כל תת בעייה תטופל על ידי פונקציה. 10 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

11 #include #define LEN 6 void bubbleSort(int nums[], int length); void swap(int nums[], int i, int j); void printArr(int nums[], int length); void main() { int i; int vals[LEN]; for (i = 0; i < LEN; ++i) { printf("Value %d: ", i+1); scanf("%d", &vals[i]); } bubbleSort(vals, LEN); printArr(vals, LEN); } Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

12 void printArr(int nums[], int length) { int i, j; for ( i=0; i<LEN; i++ ) printf("%d ", nums[i]); printf("\n"); } void bubbleSort(int nums[], int length) { int i, j; for (i = length - 1; i > 0; i--) for (j = 0; j < i; j++) if (nums[j] > nums[j + 1]) { swap(nums, j, j+1); } void swap(int nums[], int i, int j) { int temp = nums[j]; nums[j] = nums[i]; nums[i] = temp; } Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

13 #include void calcLinearRoot(int b, int c); void calcTwoRealRoots(int a, int b, int discriminant); void calcOneRealRoot(int a, int b); void calcImaginaryRoots(int a, int b, int discriminant); דוגמא 2: פתרון עבודה 1 (פונקציות) Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

14 void main() { variables declaration / printf / scanf if ( a == 0 )//linear equation { printf("This is a linear equation\n"); if ( b == 0 )//no solutions printf("There are no roots\n"); else calcLinearRoot(b, c); } else//a!=0, means we will have some kind of roots { discriminant = b*b - 4*a*c; if ( discriminant > 0 )//2 real roots calcTwoRealRoots(a, b, discriminant); else if (discriminant == 0)//1 real root calcOneRealRoot(a, b); else//discriminant < 0, only imaginary roots exists calcImaginaryRoots(a, b, discriminant); }

15 void calcLinearRoot(int b, int c) { float Root1; Root1 = (-1*c)/b; if ( Root1 == ((int)Root1) ) printf("Root1=%d\n", ((int)Root1)); else printf("Root1=%0.2f\n", Root1); } Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel

16 void calcTwoRealRoots(int a, int b, int discriminant) { float Root1, Root2; printf("There are 2 real roots\n"); Root1 = ((-1*b) + sqrt(discriminant)) / (2*a); Root2 = ((-1*b) - sqrt(discriminant)) / (2*a); if ( Root1 == ((int)Root1) ) printf("Root1=%d\n", ((int)Root1)); else printf("Root1=%0.2f\n", Root1 ); if ( Root2 == ((int)Root2) ) printf("Root2=%d\n", ((int)Root2)); else printf("Root2=%0.2f\n", Root2 ); } Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel