Building Java Programs: Introduction To Java Programming
Building Java Programs: Introduction To Java Programming
Chapter 1
Introduction to Java Programming
– Many subfields
• Graphics, Computer Vision
• Artificial Intelligence
• Scientific Computing
• Robotics
• Databases, Data Mining
• Computational Linguistics, Natural Language Processing ...
• Computer Engineering
– Overlap with CS and EE; emphasizes hardware
2
The CS job market
160,000
140,000
120,000
PhD
100,000 Master's
Bachelor's
80,000 Projected Job Openings
60,000
40,000
20,000
-
Computer science Biological science
SOURCES: Tabulated by National Science Foundation/Division of Science Resources Statistics; data from Department of Education/National Center for Education Statistics:
Integrated Postsecondary Education Data System Completions Survey; and NSF/SRS: Sur
3
What is programming?
• program: A set of instructions
to be carried out by a computer.
4
Programming languages
• Some influential ones:
– FORTRAN
• science / engineering
– COBOL
• business data
– LISP
• logic and AI
– BASIC
• a simple language
5
Some modern languages
• procedural languages: programs are a series of commands
– Pascal (1970): designed for education
– C (1972): low-level operating systems and device drivers
2. Compile it.
• compile: Translate a program from one language to another.
– byte code: The Java compiler converts your code into a format
named byte code that runs on many computer types.
8
A Java program
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
System.out.println();
System.out.println("This program produces");
System.out.println("four lines of output");
}
}
• Its output:
Hello, world!
• System.out.println();
Prints a blank line of output.
11
Names and identifiers
• You must give your program a name.
13
Syntax
• syntax: The set of legal structures and commands that can be
used in a particular language.
– Every basic Java statement ends with a semicolon ;
– The contents of a class or method occur between { and }
14
Syntax error example
1 public class Hello {
2 pooblic static void main(String[] args) {
3 System.owt.println("Hello, world!")_
4 }
5 }
• Compiler output:
Hello.java:2: <identifier> expected
pooblic static void main(String[] args) {
^
Hello.java:3: ';' expected
}
^
2 errors
– The compiler shows the line number where it found the error.
– The error messages can be tough to understand!
15
Strings
• string: A sequence of characters to be printed.
– Starts and ends with a " quote " character.
• The quotes do not appear in the output.
– Examples:
"hello"
"This is a string. It's very long!"
• Restrictions:
– May not span multiple lines.
"This is not
a legal String."
\t tab character
\n new line character
\" quotation mark character
\\ backslash character
– Example:
System.out.println("\\hello\nhow\tare \"you\"?\\\\");
– Output:
\hello
how are "you"?\\
17
Questions
• What is the output of the following println statements?
System.out.println("\ta\tb\tc");
System.out.println("\\\\");
System.out.println("'");
System.out.println("\"\"\"");
System.out.println("C:\nin\the downward spiral");
18
Answers
• Output of each println statement:
a b c
\\
'
"""
C:
in he downward spiral
19
Questions
• What println statements will generate this output?
This program prints a
quote from the Gettysburg Address.
21
Comments
• comment: A note written in source code by the programmer
to describe or clarify the code.
– Comments are not executed when your program runs.
• Syntax:
// comment text, on one line
or,
/* comment text; may span multiple lines */
• Examples:
// This is a one-line comment.
/* This is a very long
multi-line comment. */
22
Using comments
• Where to place comments:
– at the top of each file (a "comment header")
– at the start of every method (seen later)
– to explain complex pieces of code
23
Comments example
/* Suzy Student, CS 101, Fall 2019
This program prints lyrics about ... something. */
// second verse
System.out.println("diggy said the boogy");
System.out.println("said up jump the boogy");
}
}
24
Static methods
Algorithms
• algorithm: A list of steps for solving a problem.
• Example algorithm: "Bake sugar cookies"
– Mix the dry ingredients.
– Cream the butter and sugar.
– Beat in the eggs.
– Stir in the dry ingredients.
– Set the oven temperature.
– Set the timer.
– Place the cookies into the oven.
– Allow the cookies to bake.
– Spread frosting and sprinkles onto the cookies.
– ...
26
Problems with algorithms
• lack of structure: Many tiny steps; tough to remember.
• redundancy: Consider making a double batch...
– Mix the dry ingredients.
– Cream the butter and sugar.
– Beat in the eggs.
– Stir in the dry ingredients.
– Set the oven temperature.
– Set the timer.
– Place the first batch of cookies into the oven.
– Allow the cookies to bake.
– Set the timer.
– Place the second batch of cookies into the oven.
– Allow the cookies to bake.
– Mix ingredients for frosting.
– ...
27
Structured algorithms
• structured algorithm: Split into coherent tasks.
1 Make the cookie batter.
– Mix the dry ingredients.
– Cream the butter and sugar.
– Beat in the eggs.
– Stir in the dry ingredients.
30
Static methods
• static method: A named group of statements.
• denotes the structure of a program
class
• eliminates redundancy by code reuse
method A
statement
– procedural decomposition: statement
dividing a problem into methods statement
method B
statement
statement
• Writing a static method is like
method C
adding a new command to Java. statement
statement
statement
31
Using static methods
1. Design the algorithm.
– Look at the structure, and which commands are repeated.
– Decide what are the important overall tasks.
32
Design of an algorithm
// This program displays a delicious recipe for baking cookies.
public class BakeCookies2 {
public static void main(String[] args) {
// Step 1: Make the cake batter.
System.out.println("Mix the dry ingredients.");
System.out.println("Cream the butter and sugar.");
System.out.println("Beat in the eggs.");
System.out.println("Stir in the dry ingredients.");
// Step 2a: Bake cookies (first batch).
System.out.println("Set the oven temperature.");
System.out.println("Set the timer.");
System.out.println("Place a batch of cookies into the oven.");
System.out.println("Allow the cookies to bake.");
// Step 2b: Bake cookies (second batch).
System.out.println("Set the oven temperature.");
System.out.println("Set the timer.");
System.out.println("Place a batch of cookies into the oven.");
System.out.println("Allow the cookies to bake.");
// Step 3: Decorate the cookies.
System.out.println("Mix ingredients for frosting.");
System.out.println("Spread frosting and sprinkles.");
}
}
33
Declaring a method
Gives your method a name so it can be executed
• Syntax:
public static void name() {
statement;
statement;
...
statement;
}
• Example:
public static void printWarning() {
System.out.println("This product causes cancer");
System.out.println("in lab rats and humans.");
}
34
Calling a method
Executes the method's code
• Syntax:
name();
– You can call the same method many times if you like.
• Example:
printWarning();
– Output:
This product causes cancer
in lab rats and humans.
35
Program with static method
public class FreshPrince {
public static void main(String[] args) {
rap(); // Calling (running) the rap method
System.out.println();
rap(); // Calling the rap method again
}
// This method prints the lyrics to my favorite song.
public static void rap() {
System.out.println("Now this is the story all about how");
System.out.println("My life got flipped turned upside-down");
}
}
Output:
Now this is the story all about how
My life got flipped turned upside-down
36
Final cookie program
// This program displays a delicious recipe for baking cookies.
public class BakeCookies3 {
public static void main(String[] args) {
makeBatter();
bake(); // 1st batch
bake(); // 2nd batch
decorate();
}
// Step 1: Make the cake batter.
public static void makeBatter() {
System.out.println("Mix the dry ingredients.");
System.out.println("Cream the butter and sugar.");
System.out.println("Beat in the eggs.");
System.out.println("Stir in the dry ingredients.");
}
// Step 2: Bake a batch of cookies.
public static void bake() {
System.out.println("Set the oven temperature.");
System.out.println("Set the timer.");
System.out.println("Place a batch of cookies into the oven.");
System.out.println("Allow the cookies to bake.");
}
// Step 3: Decorate the cookies.
public static void decorate() {
System.out.println("Mix ingredients for frosting.");
System.out.println("Spread frosting and sprinkles.");
}
}
37
Methods calling methods
public class MethodsExample {
public static void main(String[] args) {
message1();
message2();
System.out.println("Done with main.");
}
public static void message1() {
System.out.println("This is message1.");
}
public static void message2() {
System.out.println("This is message2.");
message1();
System.out.println("Done with message2.");
}
}
• Output:
This is message1.
This is message2.
This is message1.
Done with message2.
Done with main.
38
Control flow
• When a method is called, the program's execution...
– "jumps" into that method, executing its statements, then
– "jumps" back to the point where the method was called.
40
Drawing complex figures
with static methods
Static methods question
• Write a program to print these figures using methods.
______
/ \
/ \
\ /
\______/
\ /
\______/
+--------+
______
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
42
Development strategy
______
/ \ First version (unstructured):
/ \
\ /
\______/ Create an empty program and main method.
\ / Copy the expected output into it, surrounding
\______/
+--------+ each line with System.out.println syntax.
______
/ \
/ \
+--------+
43
Program version 1
public class Figures1 {
public static void main(String[] args) {
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
System.out.println("\\ /");
System.out.println(" \\______/");
System.out.println();
System.out.println("\\ /");
System.out.println(" \\______/");
System.out.println("+--------+");
System.out.println();
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
System.out.println("| STOP |");
System.out.println("\\ /");
System.out.println(" \\______/");
System.out.println();
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
System.out.println("+--------+");
}
}
44
Development strategy 2
______
/ \ Second version (structured, with redundancy):
/ \
\ /
\______/ Identify the structure of the output.
\ /
\______/ Divide the main method into static methods
+--------+
based on this structure.
______
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
45
Output structure
______
/ \ The structure of the output:
/ \
\ / initial "egg" figure
\______/
second "teacup" figure
______
/ \ This structure can be represented by methods:
/ \
egg
| STOP |
\ / teaCup
\______/
stopSign
______
hat
/ \
/ \
+--------+
46
Program version 2
public class Figures2 {
public static void main(String[] args) {
egg();
teaCup();
stopSign();
hat();
}
public static void egg() {
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
System.out.println("\\ /");
System.out.println(" \\______/");
System.out.println();
}
public static void teaCup() {
System.out.println("\\ /");
System.out.println(" \\______/");
System.out.println("+--------+");
System.out.println();
}
...
47
Program version 2, cont'd.
...
public static void stopSign() {
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
System.out.println("| STOP |");
System.out.println("\\ /");
System.out.println(" \\______/");
System.out.println();
}
public static void hat() {
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
System.out.println("+--------+");
}
}
48
Development strategy 3
______
/ \ Third version (structured, without redundancy):
/ \
\ /
\______/ Identify redundancy in the output, and create
methods to eliminate as much as possible.
\ /
\______/
+--------+ Add comments to the program.
______
/ \
/ \
| STOP |
\ /
\______/
______
/ \
/ \
+--------+
49
Output redundancy
______
/ \
/ \
\ / The redundancy in the output:
\______/
\ /
egg top: reused on stop sign, hat
\______/ egg bottom: reused on teacup, stop sign
+--------+
divider line: used on teacup, hat
______
/ \
/ \ This redundancy can be fixed by methods:
| STOP |
eggTop
\ /
\______/ eggBottom
______ line
/ \
/ \
+--------+
50
Program version 3
// Suzy Student, CSE 138, Spring 2094
// Prints several figures, with methods for structure and redundancy.
public class Figures3 {
public static void main(String[] args) {
egg();
teaCup();
stopSign();
hat();
}
// Draws the top half of an an egg figure.
public static void eggTop() {
System.out.println(" ______");
System.out.println(" / \\");
System.out.println("/ \\");
}
// Draws the bottom half of an egg figure.
public static void eggBottom() {
System.out.println("\\ /");
System.out.println(" \\______/");
}
// Draws a complete egg figure.
public static void egg() {
eggTop();
eggBottom();
System.out.println();
}
...
51
Program version 3, cont'd.
...
// Draws a teacup figure.
public static void teaCup() {
eggBottom();
line();
System.out.println();
}
// Draws a stop sign figure.
public static void stopSign() {
eggTop();
System.out.println("| STOP |");
eggBottom();
System.out.println();
}
// Draws a figure that looks sort of like a hat.
public static void hat() {
eggTop();
line();
}
// Draws a line of dashes.
public static void line() {
System.out.println("+--------+");
}
}
52