if statement

Download Report

Transcript if statement

Java Software Solutions
Lewis and Loftus
Program Elements -- Introduction
• We can now examine the core elements of programming
• Chapter 3 focuses on:
–
–
–
–
–
Chapter 3
data types
variable declaration and use
operators and expressions
decisions and loops
input and output
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
1
Java Software Solutions
Lewis and Loftus
Primitive Data Types
• A data type is defined by a set of values and the
operators you can perform on them
• Each value stored in memory is associated with a
particular data type
• The Java language has several predefined types, called
primitive data types
• The following reserved words represent eight different
primitive types:
– byte, short, int, long, float, double, boolean, char
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
2
Java Software Solutions
Lewis and Loftus
Integers
• There are four separate integer primitive data types
• They differ by the amount of memory used to store them
Type
Storage
Min Value
Max Value
byte
short
int
long
8 bits
16 bits
32 bits
64 bits
-128
-32,768
-2,147,483,648
< -9 x 1018
127
32,767
2,147,483,647
> 9 x 1018
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
3
Java Software Solutions
Lewis and Loftus
Floating Point
• There are two floating point types:
Type
Storage
Approximate
Min Value
float
double
32 bits
64 bits
-3.4 x 1038
-1.7 x 10308
Approximate
Max Value
3.4 x 1038
1.7 x 10308
• The float type stores 7 significant digits
• The double type stores 15 significant digits
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
4
Java Software Solutions
Lewis and Loftus
Characters
• A char value stores a single character from the
Unicode character set
• A character set is an ordered list of characters
• The Unicode character set uses sixteen bits per character,
allowing for 65,536 unique characters
• It is an international character set, containing symbols
and characters from many world languages
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
5
Java Software Solutions
Lewis and Loftus
Characters
• The ASCII character set is still the basis for many other
programming languages
• ASCII is a subset of Unicode, including:
uppercase letters
lowercase letters
punctuation
digits
special symbols
control characters
Chapter 3
A, B, C, …
a, b, c, …
period, semi-colon, …
0, 1, 2, …
&, |, \, …
carriage return, tab, ...
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
6
Java Software Solutions
Lewis and Loftus
Boolean
• A boolean value represents a true or false condition
• They can also be used to represent any two states, such
as a light bulb being on or off
• The reserved words true and false are the only
valid values for a boolean type
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
7
Java Software Solutions
Lewis and Loftus
Wrappers
• For each primitive data type there is a corresponding
wrapper class. For example:
Primitive Type
Wrapper Class
int
double
char
boolean
Integer
Double
Character
Boolean
• Wrapper classes are useful in situations where you need
an object instead of a primitive type
• They also contain some useful methods
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
8
Java Software Solutions
Lewis and Loftus
Variables
• A variable is an identifier that represents a location in
memory that holds a particular type of data
• Variables must be declared before they can be used
• The syntax of a variable declaration is:
data-type variable-name;
• For example:
int total;
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
9
Java Software Solutions
Lewis and Loftus
Variables
• Multiple variables can be declared on the same line:
int total, count, sum;
• Variables can be initialized (given an initial value) in the
declaration:
int total = 0, count = 20;
float unit_price = 57.25;
• See Piano_Keys.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
10
Java Software Solutions
Lewis and Loftus
Assignment Statements
• An assignment statement takes the following form:
variable-name = expression;
• The expression is evaluated and the result is stored in the
variable, overwriting the value currently stored in the
variable
• See United_States.java
• The expression can be a single value or a more
complicated calculation
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
11
Java Software Solutions
Lewis and Loftus
Constants
• A constant is similar to a variable except that they keep
the same value throughout their existence
• They are specified using the reserved word final in
the declaration
• For example:
final double PI = 3.14159;
final int STUDENTS = 25;
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
12
Java Software Solutions
Lewis and Loftus
Constants
• When appropriate, constants are better than variables
because:
– they prevent inadvertent errors because their value cannot
change
• They are better than literal values because:
– they make code more readable by giving meaning to a value
– they facilitate change because the value is only specified in one
place
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
13
Java Software Solutions
Lewis and Loftus
Input and Output
• Java I/O is based on input streams and output streams
• There are three predefined standard streams:
Stream
Purpose
Default Device
System.in
System.out
System.err
reading input
writing output
writing errors
keyboard
monitor
monitor
• The print and println methods write to standard
output
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
14
Java Software Solutions
Lewis and Loftus
Input and Output
• The Java API allows you to create many kinds of streams
to perform various kinds of I/O
• To read character strings, we will convert the
System.in stream to another kind of stream using:
BufferedReader stdin = new BufferedReader
(new InputStreamReader (System.in));
• This declaration creates a new stream called stdin
• We will discuss object creation in more detail later
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
15
Java Software Solutions
Lewis and Loftus
Escape Sequences
• See Echo.java
• An escape sequence is a special sequence of characters
preceded by a backslash (\)
• They indicate some special purpose, such as:
Chapter 3
Escape Sequence
Meaning
\t
\n
\"
\'
\\
tab
new line
double quote
single quote
backslash
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
16
Java Software Solutions
Lewis and Loftus
Buffers
• As you type, the characters are stored in an input buffer
• When you press enter, the program begins processing the
data
• Similarly, output information is temporarily stored in an
output buffer
• The output buffer can be explicitly flushed (sent to the
screen) using the flush method
• See Python.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
17
Java Software Solutions
Lewis and Loftus
Numeric Input
• Converting a string that holds an integer into the integer
value can be done with a method in the Integer
wrapper class:
value = Integer.parseInt (my_string);
• A value can be read and converted in one line:
num = Integer.parseInt (stdin.readLine());
• See Addition.java and Addition2.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
18
Java Software Solutions
Lewis and Loftus
Expressions
• An expression is a combination of operators and
operands
• The arithmetic operators include addition (+), subtraction
(-), multiplication (*), and division (/)
• Operands can be literal values, variables, or other sources
of data
• The programmer determines what is done with the result
of an expression (stored, printed, etc.)
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
19
Java Software Solutions
Lewis and Loftus
Division
• If the operands of the / operator are both integers, the
result is an integer (the fractional part is truncated)
• If one or more operands to the / operator are floating
point values, the result is a floating point value
• The remainder operator (%) returns the integer remainder
after dividing the first operand by the second
• The operands to the % operator must be integers
• See Division.java
• The remainder result takes the sign of the numerator
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
20
Java Software Solutions
Lewis and Loftus
Division
Chapter 3
Expression
Result
17 / 5
17.0 / 5
17 / 5.0
3
3.4
3.4
9 / 12
9.0 / 12.0
0
0.75
6 % 2
14 % 5
-14 % 5
0
4
-4
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
21
Java Software Solutions
Lewis and Loftus
Operator Precedence
• The order in which operands are evaluated in an
expression is determined by a well-defined precedence
hierarchy
• Operators at the same level of precedence are evaluated
according to their associativity (right to left or left to
right)
• Parentheses can be used to force precedence
• Appendix D contains a complete operator precedence
chart for all Java operators
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
22
Java Software Solutions
Lewis and Loftus
Operator Precedence
• Multiplication, division, and remainder have a higher
precedence than addition and subtraction
• Both groups associate left to right
Expression:
5 + 12 / 5 - 10 % 3
3
Order of evaluation:
Result:
Chapter 3
1
4
2
6
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
23
Java Software Solutions
Lewis and Loftus
Operator Precedence
Expression
Result
2 + 3 * 4 / 2
8
3 * 13 + 2
(3 * 13) + 2
3 * (13 + 2)
41
41
45
4 * (11 - 6) * (-8 + 10)
40
(5 * (4 - 1)) / 2
7
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
24
Java Software Solutions
Lewis and Loftus
The if Statement
• The Java if statement has the following syntax:
if (condition)
statement;
• If the boolean condition is true, the statement is
executed; if it is false, the statement is skipped
• This provides basic decision making capabilities
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
25
Java Software Solutions
Lewis and Loftus
The if Statement
condition
false
true
statement
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
26
Java Software Solutions
Lewis and Loftus
Boolean Expressions
• The condition of an if statement must evaluate to a
true or false result
• Java has several equality and relational operators:
Operator
Meaning
==
!=
<
<=
>
<=
equal to
not equal to
less than
less than or equal to
greater than
greater than or equal to
• See Temperature.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
27
Java Software Solutions
Lewis and Loftus
Block Statements
• Several statements can be grouped together into a block
statement
• Blocks are delimited by braces
• A block statement can be used wherever a statement is
called for in the Java syntax
• See Temperature2.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
28
Java Software Solutions
Lewis and Loftus
The if-else Statement
• An else clause can be added to an if statement to
make it an if-else statement:
if (condition)
statement1;
else
statement2;
• If the condition is true, statement1 is executed; if the
condition is false, statement2 is executed
• See Temperature3.java and
Right_Triangle.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
29
Java Software Solutions
Lewis and Loftus
The if-else Statement
condition
false
true
statement1
Chapter 3
statement2
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
30
Java Software Solutions
Lewis and Loftus
Nested if Statements
• The body of an if statement or else clause can be
another if statement
• These are called nested if statements
• See Football_Choice.java
• Note: an else clause is matched to the last
unmatched if (no matter what the indentation implies)
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
31
Java Software Solutions
Lewis and Loftus
The while Statement
• A while statement has the following syntax:
while (condition)
statement;
• If the condition is true, the statement is executed; then
the condition is evaluated again
• The statement is executed over and over until the
condition becomes false
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
32
Java Software Solutions
Lewis and Loftus
The while Statement
condition
false
true
statement
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
33
Java Software Solutions
Lewis and Loftus
The while Statement
• If the condition of a while statement is false initially,
the statement is never executed
• Therefore, we say that a while statement executes
zero or more times
• See Counter.java, Factors.java, and
Powers_of_Two.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
34
Java Software Solutions
Lewis and Loftus
Infinite Loops
• The body of a while loop must eventually make the
condition false
• If not, it is an infinite loop, which will execute until the
user interrupts the program
• This is a common type of logical error -- always double
check that your loops will terminate normally
• See Forever.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
35
Java Software Solutions
Lewis and Loftus
Program Development
• The creation of software involves four basic activities:
–
–
–
–
establishing the requirements
creating a design
implementing the code
testing the implementation
• The development process is much more involved that
this, but these basic steps are a good starting point
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
36
Java Software Solutions
Lewis and Loftus
Requirements
• Requirements specify the tasks a program must
accomplish (what to do, not how to do it)
• They often address the user interface
• An initial set of requirements are often provided, but
usually must be critiqued, modified, and expanded
• It is often difficult to establish detailed, unambiguous,
complete requirements
• Careful attention to the requirements can save significant
time and money in the overall project
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
37
Java Software Solutions
Lewis and Loftus
Design
• A program follows an algorithm, which is a step-by-step
process for solving a problem
• The design specifies the algorithms and data needed
• In object-oriented development, it establishes the classes,
objects, and methods that are required
• The details of a method may be expressed in pseudocode,
which is code-like, but does not necessarily follow any
specific syntax
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
38
Java Software Solutions
Lewis and Loftus
Implementation
• Implementation is the process of translating a design into
source code
• Most novice programmers think that writing code is the
heart of software development, but it actually should be
the least creative
• Almost all important decisions are made during
requirements analysis and design
• Implementation should focus on coding details, including
style guidelines and documentation
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
39
Java Software Solutions
Lewis and Loftus
Testing
• A program should be executed multiple times with
various input in an attempt to find errors
• Debugging is the process of discovering the cause of a
problem and fixing it
• Programmers often erroneously think that there is "only
one more bug" to fix
• Tests should focus on design details as well as overall
requirements
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
40
Java Software Solutions
Lewis and Loftus
Program Development
• See Average.java
• Follow the process of requirements analysis, design,
implementation, and testing
• There are always multiple ways to design and implement
a program
• Any design has advantages and disadvantages; there are
always trade-offs
• See Average2.java
Chapter 3
Copyright 1997 by John Lewis and William Loftus. All rights reserved.
41