תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות הדס צור ואסף זריצקי.

Slides:



Advertisements
Similar presentations
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
Advertisements

Grouping Objects Arrays and for loops. Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling Fixed-Size Collections.
 2003 Prentice Hall, Inc. All rights reserved. 7.1 Introduction Arrays –Data structures which reference one or more value –All items must have same data.
Loops Notes adapted from Dr. Flores. It repeats a set of statements while a condition is true. while (condition) { execute these statements; } “while”
Computer Science 1620 Multi-Dimensional Arrays. we used arrays to store a set of data of the same type e.g. store the assignment grades for a particular.
Java Syntax Primitive data types Operators Control statements.
Arrays. A group of data with same type stored under one variable. It is assumed that elements in that group are ordered in series. In C# language arrays.
CS102--Object Oriented Programming Lecture 6: – The Arrays class – Multi-dimensional arrays Copyright © 2008 Xiaoyan Li.
1 CSCE 1030 Computer Science 1 Arrays Chapter 7 in Small Java.
COMP1170 Midterm Preparation (March 17 th 2009) Acknowledgment The notes are adapted from those provided by Deitel & Associates, Inc. and Pearson Education.
1 Gentle Introduction to Programming Tirgul 2: Scala “hands on” in the lab.
 Pearson Education, Inc. All rights reserved Arrays.
1 Gentle Introduction to Programming Session 2: Functions.
Multidimensional Arrays C++ also allows an array to have more than one dimension. For example, a two-dimensional array consists of a certain number of.
1 Chapter 10 Various Topics User defined Types Enumerated Types Type Casting Syntactic Sugar Type Coercion.
Homework –Continue Reading K&R Chapter 2 –We’ll go over HW2 –HW3 is posted Questions?
Classes, Objects, Arrays, Collections and Autoboxing Dr. Andrew Wallace PhD BEng(hons) EurIng
Grouping Related Items
Recursion l Powerful Tool l Useful in simplifying a problem (hides details of a problem) l The ability of a function to call itself l A recursive call.
תוכנה 1 תרגול מס ' 3 מערכים ומבני בקרה. 2 מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of.
Nonvisual Arrays and Recursion by Chris Brown under Prof. Susan Rodger Duke University June 2012.
Basic Java Programming CSCI 392 Week Two. Stuff that is the same as C++ for loops and while loops for (int i=0; i
French Territory of St. Pierre CSE 114 – Computer Science I Arrays.
1 Chapter 4: Arrays and strings Taufik Djatna
ArrayList, Multidimensional Arrays
From C++ to Java A whirlwind tour of Java for C++ programmers.
 Pearson Education, Inc. All rights reserved Arrays.
Arrays Module 6. Objectives Nature and purpose of an array Using arrays in Java programs Methods with array parameter Methods that return an array Array.
Arrays and ArrayLists in Java L. Kedigh. Array Characteristics List of values. A list of values where every member is of the same type. Each member in.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
Arrays Chapter 8. What if we need to store test scores for all students in our class. We could store each test score as a unique variable: int score1.
Arrays An array is a data structure that consists of an ordered collection of similar items (where “similar items” means items of the same type.) An array.
Chapter 6Java: an Introduction to Computer Science & Programming - Walter Savitch 1 Chapter 6 l Array Basics l Arrays and Methods l Programming with Arrays.
9. Types Intro Programming in C++ Computer Science Dept Va Tech August, 2002 © Barnette ND & McQuain WD 1 Data Types data type:a collection of.
1 On (computational) simplicity We are trying to teach not just Java, but how to think about problem solving. Computer science has its field called computational.
Chapter 3 Syntax, Errors, and Debugging Fundamentals of Java.
AP Computer Science edition Review 1 ArrayListsWhile loopsString MethodsMethodsErrors
Java Basics Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
1 Debugging and Syntax Errors in C++. 2 Debugging – a process of finding and fixing bugs (errors or mistakes) in a computer program.
Array Objectives To understand the concept of arrays To understand the purpose to which we use arrays. To be able to declare references to arrays. To be.
Arrays. Related data items Collection of the same types of data. Static entity – Same size throughout program.
EE 422C Day 2 Java, Eclipse. Copyright Pearson Education, 2010 Based on slides bu Marty Stepp and Stuart Reges from
1 Homework –Continue Reading K&R Chapter 2 –We’ll go over HW2 at end of class today –Continue working on HW3 Questions?
 2008 Pearson Education, Inc. All rights reserved. 1 Arrays and Vectors.
Structuring Data: Arrays ANSI-C. Representing multiple homogenous data Problem: Input: Desired output:
 Control Flow statements ◦ Selection statements ◦ Iteration statements ◦ Jump statements.
תוכנה 1 תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות.
Programming With Java ICS201 University Of Ha’il1 Chapter 11 Recursion.
An Introduction to Java – Part 1 Erin Hamalainen CS 265 Sec 001 October 20, 2010.
CSC Java Programming, Spring, 2010 Week 2: Java Data Types, Control Constructs, and their C++ counterparts.
Array Size Arrays use static allocation of space. That is, when the array is created, we must specify the size of the array, e.g., int[] grades = new int[100];
14 BirthMonth1February BirthMonth CE : Fundamental Programming Techniques.
תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות.
CSC Java Programming, Fall, 2008 Week 2: Java Data Types, Control Constructs, and their C++ counterparts, September 9.
Unit – 3 Control structures. Condition Statements 1.If.…..else :- Has someone ever told you, "if you work hard, then you will succeed"? And what happens.
Chapter 9 Introduction to Arrays Fundamentals of Java.
13 Arrays CE : Fundamental Programming Techniques June 161.
Common Elementary Algorithms Some of the basic but frequently used algorithms for manipulating arrays. These algorithms are so important that: a)Some programming.
CSE 143 Lecture 1 Arrays (review) slides created by Marty Stepp
Debugging with Eclipse
תרגול 2: מערכים, לולאות והתמודדות עם שגיאות
Testing and Debugging.
Java Arrays. Array Object An array :a container object holds a fixed number of values of a single type. The length of an array is established when the.
תרגול 2: מערכים, לולאות והתמודדות עם שגיאות
Unit 3 Test: Friday.
CS 180 Assignment 6 Arrays.
Single-Dimensional Arrays chapter6
QUIZ.
Chapter 6 Arrays.
CSE 206 Course Review.
Presentation transcript:

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות הדס צור ואסף זריצקי

2 מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: odds.length == Indices (start from 0) The value of the element at index 4 is 9: odds[4] == 9 The type of all elements is int odds:

3 Array Declaration An array is denoted by the [] notation Examples: int[] odds; int odds[]; // legal but discouraged String[] names; int[][] matrix; // an array of arrays matrix: …

4 Array Creation and Initialization What is the output of the following code: int[] odds = new int[8]; for (int i = 0; i < odds.length; i++) { System.out.print(odds[i] + " "); odds[i] = 2 * i + 1; System.out.print(odds[i] + " "); } Output: Array creation: all elements get the default value for their type (0 for int)

5 Array Creation and Initialization Creating and initializing small arrays with a-priori known values: int[] odds = {1,3,5,7,9,11,13,15}; String[] months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "July", "Aug", "Sep", "Oct", "Nov", "Dec"}; … months: “Jan”

6 Loop through Arrays By promoting the array's index: for (int i = 0; i < months.length; i++) { System.out.println(months[i]); } foreach (since Java 5.0): for (String month: months) { System.out.println(month); } The variable month is assigned the next element in each iteration

Operations on arrays The class Arrays provide operations on array Copy Sort Search Fill... java.util.Arrays java.util.Arrays 7

8 Copying Arrays Assume: int[] array1 = {1,2,3}; int[] array2 = {8,7,6,5}; Naïve copy: array1 = array2; What’s wrong with this solution? 1,2,38,7,6,5 array1array2

Copying Arrays Arrays.copyOf the original array the length of the copy Arrays.copyOfRange the original array initial index of the range to be copied, inclusive final index of the range to be copied, exclusive 9 int[] arr1 = {1, 2, 3}; int[] arr2 = Arrays.copyOf(arr1, arr1.length);

What is the output of the following code: int[] odds = {1, 3, 5, 7, 9, 11, 13, 15}; int newOdds[] = Arrays.copyOfRange(odds, 1, odds.length); for (int odd: newOdds) { System.out.print(odd + " "); } Output:

11 Other Manipulations on Arrays The java.util.Arrays class has methods for sorting and searching, assigning arrays e.g. java.util.Arrays public static void sort(int[] a) public static int binarySearch(int[] a, int key) public static void fill(long[] a, long val) More details in JDK 6.0 documentation

12 2D Arrays There are no 2D arrays in Java but … you can build array of arrays: char[][] board = new char[3][]; for (int i = 0; i < 3; i++) board[i] = new char[3]; board Or equivalently: char[][] board = new char[3][3];

13 2D Arrays Building a multiplication table: int[][] table = new int[10][10]; for (int i = 0 ;i < 10 ;i++) { for (int j = 0 ;j < 10; j++) { table[i][j] = (i+1) * (j+1); }

Fibonacci Fibonacci series 1, 1, 2, 3, 5, 8, 13, 21, 34 Definition: fib(0) = 1 fib(1) = 1 fib(n) = fib(n-1) + fib(n-2) en.wikipedia.org/wiki/Fibonacci_number

15 If-Else Statement public class Fibonacci { … /** Returns the n-th Fibonacci element */ public static int computeElement(int n) { if (n==0) return 1; else if (n==1) return 1; else return computeElement(n-1) + computeElement(n-2); } } Assumption: n≥0 Can be removed

16 Switch Statement public class Fibonacci { … /** Returns the n-th Fibonacci element */ public static int computeElement(int n) { switch(n) { case 0: return 1; case 1: return 1; default: return computeElement(n-1) + computeElement(n-2); } can be placed outside the switch Assumption: n≥0

17 Switch Statement public class Fibonacci { … /** Returns the n-th Fibonacci element */ public static int computeElement(int n) { switch(n) { case 0: return 1; case 1: return 1; break; default: return computeElement(n-1) + computeElement(n-2); } Compilation Error: Unreachable Code Assumption: n≥0

18 Iterative Fibonacci A loop instead of a recursion static int computeElement(int n) { if (n == 0 || n == 1) return 1; int prev = 1; int prevPrev = 1; int curr; for (int i = 2 ; i < n ; i++) { curr = prev + prevPrev; prevPrev = prev; prev = curr; } curr = prev + prevPrev; return curr; } Assumption: n≥0

19 נתונים במקום חישוב בתרגום רקורסיה ללולאה אנו משתמשים במשתני עזר לשמירת המצב curr, prev ו - prevPrev הלולאה "זוכרת" את הנקודה שבה אנו נמצאים בתהליך החישוב דיון: יעילות לעומת פשטות. עיקרון ה-KISS (keep it simple stupid) תרגיל: כתבו את השירות computeElement בעזרת prev ו - prevPrev בלבד (ללא curr)

20 For Loop Printing the first n elements: public class Fibonacci { public static int computeElement(int n) { … } public static void main(String[] args) { for(int i = 0 ; i < 10 ; i++) System.out.println(computeElement(i)); } It is better to use args[0]

21 מודולריות, שכפול קוד ויעילות יש כאן חוסר יעילות מסוים: לולאת ה - for חוזרת גם ב - main וגם ב- computeElement. לכאורה, במעבר אחד ניתן גם לחשב את האברים וגם להדפיס אותם כמו כן כדי לחשב איבר בסדרה איננו משתמשים בתוצאות שכבר חישבנו (של אברים קודמים) ומתחילים כל חישוב מתחילתו

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

23 for vs. while The following two statements are almost equivalent: for(int i = 0 ; i < n ; i++) System.out.println(computeElement(i)); int i=0; while (i < n) { System.out.println(computeElement(i)); i++; } Variable i is not defined outside the for block

24 while vs. do while The following two statements are equivalent if and only if n>0 : int i=0; while (i < n) { System.out.println(computeElement(i)); i++; } int i=0; do { System.out.println(computeElement(i)); i++; } while (i>n(; works since n ≥ 1

הסוף...

26 Compilation vs. Runtime Errors שגיאות קומפילציה (הידור): שגיאות שניתן "לתפוס" בעת קריאת הקובץ והפיכתו ל-bytecode ע"י המהדר דוגמאות: 26 Class MyClass { void f() { int n=10; void g() { int m = 20; } … short x = 5; short y = 10; short z = x * y; … int i; System.out.println(i); … בדרך כלל קשורות ל: תחביר, תאימות טיפוסים, הגדרה לפני שימוש Syntax error on token "Class", class expected Syntax error, insert "}" to complete MethodBody Type mismatch: cannot convert from int to short The local variable i may not have been initialized

27 Compilation vs. Runtime Errors שגיאות זמן ריצה: לא ניתן לדעת שתהיה שגיאה במקום ספציפי בזמן ההידור (קומפילציה) דוגמאות: מתקשר למנגנון החריגים (exceptions), עליו נלמד בהמשך 27 … int a[] = new int[10]; … a[15] = 10; … a = new int[20]; … String s = null; System.out.println(s.length()); …

28 Compilation vs. Runtime Errors האם יש עוד סוג של טעויות? כן, הכי גרועות, טעויות לוגיות בתוכנית 28 public class T { /** calculate x! **/ public static int factorial(int x) { int f = 0; for (int i = 2; i <= x; i++) f = f * i; return f; }

The Debugger Some programs may compile correctly, yet not produce the desirable results These programs are valid and correct Java programs, yet not the programs we meant to write! The debugger can be used to follow the program step by step and may help detecting bugs in an already compiled program

Debugger – Add Breakpoint Right click on the desired line “Toggle Breakpoint”

Debugger – Start Debugging breakpoint debug (F11)

Debugger – Debug Perspective

Debugger – Debugging Current state Current location Back to Java perspective

Debugger – Debugging

35 Using the Debugger: Video Tutorial תוכלו למצוא מצגות וידאו מצוינות המדריכות כיצד להשתמש ב debugger באתר: מומלץ לצפות לפחות בארבעת הסרטונים הראשונים * הקישור מופיע גם באתר הקורס בחלק על סביבת הפיתוח