Transcript Document

Lecture 2: Computers, Programs, and Your First Java Program

Michael Hsu CSULA

What is a computer?

Input Device Output Device http://www.cs.rpi.edu/academics/courses/fall09/os/c01/01-06.jpg

Content summarized from Liang, Introduction to Java Programming 10 th edition instructor slides

Jargons to Know

   Programs:     Known as software, instructions to the computer You telling what the computer to do Written using

programming languages

Examples:   Your operating system Web browsers, anti-virus software, device drivers, android apps, Skype, Steam, video games Algorithm:  A series of steps/rules to be followed  Examples: Rubik’s cube algorithms, Sieve of Eratosthenes Standard input/output:  Preconnected input and output communication channels between a computer program and its environment when it begins execution

How is Data Stored on the computer?

   Zeroes and ones Usually mapped to memory addresses More Info:  Memory address http://en.wikipedia.org/wiki/Computer_data_storage . . . 2000 2001 2002 2003 2004 Memory content . . . 01001010 01100001 01110110 01100001 00000011 Encoding for character ‘J’ Encoding for character ‘a’ Encoding for character ‘v’ Encoding for character ‘a’ Encoding for number 3

Programming Languages

  Machine language   Primitive instruction built into every computer in the form of binary code Difficult to read/understand/modify   Add two numbers: 1101101010011010 Platform dependent Assembly language      Make programming easier (lol still hard) Since computers can’t understand it, we need an

assembler

assembly language program to machine code.

(also a program) to convert Example: ADDF3 R1, R2, R3 Platform dependent, you have to write different code for different processors Pokemon gold/silver is written in assembly by four people

Assembler

NASM Assembly Language Program Example to Print “Hello, World”

; --------------------------------------------------------------------------------------- ; Writes "Hello, World" to the console using only system calls. Runs on 64-bit Linux only.

; ; To assemble and run: ; nasm -felf64 hello.asm && ld hello.o && ./a.out

; ----------------------------------------------------------------------------------------

global _start section .text

_start:

; write(1, message, 13)

mov

rax

, 1 mov mov mov syscall

rdi rsi

, message

rdx

, 1 , 13

; system call 1 is write ; file handle 1 is stdout ; address of string to output ; number of bytes ; invoke operating system to do the write ; exit(0)

mov

eax

, 60 xor

rdi

,

rdi

syscall message: db

; system call 60 is exit ; exit code 0 ; invoke operating system to exit

"Hello, World", 10

; note the newline at the end

http://cs.lmu.edu/~ray/notes/x86assembly/

High Level Programming Languages

 Much, much easier to write  Greater abstraction   For example, in the next slide, you do function/method calls instead of direct memory manipulation like assembly Allows better productivity  Less lines of code to write, less lines to debug  More Info:  http://en.wikipedia.org/wiki/High-level_programming_language

Printing “Hello, World” in different high level languages

     NOTE: these are not complete programs Java :  Sytstem.

out .

println ("Hello, World"); C++:  std::out << “Hello, World”; Python 3:  print “Hello, World“ C#:  System.Console.WriteLine("Hello, World");

Popular High-Level Languages

Language Description

Ada Named for Ada Lovelace, who worked on mechanical general-purpose computers. The Ada language was developed for the Department of Defense and is used mainly in defense projects. BASIC Beginner’s All-purpose Symbolic Instruction Code. It was designed to be learned and used easily by beginners. C C++ C# Developed at Bell Laboratories. C combines the power of an assembly language with the ease of use and portability of a high-level language. C++ is an object-oriented language, based on C. Pronounced “C Sharp.” It is a hybrid of Java and C++ and was developed by Microsoft. COBOL FORTRAN Java Pascal Python Visual Basic COmmon Business Oriented Language. Used for business applications. FORmula TRANslation. Popular for scientific and mathematical applications. Developed by Sun Microsystems, now part of Oracle. It is widely used for developing platform independent Internet applications. Named for Blaise Pascal, who pioneered calculating machines in the seventeenth century. It is a simple, structured, general-purpose language primarily for teaching programming. A simple general-purpose scripting language good for writing short programs. Visual Basic was developed by Microsoft and it enables the programmers to rapidly develop graphical user interfaces.

Why Should I know About Assembly At All?

     Understand the struggles of your predecessors Debugging programs written in C/C++ using code dumps Reverse engineering  Often without source code  Stepping through assembly instructions using tools such as ollydbg Optimizations that require low level code Space/performance constraints  Fitting your code/data on a Gameboy cartridge

Interpreting/Compiling Source Code

  A program written in a high-level language is called a

source program

or source code. Because a computer cannot understand a source program, a source program must be translated into machine code for execution. The translation can be done using another programming tool called an interpreter or a compiler.

Interpreting Source Code

  An interpreter reads one statement from the source code, translates it to the machine code or virtual machine code, and then executes it right away, as shown in the following figure. Note that a statement from the source code may be translated into several machine instructions.

There are more nuances about different types of interpreters, etc. Do more research online.

Compiling Source Code

 A compiler translates the entire source code into a machine-code file, and the machine-code file is then executed, as shown in the following figure.

Why Java For This Course?

   Our whole sequence of classes uses Java, it’s part of the system  CS201, CS202, CS203  CS320, CS520 Relatively easy to learn compared to C/C++ Still very popular with lots of users  http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

History of Java

     http://www.oracle.com/technetwork/java/javase/overview/javahistory index-198355.html

Developed by Sun Microsystems as an alternative to C++/C   Garbage collection Pioneers of web development Sun Microsystems acquired by oracle Use widely in corporate environments, web servers Minecraft, Android

HelloWorld.java

public class HelloWorld { public static void main(String[] args ) {

System.

out .println( "Hello, World" );

} }

Creating, Compiling, and Running Programs

Compiling Java Source Code

  "Write once, run anywhere" (WORA)  Remember machine code is platform dependent  Compiler compiles the code, can only run on that platform The Java Virtual Machine(JVM)  What if we don’t compile for each different platform, but use a virtual machine , and compile for that machine instead? Genius!

  The Java compiler compiles your program into bytecode The bytecode can then be run on any JVM on any platform

Compile and Running a Java Program

Compiling and Running HelloWorld.java

    The name of the source file is “HelloWorld.java” Change directory to the folder where the source file is in Compile the source code into java bytecode:  javac HelloWorld.java

Execute the generated .class bytecode file  java HelloWorld  NOTE: without the .java extension

Anatomy of a Java Program

       Class name Main method Statements Statement terminator Reserved words Comments Blocks

Class Name

   Every Java Program must have at least one class.

Each class has a name Use upper camel case by convention   Capitalize the first character of each word Examples: HelloWorld, WelcomeHome, ThisIsAnExample, Hello

public class HelloWorld { public static void main(String[] args ) {

System.

out .println( "Hello, World" );

} }

The Main Method

   A method is a set of code which is referred to by name and can be called (invoked) at any point in a program simply by utilizing the method's name. In order to run a class, the class must contain a special method named main. The program is executed from the main method. It has to look exactly like this:

public static void main(String[] args )

 Remember, computers are stupid  For now, all your classes will contain the main method.

Statement

  A statement represents an action or a sequence of actions The highlighted statement writes Hello World to standard output:

public class HelloWorld { public static void main(String[] args ) {

System.

out .println( "Hello, World" );

} }  Notice the statement ends with a semicolon: 

Every statement in Java ends with a semicolon(;).

Reserved Words

  Reserved words or keywords are words that have a specific meaning to the compiler and cannot be used for other purposes in the program. For example, when the compiler sees the HelloWorld class, it understands that the word after class is the name for the class. In the example below, the reserved words are highlighted in red

public class HelloWorld { public static void main(String[] args ) {

System.

out .println( "Hello, World" );

} }

Blocks

 A pair of braces ({ }) in a program forms a block that groups components of a program: public class Test { public static void main(String[] args) { System.out.println("Welcome to Java!"); } } Method block Class block

Special Symbols

{} () [] // " " ; Opening and closing braces Opening and closing parentheses Opening and closing brackets Double slashes Opening and closing quotation marks Semicolon Denotes a block to enclose statements. Used with methods. Denotes an array. Precedes a comment line. Enclosing a string (i.e., sequence of characters). Marks the end of a statement.

How Do I Have Quotes as Part of the String?

    When an escape sequence is encountered in a print statement, the compiler interprets it accordingly. For example, if you want to put quotes within quotes you must use the escape sequence, \", on the interior quotes. To print the sentence: She said "Hello!" to me.

you would write:  System.out.println("She said \"Hello!\" to me.");

\" \\ \n \r \f Escape Sequences Escape Sequence \t \b \' Description Insert a tab in the text at this point.

Insert a backspace in the text at this point.

Insert a newline in the text at this point.

Insert a carriage return in the text at this point.

Insert a formfeed in the text at this point.

Insert a single quote character in the text at this point.

Insert a double quote character in the text at this point.

Insert a backslash character in the text at this point.

Examples

EscapeSequence.java

Programming Conventions

 Why follow conventions?

 Won’t make my eyes bleed  I look at all your assginements  I will take off points if you don’t.

 Easier to read and maintain  Lots of APIs and frameworks rely on proper naming conventions  Maven, Expression Langague, etc

Appropriate Comments

  Comments at the beginning of your code to state the purpose of the program Your source code should be self-documenting  If it can be confusing to the reader, add inline comments

Comments Example

/* CS201 * Spring 2015 * Example 1 */

public class HelloWorld {

//Write Hello, World to standard output

public static void main(String[] args ) {

System.

out .println( "Hello, World" );

} }

Naming Conventions

  Choose meaningful and descriptive names.

 Length of name is no longer an issue, since most editors support autocomplete Class names: 

Upper Camel Case

 Capitalize the first letter of each word in the name. For example, the class name ComputeExpression.

Proper Indentation and Spacing

      The machine doesn’t care whether you indent it or not. In fact, compressing everything to one line saves a lot of space Indentation and spacing is used so your code is readable.

Use Indentation to show different levels of the code block/structure  Generally two spaces per level, or you can use tabs In fact, languages like python make it mandatory, or it won’t even compile

Use a plugin for your editor to automate the process.

I’m not too picky on the style, as long as it’s readable

Readable Code

public class HelloWorld { public static void main(String[]

args

) {

System.

out

.println( "Hello, World" );

} }

Unreadable Code

public class HelloWorld { public static void main(String[]

args

) {

System.

out

.println( "Hello, World" );

} }

Conventions Grading Criteria

 If you don’t follow conventions, I will take off up till 20% of your lab grade depending on the offense.

Programming errors

   Syntax Errors  Detected by the compiler, won’t compile at all Runtime Errors  Causes the program to abort Logic Errors  Produces incorrect result  Most difficult to debug

Syntax Error

public class Test {

publi

static void main(String[] args ) {

System.out.println( "lol, you can't spell" ); } } What is wrong with this code?

Runtime Errors

public class ShowRuntimeErrors { public static void main(String[]

args

) {

System.

out

.println(1 / 0);

} }

What is wrong with this code?

Logic Errors

public class CalculateAreaOfTriangle { public static void main(String[] args ) {

System.

out .println( "Base is 20, height is 10" );

System.

out .println( "Area is: " );

System.

out .println(20 + 10);

} } What is wrong with this code?

Reading Error Messages

    Pay attention to the line number Understand what type of error it is Read your own code and find the problem.

 At this stage, it is most likely a problem with your code or your environment setup, Java is not the problem.

More Info  http://www.dummies.com/how-to/content/tackling-error-messages-in-java programming.html

Lecture Code Examples:

     https://github.com/mhsu0020/CSULA-CS201-Spring2015/ GitHub is a popular Git repository hosting service Git:  A popular version control software  Allows you to keep track of your code changes and collaborate with others Go to the folder for the week, click on the source file, then click raw. You can then right click and save the file. Remember to change the extension to .java

If you’re feeling adventurous, you can setup git/github client on your machine and directly pull from the repository  Check out the git and github tutorials from the course webpage resource section

Reminder:

  Lab 1 due next Thursday before class Follow the JDK setup guide on the course website so you can work on the labs