NotesWeek7.Oct 4-8 - CS 180 Problem Solving and Object Oriented Programming Fall 2010 hMp/www.cs.purdue.edu/homes/apm/courses/CS180Fall2010 This

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: CS 180 Problem Solving and Object Oriented Programming Fall 2010 hMp://www.cs.purdue.edu/homes/apm/courses/CS180Fall2010/ This Week: Notes for Week 7: Oct 48, 2010 2. 3. 4. 5. Aditya Mathur 10/6 6. Department of Computer Science 7. Purdue University 8. West LafayeMe, IN, USA 10/4 1. Exam 1: Performance Project 1: Performance Feedback for Week 6 Arrays Demo Incremental program development MulWdimensional arrays Visual depicWon of arrays Readings and Exercises for Week 7 Readings: Chapter 6: 6.1, 6.2, 6.3, 6.4 Exercises: 6.3, 6.4, 6.5, 6.7 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 2 Special help session Thursday Oct 7, 57pm: Special help session in the B158 Sunday October 10: No help session. Enjoy your break! 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 3 Special class Sunday October 17: 45:30pm For those who have not been able to perform well on Exam 1 and/or Project 1. Send me email if you wish to aMend. Bring your laptops. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 4 Lunch meeWng When: Thursday October 7, 2010. Noon1:30pm Where: Ford Dining Hall Meet: Upstairs in the Ford dining hall AMendees: All who signed up for September 30 and October 7 Look forward to seeing you! 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 5 Performance: Exam 1 Overall: Count: 231 Average: 393.3/480 Max Score: 480 obtained by 11 students Median: 417.6 Standard deviaWon: 78.2 Part B: Count: 231 Average: 59.7 Max Score: 70/70 scored by 40 students Median: 63.0 Standard deviaWon: 11.95 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 6 Performance: Exam 1: Histogram 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 7 Exam 1: Common mistakes: Q1 Incorrect types for coordinates (int instead of float or double) 3 to 5 points Incorrect or forgoMen formadng 3 points Code in main() method instead of in constructor 2 points Incorrect coding of the distance formula 10 to 20 points Aditya Mathur. CS 180. Fall 2010. Week 7 8 10/6/2010 Exam 1: Common mistakes: Q2 Incorrect random number generaWon (2 to 15 points) Minor syntax errors (1 to 2 points). Code in main() instead of constructor (3 points). Incorrect datatype for min, max (2 points) Incorrect class structure, like constructor inside main() (2 to 5 points) Not *reading* min and max from user (5 points) Incorrect if condiWons (2 to 5 points) 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 9 Performance: Project 1 Total graded: 222 Average: 60.7 Max score: 64 by 81 students 59--63: 105 students Median: 62 Standard deviaWon: 7.23 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 10 Robots in labs Please take a survey in this week's lab Please do not toast us! The robots were intended to give you some "thrill" and help in understanding the challenges of programming embedded systems. Unfortunately, the Ridge Sok robots turned out to be unreliable devices! 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 11 Feedback for Week 6 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 12 Q1. The lab exercises were useful (Use scale of 110: 10 most useful, 1 not useful at all) (a) 810 (b) 47 (c) 13 (d) Missed Week 6 lab 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 13 Q2. The recitaWon exercises were useful (Use scale of 110: 10 most useful, 1 not useful at all) (a) 810 (b) 47 (c) 13 (d) Missed 6 recitaWon 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 14 Q3. The recitaWon instructor was helpful. (Use scale of 110: 10 most helpful, 1 not helpful at all) (a) 810 (b) 47 (c) 13 (d) Missed week 6 recitaWon 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 15 Q4 Exam 1 was (a) (b) (c) (d) (e) Very easy Somewhat easy Somewhat tough Tough Very tough 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 16 Q5. I have completed Project 2 (a) Yes (b) Nearly complete (c) Not started 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 17 Q6. So far I am liking the course (a) A lot (b) Somewhat (c) Not sure 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 18 Arrays 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 19 Arrays: What are these? A homogeneous collecWon of variables or objects. All elements of an array are of the same type. Examples: Array of integers where each integer represents the age of a paWent. Array of cars where each element of the array denotes a specific car. Array of flowers where each element of the array denotes a flower. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 20 Arrays: When to use? When there is a need to retain data in memory for efficient processing. Data is created once and used many Wmes. Examples: Array of flights: Search for a specific flight Array of cars: Search for a specific car, or find the average price. Array of laptops: find the cheapest laptop 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 21 Declaring an Array int age; /* age refers to an array of integers; e.g. age of people in a database*/ double weight; /* weight refers to an array of doubles; e.g. weights of items shipped*/ String name; /* name refers to an array of elements each of type String; e.g., names of people in a database*/ 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 22 Indicates age is an array variable Declaring an Array: of objects Bird bird; /* Bird refers to a class; bird is an array where each element is an object of type Bird. */ Aircrak fleet; /* Aircrak refers to a class; fleet is an array where each element is an object of type Aircrak. */ 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 23 CreaWng an Array int age=new int[10]; /* age is an array of 10 elements each of type int*/ double weight=new double[100]; /* weight is an array of 100 elements each of type double*/ String name=new String[15]; /* name is an array of 15 elements each of type String*/ Aircrak fleet=new Aircrak[150]; /* fleet is an array of 150 elements each of type Aircrak*/ 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 24 Accessing an array element: general syntax Name of the array Index, starts from 0, must be an int Note: First element of an array is located at index 0. age[i]; // 0<=i<10 fleet[k]; // 0<=k<150 weight[i+j]; // 0<=(i+j)<100 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 25 name [expression] Examples: Accessing an array element int age=new int[10]; int p= age[5]; /* p gets element at index 5 of array age*/ double weight=new double[100]; double hisWeight=weight[i]; /* hisWeight gets the element of weight at index i*/ Aircrak fleet=new Aircrak[150]; Aircrak rental=fleet[k]/* rental gets the element of fleet located at index k */ 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 26 Assigning a value to an array element int age=new int[10]; age[i]=15; /* (i+1)th element of age becomes 15. */ int age={15, 20, 30} // All elements iniWalized double weight=new double[100]; weight[k]=weight[k]10; /* (k+1)th element of the weight is decremented by 10.*/ Aircrak fleet=new Aircrak[150]; fleet[i]=new Aircrak(); /* (i+1)th element of fleet gets a new Aircrak */ 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 27 IteraWng through elements of an array In many problems we need to iterate through all or a few of the elements of an array. Such an iteraWon is accomplished by using a for or a while loop. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 28 Problem: Find average int ageSum=0; // IniWalize sum of all ages int age=new int[10]; // Create array of int to hold ages for( int i=0; i<age.length; i++){ ageSum=ageSum+age[i]; // Accumulate ages } double average=ageSum/(double)age.length; 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 29 Problem: Search in an array String wList={"Emilio", "Semion", "Osama"}; Scanner s=new Scanner (System.in); String wanted=s.next(); // Get name to be searched boolean found=false; // Not yet found int next=0; // Points to the first element in wanted list while(next<wList.length && !found) { if(wanted.equals(wList[nextItem])) // Compare found=true; // If equal then we have found the wanted! else 10/6/2010 next++; // else point to the next item on the list Aditya Mathur. CS 180. Fall 2010. Week 7 30 }//End of loop Problem: Search in an array if(found) System.out.println(wanted+ " exists in database"); else System.out.println(wanted+ " not in database") } // End of program 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 31 Problem: Statement A plant biology lab maintains a collecWon of leaves. The lab director wishes to create a simple database that contains several entries. Each entry is a plant name, type of its leaf, and a brief descripWon of the leaf in the collecWon. Example: WhitePine Needle NA Heather Compound NA Write a program that reads data from a file as menWoned above and allows a user to search for a tree in the database. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 32 Problem: Understanding A plant biology lab maintains a collecWon of leaves. From where can my program read the leaf data? If it is in a file, then what is the name of that file? The lab director wishes to create a simple database that contains several entries. How much data is available? Write a program that reads data from a file as menWoned above and allows a user to search for a tree in the database. In what form will the user input a request? 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 33 Java program for plant biology lab. Incremental stepwise development! 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 34 Tasks 1. Read plant collecWon data from a file 2. Provide search service to the user 3. Exit with a bye bye message when done. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 35 Let us assume.... 1. LeafCollecWon class is available 2. It provides the following methods: createCollec?on() searchService() 3. Leaf class is available. It provides the following methods: public void getTree(); public void getLeafType(); public void getDescrip?onType(); Why did we make the above assumpWons? 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 36 Overall design: Classes LeafCollecWonServer Main server Ini?ates ac?ons Uses Leaf private String parentPlant; private String leafType; private String leafDescripWon; public void getTree(); public void getLeafType(); public void getDescrip?onType(); Uses LeafCollecWon public void createCollec?on(); public void 10/6/2010 (); Aditya Mathur. CS 180. Fall 2010. Week 7 37 LeafCollecWonServer Back to the Java program. Version 1.0. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 38 LeafCollecWon: Design This is a class. Provides two methods: createCollec?on() searchService() But before we can write these methods we must have a way to read from a file and save in memory all the data about the collecWon! QuesWon: How should we store leaf collecWon data? Recall: For each leaf, we have its parent tree, its type, and its descrip?on. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 39 LeafCollecWon: Design QuesWon QuesWon: How should we store leaf collecWon data? Recall: For each leaf, we have its parent tree, its type, and its descrip?on. Answer: ?? 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 40 LeafCollecWon Back to the Java program. Version 2.0. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 41 Leaf: Design: AMributes Recall, for each leaf, we have the following available data: Name of parent tree Name of the leaf DescripWon 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 42 Leaf: Design: Methods Recall, for each leaf, we have the following available data: public String getLeafName(); public String getTreeName(); public String getDsecripWon(); 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 43 Leaf class Back to the Java program. Version 3.0. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 44 Arrays: Visual representaWon 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 45 Single dimensional array: Example 1 int cloudyDays=new int [12] // average cloudy days/month Anchorage, Alaska 0 1 2 3 4 5 6 7 8 9 10 11 [19 18 18 18 20 20 22 21 21 21 20 21 ] Index Data cloudyDays[0] cloudyDays[5] cloudyDays[11] 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 46 Single dimensional array: Example 2: DeclaraWon Car carStock=new Car [5] // Cars at a dealership public class Car{ String make; // e.g. Ford String model; // e.g. Fusion int year; // e.g. 2011 long msrp; // e.g. US$23145 Picture carPic; } 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 47 Single dimensional array: Example 2: Visual Car carStock=new Car[5] // Cars at a dealership CS180 Dealership in West LafayeMe 0 1 2 3 4 [ ] Index Object Reference {Ford, fusion, 2011, 23150 } .... .... .... {Porsche, Boxster Spyder, 2011, 72000, } } carStock[0] 10/6/2010 carStock[4] Aditya Mathur. CS 180. Fall 2010. Week 7 48 Arrays: MulWdimensional 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 49 Example 1 MEAN MONTHLY CLOUDY DAYS IN ARIZONA 0 1 2 3 4 5 6 7 8 9 10 11 J F M A M J J A S O N D FLAGSTAFF 12 11 12 9 7 4 9 8 5 7 8 11 PHOENIX 10 9 8 6 3 2 4 4 3 4 6 9 TUCSON 10 9 9 6 4 3 9 7 4 5 6 10 WINSLOW 12 10 9 7 5 4 8 6 4 6 8 10 YUMA 9 6 6 4 2 1 3 3 2 3 5 8 0 1 2 3 4 rows columns int cloudyDays=new int [5][12] What is the value of cloudyDays[1,8]? 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 50 DeclaraWon Cars inventory=new Car [3]; 3 rows and undefined number of columns Each row represents make of a car and column represents models 0 1 Avalanche Traverse Accord Camry Fit Corolla 2 Civic Rav4 51 0 1 2 10/6/2010 Chevy Honda Toyota Aditya Mathur. CS 180. Fall 2010. Week 7 Arrays: Typical errors Index out of bounds [Run Wme error] int a=new int [10]; a[i]=x; // i is greater than 9 or less than 0 Element not iniWalized [Compile Wme error] String name; name[i]="Bob"; // element not iniWalized 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 52 Week 7: October 48, 2010 Hope you enjoyed this week! QuesWons? Contact your recitaWon instructor. Make full use of our office hours. 10/6/2010 Aditya Mathur. CS 180. Fall 2010. Week 7 53 ...
View Full Document

This note was uploaded on 02/05/2012 for the course CS 180 taught by Professor Staff during the Fall '08 term at Purdue University-West Lafayette.

Ask a homework question - tutors are online