CS 200 - Week 2 Jim Williams, PhD
Society of Women Engineers "Not just for women and not just for engineers; all students are welcome. We are especially looking for more computer science students!" - Emile Wille (Marketing Officer for SWE)
This Week Team Lab: Tuesday or Wednesday Program 1: Due Thursday Lecture: Primitive Data Types and Expressions
Team Labs First meeting this week. 1350 cs and 1370 cs a. 1st floor, around corner from elevators Meet TAs & LAs a. Work in small groups and pairs Discuss Terms, Trace & Explain code Edit-Compile-Run Cycle on the command-line
Pair Programming 2 people working together on 1 computer. One person types, the other provides direction and reviews. Many report more confidence in solution and more enjoyment programming. Important to switch roles (who has the keyboard). Provide respectful, honest and friendly feedback.
Learning to Trace with Java Visualizer Java Visualizer available via our course website or: https://cscircles.cemc.uwaterloo.ca/java_visualize/
Programming Process Users Editor Compiler (Virtual) Machine Hello.java Hello.class Computer Programmer Files
Programming Errors Naming/Saving Editor Syntax/Compile time Compiler Runtime & Logic (Virtual) Machine Hello.java Hello.class Computer Programmer Files
Edit-Compile-Run Cycle From the command-line: notepad javac java
Programming Process Question For the class named Cat, what is the name of the file that the compiler creates and is provided to the Java Virtual Machine to run? Cat.txt Cat.java Cat.class Cat
Learning Programming Lots of little steps that quickly build Not mastering little steps creates bigger steps Goes beyond Remembering and Understanding to Applying, Analyzing, Evaluating and Creating. Goal: Have basic fluency in Java and be able to solve small problems using it.
Primitive Data Types int whole numbers (4 bytes) double floating point numbers (8 bytes) char single character (2 bytes) boolean true or false value (>= 1 bit) less commonly used: float (4), long (8), short (2), byte (1)
Primitive Data Type Conversion Which work? double a = 5; double b = 6.0; int c = 3.0F; float d = b; c = d; d = c; char e = 'A'; int f = e; short s = f; int h = 4 + 10 / 3; int i = 10.0 / 3; int j = (int) 10.0 / 3; double k = (int) 10.0 / 3.0
Operator Precedence & Associativity
Constant public class World { public static void main(string []args) { int size = 3; final int MAX_SIZE = 10;
String class A reference (class), not a primitive data type. Frequently used final String TITLE_PREFIX = "Welcome to "; int week = 2; String welcome = "Week " + week; System.out.println( TITLE_PREFIX + welcome);
What are the values in a, b & c? int a = 5; int b = 7; int c = a; b = c; a = b; a: 5 b: 7 c: 5 a: 5 b: 5 c: 5 a: 5 b: 5 c: 7
What are the values in a, b & c? int a = 2; int b = 1; int c = a + b; a = b; a = c; a: 2 b: 1 c: 3 a: 3 b: 1 c: 3 a: 2 b: 1 c: 2
Swap values in a & b int a = 5, b = 3; Write code to swap values in a & b. a = b; b = a; a = b; c = b; b = a; a = b; b = c; c = a; c = b; b = a; a = c; Google "swapping values without third variable" for many creative ways.
Application: Temperature Conversion (Degrees Fahrenheit 32) x 5 / 9 = Degrees Celsius What symbols have different meanings in Java? What changes must be made to implement this equation in Java?
My List X vs * equals (==) vs assignment (=) value is stored on the left hand side of assignment (=) operator Variables: name areas of computer memory, declare before use, declare type of data, initialize Variable names: start with letter, include letters numbers and _, but no spaces Conventions: camelcasing, spell out names Semicolon at the end of statements
CS Core Principles: Algorithms: A step-by-step set of operations to be performed. Analogy: Recipe, Instructions Abstraction: a technique for managing complexity. Analogy: Automobile, CS200 Computer View
Methods Lots of existing code that you can use rather than writing yourself. To use, "call the method". The method executes (runs) and may return a value.
Calling Class (static) Methods double numints = Math.pow( 2, 32); double root = Math.sqrt( 16); int num1 = 16; int num2 = 3; double result; result = num2 + Math.sqrt( num1);
Defining Methods public class M { //method definition static void mprint() { System.out.println("my print"); public static void main(string []args) { M.mPrint(); // method call.
mprint - which is Call, Definition? static void mprint() { System.out.println("my print"); public static void main(string []args) { mprint(); mprint call then mprint definition mprint definition then mprint call
Argument vs. Parameter public static void main(string []args) { int num = 10; printcount( 23); printcount( num+3); static void printcount(int count) { System.out.println( count);
Is count: Argument or Parameter? public static void main(string []args) { int num = 10; printcount( 23); printcount( num+3); static void printcount(int count) { System.out.println( count); argument parameter
Returning a Value from a Method static int triple(int num) { return num * 3; public static void main(string []args) { int value = 5; int result = triple( value);
Which is called first: calc or println? static int calc(int num) { num -= 33; return num; public static void main(string []args) { int n = 55; System.out.println( calc( n)); calc println error
What prints out? static void calc(int num) { num = 3; public static void main(string []args) { int n = 5; calc( n); System.out.println( n); 3 5 35 error
Return to Converter double degreescelsius; double degreesfahrenheit = 100.0; degreescelsius = (degreesfahrenheit - 32.0) * 5.0 / 9.0;