1 תרגול 3 - מערכים מבוא למדעי המחשב – סמסטר א' תשע"א.

Slides:



Advertisements
Similar presentations
ממיבחניםC שאלות ++.
Advertisements

תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
1 תוכנה 1 תרגול 14 – סיכום. 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public.
מבוא למדעי המחשב מערכים.
Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
1 מבוא למדעי המחשב הקצאה דינאמית. 2 הקצאת זיכרון דינאמית  כאשר אנו משתמשים במערכים, אנו מקצים אוטומטית את הזיכרון המקסימלי שנצטרך.  בפועל, אנו משתמשים.
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in C תרגול
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
תכנות תרגול 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 תרגול
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site : T.A. :Emilia Katz.
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מבוא כללי למדעי המחשב שיעור 5
תכנות – שיעור 7. חזרה -מערכים נגדיר בעזרתו קבוצת משתנים כאשר יהיה לנו מספר רב של משתנים זהים נגדיר בעזרתו קבוצת משתנים כאשר יהיה לנו מספר רב של משתנים.
מערכים מבוא לתכנות למנע"ס - שבוע מספר 8 - מאיר קומר - סמסטר ב' - תשס"ו והנה בעיה כתוב תוכנית אשר תקלוט 36 מספרים ותדפיס כמה מתוכם גדולים יותר מהממוצע.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
קורס תכנות – סימסטר ב ' תשס " ח שיעור שישי: מערכים
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
הגדרת משתנים יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר 2015 יום שישי 18 ספטמבר.
1 תרגול 2 – מבוא לתכנות JAVA. היום בתרגול : 2  משתנים וטיפוסים  אופרטורים  פונקציות מתמטיות מהמחלקה Math  המרת טיפוסים  תנאים  Debugger.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
תוכנה 1 תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות.
מבנים קרן כליף. ביחידה זו נלמד :  מהו מבנה (struct)  איתחול מבנה  השמת מבנים  השוואת מבנים  העברת מבנה לפונקציה  מבנה בתוך מבנה  מערך של מבנים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
1 מבוא למדעי המחשב הרצאה 5: פונקציות. 2 מבוא לפונקציות חלוקה של אלגוריתם לתת משימות: משימה - פונקציה: דוגמאות מציאת המקסימלי מבין שני איברים האינדקס של.
הגדרת משתנים יום שלישי 14 יוני 2016 יום שלישי 14 יוני 2016 יום שלישי 14 יוני 2016 יום שלישי 14 יוני 2016 יום שלישי 14 יוני 2016 יום שלישי 14 יוני 2016.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
Computer Architecture and Assembly Language
מבוא למדעי המחשב סיבוכיות.
הקצאות דינאמיות בשילוב מבנים
מ- JAVA ל- C קרן כליף.
מבוא לתכנות מונחה עצמים Object Oriented Programming
מבוא למדעי המחשב – סמסטר א' תשע"ב
מצביעים קרן כליף.
SQL בסיסי – הגדרה אינדוקטיבית
הקצאות דינאמיות קרן כליף.
מבנים קרן כליף.
מצביעים קרן כליף.
תרגול 4.
סוגי משתנים קרן כליף.
מבוא למדעי המחשב – סמסטר א' תשע"ד
Programming in C תרגול Introduction to C - Fall Amir Menczel.
תכנות מכוון עצמים ו- C++ יחידה 02 העמסת פונקציות, ערכי ברירת מחדל, enum, קימפול מותנה קרן כליף.
עקרונות בסיסיים בתכנות Visual Basic
תירגול 8:מצביעים והקצאה דינאמית
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Computer Architecture and Assembly Language
Presentation transcript:

1 תרגול 3 - מערכים מבוא למדעי המחשב – סמסטר א' תשע"א

2 היום בתרגול 1. מערך חד-מימדי: –מה זה מערך ולמה צריך אותו? –איך מגדירים? איך זה נראה בזכרון? –דוגמאות לשימוש במערך חד-מימדי. –השוואה בין משתנה פרימיטיבי למשתנה שאינו פרימיטיבי. 2. מערך דו-מימדי: –למה צריך? איך מגדירים? איך זה נראה בזכרון? –דוגמאות לשימוש במערך דו-מימדי.

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

4 מערך - מאפיינים משתנה שאינו פרימיטיבי מבנה מסודר של ערכים. לכל ערך יש מקום. כל איברי המערך הם מאותו סוג. מערך יכול להכיל כל טיפוס פרימיטיבי וכן טיפוסים שאינם פרימיטיביים כפי שנלמד בהמשך

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

6 הגדרת מערך כמו כל משתנה, גם מערך צריך הגדרה והשמה. //declares an array of integers int[] myArray; ההגדרה מורכבת מטיפוס המערך ומשם המערך. הסוגריים המרובעים לאחר הטיפוס מציינים שהמשתנה המוגדר הוא מסוג מערך.

7 הקצאת זכרון ההגדרה עצמה אינה מקצה זיכרון עבור המערך, אלא רק מכריזה על קיומו ויש ליצור (על ידי הקצאת זיכרון) את המערך. // create an array of integers myArray = new int[5]; myArray טבלת משתנים

8 הקצאת זכרון באמצעות משתנה int size = 5; int[] myArray; myArray = new int[size];

9 length –גודל המערך int size = 5; int[] myArray; myArray = new int[size]; System.out.println(myArray.length(; // prints 5 size = 6; מה לדעתכם תדפיס כעת השורה הבאה? System.out.println(myArray.length);

10 null – ערך מיוחד משתנים המצביעים על מערכים יכולים גם לקבל השמה לערך המיוחד null: myArray = null; בטבלת המשתנים ערכו של המשתנה myArray הוא המיוחד הקבוע null. myArray null

11 שאלה מה נקבל כאשר נבקש myArray.length לפני שהקצינו את המערך? int[] myArray; System.out.println(myArray.length); תשובה: שגיאת קומפילציה, הקומפיילר מזהה את השגיאה ועוצר את תהליך הקומפילציה.

12 שאלה ואם נבקש myArray.length כאשר נעשתה לו השמה ?null int[] myArray = null; System.out.println(myArray.length); תשובה: שגיאת זמן ריצה (מסוג NullPointerException ) המציינת שניסינו לפנות למשתנה שערכו הוא null, הקומפיילר אינו מזהה את השגיאה.

13 שאלה ובמקרה: int[] myArray = new int[0]; System.out.println(myArray.length); מה יודפס למסך? תשובה: 0

14 הגדרה והקצאה בשורה אחת int[] myArray = new int[5]; int[] smallPrimes ={2,3,5,7,11}; myArray smallPrimes

15 מספור תאים במערך אם במערך יש n תאים המערכת מתייחסת אליהם ע"י המספרים 0…n-1

16 פנייה לאיבר (תא) במערך int[] smallPrimes = {2,3,5,7,11}; קריאת ערך מתא במערך : int num = smallPrimes[3] * 2; // num = 7*2 = 14 index01234 value235711

17 פנייה לאיבר במערך smallPrimes[3] = 13; num נשאר ללא שינוי index01234 value

18 פנייה לאיבר במערך smallPrimes[5] = 17; num = smallPrimes[-1]; Run Time Error index01234 value

19 פנייה לאיבר במערך int i = 5; myArray[i] = 3; myArray [i/2] = 1; בתוך ה-[] יכול להיות ביטוי מתמטי,קריאה לפונקציה וכו', כל עוד התוצאה הינה מטיפוס שלם.

20 פעולות על מערך //Demonstrates basic array operations class BasicArray { public static void main(String[] arg) { int[] smallPrimes = {2,3,5,7,11}; System.out.println(smallPrimes[0]); 2 smallPrimes[0] = 13; System.out.println(smallPrimes[0]); 13 System.out.println(smallPrimes.length); 5 for(int i=0;i<smallPrimes.length;i=i+1) System.out.print(smallPrimes[i]+", "); 13, 3, 5, 7, 11, } //main } //class BasicArray

21 איתחול מערך ע"י לולאה //Demonstrate array init with a loop class IntArray { public static void main(String[] arg) { int[] intArray = new int[5]; System.out.println(); for(int i=0;i < intArray.length ;i=i+1) intArray [i] = i*3; for(int i=0;i<intArray.length;i=i+1) System.out.print(intArray[i]+", "); } //main } //class IntArray 0, 3, 6, 9, 12,

22 משתנה פרימיטיבי int x = 3; int y = x; x=7; y נשאר ללא שינוי. טיפוסשם משתנהערך intx y 3 3 7

23 משתנה שאינו פרימיטיבי int[] xArray = new int[5]; int[] yArray = xArray; xArray[1] = 6; xArray yArray 6

24 שאלה מה יקרה בזכרון בזמן הרצת הקוד הבא? int[] myArray; myArray = new int[5]; myArray = new int[10]; myArray

25 אינו פרימיטיבי vs. פרימיטיבי משתנה שאינו פרימיטיבי משתנה פרימיטיבי הכתובתהערך עצמומה נמצא בטבלת המשתנים הכתובת מועתקתהערך מועתקהשמה השוואה בין כתובותהשוואה בין ערכים (==) השוואה

26 null כתובת int[] arr1 = null; int[] arr2 = null; System.out.println(arr1==arr2); true

27 מערך דו-מימדי מערך שבו כל איבר הוא גם מערך,כלומר מערך של מערכים.

28 מערך דו-מימדי int[][] array1 = new int [3][2]; array1 0

29 מערך דו-מימדי int[][] array2 ={{1,3},{5,6,7},{4}}; array

30 length – אורך של מערך array1.length  array1[0].length  array2.length  array2[2].length  array2[1].length  array2[3].length  array1 3 2 Run time Error array

31 פנייה לאיבר System.out.println(array2[1][0]); array2[2][0] = 9; 5 array // prints 5

32 class ArrayRef{ public static void main(String []args){ int[][] x; x = new int[3][]; x[0] = new int[3]; x[1] = x[0]; x[0][1] = 7; //prints the 2D array for (int i = 0 ; i < x.length ; i= i+1){ for(int j=0 ; j < x[i].length; j = j+1){ System.out.print(x[i][j]+” ”); } System.out.println(); } } } NullPointerException

33 שאלה מה יקרה אם נוסיף את השורה הבאה? x[2]= x; תשובה: java מבדילה בין מערך של מספרים ובין מערך של מערכים של מספרים ולכן השורה הזאת לא תעבור קומפילציה (שכן איברי המערך צריכים להיות מאותו טיפוס).

34 העתקת מערך class Copy2dArray{ public static void main(String[] args){ int[][] a = {{1,3},{5,6,7},{4}}; int[][] c; //Create the 2dArray row by row c = new int[a.length][]; int i,j; for ( i=0 ; i < c.length; i = i+1) c[i] = new int[a[i].length]; for ( i=0; i < c.length; i = i+1) for (j=0 ; j < c[i].length ; j = j+1) c[i][j] = a[i][j]; } //main }

משולש פסקל 35 Wikipedia מה החוקים לחישוב משולש פסקל Pascal[j][0] = Pascal[j][j]=1 Pascal[j][i] = Pascal[j-1][i] + Pascal[j-1][i-1]

36 הדפסת לוח הכפל class MultiplicationTable { public static void main(String[] arg) { final int ROW = 13; final int COLUMN = 13; int[][] mat = new int[ROW][COLUMN]; for (int i=0; i < ROW; i=i+1) for (int j=0; j < COLUMN; j=j+1) mat[i][j] = i*j; //prints the matrix for (int i=0; i < ROW; i=i+1) { for (int j=0; j < COLUMN; j=j+1) System.out.print(mat[i][j]+"\t"); System.out.println(); } } //main } //class

37 חיבור מטריצות // Adds two matrices public class Add{ public static void main(String[] args){ int[][] a = { /* insert data here */ }; int[][] b = { /* insert data here */ }; int[][] c; c = new int[a.length][a[0].length]; for (int i = 0 ;i<a.length;i=i+1) for (int j =0;j< a[i].length;j= j+1) c[i][j] = a[i][j] + b[i][j]; } //main } //class Add

38 הכפלת מטריצות*

39 //Multiplies two matrices pbulic class Mul{ public static void main(String[] args){ int[][] a = { /* insert data here */ }; int[][] b = { /* insert data here */ }; int[][]c; //Create the matrix row by row c = new int[a.length][]; for (int i = 0 ; i < c.length ; i = i+1) c[i] = new int[b[0].length]; //For each element in the matrix for (int i=0; i<a.length ; i=i+1) for(int j=0; j<b[0].length; j=j+1){ //NOTICE that b.length is equal to a[i].length //Calculate the sum c[i][j] = 0; for (int k=0; k<a[i].length ; k= k+1) c[i][j] = c[i][j] + (a[i][k] * b[k][j]); } //for } //main } //class Mul