Download block statement

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
3. S/E with Control Structures
•
•
•
•
•
•
3.1 Relational Operators and Expressions
3.2 If and if-else Statements
3.3 The Type Double
3.4 Program Design with the While Loop
3.5 Debugging
3.6 Getting Started with Objects and
Applets: Drawing Shapes
Objectives
• Learn the basic sequence, selection, and repetition
statements
• Identify objects and their responsibilities
• Simple debugging techniques
• Handle floating-point numbers
• Study applets, draw various shapes
3.1 Relational Operators and
Expressions
• Relational operators include:
<, <=, >, >=, ==, and !=
• Each relational operator takes two operands and
gives a boolean value: true or false
• Be careful not to confuse == with =
• Relational operators have precedence lower than
arithmetic operators but higher than assignment
operators
Operator
Symbol
Meaning
Example
<
less than
31 < 25
is false
<=
less than or equal to
464 <= 7213
is true
>
greater than
-98 > -12
is false
>=
greater than or equal to
9 >= 99
is false
==
equal to
9 == 12 + 12
is false
!=
not equal to
292 != 377
is true
Figure 3.2 Java relational and equality operators
Control Flow
• The order Java executes the statements of a
program is sequential if not told otherwise
int item1 = 25;
int item2 = 12;
item2 = item1 + 15;
• Conditional statement like the if and if-else
statements allow us to make decision
• They change the default control flow
Entry
int item1 = 25;
int item2 = 12;
Item2 = item1+15;
Exit
Figure 3.3 The sequence control flow
3.2 The if and if-else statements
• The syntax
if ( condition )
if_true_statement;
[ else
if_false_statement; ]
• condition must be boolean: true or false
• If condition is true, if_true_statement is executed;
if the condition is false, if_false_statement is
executed
• One or the other will be executed, but not both
condition
if_true_statement
False
Figure 3.4 Control flow for the if statement
The if Statement: Example
hours = Integer.parseInt(input);
if (hours > 40)
System.out.println(“You worked overtime “ +
“this week”);
System.out.println(“You worked “ + hours +
“ hours”);
hours = Integer.parselnt(input);
Hours>40
True
False
System.out.println(“You “ +
“worked overtime this week”)
System.out.println(
“you worked ”
+ hours + “ hours”);
Figure 3.5 Control Flow for Example 3.2
True
if_true_statement
Condition
False
if_false_statement
Figure 3.6 Flow chart for the if-else statement
The if-else Statement: Example
if (hours <= 40)
wage = hourlyRate * hours;
else
wage = hourlyRate * 40 +
hourlyRate * 1.5 * (hours - 40);
Block Statements
• Several statements can be grouped together into a
block statement
• A block is delimited by braces ( { … } )
• A block statement can be used wherever a
statement is called for in the Java syntax
• For example, in an if-else statement, the if-portion,
or the else-portion, or both, could be block
statements
True
Z <= 10
False
x = 2;
y = 7;
Figure 3.7 Flow chart for if statement with block, step 1
True
Z <= 10
x = 2;
False
y = 7;
Figure 3.8 Flow chart if statement with block, step 2
Block Statements
• Use a consistent style for blocks
if (x < 10) {
y = 5;
z = 8;
}
else {
y = 9;
z = -2;
}
if (x < 10)
{
y = 5;
z = 8;
}
else
{
y = 9;
z = -2;
}
3.3 The Type Double
• Scientific (floating-point) notation for real
numbers: 123.45 and 0.0012345 can be written
respectively as
0.12345E3
0.12345E-2
• 0.12345 is the mantissa, 3 and -2 are the
exponents, with the implicit base of 10
• Scientific notation is good for numbers with very
small or very large absolute value
• Java has type double that provides 16 decimal
digits accurately.
public class Triangle
{
private double side1, side2, side3;
public Triangle(double a, double b, double c)
{
side1 = a; side2 = b; side3 = c;
}
public double circumference()
{
return side1 + side2 + side3;
}
public double area()
{
double s = circumference() / 2.0;
return Math.sqrt(s*(s - side1)*(s - side2)*(s - side3));
}
}
Double Value Output
• When printed using print or println methods of
System.out, Java prints double values using the
most convenient format
• Scientific format for numbers greater than
10,000,000 or less than -10,000,000, and for
numbers between -.001 and .001.
• Java treats decimal literals as type double
• Java does not print trailing zeroes
• Type double is accurate to 16 significant digits
• The 17th digit may be rounded
Input and Formatted Output
import javax.swing.*;
import java.text.*;
…
public static void main(String[] args)
{
NumberFormat nf = NumberFormat.getCurrentcyInstance();
String s = JOptionPane.showInputDialog(“Hours worked? “);
double hours = Double.parseDouble(s);
JOptionPane.showMessageDialog
(null, “Your pay is “ + nf.format(hours * 5.5));
System.exit(0);
}
Formatted Output
• The NumberFormat class has static methods that
return formatter object
getCurrencyInstance()
getPercentInstance()
• Each formatter object has a method called format
that returns a string with the specific information in
the appropriate format
• The DecimalFormat class can be used to format a
floating point value in generic way
• The DecimalFormat class takes a string that
represents a pattern for the formatted number
Data Conversions
• Sometimes it is convenient to convert data from one
type to another
• Conversion must be handled carefully to avoid
losing information
• Widening conversions are safest because they tend
to go from a small data type to a larger one (such as
a short to an int)
• Narrowing conversions can lose information
because they tend to go from a larger data type to a
smaller one (such as an int to a short)
Data Conversions
• In Java, data conversions can occur in three ways:
– assignment conversion
– arithmetic promotion
– casting
• Assignment conversion occurs when a value of one
type is assigned to a variable of another type
– Only widening conversion can happen via assignment
• Arithmetic promotion happens automatically when
operators in expressions converts their operands
• Casting is the most powerful, and dangerous,
technique for conversion
result = (float) total / count;
Original expression
2.54
+
361
After Conversion
2.54
+
361.0
Figure 3.9 Conversion of mixed-mode expression
3.4 The While Loop
• Repetition statements allow us to execute a
statement multiple times repetitively
• They are often referred to as loops
• Like if-else statements, they are controlled by
boolean expressions’
• Java has three kinds of repetition statements: the
while loop, the do loop, and the for loop
• The while loop has this syntax
while ( condition )
while_true_statement;
The While Loop
• If the condition is true, the statement is executed
• Then the condition is evaluated again
• The statement is executed repetitively until the
condition becomes false
• If the condition is false initially, then the statement
is never executed
• The body of a while loop must eventually make the
condition false
• If not, it is an infinite loop, which is a common
logical error unless you are absolutely sure it is not
False
Condition
True
while_true_statement
Figure 3.10 Flow chart for the while loop
Problem Solving
• The purpose of writing a program is to solve a
problem
• The general steps in problem solving are:
–
–
–
–
–
–
Understand the problem
Dissect the problem
Design a solution
Consider alternatives to the solution and refine it
Implement the solution
Test the solution and fix and problems that exist
Problem Solving
• Many software development project failed because
the developers didn’t understand the problems to
be solved
• Avoid assumptions and clarify ambiguities
• As problems and their solutions becomes larger,
we must organize our development into
manageable pieces
• We will dissect our solutions into pieces called
classes and objects, taking an object-oriented
approach
Program Development
• The creation of software involves four basic
activities:
–
–
–
–
establishing the requirements
creating a design
implementing the code
testing the implementation
• Real development process is much more involved
than this, but these four steps are a good starting
point
Requirements
• Requirements specify the tasks a program must
accomplish (what to do, not how to do it)
• They often include description of the user interface
• The initial requirements must be critiqued,
modified, and expanded
• It is often difficult to establish detailed,
unambiguous, and complete requirements
• Careful attention to the requirements can save
significant time and money in the overall project
Design
• An algorithm is a step-by-step process for solving
a problem
• A program follow one or more algorithms
• The design of a program specifies the algorithms
and data needed
• In object-oriented development, the design
establishes the classes, their data and methods
• The details of a method may be expressed in
pseudocode, which is code-like, but does not
necessarily follow any specific syntax
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 is
actually the least creative step
• Almost all important decisions are made during
requirements analysis and design
• Implementation should focus on coding details,
including guidelines, clarity, maintainability,
expandability, and documentation
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 fix it
• Debugging can only indicate the presence of errors
(bugs), but not the absence
• Don’t ever think there is only one more bug to fix
• tests should focus on design details as well as
overall requirements
Read the quantity of scores;
while (count < quantity) {
Read the next score;
Add the score to the total so far;
Increment the count of scores;
}
Display the quantity and the total;
Figure 3.11 Pseudocode for the sum of test scores problem
3.5 Debugging
• Syntax error
– caught by the compiler
– easy to fix
• Run-time error
– reported at run-time by interpreter
– often depending on input and environment
– usually cause program to terminate immaturely
• Logical error
– program runs but results are wrong
– can be very difficult to find and/or fix
• Requirement error
– disastrous
3.6 Getting Started with Applets
• A java application is a stand-alone program with a
main method
• An applet is a Java program that is intended to be
transported over the web and executed using a
web browser
• An applet doesn’t have a main method
• Instead, there are several special methods that
serve specific purposes
• The paint method, for instance, is automatically
executed and is used to draw the applets contents
Drawing Shapes
• The paint method accepts a parameter that is an
object of the Graphics class
• A Graphics object defines a graphical context on
which we can draw shapes and text
• The Graphics class has several methods for
drawing shapes
• The class that defines the applet extends the
Applet class
• This makes use of inheritance, an object-oriented
concept to be explored later
(70,80)
(130,230)
Figure 3.12 Drawing a line
(50,50)
200
100
Figure 3.13 Drawing a rectangle
Figure 3.14 An oval with its bounding rectangle
90º
180º
0º
270º
Figure 3.15 Degree measure around a circle
90º
45º
Figure 3.16 An arc from the oval of Figure 3.14
Figure 3.17 The structure of a rounded rectangle
Dimension d = getSize();
int w = d.width;
int h = d.height;
g.drawRect(2*w/3,0,w/3,h/3);
Figure 3.19 Drawing a rectangle relative to the applet's size