Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Announcements Are you getting my e-mail? CS 101 Slides and Screencasts (with audio!) available on Collab “Lab” Assignments HW-1 posted on Collab. Due: Jan. 28th by 11:55 PM TA Office Hours will be posted this weekend. CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Recap /******************************************* * Prints "Hello, World" * Everyone's first Java program. *******************************************/ public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } HelloWorld.java 2 Variables Every data item used by a program is stored in a variable Variables also provide a way of communicating to the machine hardware that the data needs to be stored somewhere A variable has three parts: 1. 2. 3. Name (e.g., “x”) Type (e.g., int, double, String) Value 3 Variables Variables are declared by the programmer – E.g., int x; How does a variable get a value? – Can be initialized in the program Literal Value E.g., int x = 10 – Can be computed when the program is running E.g., x = y + z; // y and z are integers too 4 Methods Methods have a name and invoke some operation or function on some data. – System.out.println("Hello, World!"); Some methods return a value that can be used. – Math.sqrt(100) Methods like these are part of Java's Standard Library. 5 1.2 Built-In Types of Data CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Built-in Data Types Data type. A set of values and operations defined on those values. type set of values literal values operations char characters 'A' '@' compare String sequences of characters "Hello World" "CS is fun" concatenate int integers 17 12345 add, subtract, multiply, divide double floating point numbers 3.1415 6.022e23 add, subtract, multiply, divide boolean truth values true false and, or, not 7 Basic Definitions Variable. A name that refers to a value. Assignment statement. Associates a value with a variable. 8 Basics Definitions. Trace. 9 Another Example 10 Text CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Text String data type. Useful for program input and output. 12 Subdivisions of a Ruler public class Ruler { public static void main(String[] args) { String ruler1 = "1"; String ruler2 = ruler1 + " 2 " + ruler1; String ruler3 = ruler2 + " 3 " + ruler2; String ruler4 = ruler3 + " 4 " + ruler3; System.out.println(ruler4); } } "1" "1 2 1" "1 2 1 3 1 2 1" string concatenation % java Ruler 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 13 Integers CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Integers int data type. Useful for expressing algorithms. 15 Integer Operations (Dr. Java Demo) public class IntOps { public static void main(String[] args) { int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int sum = a + b; int prod = a * b; int quot = a / b; int rem = a % b; System.out.println(a + " + " + b + " = System.out.println(a + " * " + b + " = System.out.println(a + " / " + b + " = System.out.println(a + " % " + b + " = } } command-line arguments " " " " + + + + sum); prod); quot); rem); Java automatically converts a, b , and rem to type String 16 Initializing Variables Q. What happens if I forget to initialize the variable a or b? Java compiler does not allow this. Caveat: in other languages, variable initialized to arbitrary value. Q. What do you mean, arbitrary? int main( int argc, char *argv[] ) { int whoops; printf( "%d\n", whoops ); } % gcc -o uninit uninit.c % uninit -1073746048 uninitialized variable C code 17 Floating-Point Numbers CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Floating-Point Numbers double data type. Represent approximations of real numbers. Useful in scientific applications. The precision of these numbers depends in the number of bits used to represent them in hardware 19 Math Library 20 Quadratic Equation (Dr. Java Demo) Ex. Solve quadratic equation x2 + bx + c = 0. b b 2 4 c roots 2 public class Quadratic { public static void main(String[] args) { // parse coefficients from command-line double b = Double.parseDouble(args[0]); double c = Double.parseDouble(args[1]); // calculate roots double discriminant = b*b - 4.0*c; double d = Math.sqrt(discriminant); double root1 = (-b + d) / 2.0; double root2 = (-b - d) / 2.0; } } // print them out System.out.println(root1); System.out.println(root2); 21 Testing (Dr. Java Demo) Testing. Some valid and invalid inputs. % java Quadratic –3.0 2.0 2.0 1.0 command-line arguments % java Quadratic –1.0 –1.0 1.618033988749895 -0.6180339887498949 % java Quadratic 1.0 1.0 NaN NaN not a number x2 – 3x + 2 x2 – x - 1 x2 + x + 1 % java Quadratic 1.0 hello java.lang.NumberFormatException: hello 22 Booleans CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Booleans boolean data type. Useful to control logic and flow of a program. 24 Comparisons Comparisons. Take operands of one type and produce an operand of type boolean. 25 Leap Year Q. Is a given year a leap year? A. Yes if either (i) divisible by 400 or (ii) divisible by 4 but not 100. public class LeapYear { public static void main(String[] args) { int year = Integer.parseInt(args[0]); boolean isLeapYear; // divisible by 4 but not 100 isLeapYear = (year % 4 == 0) && (year % 100 != 0); // or divisible by 400 isLeapYear = isLeapYear || (year % 400 == 0); System.out.println(isLeapYear); } } % java LeapYear 2004 true % java LeapYear 1900 false % java LeapYear 2000 true 26 Type Conversion CS101: Introduction to Computer Science • Slides adapted from Sedgewick and Wayne • Copyright © 2007 • Type Conversion Type conversion. Convert from one type of data to another. Automatic: no loss of precision; or with strings. Explicit: cast; or method. 28 Summary A data type is a set of values and operations on those values. String text processing. double, int mathematical calculation. boolean decision making. Be aware. Declare type of values. Convert between types when necessary. In 1996, Ariane 5 rocket exploded after takeoff because of bad type conversion. 29 Standard Input and Output Needed for HW-1 More details with Lab 1 Command-line Input vs. Standard Input Command line inputs. Use command line inputs to read in a few user values. Not practical for many user inputs. Input entered before program begins execution. Standard input. Flexible OS abstraction for input. By default, stdin is received from Terminal window. Input entered while program is executing. 31 Standard Input and Output Standard input. We provide library StdIn to read text input. Standard output. We provide library StdOut to write text output. 32 Standard Input and Output public class Add { public static void main(String[] args) { StdOut.print("Type the first integer: "); int x = StdIn.readInt(); StdOut.print("Type the second integer: "); int y = StdIn.readInt(); int sum = x + y; StdOut.println("Their sum is " + sum); } } % java Add Type the first integer: 1 Type the second integer: 2 Their sum is 3 33