Im Programming Logic and Design
Im Programming Logic and Design
FIRST TERM
ACADEMIC YEAR 2024 – 2025
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
OVERVIEW
TYPES OF PROGRAMMING
Low-level Languages – These are the languages that deal with a computer’s hardware
components. There are two (2) common low-level languages: machine language and
assembly language.
• Machine Language – It is the language that the computer can directly understand. It
is the most basic set of instructions that the computer can execute. Machine
language programs are written in binary codes (0, 1).
• Assembly Language – It is a symbolic form of machine language that is easier for
people to read, such as ADD AX DX. This makes use of instructions in mnemonic
form.
• Assembler – a program that translates assembly language instructions
into machine language.
High-level Languages – These are the programming languages that use natural languages,
such as the English language. A high-level language has its own syntax.
2|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
• Syntax – rules of the language, for example, print or write is used to produce an
output.
• Commands – these are program statements that carry out tasks that the program
has to perform, for example, print this word or add these two (2) numbers.
• Compiler – it is a program that translates a program written in a high-level language
into a low-level language before executing the program statements.
• Interpreter – this acts as a compiler, but it translates one (1) program statement at a
time, this executes the statement as soon as it is translated.
• Syntax errors – these are errors that might be encountered during the process of
translation. An example is a misspelled command.
• Logical errors – errors that occur when the syntax of the program is correct, but the
expected output is not.
• Debugging – the process of locating and correcting the errors of a program.
PROGRAMING CYCLE
The problem-solving process in the programming environment involves the following steps:
1. Problem Analysis: Analyze the problem and outline the problem and its solution
requirements.
2. Algorithm Design: Design an algorithm to solve the problem.
3. Coding: Implement the algorithm in a programming language.
4. Execution: Verify that the algorithm works.
3|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
To develop a program that solves a problem, start first by analyzing the problem, then
outlining the problem and the options for a solution. Then design the algorithm, write the
program instructions, and enter the program into a computer system.
ALGORITHM
An algorithm must be expressed completely in a natural language that anyone can follow,
such as directions that can be written in the English language. The computer programmer
lists down all the steps required to resolve a problem before writing the actual code.
Example 1:
Design an algorithm that finds and displays the volume of a rectangle. It is required to know
the rectangle’s length, width, and height, and the formula to know the rectangle’s volume.
The formula is volume = length × width × height.
The algorithm to find and display the volume of the rectangle is:
Example 2:
Example 3:
4|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
• Pseudocode
• Flowchart
PSEUDOCODE
The following are some rules that are frequently followed when writing pseudocode:
Example 1:
The pseudocode to find and display the volume of the rectangle is:
START
INITIALIZE length =0; width =0; height = 0; volume = 0;
READ length / INPUT length
READ width / INPUT width
READ height / INPUT height
VOLUME = length*width*height or volume <- length*width*height
PRINT volume / DISPLAY volume
END
Example 2:
Write the pseudocode to read two numbers and find their sum.
5|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
START
INITIALIZE firstnum=0; secondnum=0; sum=0;
READ firstnum
READ secondnum
sum = firstnum + secondnum or sum <- fistnum + secondnum
DISPLAY sum
END
Example 3:
START
INITIALIZE fah=0; cel=0
READ fah
cel = 5/9 * (fah-32) or cel <- 5/9 * (fah-32)
DISPLAY cel
END
Example 4:
Write the pseudocode to find the greater number between two numbers
START
INITIALIZE num1=0, num2=0, ans = 0
INPUT num1
INPUT num2
If (num1 > num2) then ans= num1
If (num2 > num1) then ans = num2
DISPLAY ans
END
FLOWCHART
Flowchart shapes represent various operations. These shapes are connected by directed
lines to indicate the flow of data or control from one (1) point to another. Table 1 shows the
often-used shapes in a flowchart.
6|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
Example 1:
7|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
Example 2:
Show the flowchart to find the greater number between two numbers
PROGRAMMING METHODOLOGIES
Programming methodology – is the approach to analyzing such complex problems by
planning software development and controlling the development process. There are two
(2) popular approaches to writing computer programs:
Procedural Programming – in this approach, the problem is broken down into functions
that perform one (1) task each. This approach is suitable only for small programs that have
a low level of complexity.
Object-Oriented Programming – in this approach, programs are organized around
objects rather than actions, and data rather than logic. The solution revolves around
entities or objects that are part of the problem. It deals with how to store data related to
the entities, how the entities behave, and how they interact with each other to give the
desired result.
8|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
Baesens, B., Backiel, A., & Broucke, S. (2015). Beginning java programming: The object-
oriented approach. Indiana: John Wiley & Sons, Inc.
Farrell, J. (2014). Java programming, 7th edition. Boston: Course Technology, Cengage
Learning.
Savitch, W. (2014). Java: An introduction to problem solving and programming, 7th edition.
California: Pearson Education, Inc.
9|Page
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
An environment that translates Java bytecode (compiled format for Java programs)
into machine language and executes it.
SOURCE CODE
DEVELOPMENT ENVIRONMENT
A set of tools that help write programs easily, such as NetBeans. The statements are
saved in a file. Then, the Java compiler converts the source code into a binary program of
bytecode. The Java interpreter then checks the bytecode and communicates with the
operating system, executing the bytecode instructions line by line within the Java Virtual
Machine.
10 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
The FirstJavaProgram is a class name. A class is the basic unit of a Java program. All
Java codes are grouped into a class. The definition of the class starts with an access modifier
11 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
(such as public), which specifies the accessibility of classes, followed by the keyword class.
Every class definition is enclosed within pair of curly brackets or braces ( { and } ). These
braces mark the beginning and the end of the class.
The main method is a special method and is the entry point of the program execution.
A Java class can only have one (1) main method. In the example Java program, it contains
only one (1) programming statement or command: System.out.println(“First Java
Application”);. A statement is an action that the program must perform.
A literal string is a series of characters that appear exactly as entered. Any literal
string in Java appears between double quotation marks. Arguments are information passed
to a method so it can perform its task.
RESERVED WORDS
Reserved words or keywords have special predefined meaning and cannot be used
in naming variables, classes, methods, or identifiers. The Java language designates certain
keywords that the compiler recognizes as reserved words. The following table lists all the
reserved words in Java.
12 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
The main method is a special method in every Java application. When executing a
Java program, execution always begins with the method main. All Java applications must
include a class containing one (1) main method.
The basic parts of the main method are the heading and the body:
Here are descriptions of the meaning and purpose of the terms used in the method heading:
• The public keyword is an access modifier. The method heading should be public for
the Java interpreter to call it and to run the class.
• Static keywords mean that a method is accessible and usable.
• The void keyword indicates that the main method does not return any value when it
is called.
• The name of the method is the main. When executing a Java application, the JVM
always executes the main method first.
• The contents between the parentheses of the main method, which is String[] args,
represent the type of argument that can be passed to the main method.
COMMENTS
Comments are used to explain the details in a program. These are notes that a
programmer writes to a program to help another person to understand the program.
Comments are ignored by the compiler, meaning they are not executed when the Java
programs run.
• Single-line comments – these are comments that begin with // and can be placed
anywhere in the line.
• Example:
System.out.println(“Welcome to Java.”); //prints Welcome to Java.
/*
Program that converts Kilogram to Gram
*/
public class KiloToGram
13 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
Packages – these are collections of related classes that have been grouped together
into a folder. The name of the folder is the name of the package and begins with lowercase
letters. The classes in the package are each placed in a separate file, and the file name
begins with the name of the class.
import – this is a reserved keyword in Java used to access the classes in a package.
There are two (2) common ways on how to use the import statement:
• Importing a package member: To import a specific class into the current file, follow
the following syntax:
import package_name.Class_name;
Example:
import java.util.Date;
import package_name.*;
Example:
import java.util.*;
When importing packages, all the import statements must appear before the class
declaration.
INPUT
Scanner – a class in the java.util package. The methods of this class are used to read
data from the standard input device and store data into variables.
To use the methods of Scanner in a computer program, first, import the class using
the following statements:
Then create an object of the Scanner class and associate it with the standard input
device. Below is a sample statement.
• The Scanner input part declares an object of Scanner type named input. The object
name can be any declared name by a programmer.
14 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
The Scanner class contains methods that retrieve values from an input device. Each
retrieved value is a token, which is a set of characters separated from the next set of
whitespaces.
Shown below lists the commonly used methods of the Scanner class that read different
data types from the standard input device. Each retrieves a value from the keyboard and
returns it if the next token is a correct data type; otherwise, the method will throw an
exception.
OUTPUT
Java provides some simple output statements to send output to the standard
output device, the display screen. Examples of these output statements are the following:
System.out.print(“This is a text.”);
and
System.out.println(“This is a text.”);
• The print() method displays an output, and the insertion point stays in the
current line.
• The println() method moves the insertion point to the following line after
the output is displayed.
When displaying a string with variables, simply concatenate them using the plus (+)
sign. For example:
and
int kilo = 2;
The output of print and println methods are in the format of strings.
15 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
Java provides a variety of primitive data types such as byte, short, int, long, float,
double, boolean, and char, which are the fundamental building blocks for storing and
managing values in programs. Variables in Java are memory locations that store values and
can be modified during program execution, while constants have fixed values that cannot
change. Java also supports type casting, which allows converting values between data
types. Widening conversion (implicit) safely increases data type precision, while narrowing
conversion (explicit) may cause data loss and requires explicit instructions from the
programmer using the cast operator. Understanding how to manage data types, variables,
constants, and type casting is crucial for efficient Java programming.
Data type – used to specify the set of values and their operations. The values have
data types because they are stored in memory in the same format and have the same
operations defined for them.
Primitive data types – the fundamental data types in Java. These are predefined data
types by the language and named by a keyword.
Java supports eight (8) built-in primitive data types shown below. The hierarchy of
integer data type and floating-point numbers of data type are from the lowest precision to
highest precision.
16 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
• byte – The byte data type can be useful for saving memory space in large arrays.
Example variable declaration: byte b = 100;
• short – The short data type is also useful for saving memory space in large arrays.
Example variable declaration: short s = 1400;
• int – This data type is generally used as the default data type for integral values unless
there is a concern about memory space. Example variable declaration: int a = 12400;
• long – This data type is used when a wider range than int is needed. Example
declaration: long a = 124000L;
• float – The float data type is also used to save memory in large arrays of floating-point
numbers. Example variable declaration: float f1 = 234.5f;
• double – For decimal values, this data type is generally the default data type.
Example variable declaration: double d1 = 234.5d; or double d1 = 234.5;
• boolean – The Boolean data type has only two (2) possible values: true or false. This
is used for simple flags that track true/false conditions. Example variable
declaration: Boolean is Correct = true;
• char – The char data type is used to store a single character. In Java, the character is
enclosed in single quotes. Example variable declaration: char letter = ‘A’;
Java programming language also provides special support for character strings using
the java.lang.String class. The String class is not technically a primitive data type.
Variable is a name for a memory location that stores a specific value, such as
numbers and letters. A variable is an identifier. It can hold only one (1) value at a time, but
its value may change during program execution. For example, a created variable named
score holds a value of 0 when the program starts and was altered during program execution
to hold the value of 350. To use a variable, it must be declared first. The basic form of a
variable declaration is:
The data_type is one (1) of Java’s data types and variable_name is the name of the variable.
To declare more than one (1) variable of the specified type, use a comma-separated list. The
following are some valid examples of variable declaration and initialization in Java:
int x = a + 5; byte b;
17 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
Java variables are implemented as memory locations. Each variable is assigned one
(1) memory location. When the variable is given a value, the value is enclosed as a string of
0s and 1s and is placed in the variable’s memory location.
When a created variable is stored in the memory, Java uses a named constant to instruct a
program to mark the memory location as constant throughout program execution. To
allocate memory, use Java’s declaration statements. The syntax to declare a named
constant is:
The final is a Java reserved word. This keyword is used to specify that the value stored in the
variable_name is fixed and cannot be changed. The following are some valid examples of
named constant declaration and initialization in Java:
TYPE CASTING
Type casting – this refers to converting a value from a specific type to a variable of another
type (note: booleans cannot be converted to numeric types).
• Widening conversion (implicit casting) – the conversion of the lower precision data
type to a value of a higher precision data type. This causes no loss of information, and
the casting will be performed by the Java Virtual Machine (JVM) implicitly or
automatically.
For example, an int variable x with value 4 to a higher-order double data type without
loss of information
int x = 4;
18 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
The following is an example of Java’s strict type checking. The code will not compile,
and an error will be generated:
float x = 6.82f;
The casting is not done by JVM and should be made explicit by the programmer
through a cast operator. The cast operator takes the following form:
(data_type_name) expression.
First, the expression is evaluated. Its value is then treated as a value of the type
specified by data_type_name. The following is the example of explicit casting:
float x = 6.82f;
The conversion is done from higher-order data type to lower-order data type as
follows:
When using the cast operator to treat a floating-point number as an integer, the
decimal part of the floating-point number is dropped. The following examples show
how cast operators work:
19 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
--------------------------------------------------------------------------------------------------
REFERENCE:
Baesens, B., Backiel, A., & Broucke, S. (2015). Beginning java programming: The object-
oriented approach. Indiana: John Wiley & Sons, Inc.
Farrell, J. (2014). Java programming, 7th edition. Boston: Course Technology, Cengage
Learning.
Savitch, W. (2014). Java: An introduction to problem solving and programming, 7th edition.
California: Pearson Education, Inc.
20 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
CHAPTER 4: OPERATORS
OVERVIEW
Operators in Java are symbols that direct the compiler or interpreter to execute
specific mathematical, relational, logical, or assignment operations. These operators
manipulate data values (operands) to produce results, such as performing arithmetic
calculations, evaluating relationships between values, making logical decisions, or
assigning values to variables. Java also includes operator precedence rules, determining the
order in which operations are performed, which can be overridden using parentheses.
OPERATORS
These are specific symbols in a programming language. These symbols tell the compiler or
interpreter of the program to perform a specific mathematical, relational, or logical
operation and produce the result.
ARITHMETIC OPERATORS
Are used to perform basic mathematical operations on numerical values. A value used on
either side of an operator is an operand.
21 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
The operators (/) and (%) have special considerations. Java supports two (2) types of
division:
• Floating-point division occurs when either or both of the operands are floating-point
values and the result is a floating-point value. For example: int x = 11; double y = 3;
System.out.println( x / y ); //the output is 3.66
• Integer division occurs when both operands are integers. The result is an integer,
and any factorial part of the result is lost. For example: int x = 11; int y = 3;
System.out.println( x / y ); //the output is 3
RELATIONAL OPERATORS
Used to evaluate the relation between the operands and generate a decision on that base.
These typically return a Boolean value.
For example, a relational operator is used to compare the scores of two (2) students
(score1> score2) or (score1 < score2).
For example: boolean b = 10 > 2; //the expression 10 > 2 is evaluated and the result is true
and assigned to the variable b.
LOGICAL OPERATORS
Return a Boolean value based on the Boolean result of the given expressions. Logical
operators are always evaluated from left to right.
For example, the expression (3 > 2) && (2 < 3) has a return value of true. The relational
expressions were evaluated first, and then its Boolean results are used to evaluate the
logical expression with logical AND (&&) operator.
Assume the following variable declarations: boolean A = 3 > 2; boolean B = 2 < 1;. The value
of Boolean variable A as the expression is evaluated is true and variable B is false.
22 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
ASSIGNMENT OPERATORS
These are used to assign values to a variable. The left operand gets the value of the
expression on the right.
23 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
ORDER OF PRECEDENCE
Certain operators have higher precedence than others. For example, the multiplication
operator has higher precedence than the addition operator: int x = 10 + 3 * 8. In this
expression, variable x is assigned 34 because the operator (*) has higher precedence than
operator (+), so 3 gets multiplied by 8 first, and then 10 is added to the product. Table 5 lists
the operators used in Java from highest to lowest precedence.
When operators of equal precedence appear in the same expression, a rule must govern,
which is evaluated first. In the expression, all binary operators, except assignment
operators, are evaluated from left to right. To avoid confusion, programmers used
parentheses to group expressions.
Precedence rules can be overridden by explicit parentheses (). These can be used to group
items in an expression. Parentheses are used to tell the computer which operations to
perform first. For example, consider the first and second statements with different
positioning of their parentheses:
To evaluate the expression in the second statement, the computer first adds variables a and
b and then multiplies the result by variable c. To evaluate the expression in the third
24 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
statement, it multiplies variables b and c and then adds the result to variable a. When these
two (2) expressions are evaluated, they produce different results.
--------------------------------------------------------------------------------------------------
REFERENCES:
Baesens, B., Backiel, A., & Broucke, S. (2015). Beginning java programming: The object-
oriented approach. Indiana: John Wiley & Sons, Inc.
Farrell, J. (2014). Java programming, 7th edition. Boston: Course Technology, Cengage
Learning.
Savitch, W. (2014). Java: An introduction to problem solving and programming, 7th edition.
California: Pearson Education, Inc.
25 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
CHAPTER 5: EXPRESSIONS
OVERVIEW
Expressions in Java are constructs made up of variables and operators that evaluate
to a single value, which can be numeric, Boolean, or a String. Java supports different types
of expressions, including arithmetic expressions that return numeric values (integral and
floating-point), mixed expressions that involve both integers and floating-point values, and
logical expressions that evaluate to Boolean values. These expressions follow specific rules
for operator precedence, especially when dealing with mixed data types or logical
operations, and parentheses can be used to group expressions and control the order of
evaluation.
A construct made up of variables and operators that evaluate to a single value. For example,
11 + 13 and x = 12 are expressions. An expression can also return to other types of values,
such as Boolean or String.
ARITHMETIC EXPRESSIONS
• Integral expression – If all operands in an expression are integers and the expression
returns an integer type value, the expression is an integral expression. For example:
y = 2.8 * 17.5 – 1.40 //the result is a floating-point and the value is 47.6
MIXED EXPRESSION
An expression that has operands of different data types. These contain both integers and
26 | P a g e
POLYTECHNIC UNIVERSITY OF THE PHILIPPINES
SANTA MARIA, BULACAN CAMPUS
Km. 38, Sitio Gulod, Pulong Buhangin, Santa Maria, Bulacan
floating-point numbers and return a floating-point number. For example, 11.5 + 3 * 2.25
and 6 / 4 + 3.9 have an integer type operand and a floating-point operand.
There are two (2) rules to apply when evaluating mixed expressions:
Rule 1. If the operator has the same types of operands, the operator is evaluated according
to the type of operand.
For example:
Rule 2. If the operator has both types of operands, during calculation, the integer is treated
temporarily as a floating-point number, and the final result is a floating-point number.
For example:
LOGICAL EXPRESSIONS
An expression that returns a Boolean value when evaluated. These expressions can consist
of logical operators and relational expressions. Logical operators have low precedence and
are evaluated after other operations have been evaluated.
If two (2) or more logical operators appear in an expression, the expression is evaluated from
left to right.
For example, the expression 3 > 3 || 4 < 2 && 12 > 3 || 4 < 5 evaluates to true.
Parentheses are used to group expressions and to control the operators in the expression.
For example, (3 > 3 || 4 < 2) && (12 > 3 || 4 < 5) evaluates to false.
--------------------------------------------------------------------------------------------------
REFERENCES:
Baesens, B., Backiel, A., & Broucke, S. (2015). Beginning java programming: The object-
oriented approach. Indiana: John Wiley & Sons, Inc.
Farrell, J. (2014). Java programming, 7th edition. Boston: Course Technology, Cengage
Learning.
Savitch, W. (2014). Java: An introduction to problem solving and programming, 7th edition.
California: Pearson Education, Inc.
27 | P a g e