Transcript 171c1a

Introduction to Computer
Programming
CSC171 – 001
Getting Started – Chapters 1 & 2
Professor Pepper
(presentation adapted from Dr. Siegfried)
What Is Programming?
• Computers cannot do all the wonderful things
that we expect without instructions telling
them what to do.
• Program – a set detailed of instructions telling
a computer what to do
• Programming – designing and writing
computer programs
• Programming language – a language used to
express computer programs. (Syntax & Vocab)
A First Program
Class header
Open braces mark
the beginning
Method header
public class MyFirstjava {
public static void main(String[] args) {
System.out.println
("This is my first Java program.");
}
}
Close braces mark
the end
statements
A First Program – What Does It Do?
System.out.println
("This is my first Java program.");
Prints the message
This is my first Java program.
Ends the line
Make the Program Run
• Compile (translate to java byte code)
• Run (interpreter for that OS reads java byte
code and translates for machine)
Source
x.java
Compile
(javac x.java)
Object
x.class
Execute
(java x)
Steps
• Start / program / accessories / notepad
• Type in program and save as MyFirstjava.java right on the
C drive.
• Start / program / accessories / command prompt
• Type: Path=“c:\program files\java\jdk1.5.0_09\bin”  so
windows can find javac
• Type: javac MyFirstjava.java  creates MyFirstjava.class
• Look in Windows (right click start/ explore)  see
MyFirstjava.class
• Type java MyFirstjava
Exercise
• Add the line “Welcome to Java”
• When you run the program, you will see:
This is my first Java Program.
Welcome to Java.
• Extra:
– Info: print() does not go to the next line
– Try splitting Welcome to Java into two
statements: “Welcome” and then “ to Java.”
Development Environment
Blue Jay
Download at:
http://www.bluej.org/download/download.html
Instructions on syllabus
Average
• On Paper: Average 2 + 4 + 6
• Pay attention to your steps
A second program
Problem – write a program which can find the
average of three numbers.
Let’s list the steps that our program must perform to
do this:
• Add up these values
• Divide the sum by the number of values
• Print the result
Each of these steps will be a different statement.
Writing Our Second Program
sum = 2 + 4 + 6;
• Add up these values
• Divide the sum by the number of values
• Print the result
sum = 2 + 4 + 6;
an assignment statement
Assignment Statements
• Assignment statements take the form:
variable = expression
Memory location where
the value is stored
Combination of constants
and variables
Expressions
• Expressions combine values using one of
several operations.
• The operations being used is indicated by
the operator:
+
*
/
Addition
Subtraction
Multiplication
Division
Expressions – Some Examples
2 +5
4 * value
x / y
Writing Our Second Program
• sum = 2 + 4 + 6;
• Divide the sum by the
number of values
• Print the result
Names that describe what
the values represent
average = sum / 3;
Writing Our Second Program
• sum = 2 + 4 + 6
• average = sum / 3;
• Print the result
System.out.println(″The average is ″
+ average);
The output method
variable
name
Writing Our Second Program
public static void main(String[] args)
{
-------------------sum = 2 + 4 + 6;
average = sum / 3;
System.out.println("The average is "
+ average);
}
We still need to add a declare our variables. This tells the
computer what they are.
Writing Our Second Program
public class Average3 {
public static void main(String[] args) {
int sum, average;
sum = 2 + 4 + 6;
average = sum / 3;
System.out.println("The average is " +
average);
}
}
Tells the computer that sum and average are integers
Writing Our Second Program
public class Average3a {
public static void main(String[] args) {
int sum;
int average;
sum = 2 + 4 + 6;
average = sum / 3;
System.out.println("The average is " +
average);
}
}
We could also write this as two separate declarations.
Variables and Identifiers
• Variables have names – we call these names
identifiers.
• Identifiers identify various elements of a
program (so far the only such element are
the variables.
• Some identifiers are standard (such as
System)
Identifier Rules
• An identifier must begin with a letter or an
underscore _
• Java is case sensitive upper case (capital) or lower
case letters are considered different characters.
Average, average and AVERAGE are three
different identifiers.
• Numbers can also appear after the first character.
• Identifiers can be as long as you want but names
that are too long usually are too cumbersome.
• Identifiers cannot be reserved words (special
words like int, main, etc.)
Some Illegal Identifiers
Illegal
Identifier
my age
2times
four*five
Reason
Suggested Identifier
Blanks are not
allowed
Cannot begin
with a number
* is not allowed
myAge
time&ahalf & is not
allowed
times2 or
twoTimes
fourTimesFive
timeAndAHalf
Types
type
kind
memory
range
byte
integer
1 byte
-128 to 127
short
•
integer
2 bytes
-32768 to 32767
int
integer
4 bytes
-2147483648 to 2147483647
long
integer
8 bytes
-9223372036854775808 to
-9223372036854775807
float
floating point
4 bytes
±3.40282347 x 1038 to
±3.40282347 x 10-45
double
floating point
8 bytes
±1.76769313486231570 x 10308 to
±4.94065645841246544 x 10-324
single
character
2 bytes
all Unicode characters
char
boolean
true or false
1 bit
What type to use?
• Repeat a value often  worry about
the size 
• Float and Double imprecise  not for
big money!
Assignment
int number1 = 33;
double number2;
number2 = number1;
byteshortintlongfloatdouble
char
Dividing
• int / int  int (even if you assign it to a
double)
• float / int  float
• int / float  float
Solution: Cast it
ans = n / (double) m
Math Operators & PEMDAS
• + add
• - subtract
• * multiply
• - division
• % remainder
Example: base + (rate * hours)
Fancy Math
variable = variable op (expression)
count = count
+ 1
count = count
+ (6 / 2a + 3)
variable op = expression
count += 1
count += (6 / 2a + 3)
Example:
int count = 1;
count += 2;
The value of count is now
3
More Fancy Math
• Increment ++
• Decrment –
• ++n adds 1 before executing
• n++ adds 1 after executing
Example:
Characters
Let’s talk in words, not numbers!
• char = single character
• Note it with single quotes (ex: ‘a’, ‘1’)
• Can’t move to byte or short
• We can store single characters by writing:
char x, y;
– x and y can hold one and only one character
Character Strings
• We are usually interested in manipulating more
than one character at a time.
• We can store more than one character by writing:
String s;
• If we want s can hold to have some initial value,
we can write:
String s = “Initial value";
• For now, we use character data for input and
output only.
•
•
•
•
STRINGS
Type : String Holds text
Enter with double quotes “abc”
Really a class, so capitalize String
Just a list of chars. Example byeString:
GOODB YE WOR L D
0 1 2 3 4 5 6 78 9 0 1 2
•
•
•
•
•
•
Start at 0
byeString.charAt(3) is D
byeString.length() is 13
byeString.equals(somethingOtherString) is either true or false
byeString.toUpperCase() is GOODBYE WORLD
byeString.toLowerCase() is goodbye world
Average Pgm with String
• Change the AVG program to put “the
average is” into a string first, and convert
the string to Uppercase using toUpperCase()
Updated Avg Pgm
public class Average3 {
public static void main(String[] args)
int sum, average;
{
String averageLabel = “The average is “;
averageLabel = averageLabel.toLowerCase();
sum = 2 + 4 + 6;
average = sum / 3;
System.out.println(
averageLabel + average);
}
}
Escape Characters 1
• BUT, I really want a quote inside my string!
\” is “ - “abc\”def” - abc”def
\’ is ‘ - “abc\’def” - abc’def
\\ is \ - “abc\def” - abc\def
Escape Characters 2
How do I get new lines and tabs?
\n= new line (go to beginning of next line)
\r =carriage return (go to beginning of this
line)
\t = tab (go to next tab stop)
Constants
Constant doesn’t change
Why use a variable if
 massive changes later
 show meaning
 avoid Hard coding
public static final int MAX_PEOPLE = 20;
Capitalize by convention only -> just do it.
Spelling Conventions
•
•
•
•
Name constants
Variables start lower case
Classes uppercase
Word boundaries upper case
(numberOfPods)
Comments
• // -> comment line ex: // this is a comment
• /* xxx */  comment between marks ex:
/* these are a bunch of comments
x=y;
that line above is meaningless */
• Space liberally
Another Version of Average
•
•
•
Let’s rewrite the average program so it can
find the average any 3 numbers we try:
First, make up examples
We now need to:
1.
2.
3.
4.
Find our three values
Add the values
Divide the sum by 3
Print the result
Examples for Average
• 0 + 0 + 0 = 0/3 = 0 (Try zeroes)
• 100 -50 -29 = 21/3 = 7 (Try + and -)
• 2 + 4 + 6 = 12/3 = 4 (Try normal)
Writing Average3b
This first step becomes:
1.1
Find the first value
1.2
Find the second value
1.3
Find the third value
2.
Add the values
3.
Divide the sum by 3
4.
Print the result
Writing Avg3 (continued)
Since we want the computer to print out some kind of
prompt, the first step becomes:
1.1.1 Prompt the user for the first value
1.1.2 Read in the first value
1.2.1 Prompt the user for the second value
1.2.2 Read in the second value
1.3.1 Prompt the user for the third value
1.3.2 Read in the third value
2.
Add the values
3.
Divide the sum by 3
4.
Print the result
Writing Avg3 (continued)
We can prompt the user with:
1.1.1 System.out.println
("Enter the first value ?");
1.1.2
Read in the first value
1.2.1 System.out.println
("Enter the second value ?");
1.2.2
Read in the second value
1.3.1 System.out.println
("Enter the third value ?");
1.3.2
Read in the third value
2.Add the values
3. Divide the sum by 3
4. Print the result
The Scanner Class
• Most programs will need some form of
input.
• At the beginning, all of our input will come
from the keyboard.
• To read in a value, we need to use an object
belonging to a class called Scanner:
Scanner keyb = new Scanner(System.in);
Reading from the keyboard
• Once we declare keyb as Scanner, we can
read integer values by writing:
variable = keyb.nextInt();
Writing the input statements in Average3b
We can read in a value by writing:
System.out.println
("What is the first value\t?");
int value1 = keyb.nextInt();
System.out.println
("What is the second value\t?");
int value2 = keyb.nextInt();
System.out.println
("What is the third value\t?");
int value3 = keyb.nextInt();
2. Add the values
3. Divide the sum by 3
4. Print the result
Writing the assignments statements in Average3b
System.out.println
("What is the first value\t?");
int value1 = keyb.nextInt();
System.out.println
("What is the second value\t?");
int value2 = keyb.nextInt();
System.out.println
("What is the third value\t?");
int value3 = keyb.nextInt();
sum = value1 + value2
+ value3;
3. Divide the sum by 3
4. Print the result
Adding up the three values
Writing the assignments statements in
Average3b
System.out.println
("What is the first value\t?");
int value1 = keyb.nextInt();
System.out.println
("What is the second value\t?");
int value2 = keyb.nextInt();
System.out.println
("What is the third value\t?");
int value3 = keyb.nextInt();
sum = value1 + value2 + value3;
average = sum / 3;
4.
Print the result
Calculating the average
Writing the output statement in Average3b
System.out.println
("What is the first value\t?");
int value1 = keyb.nextInt();
System.out.println
("What is the second value\t?");
int value2 = keyb.nextInt();
System.out.println
("What is the third value\t?");
int value3 = keyb.nextInt();
sum = value1 + value2 + value3;
average = sum / 3;
System.out.println("The average is "
+ average);
import
java.util.Scanner;
public class Average3b {
public static void main(String[] args) {
int sum, average;
Scanner keyb = new Scanner(System.in);
System.out.println
("What is the first value\t?");
int value1 = keyb.nextInt();
System.out.println
("What is the second value\t?");
int value2 = keyb.nextInt();
System.out.println
("What is the third value\t?");
int value3 = keyb.nextInt();
sum = value1 + value2 + value3;
average = sum / 3;
System.out.println("The average is "
+ average);
}
}
Another example – calculating a payroll
• We are going to write a program which calculates
the gross pay for someone earning an hourly
wage.
• We need two pieces of information:
– the hourly rate of pay
– the number of hours worked.
• We are expected to produce one output: the gross
pay, which we can find by calculating:
– Gross pay = Rate of pay * Hours Worked
Examples
Pay Rate
Hours
Gross
$6.75
10
$67.50
$6.75
0
0
$100
40
$4000
Our Design for payroll
1. Get the inputs
2. Calculate the gross pay
3. Print the gross pay
We can substitute:
1.1 Get the rate
1.2 Get the hours
Developing The Payroll Program
We can substitute
1.1 Get the rate
1.1.1
1.1.2
1.2.1
1.2.2
1.2 Get the hours
2. Calculate the gross pay
3. Print the gross pay
Prompt the user for the rate
Read the rate
Prompt the user for the hours
Read the hours
Coding the payroll program
• Before we code the payroll program, we recognize
that the values (rate, hours and gross) may
not necessarily be integers.
• We will declare these to be double, which means
that they can have (but do not have to have)
fractional parts.
• In Java, we usually declare our variables where
they first appear in the program.
Developing The Payroll Program (continued)
1.1.1 Prompt the user for the rate
1.1.2 Read the rate
1.2.1 Prompt the user for the hours
1.2.2 Read the hours
2. Calculate the gross pay
3. Print the gross pay
System.out.println("What is your hourly pay rate?");
double rate = keyb.nextDouble();
Developing The Payroll Program (continued)
System.out.println
("What is your hourly pay rate?");
double rate = keyb.nextDouble();
1.2.1 Prompt the user for the hours
1.2.2 Read the hours
2. Calculate the gross pay
3. Print the gross pay
System.out.println("How many hours did you work?");
double hours = keyb.nextDouble();
Developing The Payroll Program (continued)
System.out.println
("What is your hourly pay rate?");
double rate = keyb.nextDouble();
System.out.println
("How many hours did you work?");
double hours = keyb.nextDouble();
2.
3.
Calculate the gross pay
Print the gross pay
double gross = rate * hours;
Developing The Payroll Program (continued)
System.out.println
("What is your hourly pay rate?");
double rate = keyb.nextDouble();
System.out.println
("How many hours did you work?");
double hours = keyb.nextDouble();
double gross = rate * hours;
3.
Print the gross pay
System.out.println("Your gross pay is $"
+ gross);
import java.util.Scanner;
public class Payroll {
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
System.out.println
("What is your hourly pay rate?");
double rate = keyb.nextDouble();
System.out.println
("How many hours did you work?");
double hours = keyb.nextDouble();
double gross = rate * hours;
System.out.println("Your gross pay is $“
+ gross);
}
}
import java.util.Scanner;
public class Payroll
{
/** This program calculates the gross pay for an
* hourly worker
* Inputs - hourly rate and hours worked
* Output - Gross pay */
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
// Get the hourly rate
System.out.println
("What is your hourly pay rate?");
double rate = keyb.nextDouble();
// Get the hours worked
System.out.println
("How many hours did you work?");
double hours = keyb.nextDouble();
// Calculate and display the gross pay
double gross = rate * hours;
System.out.println("Your gross pay is $"
+ gross);
}
}
Using Stepwise Refinement to
Design a Program
• You should noticed that when we write a
program, we start by describing the steps
that our program must perform and we
subsequently refine this into a long series of
more detailed steps until we are writing
individual steps. This is called stepwise
refinement.
• Stepwise refinement is one of the most
basic methods for developing a program.
Example – A program to convert
pounds to kilograms
• Our program will convert a weight
expressed in pounds into kilograms.
– Our input is the weight in pounds.
– Our output is the weight in kilograms
– We also know that
Kilograms = Pounds / 2.2
Examples for pounds to kilograms
Weight in pounds (int)
kilograms
0
-22
220
225
Weight in
0
-10
100
102.27
Pounds to Kilograms Program (continued)
•
Our program must:
1. Get the weight in pounds
2. Calculate the weight in kilograms
3. Print the weight in kilograms
Pounds to Kilograms Program (continued)
•
Our program must:
1. Get the weight in pounds
2. Calculate the weight in kilograms
3. Print the weight in kilograms
1.1
1.2
Prompt the user for the weight in pounds
Read the pounds
Pounds to Kilograms Program (continued)
•
Our program must:
1.1 Prompt the user for the weight in pounds
1.2 Read the pounds
2. Calculate the weight in kilograms
3. Print the weight in kilograms
System.out.println
("What is the weight in pounds?");
double lbs = keyb.nextInt();
Pounds to Kilograms Program (continued)
System.out.println
("What is the weight in pounds?");
double lbs = keyb.nextInt();
2. Calculate the weight in kilograms
3. Print the weight in kilograms
double kg = lbs / 2.2;
Pounds to Kilograms Program (continued)
System.out.println
("What is the weight in pounds?");
double lbs = keyb.nextInt();
double kg = lbs / 2.2;
3. Print the weight in kilograms
System.out.println("The weight is " + kg
+ " kilograms");
import java.util.Scanner;
public class ConvertPounds
{
// Convert pounds to kilograms
// Input - weight in pounds
// Output - weight in kilograms
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
// Get the weight in pounds
System.out.println
("What is the weight in pounds?");
double lbs = keyb.nextInt();
// Calculate and display the weight in
// kilograms
double kg = lbs / 2.2;
System.out.println("The weight is " + kg
+ " kilograms");
}
}
Another Example – The Area of A Rectangle
• Our program will calculate the area of a
rectangle.
– Our input is the length and width.
– Our output is the area.
– We also know that
Area = Length * Width
0=0*0
100 = 20 * 5
300 = 100 * 3
Our Program’s Steps
1. Find the length and width
2. Calculate the area
3. Print the area
Our Program’s Steps (continued)
1. Find the length and width
2. Calculate the area
3. Print the area
1.1 Find the length
1.2 Find the width
Our Program’s Steps (continued)
1.1 Find the length
1.2 Find the width
2. Calculate the area
3. Print the area
1.1.1 Prompt the user for the length
1.1.2 Read the length
1.2.1 Prompt the user for the width
1.1.2 Read the width
Our Program’s Steps (continued)
1.1.1 Prompt the user for the length
1.1.2 Read the length
1.2.1 Prompt the user for the width
1.1.2 Read the width
2. Calculate the area
3. Print the area
System.out.println("Enter the length?");
double length = keyb.nextDouble();
System.out.println("Enter the width?");
double width = keyb.nextDouble();
Our Program’s Steps (continued)
System.out.println("Enter the length?");
double length = keyb.nextDouble();
System.out.println("Enter the width?");
double width = keyb.nextDouble();
2. Calculate the area
3. Print the area
double area = length * width;
Our Program’s Steps (continued)
System.out.println("Enter the length?");
double length = keyb.nextDouble();
System.out.println("Enter the width?");
double width = keyb.nextDouble();
double area = length * width;
3. Print the area
System.out.println("The area is " + area);
import java.util.Scanner;
public class CalculateArea {
// Calculates the area of a rectangle
// Inputs - The length and width of the rectangle
// Output - The area of the rectangle
public static void main(String[] args) {
Scanner keyb = new Scanner(System.in);
// Print an explanatory message for the user
System.out.println
("Given the width and length of a rectangle");
System.out.println
("this program calculates its area." );
// Get the inputs
System.out.println("Enter the length?");
double length = keyb.nextDouble();
System.out.println("Enter the width?");
double width = keyb.nextDouble();
// Calculate and display the area
double area = length * width;
System.out.println("The area is " + area);
}
}
More on Scanner
• You can read:
–
–
–
–
–
–
–
nextInt()
nextLong()
nextByte()
nextDouble()
next() – up to next whitespace (delimiter)
nextLine() – up to “\n”
useDelimiter()
• Throw in nextLine() to get down a line
Try Scanner
• Tell the user to “Type an integer and then a
word, and press Enter”
• Print it back to them with “You typed <the
first number they typed> and <the word they
typed>.”
• Then, ask for a whole line and print it back.
• See that you need to be careful with the Enter
keystroke. (Capture it with keyb.nextLine.)
Scanner Play solution
import java.util.Scanner;
public class ScannerPlay
{
public static void main(String[] args)
{
Scanner keyb = new Scanner(System.in);
System.out.println
("Type an integer and then a word, and press Enter");
int number1 = keyb.nextInt();
String word1 = keyb.next();
System.out.println("You typed " + number1 + " and " + word1 + ".");
System.out.println("Type something else and Enter");
keyb.nextLine(); // skip a line
String line1 = keyb.nextLine();
System.out.println("You typed " + line1);
}
}