280 likes | 529 Views
CS1020. Week 3: 30 th January 2014. Contents. Part 1: UNIX Environment, vim, Input/Output Part 2: Discussion on Lab # 0 Part 3: Discussion on Lab #1. Part 1. UNIX environment vim Input/output. Important UNIX Commands (1/2). Change Directory ( cd ) cd [ directory name ]
E N D
CS1020 Week 3: 30thJanuary 2014
Contents • Part 1: UNIX Environment, vim, Input/Output • Part 2: Discussion on Lab #0 • Part 3: Discussion on Lab #1 Week 3
Part 1 UNIX environment vim Input/output Week 3
Important UNIX Commands (1/2) • Change Directory (cd) • cd[directory name] • cd .. (to go back to parent directory) • cd (to go to home directory) • List Content (ls) • ls(list current directory) • ls –al (include hidden files/folders, in long format) • Copy/remove/move (cp, rm, mv) • mv command is also used for renaming files • Edit File in VIM (vim) • vim [file name] • Auto-completion of filename/directory name • Use <tab> button Week 3
Important UNIX Commands (2/2) • Java Compile (javac) • javac *.java (shortcut to compile all java files) • Running Java Program (java) • java [program name without extension] • java[class name] < [input file] > [output file](input/output redirection) • Checking for Difference (diff) • diff [filename1] [filename2] • Difference in a single space or an extra line will be noted • Manual (man) • man [command name] • When you are not sure what the command does, or what options it has Week 3
Important VIM Commands • Command Mode: (to get into command mode, press ESC key) • dd or :d → Delete the current line • :q! → Exit without saving changes • :wq or ZZ → Save and Exit • /[pattern] → Search for the pattern • n → Search next in the same direction • N → Search next in the opposite direction • See “Editor” in CS1020 Online web page: • http://www.comp.nus.edu.sg/~cs1020/2_resources/online.html Week 3
Input: Reading Standard Input • Scanner Class • Initialization: Scanner sc = new Scanner(System.in); • hasNext() and variants • Check if there exists another input • next() and variants • Get the next input • Variants: Int, Line, Doubleexample: hasNextInt() and nextLine() • There is NO nextChar() and hasNextChar() variant • Type of Input: (from Practice Exercise 9) • Type 1: Number of Operations is specified • Type 2: Read until Terminating Special Character • Type 3: Read until End of File Week 3
Input: Type 1 Input (Example) public static void main(String[] args) { // … Code Section Omitted // … Other Initialization Scanner sc = new Scanner(System.in); intnumOps = sc.nextInt(); for (int i=0; i<numOps; i++) { // Read Other Inputs } // … Code Section Omitted } Week 3
Input: Type 2 Input • Steps: • Instantiate a Scanner object • Read the First Input • Loop until Terminating Special Character encountered • Read into tempInputagain • Scanner sc = new Scanner(System.in); • String tempInput = sc.next(); • while (!tempInput.equals(TERMINATING_CHAR)) { // Read Other Input (if exists) // Step 4 Here} • tempInput = sc.next(); Week 3
Input: Type 2 Input (Example) public static void main(String[] args) { // … Code Section Omitted // … Other Initialization Scanner sc = new Scanner(System.in); String tempInput = sc.next(); while (!tempInput.equals(TERMINATING_CHAR)) { // Read Other Input tempInput = sc.next(); } // … Code Section Omitted } Week 3
Input: Type 3 Input • Steps: • Instantiate a Scanner object • Loop until End of File • Scanner sc = new Scanner(System.in); • while (sc.hasNext()) { // Read Other Input} Week 3
Input: Type 3 Input (Example) public static void main(String[] args) { // … Code Section Omitted // … Other Initialization Scanner sc = new Scanner(System.in); while (sc.hasNext()) { // Read Other Inputs } // … Code Section Omitted } Week 3
Input: Hybrid Input • Combines two or more different input types into a single program • e.g.: Type 3 Input on the Outside, Type 1 Input on the Inside. public static void main(String[] args) { // … Code Section Omitted // … Other Initialization Scanner sc = new Scanner (System.in); while (sc.hasNext()) { intnumOps = sc.nextInt(); for (inti=0; i<numOps; i++) { // Read Other Inputs } } // … Code Section Omitted } Week 3
Output: Printing Standard Output • With newline character at the end • Without newline character at the end • Note that for CodeCrunch, your last output line should contain a newline character at the end • System.out.println("Output String Here"); • System.out.print("Output String Here\n"); • System.out.print("Output String Here"); Week 3
Part 2 Discussion on Take-home Lab #0 Week 3
Exercise 1: Area of Triangle Objectives: Input/output in Java Using Math class Writing user-defined methods Methods: Determine whether it is a valid triangle. Compute area of the triangle if it is a valid triangle. Main method Week 3
Exercise 1 (1/3) • Method 1: Determine whether it is a valid triangle • Read the lengths of the sides as inputs. • For any two sides, the sum of their lengths must be greater than the third side. • Return a boolean • // if a, b, c represent lengths of the sides of a triangle, • // return true, otherwise return false. • public static booleanvalidTriangle(double a, • double b, double c) { • return (a + b > c) && (a + c > b) && (b + c > a); • } Week 3 Week 3
Exercise 1 (2/3) • Method 2: Compute area of the triangle • Read the lengths of the sides as inputs. • Use the the Heron’s formula to compute the area • Return a double value as the area • // To return area of a triangle of sides a, b, and c • // Using Heron's formula • public static double area(double a, double b, double c) { double p = (a + b + c)/2; • return Math.sqrt(p * (p-a) * (p-b) * (p-c)); • } Week 3
Exercise 1 (3/3) • Main method • Instantiate a Scanner object and read the inputs • If the triangle is valid, compute the area and print it out. • Otherwise print “Invalid triangle!”. • public static void main(String[] args) { • double a, b, c; // lengths of sides of triangle • Scanner sc = new Scanner(System.in); • System.out.print("Enter 3 lengths: "); • a = sc.nextDouble(); • b = sc.nextDouble(); • c = sc.nextDouble(); • if (validTriangle(a, b, c)) System.out.printf("Area = %.2f\n", area(a, b, c)); • else • System.out.println("Invalid triangle!"); • } Week 3
Exercise 2: Date Conversion (1/3) • Date format: UK MM DD, YYYY US DD MM YYYY • Convert from UK dateto US date • Not allowed to use the date formatter class Week 3
Exercise 2: Date Conversion (2/3) • How to transfer the two date? • eliminate the comma • use substring/split to find the month and day • swap the day with month Week 3
Exercise 2: Date Conversion (3/3) • Leap year? • It is divisible by 400; or • It is divisible by 4 but not by 100 Year%400==0 || (year%4==0 && year%100!=0) • String to Integer: int year = Integer.valueOf(yearStr); Week 3
Part 3 Discussion on Take-home Lab #1 Week 3
Ex 1: Overlapping Rectangles (1/4) • Observe the overlapping area: X2,Y2 X2,Y4 X4,Y4 X3,Y1 X1,Y1 X3,Y3 Week 3
Ex 1: Overlapping Rectangles (2/4) • The overlapping rectangle bottom left point’s x coordinate and y coordinate are the maximumof the other two rectangles bottom left points’ x and y • MAX(X1,X3) X3; MAX(Y1,Y3) Y1 X2,Y2 X2,Y4 X4,Y4 X3,Y1 X1,Y1 X3,Y3 Week 3
Ex 1: Overlapping Rectangles (3/4) • The overlapping rectangle top right point’s x coordinate and y coordinate are the minimumof the other two rectangles top right points’ x and y • MIN(X2,X4) X2; MIN(Y2,Y4) Y4 X2,Y2 X2,Y4 X4,Y4 X3,Y1 X1,Y1 X3,Y3 Week 3
Ex 1: Overlapping Rectangles (4/4) • But…. • The two points given may not lie in the same direction • You need to transfer to the same direction X2,Y2 X2,Y4 X4,Y4 X1,Y1 X3,Y1 X3,Y3 Week 3