2. ALGORITHMS, FLOWCHARTS, DATA
TYPES
AND PSEUDOCODE
2.1
ALGORITHMS
The
term algorithm originally referred to any computation performed via a
set of rules applied to numbers written in decimal form. The word is derived
from the phonetic pronunciation of the last name of Abu Ja'far Mohammed ibn
Musa al-Khowarizmi, who was an Arabic mathematician who invented a set of
rules for performing the four basic arithmetic operations (addition,
subtraction, multiplication and division) on decimal numbers.
An
algorithm is a representation of a solution to a problem. If a problem can be
defined as a difference between a desired situation and the current situation
in which one is, then a problem solution is a procedure, or method, for
transforming the current situation to the desired one. We solve many such
trivial problems every day without even thinking about it, for example making
breakfast, travelling to the workplace etc. But the solution to such problems
requires little intellectual effort and is relatively unimportant. However, the
solution of a more interesting problem of more importance usually involves
stating the problem in an understandable form and communicating the solution to
others. In the case where a computer is part of the means of solving the
problem, a procedure, explicitly stating the steps leading to the solution,
must be transmitted to the computer. This concept of problem solution and
communication makes the study of algorithms important to computer science.
Throughout
history, man has thought of ever more elegant ways of reducing the amount of
labour needed to do things. A computer has immense potential for saving
time/energy, as most (computational) tasks that are repetitive or can be
generalised can be done by a computer. For a computer to perform a desired
task, a method for carrying out some sequence of events, resulting in
accomplishing the task, must somehow be described to the computer. The
algorithm can be described on many levels because the algorithm is just the procedure
of steps to take and get the result. The language used to describe an algorithm
to other people will be quite different from that which is used by the
computer, however the actual algorithm will in essence be the same. An example
of an algorithm people use would be a recipe to make a cake.
"4
extra large eggs, beaten 1&1/2 C. stock
1/2 teaspoon
salt 1 scallion, minced
1 C. small shrimp or lobster flakes
1 t. soy sauce
1 Tablespoon oil
1.
Mix all the ingredients, except the oil, in a deep bowl.
MT
512: Programming Design Page no: 6
3.
Cover
pot tightly and steam 15 min.
4.
Heat
oil very hot and pour over custard.
5.
Steam 5 more min. Serves 4
people"
This
breaks down 'Making Chinese egg custard' into smaller steps. To make the
product one still needs to know how to execute each of the steps in the
procedure and understand all of the terms.
Definition:
A
procedure is a finite sequence of well-defined instructions, each of
which can be mechanically carried out in a finite amount of time.
The
procedure must break up the problem solution into parts that the recipient
party can understand and execute. In the case of a computer, the problem
solution is usually in the form of a program that encompasses the algorithm and
explains to the computer a clearly defined procedure for achieving the
solution. The procedure must consist of smaller steps each of which the
computers understand. There may be no ambiguities in the translation of the
procedure into the necessary action to be taken. A program is then just a
specific realisation of an algorithm, which may be executed on a physical
device.
A
computer is essentially a physical device designed to carry out a collection of
primitive actions. A procedure is a sequence of instructions written in terms
of which evoke a proper operation. To make effective use of an algorithm on a
computer one must not only find and understand a solution to the problem but
also convey the algorithm to the computer, giving the correct sequence of
understood commands that represent the same algorithm.
Definition:
An
algorithm is procedure consisting of a finite set of unambiguous rules
(instructions) which specify a finite sequence of operations that provides the
solution to a problem, or to a specific class of problems for any allowable set
of input quantities (if there are inputs). In other word, an algorithm
is a step-by-step procedure to solve a given problem
Alternatively,
we can define an algorithm as a set or list of instructions for carrying out
some process step by step. A recipe in a cookbook is an excellent example of an
algorithm. The recipe includes the requirements for the cooking or ingredients
and the method of cooking them until you end up with a nice cooked dish.
In
the same way, algorithms executed by a computer can combine millions of
elementary steps, such as additions and subtractions, into a complicated
mathematical calculation. Also by means of algorithms, a computer can control a
manufacturing process or co-
MT
512: Programming Design Page no: 7
ordinate
the reservations of an airline as they are received from the ticket offices all
over the country. Algorithms for such large-scale processes are, of course,
very complex, but they are built up from pieces.
One
of the obstacles to overcome in using a computer to solve your problems is that
of translating the idea of the algorithm to computer code (program). People
cannot normally understand the actual machine code that the computer needs to
run a program, so programs are written in a programming language such as C or
Pascal, which is then converted into machine code for the computer to run.
In
the problem-solving phase of computer programming, you will be designing
algorithms. This means that you will have to be conscious of the strategies you
use to solve problems in order to apply them to programming problems. These
algorithms can be designed though the use of flowcharts or pseudocode.
2.2 FLOWCHARTS
Flowcharting
is
a tool developed in the computer industry, for showing the steps involved
in a process. A flowchart is a diagram made up of boxes, diamonds
and other shapes, connected by arrows - each shape represents a step in
the process, and the arrows show the order in which they occur. Flowcharting
combines symbols and flowlines, to show figuratively the operation of an
algorithm.
In
computing, there are dozens of different symbols used in flowcharting (there
are even national and international flowcharting symbol standards). In business
process analysis, a couple of symbols are sufficient. A box with text inside
indicates a step in the process, while a diamond with text represents a decision
point. See the figure for an example.
If
the flowchart is too messy to draw, try starting again, but leaving out all of
the decision points and concentrating on the simplest possible course. Then the
session can go back and add the decision points later. It may also be useful to
start by drawing a high-level flowchart for the whole organisation, with each
box being a complete process that has to be filled out later.
From
this common understanding can come a number of things - process improvement ideas
will often arise spontaneously during a flowcharting session. And after the
session, the facilitator can also draw up a written procedure - a flowcharting
session is a good way of documenting a process.
Process
improvement starts with an understanding of the process, and flowcharting is
the first step towards process understanding.
MT
512: Programming Design Page no: 8
General Rules
for flowcharting
- All boxes of the flowchart
are connected with Arrows. (Not lines)
- Flowchart symbols have an
entry point on the top of the symbol with no other entry points. The exit
point for all flowchart symbols is on the bottom except for the Decision
symbol.
- The Decision
symbol has two exit points; these can be on the sides or the bottom and
one side.
MT
512: Programming Design Page no: 9
- Generally
a flowchart will flow from top to bottom. However, an upward flow can be
shown as long as it does not exceed 3 symbols.
- Connectors are used to
connect breaks in the flowchart. Examples are:
•
From
one page to another page.
•
From
the bottom of the page to the top of the same page.
•
An
upward flow of more then 3 symbols
- Subroutines and Interrupt
programs have their own and independent flowcharts.
- All flow charts start with a
Terminal or Predefined Process (for interrupt programs or subroutines)
symbol.
- All flowcharts end with a
terminal or a contentious loop.
Flowcharting
uses symbols that have been in use for a number of years to represent the type
of operations and/or processes being performed. The standardised format
provides a common method for people to visualise problems together in the same
manner. The use of standardised symbols makes the flow charts easier to
interpret, however, standardising symbols is not as important as the sequence
of activities that make up the process.
Flowcharting
Tips
•
Chart the process the way it is really
occurring. Do not document the way a written process or a manager thinks the
process happens.
•
People typically modify existing
processes to enable a more efficient process. If the desired or theoretical
process is charted, problems with the existing process will not be recognised
and no improvements can be made.
Note all
circumstances actually dealt with.
•
Test the flow chart by trying to follow
the chart to perform the process charted. If there is a problem performing the
operation as charted, note any differences and modify the chart to correct. A
better approach would be to have someone unfamiliar with the process try to
follow the flow chart and note questions or problems found.
•
Include mental steps in the process such
as decisions. These steps are sometimes left out because of familiarity with
the process, however, represent sources of problems due to a possible lack of
information used to make the decision can be inadequate or incorrect if
performed by a different person.
Examples of
Algorithms and Flowcharts
Example
1. Design
an algorithm and the corresponding flowchart for adding the test scores
as given below:
26, 49, 98, 87, 62, 75
MT
512: Programming Design Page no: 10
a) Algorithm
1.
Start
2.
Sum
= 0
3.
Get
the first testscore
4.
Add
first testscore to sum
5.
Get
the second testscore
6.
Add
to sum
7.
Get
the third testscore
8.
Add
to sum
9.
Get
the Forth testscore
10.
Add
to sum
11.
Get
the fifth testscore
12.
Add
to sum
13.
Get
the sixth testscore
14.
Add
to sum
15.
Output
the sum
16.
Stop
The
algorithm and the flowchart above illustrate the steps for solving the problem
of adding six testscores. Where one testscore is added to sum at a time. Both
the algorithm and flowchart should always have a Start step at the
beginning of the algorithm or flowchart and at least one stop step at
the end, or anywhere in the algorithm or flowchart. Since we want the sum of
six testscore, then we should have a container for the resulting sum. In this
example, the container is called sum and we make sure that sum should
start with a zero value by step 2.
MT
512: Programming Design Page no: 12
Example 2: The problem with this
algorithm is that, some of the steps appear more than once, i.e. step 5
get second number, step 7, get third number, etc. One could shorten the
algorithm or flowchart as follows:
1.
Start
2.
Sum
= 0
3.
Get
a value
4.
sum
= sum + value
5.
Go
to step 3 to get next Value
6.
Output
the sum
7.
Stop
This
algorithm and its corresponding flowchart are a bit shorter than the first one.
In this algorithm, step 3 to 5 will be repeated, where a number is obtained and
added to sum. Similarly the flowchart indicates a flowline being drawn back to
the previous step indicating that the portion of the flowchart is being
repeated. One problem indicates that these steps will be repeated endlessly,
resulting in an endless algorithm or flowchart. The algorithm needs to
be improved to eliminate this problem. In order to solve this problem, we need
to add a last value to the list of numbers given. This value should be unique
so that, each time we get a value, we test the value to see if we have reached
the last value. In this way our algorithm will be a finite algorithm which ends
in a finite number of steps as shown below. There are many ways of making the
algorithm finite.
The
new list of numbers will be 26, 49, 498, 9387, 48962, 1, -1. The value –1 is a
unique number since all other numbers are positive.
1.
Start
2.
Sum
= 0
3.
Get
a value
MT
512: Programming Design Page no: 13
5.
Add
to sum ( sum = sum + value)
6.
Go
to step 3 to get next Value
7.
Output
the sum
8.
Stop
Corresponding flowchart
3. DATA TYPES
Although some contemporary languages
allow programmers to invent his own data types, and define their related
operations, there are a number of traditional data types found in most
languages:
Integer
Integers are numeric data items, which
are either positive or negative including zero, i.e. 1, 488, -22, 0, 456. Some
programming languages put restrictions on the magnitude of integers which may
be used in program instructions. These restrictions are usually dependent on
the size of the memory location of the computer in which the language may run.
MT
512: Programming Design Page no: 14
There are two
types of real numbers, Fixed-Point and Floating Point.
Fixed Point
Fixed
point data items are numbers which have embedded decimal point i.e. 1.5,
458.4589, -0.569.
Floating Point
Floating
point data items are numbers, which are, held as binary fractions by a
computer. The numbers are expressed in a form where you have a mantissa and an
exponent, for example
Number
|
|
* 102
|
Mantissa
|
Exponent
|
|
12.3
|
= 0.123
|
0.123
|
2
|
|
|
123000
|
=
0.123
|
* 106
|
0.123
|
6
|
|
0.000123 =0.123
|
* 10-3
|
0.123
|
-3
|
|
Floating
point representation of data is used to overcome the restrictions placed on the
magnitude of numbers by the size of computer’s memory locations.
Character
Character
data, sometimes referred to as “string” data, may consist of any digits,
letters of the alphabet or symbols which, the internal coding system of the
computer is capable of representing. Many programming languages require
character data to be enclosed by quotation marks when used in program instructions,
for example PRINT “HAPPY NEW YEAR”.
Boolean
Boolean
data items are used as status indicators and may contain only one of two
possible values: True or False.
DATA ITEM
There are two
basic methods of using data items in a program:
a)
Constants
Data
items are sometimes required to keep their values throughout the program, hence
the term constant. A constant is a specific value or character string used
explicitly in an operation. Consider the constant values 47.5, 1, and 13 in the
example below.
Multiply … by 47.5
Add 1 to …
If … = 13
Print “PLEASE INPUT TODAY’S DATE”
MT
512: Programming Design Page no: 15
b)
Variables and Variable names
A
variable is a symbolic name assigned to a data item by the programmer. At any
particular time, a variable will stand for one particular data, called the
value of a variable, which may change from time to time during a computing
process. The value of a variable may change many times during the execution of
a program. A variable is usually given a name by the programmer.
Assignment
The assignment operation has the form: variable :=
expression. (Pascal) variable = expression. (C/C++/Java)
The assignment operation is used to assign a name to
a value. Thus it is used whenever you need to keep track of a value that is
needed later. Some typical uses include:
•
initialize
a variable ( count = 0 )
•
increment/decrement
a counter ( count = count + 1 )
•
accumulate
values ( sum = sum + item )
•
capture
the result of a computation ( y = 3*x + 4 )
•
swap
two values ( t = x; x = y; y = t )
The
assignment operator is not commute i.e. x = e is not the same as e = x. The
variable must be declared. Variables used in the expression must be defined
(have values). The type of the expression must be compatible with the type of
the variable.
The
order in which assignments are performed is important for example, if the first
and second assignments in the swap sequence were interchanged, x and y would
end up assigned to the same value. The input operation and the output operation
share some of the same constraints.
2.5 PSEUDOCODE
Pseudocode
is
one of the tools that can be used to write a preliminary plan that can be developed
into a computer program. Pseudocode is a generic way of describing an
algorithm without use of any specific programming language syntax. It is, as
the name suggests, pseudo code —it cannot be executed on a real
computer, but it models and resembles real programming code, and is written at
roughly the same level of detail.
Pseudocode,
by nature, exists in various forms, although most borrow syntax from popular
programming languages (like C, Lisp, or FORTRAN). Natural
language is used whenever details are unimportant or distracting.
MT
512: Programming Design Page no: 16
Computer
science textbooks often use pseudocode in their examples so that all
programmers can understand them, even if they do not all know the same
programming languages. Since pseudocode style varies from author to author,
there is usually an accompanying introduction explaining the syntax used.
In
the algorithm design, the steps of the algorithm are written in free English
text and, although brevity is desired, they may be as long as needed to describe
the particular operation. The steps of an algorithm are said to be written in
pseudocode.
Many
languages, such as Pascal, have a syntax that is almost identical to pseudocode
and hence make the transition from design to coding extremely easy.
The
following section deal with the control structures (control constructs)
Sequence, Selection and Iteration or Repetition.
CONTROL
STRUCTURES OR LOGICAL STRUCTURES
The
key to better algorithm design and thus to programming lies in limiting the
control structure to only three constructs. These are illustrated below:
The sequence
structure
The
first type of control structures is called the sequence structure. This
structure is the most elementary structure. The sequence structure is a case
where the steps in an algorithm are constructed in such a way that, no
condition step is required. The sequence structure is the logical equivalent of
a straight line.
For example, suppose you are required to design an
algorithm for finding the average of six numbers, and the sum of the numbers is
given. The pseudocode will be as follows
Start
Get the sum
Average = sum / 6
Output the average
Stop
The
corresponding flowchart will appear as follows:
MT
512: Programming Design Page no: 17