1.1 Your First Program



Similar documents
Interactive Applications (CLI) and Math

Java Programming Fundamentals

AP Computer Science Java Subset

First Java Programs. V. Paúl Pauca. CSC 111D Fall, Department of Computer Science Wake Forest University. Introduction to Computer Science

MULTIPLE CHOICE. Choose the one alternative that best completes the statement or answers the question.

CS 106 Introduction to Computer Science I

CS1020 Data Structures and Algorithms I Lecture Note #1. Introduction to Java

CS170 Lab 11 Abstract Data Types & Objects

For live Java EE training, please see training courses

Java Crash Course Part I

Introduction to Java Applications Pearson Education, Inc. All rights reserved.

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

Handout 1. Introduction to Java programming language. Java primitive types and operations. Reading keyboard Input using class Scanner.

AP Computer Science Static Methods, Strings, User Input

An Introduction to Computer Science

Crash Course in Java

Basic Programming and PC Skills: Basic Programming and PC Skills:

Moving from CS 61A Scheme to CS 61B Java

Example of a Java program

CSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals

Object Oriented Software Design

Sample CSE8A midterm Multiple Choice (circle one)

J a v a Quiz (Unit 3, Test 0 Practice)

Introduction to Java

Programmierpraktikum

Translating to Java. Translation. Input. Many Level Translations. read, get, input, ask, request. Requirements Design Algorithm Java Machine Language

Introduction to Python

1) Which of the following is a constant, according to Java naming conventions? a. PI b. Test c. x d. radius

WA2099 Introduction to Java using RAD 8.0 EVALUATION ONLY. Student Labs. Web Age Solutions Inc.

Basic Java Constructs and Data Types Nuts and Bolts. Looking into Specific Differences and Enhancements in Java compared to C

Basic Java Syntax. Slides 2016 Marty Hall,

1.3 Conditionals and Loops

Java Basics: Data Types, Variables, and Loops

1.00/ Session 2 Fall Basic Java Data Types, Control Structures. Java Data Types. 8 primitive or built-in data types

Part I. Multiple Choice Questions (2 points each):

1.4 Arrays Introduction to Programming in Java: An Interdisciplinary Approach Robert Sedgewick and Kevin Wayne Copyright /6/11 12:33 PM!

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopasd fghjklzxcvbnmqwertyuiopasdfghjklzx cvbnmqwertyuiopasdfghjklzxcvbnmq

Informatica e Sistemi in Tempo Reale

Java Cheatsheet. Tim Coppieters Laure Philips Elisa Gonzalez Boix

Chapter 3. Input and output. 3.1 The System class

Introduction to Computer Programming, Spring Term 2014 Practice Assignment 3 Discussion

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Java CPD (I) Frans Coenen Department of Computer Science

Handout 3 cs180 - Programming Fundamentals Spring 15 Page 1 of 6. Handout 3. Strings and String Class. Input/Output with JOptionPane.

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Object Oriented Software Design

JDK 1.5 Updates for Introduction to Java Programming with SUN ONE Studio 4

Introduction to Java. CS 3: Computer Programming in Java

System.out.println("\nEnter Product Number 1-5 (0 to stop and view summary) :

SOME EXCEL FORMULAS AND FUNCTIONS

Installing Java. Table of contents

Iteration CHAPTER 6. Topic Summary

1001ICT Introduction To Programming Lecture Notes

Chapter 1 Java Program Design and Development

How to use the Eclipse IDE for Java Application Development

Installing Java (Windows) and Writing your First Program

Topics. Parts of a Java Program. Topics (2) CS 146. Introduction To Computers And Java Chapter Objectives To understand:

Introduction to Java Lecture Notes. Ryan Dougherty

CS 111 Classes I 1. Software Organization View to this point:

Chapter 2 Elementary Programming

Computer Programming I

Sources: On the Web: Slides will be available on:

CS106A, Stanford Handout #38. Strings and Chars

River Dell Regional School District. Computer Programming with Python Curriculum

4.2 Sorting and Searching

Variables, Constants, and Data Types

University of Hull Department of Computer Science. Wrestling with Python Week 01 Playing with Python

Welcome to Introduction to programming in Python

LOOPS CHAPTER CHAPTER GOALS

VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR

COSC Introduction to Computer Science I Section A, Summer Question Out of Mark A Total 16. B-1 7 B-2 4 B-3 4 B-4 4 B Total 19

In this Chapter you ll learn:

Outline. hardware components programming environments. installing Python executing Python code. decimal and binary notations running Sage

1.00 Lecture 1. Course information Course staff (TA, instructor names on syllabus/faq): 2 instructors, 4 TAs, 2 Lab TAs, graders

Udacity cs101: Building a Search Engine. Extracting a Link

Chapter 2: Elements of Java

Computer Programming I & II*

We will learn the Python programming language. Why? Because it is easy to learn and many people write programs in Python so we can share.

13 File Output and Input

Overview. java.math.biginteger, java.math.bigdecimal. Definition: objects are everything but primitives The eight primitive data type in Java

Phys4051: C Lecture 2 & 3. Comment Statements. C Data Types. Functions (Review) Comment Statements Variables & Operators Branching Instructions

Web Programming Step by Step

Debugging. Common Semantic Errors ESE112. Java Library. It is highly unlikely that you will write code that will work on the first go

Java programming for C/C++ developers

A Short Introduction to Writing Java Code. Zoltán Majó

Introduction to Programming in Java

6.1. Example: A Tip Calculator 6-1

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Habanero Extreme Scale Software Research Project

02 B The Java Virtual Machine

Binary Number System. 16. Binary Numbers. Base 10 digits: Base 2 digits: 0 1

Third AP Edition. Object-Oriented Programming and Data Structures. Maria Litvin. Gary Litvin. Phillips Academy, Andover, Massachusetts

Introduction to Object-Oriented Programming

Computing Concepts with Java Essentials

How To Write A Program In Java (Programming) On A Microsoft Macbook Or Ipad (For Pc) Or Ipa (For Mac) (For Microsoft) (Programmer) (Or Mac) Or Macbook (For

CSC230 Getting Starting in C. Tyler Bletsch

Scanner sc = new Scanner(System.in); // scanner for the keyboard. Scanner sc = new Scanner(System.in); // scanner for the keyboard

The Java Virtual Machine (JVM) Pat Morin COMP 3002

1 Introduction. 2 An Interpreter. 2.1 Handling Source Code

Math Review. for the Quantitative Reasoning Measure of the GRE revised General Test

Transcription:

Why Programming? 1.1 Your First Program Why programming? Need to tell computer what you want it to do. Naive ideal. Natural language instructions. Please simulate the motion of N heavenly bodies, subject to Newton s laws of motion and gravity. Prepackaged software solutions? Great, when what they do is what you want. Computer programming. Enables you to make a computer do anything you want. well, almost anything [stay tuned] Ada Lovelace Languages Analytic Engine 2 Why Program? Machine languages. Tedious and error-prone. Why program? Natural languages. Ambiguous; can be difficult to parse. Kids Make Nutritious Snacks. Red Tape Holds Up New Bridge. Police Squad Helps Dog Bite Victim. Local High School Dropouts Cut in Half. A natural, satisfying and creative experience. Enables accomplishments not otherwise possible. Opens new world of intellectual endeavor. First challenge. Learn a programming language. [ real newspaper headlines, compiled by Rich Pattis ] Next question. Which one? High-level programming languages. Acceptable tradeoff. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do. Donald Knuth Naive ideal. A single programming language. 3 4

Our Choice: Java Why Java? Java features. Widely used. Widely available. Embraces full set of modern abstractions. Variety of automatic checks for mistakes in programs. Java features. Widely used. Widely available. Embraces full set of modern abstractions. Variety of automatic checks for mistakes in programs. Facts of life. Java economy. Mars rover. Cell phones. Blu-ray Disc. $100 billion, 5 million developers No language is perfect. We need to choose some language. Our approach. There are only two kinds of programming languages: those people always [gripe] about and those nobody uses. Bjarne Stroustrup Web servers. Minimal subset of Java. Medical devices. Supercomputing. James Gosling http://java.net/jag Develop general programming skills that are applicable to many languages It s not about the language 5 6 A Rich Subset of the Java Language Built-In Types int double System System.out.println() Math Library Math.sin() Math.cos() Program Development long String System.out.print() Math.log() Math.exp() char boolean System.out.printf() Math.sqrt() Math.pow() Math.min() Math.max() Flow Control Parsing Math.abs() Math.PI if else Integer.parseInt() for while Double.parseDouble() Primitive Numeric Types + - * Boolean true false Punctuation Assignment = / -- % > ++ < && ( ) <= >= ==, ; = String Arrays Objects + "" a[i] class static length() compareto() new public private charat() matches() a.length tostring() equals() new main() 7 8

Program Development Program Development (virtual terminals) Program development in Java (bare-bones) Program development in Java (using virtual terminals). 1. Edit your program. 1. Edit your program using any text editor. Use a text editor. 2. Compile it to create an executable file. Result: a text file such as HelloWorld.java. 3. Run your program. 2. Compile it to create an executable file. Use the Java compiler Result: a Java bytecode file file such as HelloWorld.class Mistake? Go back to 1. to fix and recompile. editor running in virtual terminal virtual TV 3. Run your program. Use the Java runtime. Result: your program s output. Mistake? Go back to 1. to fix, recompile, and execute second terminal for commands 9 Program Development (virtual terminals) 10 Program Development (virtual terminals) Program development in Java (using virtual terminals). Program development in Java (using virtual terminals). 1. Edit your program. 1. Edit your program. 2. Compile it by typing javac HelloWorld.java at the command line. 2. Compile it to create an executable file. 3. Run your program. 3. Run your program by typing java HelloWorld at the command line. creates HelloWorld.class uses HelloWorld.class invoke Java runtime at command line invoke Java compiler at command line 11 12

Program Development (using DrJava) Program Development (using DrJava) Program development in Java (using DrJava). Program development in Java (using DrJava). 1. Edit your program using the built-in text editor. 2. Compile it to create an executable file. 3. Run your program. 1. Edit your program. 2. Compile it by clicking the compile button. 3. Run your program. text editor compile button creates HelloWorld.class 13 14 Program Development (using DrJava) Note: Program Style Program development in Java (using DrJava). Three versions of the same program. 1. Edit your program. 2. Compile it to create an executable file. 3. Run your program by clicking the run button or using the command line. // java HelloWorld public class HelloWorld public static void main(string[] args) System.out.println("Hello, World"); Alternative 1: run button (OK if no args) both use HelloWorld.class Fonts, color, comments, and extra space are not relevant to Java. /************************************************************************* * Compilation: javac HelloWorld.java * Execution: java HelloWorld * * Prints "Hello, World". By tradition, this is everyone's first program. * * % java HelloWorld * Hello, World * *************************************************************************/ public class HelloWorld public static void main(string[] args) System.out.println("Hello, World"); Alternative 2: command line (to provide args) public class HelloWorld public static void main(string[] args) System.out.println("Hello, World"); 15 16

Note: Program Style 99% of program development Different styles are appropriate in different contexts. DrJava Booksite Book COS 126 assignment Enforcing consistent style can Stifle creativity. Confuse style rules with language rules. Debugging. Cyclic process of editing, compiling, and fixing mistakes (bugs). You will make many mistakes as you write programs. It's normal. As soon as we started programming, we found out to our surprise that it wasn't as easy to get programs right as we had thought. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs. Maurice Wilkes Program Development Environment. Software to support cycle of editing to fix mistakes, compiling programs, running programs, and examining output. Emphasizing consistent style can Make it easier to spot errors. Make it easier for others to read and use code. Enable development environment to provide useful visual cues. Bottom line for COS 126: Life is easiest if you use DrJava style. Examples: Terminal/editor, DrJava. Naive ideal. Please compile, execute, and debug my program. Bad news. Even a computer can t find all the mistakes in your program. 1.2 profound idea 17 [ stay tuned ] 18 Program Development Environments: A Short History Historical context is important in computer science We regularly use old software. We regularly emulate old hardware. We depend upon old concepts and designs. Switches and Lights Use switches to enter binary program code, lights to read results PDP-8, circa 1970 First requirement in any computer system: program development Widely-used methods: switches/lights punched cards terminal editor/virtual terminal IDE 1960 1970 1980 1990 2000 switches/lights punched card/tape editor/terminal editor/virtual terminal integrated development environment 19 20

Punched Cards/Line Printer Timesharing Terminal Use punched cards for program code, line printer for output Use terminal for editing program, reading output, and controlling computer IBM System 360, circa 1975 VAX 11/780 circa 1977 VT-100 terminal Timesharing: allowed many people to simultaneously use a single machine. 21 22 Editor and Virtual Terminal on a Personal Computer Integrated Development Environment Use an editor to create and make changes to the program text. Use a virtual terminal to invoke the compiler and run the executable code. Use a customized application for all program development tasks. Ex. http://drjava.org Pros: Cons: Pros: Cons: Works with any language. Good enough for long programs? Easy-to-use language-specific tools. Overkill for short programs? Useful for other tasks. Dealing with two applications. System-independent (in principle). Large application to learn and maintain. Used by professionals. Used by professionals. Skills may not transfer to other languages. 23 24

Lessons from Short History 1.2 Built-in Types of Data First requirement in any computer system: program development Programming is primarily a process of finding and fixing mistakes. Program development environment must support cycle of editing to fix errors, compiling program, running program, and examining output. Two approaches that have served for decades: editor and virtual terminal integrated development environment Xerox Alto 1978 Macbook Air 2008 25 Built-in Data Types Basic Definitions Data type. A set of values and operations defined on those values. Variable. A name that refers to a value. Assignment statement. Associates a value with a variable. 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 declaration statement variable name assignment statement int a = b = int literal a, b; 1234 ; 99; c = a + b; combined declaration and assignment statement 27 28

Trace Trace. Table of variable values after each statement. Text a b t int a, b; undefined undefined undefined a = 1234; 1234 undefined undefined b = 99; 1234 99 undefined int t = a; 1234 99 1234 a = b; 99 99 1234 b = t; 99 1234 1234 29 Text Example: Subdivisions of a Ruler String data type. Useful for program input and output. values sequences of characters typical literals "Hello, " "1 " " * " operation concatenate operator + String data type Important note: meaning of characters depends on context "1234" + " + " + "99" operator character operator 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" expression "Hi, " + "Bob" value "Hi, Bob" white space white space % java Ruler 1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 string concatenation "1" + " 2 " + "1" "1 2 1" "1234" + " + " + "99" "1234" + " + " + "99" "1234 + 99" "1234" + "99" "123499" space characters String concatenation examples 31 32

Integers Integers int data type. Useful for calculations, expressing algorithms. values integers between -2 31 and +2 31-1 typical literals 1234 99-99 0 1000000 operations add subtract multiply divide remainder operators + - * / % int data type expression value comment 5 + 3 8 5-3 2 5 * 3 15 5 / 3 1 no fractional part 5 % 3 2 remainder 1 / 0 run-time error 3 * 5-2 13 * has precedence 3 * 5 / 2 5 / has precedence 3-5 - 2-4 left associative ( 3-5 ) - 2-4 better style examples of int operations 34 Integer Operations 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; command-line arguments System.out.println(a + " + " + b + " = " + sum); System.out.println(a + " * " + b + " = " + prod); System.out.println(a + " / " + b + " = " + quot); System.out.println(a + " % " + b + " = " + rem); Floating-Point Numbers 1234 = 12*99 + 46 % javac IntOps.java % java IntOps 1234 99 1234 + 99 = 1333 1234 * 99 = 122166 1234 / 99 = 12 1234 % 99 = 46 Java automatically converts a, b, and rem to type String 35

Floating-Point Numbers Excerpts from Java s Math Library double data type. Useful in scientific applications. values approximations to real numbers typical literals 3.14159 6.022e23-3.0 2.0 1.4142135623730951 operations add subtract multiply divide remainder operators + - * / % expression double data type value 3.141 +.03 3.171 3.141 -.03 3.111 6.02e23/2 3.01E+23 5.0 / 3.0 1.6666666666666700 10.0 % 3.141 0.577 1.0 / 0.0 Infinity Math.sqrt(2.0) 1.4142135623731000 Math.sqrt(-1.0) NaN examples of double operations special value special value not a number 37 public class Math double abs(double a) double max(double a, double b) double min(double a, double b) double sin(double theta) double cos(double theta) double tan(double theta) absolute value of a maximum of a and b minimum of a and b sine function cosine function tangent function double exp(double a) exponential (e a ) double log(double a) natural log (loge a, or ln a) double pow(double a, double b) raise a to the bth power (a b ) long round(double a) found to the nearest integer double random() random number in [0. 1) double sqrt(double a) double E double PI square root of a value of e (constant) value of p (constant) also defined for int, long, and float inverse functions asin(), acos(), and atan() also available In radians. Use todegrees() and toradians() to convert. 38 Quadratic Equation Testing Ex. Solve quadratic equation x 2 + bx + c = 0. roots = "b ± b2 " 4 c 2 Testing. Some valid and invalid inputs. 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); % java Quadratic 3.0 2.0 2.0 1.0 % java Quadratic 1.0 1.0 1.618033988749895-0.6180339887498949 % java Quadratic 1.0 1.0 NaN NaN not a number command-line arguments golden ratio % java Quadratic 1.0 hello java.lang.numberformatexception: hello % java Quadratic 1.0 java.lang.arrayindexoutofboundsexception x 2 3x + 2 x 2 x - 1 x 2 + x + 1 39 40

Booleans Booleans boolean data type. Useful to control logic and flow of a program. values literals true or false true false operations and or not operators && boolean data type a a a b a && b a b true false false false false false false true false true false true true false flase true true true true true Truth-table definitions of boolean operations 42 Comparison Operators Leap Year Comparison operators. Two operands of the same type. Result: a value of type boolean. op meaning true false == equal 2 == 2 2 == 3 = not equal 3 = 2 2 = 2 < less than 2 < 13 2 < 2 <= less than or equal 2 <= 2 3 <= 2 > greater than 13 > 2 2 < 13 >= greater than or equal 3 >= 2 2 >= 3 comparison operators 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); non-negative discriminant? ( b*b - 4.0*a*c ) >= 0.0 beginning of a century? ( year % 100 ) == 0 legal month? ( month >= 1 ) && ( month <= 12 ) System.out.println(isLeapYear); % java LeapYear 2004 true % java LeapYear 1900 false comparison examples % java LeapYear 2000 true 43 44

Type Conversion Type Conversion Type conversion. Convert from one type of data to another. Automatic ( done by Java when no loss of precision; or with strings). Explicitly defined by function call. Cast (write desired type within parens). expression type value "1234" + 99 String "123499" automatic Integer.parseInt("123") int 123 explicit (int) 2.71828 int 2 cast Math.round(2.71828) long 3 explicit (int) Math.round(2.71828) int 3 cast (int) Math.round(3.14159) int 3 cast 11 * 0.3 double 3.3 automatic (int) 11 * 0.3 double 3.3 cast, automatic 11 * (int) 0.3 int 0 cast (int) (11 * 0.3) int 3 cast, automatic 46 Type Conversion Example: Random Integer Summary Ex. Generate a pseudo-random number between 0 and N-1. A data type is a set of values and operations on those values. String text processing, input and output. public class RandomInt public static void main(string[] args) int N = Integer.parseInt(args[0]); double r = Math.random(); int n = (int) (r * N); double to int (cast) int to double (automatic) String to int (function) System.out.println("random integer is " + n); % java RandomInt 6 random integer is 3 % java RandomInt 6 random integer is 0 double between 0.0 and 1.0 int to String (automatic) double, int mathematical calculation. boolean decision making. Be aware. Declare type of values. Convert between types when necessary. Why do we need types? Fundamental computational abstraction. Type conversion must be done at some level. Compiler can help do it correctly. Example: In 1996, Ariane 5 rocket exploded Example of bad type conversion % java RandomInt 10000 random integer is 3184 after takeoff because of bad type conversion. 1.3 47 48