0% found this document useful (0 votes)
10 views

02slide Accessible

Uploaded by

vowir12193
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

02slide Accessible

Uploaded by

vowir12193
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 68

Introduction to Java Programming and

Data Structures
Thirteenth Edition

Chapter 2
Elementary Programming

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Motivations
In the preceding chapter, you learned how to create,
compile, and run a Java program. Starting from this
chapter, you will learn how to solve practical problems
programmatically. Through these problems, you will learn
Java primitive data types and related subjects, such as
variables, constants, data types, operators, expressions,
and input and output.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Objectives (1 of 4)
2.1 To write Java programs to perform simple computations (§2.2).
2.2 To obtain input from the console using the Scanner class (§2.3).
2.3 To use identifiers to name variables, constants, methods, and
classes (§2.4).
2.4 To use variables to store data (§§2.5–2.6).
2.5 To program with assignment statements and assignment
expressions (§2.6).
2.6 To use constants to store permanent data (§2.7).
2.7 To name classes, methods, variables, and constants by following
their naming conventions (§2.8).

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Objectives (2 of 4)
2.8 To explore Java numeric primitive data types: byte, short, int, long,
float, and double (§2.9).

2.9 To read a byte, short, int, long, float, or double value from the
keyboard (§2.9.1).

2.10 To perform operations using operators +,  , *, /, and % (§2.9.2).

2.11 To perform exponent operations using Math.pow(a, b) (§2.9.3).

2.12 To write integer literals, floating-point literals, and literals in scientific


notation (§2.10).

2.13 To use J Shell to quickly test Java code (§2.11).

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Objectives (3 of 4)
2.14 To write and evaluate numeric expressions (§2.12).
2.15 To obtain the current system time using
System.currentTimeMillis() (§2.13).
2.16 To use augmented assignment operators (§2.14).
2.17 To distinguish between postincrement and
preincrement and between postdecrement and
predecrement (§2.15).
2.18 To cast the value of one type to another type (§2.16).
2.19 To describe the software development process and
apply it to develop the loan payment program (§2.17).
Copyright © 2024 Pearson Education, Inc. All Rights Reserved
Objectives (4 of 4)
2.20 To write a program that converts a large amount of
money into smaller units (§2.18).
2.21 To avoid common errors and pitfalls in elementary
programming (§2.19).

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Introducing Programming With an
Example
Listing 2.1 Computing the Area of a Circle
This program computes the area of the circle.

ComputeArea Note: Clicking the green button displays


the source code with interactive
animation. You can also run the code in
a browser. Internet connection is
needed for this button.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Trace a Program Execution (1 of 5)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Trace a Program Execution (2 of 5)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Trace a Program Execution (3 of 5)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Trace a Program Execution (4 of 5)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Trace a Program Execution (5 of 5)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Reading Input From the Console
1. Create a Scanner object

Scanner input = new Scanner(System.in);

2. Use the method nextDouble() to obtain to a double value.


For example,

System.out.print("Enter a double value: ");


Scanner input = new Scanner(System.in);
double d = input.nextDouble();

ComputeAreaWithConsoleInput ComputeAverage

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Implicit Import and Explicit Import

java.util.* ; // Implicit import


java.util.Scanner; // Explicit Import

No performance difference

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Identifiers
• An identifier is a sequence of characters that consist of
letters, digits, underscores (_), and dollar signs ($).
• An identifier must start with a letter, an underscore (_), or
a dollar sign ($). It cannot start with a digit.
• An identifier cannot be a reserved word. (See Appendix
A, “Java Keywords,” for a list of reserved words).
• An identifier cannot be true, false, or null.
• An identifier can be of any length.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Variables
// Compute the first area
radius = 1.0;
area = radius * radius * 3.14159;
System.out.println("The area is “ + area + "
for radius "+radius);
// Compute the second area
radius = 2.0;
area = radius * radius * 3.14159;
System.out.println("The area is “ + area + "
for radius "+radius);

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Declaring Variables
int x; // Declare x to be an
// integer variable;
double radius; // Declare radius to
// be a double variable;
char a; // Declare a to be a
// character variable;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Assignment Statements
x = 1; // Assign 1 to x;
radius = 1.0; // Assign 1.0 to radius;
a = 'A'; // Assign 'A' to a;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Declaring and Initializing in One Step
• int x = 1;
• double d = 1.4;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Named Constants
final datatype CONSTANTNAME = VALUE;
final double PI = 3.14159;
final int SIZE = 3;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Naming Conventions (1 of 2)
• Choose meaningful and descriptive names.
• Variables and method names:
– Use lowercase. If the name consists of several
words, concatenate all in one, use lowercase for
the first word, and capitalize the first letter of each
subsequent word in the name. For example, the
variables radius and area, and the method
computeArea.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Naming Conventions (2 of 2)
• Class names:
– Capitalize the first letter of each word in the name.
For example, the class name ComputeArea.
• Constants:
– Capitalize all letters in constants, and use
underscores to connect words. For example, the
constant PI and MAX_VALUE

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Numerical Data Types
Name Range Storage Size
byte  27 to 27  1 128 to 127  8-bit signed
negative 2 to the power 7 to 2 to the power 7 minus 1 left parenthesis negative 128 to 127 right parenthesis.

short  215 to 215  1 32768 to 32767  16-bit signed


negative 2 to the power 15 to 2 to the power 15 minus 1 left parenthesis (negative 32768 to 32767 right parenthesis.

int  231 to 231  1 2147483648 to 2147483647  32-bit signed


negative 2 to the power 31 to 2 to the power 31 minus 1 left parenthesis negative 2147483648 to 2147483647 right parenthesis.

long negative 2 to the power 63 to 2 to the power 63 minus 1 left parenthesis that is,
263 to9223372036854775808
negative 263  1 to 9223372036854775807 right parenthesis.
64-bit signed
i.e.,  9223372036854775808 to 9223372036854775807 
float Negative range: 32-bit IEEE 754
negative range, negative -3.4028235 E + 38 to negative 1.4 E minus 45, positive range, 1.4 E minus 45 to 3.4028235 E + 38.

 3.4028235E  38 to  1.4E  45
Positive range:
1.4E  45 to 3.4028235E  38

double 64-bit IEEE 754


negative range, negative 1.7976931348623157 E + 308 to negative 4.9 E minus 324, positive range, 4.9 E minus 324 to 1.7976931348623157 E + 308.

Negative range:
 1.7976931348623157E  308 to  4.9E  324
Positive range:
4.9E  324 to 1.7976931348623157E  308

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Reading Numbers From the Keyboard
Scanner input = new Scanner(System.in);
int value = input.nextInt();

Method Description
nextByte() reads an integer of the byte type.
nextShort() reads an integer of the short type.
nextInt() reads an integer of the int type.
nextLong() reads an integer of the long type.
nextFloat() reads a number of the float type.
nextDouble() reads a number of the double type.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Numeric Operators

Name Meaning Example Result

+ Addition 34 + 1 35


The symbol of minus
Subtraction 34.0  0.1
34.0 minus 0.1
33.9

* Multiplication 300 * 30
300 times 30
9000

/ 1.0 / 2.0
division slash

1.0 divided by 2.0.


Division 0.5

%
symbol of modulo remainder

Remainder 2
20 modulo remainder 3

20 % 3

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Integer Division
+,  , *, /, and %
5 / 2 yields an integer 2.

5.0 / 2 yields a double value 2.5


5 % 2 yields 1 (the remainder of the division)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Remainder Operator
Remainder is very useful in programming. For example, an
even number % 2 is always 0 and an odd number % 2 is
always 1. So you can use this property to determine
whether a number is even or odd. Suppose today is
Saturday and you and your friends are going to meet in 10
days. What day is in 10 days? You can find that day is
Tuesday using the following expression:

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Problem: Displaying Time
Write a program that obtains minutes and remaining
seconds from seconds.

DisplayTime

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Note
Calculations involving floating-point numbers are approximated because
these numbers are not stored with complete accuracy. For example,

System.out.println(1.0 − 0.1 − 0.1 − 0.1 − 0.1 − 0.1);

displays 0.5000000000000001, not 0.5, and

System.out.println(1.0 − 0.9);

displays 0.09999999999999998, not 0.1. Integers are stored precisely.


Therefore, calculations with integers yield a precise integer result.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Exponent Operations
System.out.println(Math.pow(2, 3));
// Displays 8.0
System.out.println(Math.pow(4, 0.5));
// Displays 2.0
System.out.println(Math.pow(2.5, 2));
// Displays 6.25
System.out.println(Math.pow(2.5, -2));
// Displays 0.16

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Number Literals
A literal is a constant value that appears directly in the
program. For example, 34, 1,000,000, and 5.0 are literals
in the following statements:
int i = 34;
long x = 1000000;
double d = 5.0;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Integer Literals
An integer literal can be assigned to an integer variable as
long as it can fit into the variable. A compilation error would
occur if the literal were too large for the variable to hold.
For example, the statement byte b = 1000 would cause a
compilation error, because 1000 cannot be stored in a
variable of the byte type.
An integer literal is assumed to be of the int type, whose
value is between  231  2147483648  to 231  1 2147483647 .
To denote an integer literal of the long type, append it with
the letter L or l. L is preferred because l (lowercase L) can
easily be confused with 1 (the digit one).
Copyright © 2024 Pearson Education, Inc. All Rights Reserved
Floating-Point Literals
Floating-point literals are written with a decimal point. By
default, a floating-point literal is treated as a double type
value. For example, 5.0 is considered a double value, not
a float value. You can make a number a float by
appending the letter f or F, and make a number a double
by appending the letter d or D. For example, you can use
100.2f or 100.2F for a float number, and 100.2d or 100.2D
for a double number.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


double v s float
ersu

The double type values are more accurate than the float
type values. For example,
System.out.println("1.0 / 3.0 is " + 1.0 /
3.0);

displays 1.0 / 3.0 is 0.3333333333


      333333
 
16 digits

System.out.println("1.0F / 3.0F is " + 1.0F


/ 3.0F);

displays 1.0F / 3.0F is 0.3333333


    4
7 digits

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Scientific Notation
Floating-point literals can also be specified in scientific
notation, for example, 1.23456e+2, same as 1.23456e2, is
equivalent to 123.456, and 1.23456e  2 is equivalent to
0.0123456. E (or e) represents an exponent and it can be
either in lowercase or uppercase.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


JShell
JShell is a command line interactive tool introduced in Java
9. JShell enables you to type a single Java statement and
get it executed to see the result right away without having
to write a complete class. This feature is commonly known
as REPL (Read-Evaluate-Print Loop), which evaluates
expressions and executes statements as they are entered
and shows the result immediately.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Arithmetic Expressions

3  4 x 10 y  5 a  b  c  4 9x
  9(  )
5 x x y

is translated to

3  4 * x  / 5  10 * y  5  * a  b  c  / x  9 * 4 / x  9  x  / y 

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


How to Evaluate an Expression
Though Java has its own way to evaluate an expression
behind the scene, the result of a Java expression and its
corresponding arithmetic expression are the same.
Therefore, you can safely apply the arithmetic rule for
evaluating a Java expression.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Problem: Converting Temperatures
Write a program that converts a Fahrenheit degree to
Celsius using the formula:

5
celsius   fahrenheit  32 
9
Note: you have to write
celsius 5.0 / 9  * fahrenheit  32 

FahrenheitToCelsius

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Problem: Displaying Current Time
Write a program that displays current time in GMT in the
format hour:minute:second such as 1:45:19.
The currentTimeMillis method in the System class
returns the current time in milliseconds since the midnight,
January 1, 1970 GMT. (1970 was the year when the Unix
operating system was formally introduced.) You can use
this method to obtain the current time, and then compute
the current second, minute, and hour as follows.

ShowCurrentTime

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Augmented Assignment Operators
Operator Name Example Equivalent
+= Addition assignment i += 8 i=i+8

 
negative = Subtraction assignment i  8
i minus = 8 i i  8 I = I minus 8

*= Multiplication assignment i *= 8 i=i*8

/
forward slash = Division assignment i / 8
I forward slash = 8
i i / 8
I = I over 8

%= Remainder assignment i %= 8 i=i%8

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Increment and Decrement Operators (1 of 3)

Operator Name Description Example (assume i = 1)


++var preincrement Increment var by 1, and use int j = ++i;
the new var value in the // j is 2, i is 2
statement

var++ postincrement Increment var by 1, but use int j = i++;


the original var value in the // j is 1, i is 2
statement
- - var
dash dash variable;

predecrement Decrement var by 1, and use int j = --i;


the new var value in the // j is 0, i is 0
statement
var- -
variable dash dash;

postdecrement Decrement var by 1, and use int j = i--;


the original var value in the // j is 1, i is 0
statement

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Increment and Decrement Operators (2 of 3)

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Increment and Decrement Operators (3 of 3)
Using increment and decrement operators makes
expressions short, but it also makes them complex and
difficult to read. Avoid using these operators in expressions
that modify multiple variables, or the same variable for
multiple times such as this: int k = ++i + i.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Assignment Expressions and
Assignment Statements
Prior to Java 2, all the expressions can be used as
statements. Since Java 2, only the following types of
expressions can be statements:
variable op= expression; // Where op is +,  , *, /, or %

++variable;
variable++;
  variable;
variable   ;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Numeric Type Conversion
Consider the following statements:

byte i = 100;
long k = i * 3 + 4;
double d = i * 3.1 + k / 2;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Conversion Rules
When performing a binary operation involving two operands
of different types, Java automatically converts the operand
based on the following rules:
1. If one of the operands is double, the other is converted
into double.
2. Otherwise, if one of the operands is float, the other is
converted into float.
3. Otherwise, if one of the operands is long, the other is
converted into long.
4. Otherwise, both operands are converted into int.
Copyright © 2024 Pearson Education, Inc. All Rights Reserved
Type Casting
Implicit casting
double d = 3; (type widening)
Explicit casting
int i = (int)3.0; (type narrowing)
int i = (int)3.9; (Fraction part is truncated)
What is wrong? int x = 5 / 2.0;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Problem: Keeping Two Digits After
Decimal Points
Write a program that displays the sales tax with two digits
after the decimal point.

SalesTax

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Casting in an Augmented Expression
In Java, an augmented expression of the form x1 op= x2 is
implemented as x1 = (T)(x1 op x2), where T is the type for
x1. Therefore, the following code is correct.
int sum = 0;
sum += 4.5; // sum becomes 4 after this statement
sum += 4.5 is equivalent to sum = (int)(sum + 4.5).

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Software Development Process

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Requirement Specification

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


System Analysis

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


System Design

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


I PO

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Implementation

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Testing

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Deployment

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Maintenance

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Problem: Computing Loan Payments
This program lets the user enter the interest rate, number
of years, and loan amount, and computes monthly
payment and total payment.

loanAmount monthlyInterestRate
monthlyPayment 
1
1
1  monthlyInterestRate 
numberOfYears 12

ComputeLoan

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Problem: Monetary Units
This program lets the user enter the amount in decimal
representing dollars and cents and output a report listing
the monetary equivalent in single dollars, quarters, dimes,
nickels, and pennies. Your program should report maximum
number of dollars, then the maximum number of quarters,
and so on, in this order.

ComputeChange

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Common Errors and Pitfalls
• Common Error 1: Undeclared/Uninitialized Variables and
Unused Variables
• Common Error 2: Integer Overflow
• Common Error 3: Round-off Errors
• Common Error 4: Unintended Integer Division
• Common Error 5: Redundant Input Objects
• Common Pitfall 1: Redundant Input Objects

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Common Error 1: Undeclared/Uninitialized
Variables and Unused Variables

double interestRate = 0.05;


double interest = interestrate * 45;

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Common Error 2: Integer Overflow
int value = 2147483647 + 1;
// value will actually be  2147483648

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Common Error 3: Round-off Errors
System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);
System.out.println(1.0 - 0.9);

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Common Error 4: Unintended Integer
Division

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Common Pitfall 1: Redundant Input
Objects
Scanner input = new Scanner(System.in);
System.out.print("Enter an integer: ");
int v1 = input.nextInt();

Scanner input1 = new Scanner(System.in);


System.out.print("Enter a double value: ");
double v2 = input1.nextDouble();

Copyright © 2024 Pearson Education, Inc. All Rights Reserved


Copyright

This work is protected by United States copyright laws and is


provided solely for the use of instructors in teaching their
courses and assessing student learning. Dissemination or sale of
any part of this work (including on the World Wide Web) will
destroy the integrity of the work and is not permitted. The work
and materials from it should never be made available to students
except by instructors using the accompanying text in their
classes. All recipients of this work are expected to abide by these
restrictions and to honor the intended pedagogical purposes and
the needs of other instructors who rely on these materials.

Copyright © 2024 Pearson Education, Inc. All Rights Reserved

You might also like