Algorithms and Java basics:
pseudocode, variables, assignment,
and interactive programs
CSC 1051 – Algorithms and Data Structures I
Dr. Mary-Angela Papalaskari
Department of Computing Sciences
Villanova University
Course website:
www.csc.villanova.edu/~map/1051/
Some slides in this presentation are adapted from the slides accompanying:
• Java Software Solutions by Lewis & Loftus
• Introduction to Programming in Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne
CSC 1051 M.A. Papalaskari, Villanova University
Algorithms in
everyday life
Source: http://xkcd.com/627/
CSC 1051 M.A. Papalaskari, Villanova University
Algorithms
An algorithm is a specific set of instructions for
carrying out a procedure or solving a problem, usually
with the requirement that the procedure terminate at
some point. Specific algorithms sometimes also go by
the name method, procedure, or technique. The word
"algorithm" is a distortion of al-Khwārizmī [named
after Muhammad ibn al-Khwārizmī], a Persian
mathematician who wrote an influential treatise about
algebraic methods.
Sources: http://mathworld.wolfram.com/Algorithm.html and Wikipedia (
http://en.wikipedia.org/wiki/Mu%E1%B8%A5ammad_ibn_M%C5%ABs%C4%81_al-Khw%C4%81rizm%C4%AB )
CSC 1051 M.A. Papalaskari, Villanova University
Algorithm Example:
Input-Compute-Output pattern
GPA problem: Write a program that computes and outputs
the GPA, given the credits and quality points earned.
Variables: qp, credits, gpa
Pseudocode: describe steps in
simple, unambiguous language
Algorithm:
1. qp = input from user
2. credits = input from user
3. gpa = qp / credits
4. Print gpa
CSC 1051 M.A. Papalaskari, Villanova University
//****************************************************
// GPA.java Author: Joyce/Papalaskari
// Demonstrates the use of Scanner.
Java Program è
******************************************************
import java.util.Scanner;
public class GPA
{
public static void main (String[] args)
Algorithm //-------------------------------------------------
// Inputs quality points and credits and calculate
//-------------------------------------------------
{
è
double qp, credits, gpa;
Scanner scan = new Scanner(System.in);
Variables: qp, credits, gpa
// input qp
System.out.print ("Enter Quality Points > ");
Algorithm: qp = scan.nextInt();
// input credits
1. qp = input from user System.out.print ("Enter Credits > ");
2. credits = input from user credits = scan.nextInt();
3. gpa = qp / credits // calculate GPA
4. Print gpa gpa = qp / credits;
// print GPA
System.out.println ("\n\tGPA: " + gpa);
}
}
CSC 1051 M.A. Papalaskari, Villanova University
Next: A closer look at variables & input in Java
Interactive Programs – Input/Output
• Programs can use data obtained during runtime, eg:
int age;
String name;
Scanner scan = new Scanner(System.in);
output method
System.out.print(“Enter your name”);
name = scan.nextLine();
input method
System.out.print(“Enter your age”);
age = scan.nextInt();
);
CSC 1051 M.A. Papalaskari, Villanova University
Interactive Programs – Input/Output
• In Java, you first need to create a Scanner object
int age;
String name;
Scanner object
Scanner scan = new Scanner(System.in);
System.out.print(“Enter your name”);
name = scan.nextLine();
input method (for String)
System.out.print(“Enter your age”);
age = scan.nextInt();
input method (for int)
CSC 1051 M.A. Papalaskari, Villanova University
Interactive Programs – Input/Output
• The Scanner class is part of the java.util class
library, and must be imported into a program in
order to be used
• The import statement goes at beginning of your
program (above class definition)
import java.util.Scanner;
CSC 1051 M.A. Papalaskari, Villanova University
Interactive Programs – Input/Output
Summary:
1. import the Scanner class, i.e., add this before the class
definition of your program:
import java.util.Scanner;
2. In your main method, before doing any input, declare and
initialize the Scanner object
Scanner scan = new Scanner(System.in);
3. Input away!
System.out.print(“Enter your name”);
name = scan.nextLine();
System.out.print(“Enter your age”);
age = scan.nextInt();StringCSC 1051 M.A. Papalaskari, Villanova University
Interactive Programs – Input/Output
import java.util.Scanner; Example
public class TellMeAboutYou
{
public static void main(String[] args) Enter your name: Fiona
{ Enter your age: 17
int age; Pleased to meet you, Fiona!
String name; Your age in dog years is 178.5
Scanner scan = new Scanner(System.in);
System.out.print("Enter your name");
name = scan.nextLine();
System.out.print("Enter your age");
age = scan.nextInt();
System.out.println("Pleased to meet you, " + name + "!");
System.out.println("Your age in dog years: " + age*10.5);
} Inspired by: http://www.onlineconversion.com/dogyears.htm
} name = scan.nextLine(); CSC 1051 M.A. Papalaskari, Villanova University
Scanner methods
• nextInt() à input an int
• nextDouble() à input a double
• nextLine() à input a String (until end of line)
• next() à input a String token (one word or
other delimited “chunk” of text)
• White space (space, tab, new line) are used to
separate input tokens
CSC 1051 M.A. Papalaskari, Villanova University
Variables & Assignment OVERVIEW
• Variable. A name that refers to a value of declared type.
• Literal. Programming language representation of a value.
• Assignment statement. Associates a value with a variable.
type variable
int age; declaration statement
literal
age = 18; assignment statement
double x = 3.2, y = -0.80;
combined declaration and assignment statement
final int INCHES_PER_FOOT = 12;
constant declaration (always initializes value)
String name = scan.nextLine();
input from user
CSC 1051 M.A. Papalaskari, Villanova University
Variable Declaration
• A variable is a name for a location of data in memory
• A variable must be declared by specifying the variable's
name and the type of information that it will hold
data type variable name
int age;
double x, y;
String name;
CSC 1051 M.A. Papalaskari, Villanova University
Some types of data in Java
type set of values literal values operations
'A'
char characters '@'
compare
sequences of "Hello World"
String concatenate
characters ”jackie123"
17 add, subtract,
int integers 12345 multiply, divide
floating-point 3.1415 add, subtract,
double numbers 6.022e23 multiply, divide
true
boolean truth values false
and, or, not
CSC 1051 M.A. Papalaskari, Villanova University
Assignment Statement
• Changes the value of a variable
• The assignment operator is the = sign
total = 55 - discount;
• The expression on the right is evaluated and the
result is stored in the variable on the left
CSC 1051 M.A. Papalaskari, Villanova University
Combined declaration and assignment
A variable can be given an initial value in the declaration
int age = 18;
double x = 3.2, y = -0.80;
String name = scan.nextLine();
CSC 1051 M.A. Papalaskari, Villanova University
Combined declaration and assignment
A variable can be given an initial value in the declaration
- a new value can be assigned later:
int age = 18;
double x = 3.2, y = -0.80;
String name = scan.nextLine();
age = 19;
x = x + 0.5;
name = scan.nextLine();
CSC 1051 M.A. Papalaskari, Villanova University
Combined declaration and assignment –
Note: CANNOT declare twice
A variable can be given an initial value in the declaration
- a new value can be assigned later:
int age = 18;
double x = 3.2, y = -0.80;
String name = scan.nextLine();
int age = 19;
Error: declaring variable age again
CSC 1051 M.A. Papalaskari, Villanova University
Example
Computing the total number of seconds
int hours = 1;
int minutes = 25;
int seconds = 31;
int totalMinutes = (hours * 60) + minutes;
int totalSeconds = (totalMinutes * 60) + seconds;
CSC 1051 M.A. Papalaskari, Villanova University
Example
Computing the total number of seconds
Another alternative:
int hours = 1;
int minutes = 25;
int seconds = 31;
int totalSeconds =
(hours * 3600) + (minutes * 60) + seconds;
CSC 1051 M.A. Papalaskari, Villanova University
Arithmetic Operators
Addition +
Subtraction -
Multiplication *
Division /
Remainder %
• If either or both operands used by an arithmetic
operator are floating point (e.g., type double), then
the result is a floating point
CSC 1051 M.A. Papalaskari, Villanova University
Division and Remainder
• If both operands are integers (e.g., type int), the
division result is an integer (the fractional part is
discarded):
% gives the remainder of the division:
14 / 3 14 % 3
143 / 60 143 % 60
20 / 16 20 % 16
8 / 12 8 % 12
CSC 1051 M.A. Papalaskari, Villanova University
Example
Extracting hours, minutes seconds from total number of
seconds
int totalSeconds = 7222;
int hours = totalSeconds/3600;
int remainingSeconds = totalSeconds%3600;
int minutes = remainingSeconds/60;
int seconds = remainingSeconds%60;
CSC 1051 M.A. Papalaskari, Villanova University
Operator Precedence
example: result = total + count / max – offset;
What is the order of evaluation of sub-expressions?
1. Multiplication, division, remainder
2. addition, subtraction, string concatenation
• Operators with the same precedence: left àright
• Use parentheses to override default order
more examples:
a + b + c + d + e a / (b + c) - d % e
a – b / c + d * e a / (b * (c + (d - e)))
CSC 1051 M.A. Papalaskari, Villanova University
Tracing the values of variables after each statement.
age
int age = 18;
18
x
double x;
?
String name = "Sherlock"; name
“Sherlock”
age = 19;
19
x = 0.5;
0.5
x = x + 0.2; 0.7
name = name + "Holmes"; “SherlockHolmes”
CSC 1051 M.A. Papalaskari, Villanova University
Trace: A table of variable values after each statement.
age x name
________________________________________
int age = 18;
18
double x; 18 undefined
String name = "Sherlock"; 18 undefined "Sherlock"
age = 19; 19 undefined "Sherlock"
x = 0.5; 19 0.5 "Sherlock"
x = x + 2; 19 0.7 "Sherlock"
name = name + "Holmes"; 19 0.7 "SherlockHolmes"
Final values:
CSC 1051 M.A. Papalaskari, Villanova University
Trace: TRY THIS:
int a, b;
a = 3;
b = 4;
a = b;
double pi = 3.14;
Final values:
a b pi
CSC 1051 M.A. Papalaskari, Villanova University
Trace: TRY THIS:
int a, b;
a = 3;
b = 4;
int c = a;
a = b;
b = 5;
b = c;
Final values:
a b c
CSC 1051 M.A. Papalaskari, Villanova University
Assignment operator
• Assignment ( = ) copies the value of the right side into
the memory location associated with the left side
• It does not set up an ongoing equivalence
int davesAge = 21;
int suesAge = davesAge;
davesAge = 22;
System.out.println (davesAge); // prints 22
System.out.println (suesAge); // prints 21
CSC 1051 M.A. Papalaskari, Villanova University
Increment and Decrement
• The increment operator (++) adds one to its operand
• The decrement operator (--) subtracts one from its
operand
• The statement
count++;
is functionally equivalent to
count = count + 1;
CSC 1051 M.A. Papalaskari, Villanova University
CONSTANTS: like variables, but value
cannot change – declare using final
modifier:
final int INCHES_PER_FOOT = 12;
final double LBS_PER_KG = 2.2;
Convention: Use UPPER_CASE identifiers
CSC 1051 M.A. Papalaskari, Villanova University
Variables & Assignment SUMMARY
• Variable. A name that refers to a value of declared type.
• Literal. Programming language representation of a value.
• Assignment statement. Associates a value with a variable.
type variable
int age; declaration statement
literal
age = 18; assignment statement
double x = 3.2, y = -0.80;
combined declaration and assignment statement
final int INCHES_PER_FOOT = 12;
constant declaration (always initializes value)
String name = scan.nextLine();
input from user
CSC 1051 M.A. Papalaskari, Villanova University