Chapter 1 - Computer Programming
Chapter 1 - Computer Programming
In order to solve a given problem, computers must be given the correct instruction about
how they can solve it. The terms computer programs, software programs, or just
programs are the instructions that tells the computer what to do. Computer requires
programs to function, and a computer programs does nothing unless its instructions are
executed by a CPU. Computer programming (often shortened to programming or
coding) is the process of writing, testing, debugging/troubleshooting, and maintaining the
source code of computer programs. Writing computer programs means writing instructions,
that will make the computer follow and run a program based on those instructions. Each
instruction is relatively simple, yet because of the computer's speed, it is able to run
millions of instructions in a second. A computer program usually consists of two elements:
Data – characteristics
Code – action
Computer programs (also know as source code) is often written by professionals known as
Computer Programmers (simply programmers). Source code is written in one of
programming languages. A programming language is an artificial language that can be
used to control the behavior of a machine, particularly a computer. Programming
languages, like natural language (such as Amharic), are defined by syntactic and semantic
rules which describe their structure and meaning respectively. The syntax of a language
describes the possible combinations of symbols that form a syntactically correct program.
The meaning given to a combination of symbols is handled by semantics. Many
programming languages have some form of written specification of their syntax and
semantics; some are defined only by an official implementation. In general, programming
languages allow humans to communicate instructions to machines.
Low-level languages
Computers only understand one language and that is binary language or the language of 1s
and 0s. Binary language is also known as machine language, one of low-level languages.
In the initial years of computer programming, all the instructions were given in binary
form. Although the computer easily understood these programs, it proved too difficult for a
normal human being to remember all the instructions in the form of 0s and 1s. Therefore,
computers remained mystery to a common person until other languages such as assembly
language was developed, which were easier to learn and understand. Assembly language
correspondences symbolic instructions and executable machine codes and was created to
use letters (called mnemonics) to each machine language instructions to make it easier to
remember or write. For example:
ADD A, B – adds two numbers in memory location A and B
Assembly language is nothing more than a symbolic representation of machine code, which
allows symbolic designation of memory locations. However, no matter how close assembly
language is to machine code, computers still cannot understand it. The assembly language
must be translated to machine code by a separate program called assembler. The machine
instruction created by the assembler from the original program (source code) is called
object code. Thus assembly languages are unique to a specific computer (machine).
Assemblers are written for each unique machine language.
High-level languages
Although programming in assembly language is not as difficult and error prone as stringing
together ones and zeros, it is slow and cumbersome. In addition it is hardware specific. The
lack of portability between different computers led to the development of high-level
languages—so called because they permitted a programmer to ignore many low-level
details of the computer's hardware. Further, it was recognized that the closer the syntax,
rules, and mnemonics of the programming language could be to "natural language" the less
likely it became that the programmer would inadvertently introduce errors (called "bugs")
into the program. High-level languages are more English-like and, therefore, make it easier
for programmers to "think" in the programming language. High-level languages also
require translation to machine language before execution. This translation is accomplished
by either a compiler or an interpreter. Compilers translate the entire source code program
before execution. Interpreters translate source code programs one line at a time. Interpreters
are more interactive than compilers. FORTRAN (FORmula TRANslator), BASIC (Bingers
All Purpose Symbolic Instruction Code), PASCAL, C, C++, Java are some examples of
high-level languages.
The question of which language is best is one that consumes a lot of time and energy
among computer professionals. Every language has its strengths and weaknesses. For
example, FORTRAN is a particularly good language for processing numerical data, but it
does not lend itself very well to organizing large programs. Pascal is very good for writing
well-structured and readable programs, but it is not as flexible as the C programming
language. C++ embodies powerful object-oriented features
As might be expected in a dynamic and evolving field, there is no single standard for
classifying programming languages. Another most fundamental ways programming
languages are characterized (categorized) is by programming paradigm. A programming
paradigm provides the programmer's view of code execution. The most influential
paradigms are examined in the next three sections, in approximate chronological order.
1.2.1 Pseudocode
Pseudocode (derived from pseudo and code) is a compact and informal high-level
description of a computer algorithm that uses the structural conventions of programming
languages, but typically omits detailes such as subroutines, variables declarations and
system-specific syntax. The programming language is augmented with natural language
descriptions of the details, where convenient, or with compact mathematical notation. The
purpose of using pseudocode is that it may be easier for humans to read than conventional
programming languages, and that it may be a compact and environment-independent
generic description of the key principles of an algorithm. No standard for pseudocode
syntax exists, as a program in pseudocode is not an executable program. As the name
suggests, pseudocode generally does not actually obey the synatx rules of any particular
language; there is no systematic standard form, although any particular writer will
generally borrow the appearance of a particular language.
The programming process is a complicated one. You must first understand the program
specifications, of course, Then you need to organize your thoughts and create the program.
This is a difficult task when the program is not trivial (i.e. easy). You must break the main
tasks that must be accomplished into smaller ones in order to be able to eventually write
fully developed code. Writing pseudocode will save you time later during the construction
& testing phase of a program's development.
Example:
Write a program that obtains two integer numbers from the user. It will print
out the sum of those numbers.
Pseudocode:
CelsusToFarh
(main func)
centigard Fahrenheit
centigard
1.2.3 Flowchart
A flowchart (also spelled flow-chart and flow chart) is a schematic representation of an
algorithm or a process . The advantage of flowchart is it doesn’t depend on any particular
programming language, so that it can used, to translate an algorithm to more than one
programming language. Flowchart uses different symbols (geometrical shapes) to
represent different processes. The following table shows some of the common symbols.
Example 1: - Draw flow chart of an algorithm to add two numbers and display their result.
Algorithm description
Read the rules of the two numbers (A and B)
Add A and B
Assign the sum of A and B to C
Display the result ( c)
The flow chart is:
Start
Read A, B
C= A+B
Print C
End
Example 2: Write an algorithm description and draw a flow chart to check a number is
negative or not.
Algorithm description.
1/ Read a number x
2/ If x is less than zero write a message negative
else write a message not negative
Some times there are conditions in which it is necessary to execute a group of statements
repeatedly. Until some condition is satisfied. This condition is called a loop. Loop is a
sequence of instructions, which is repeated until some specific condition occurs. A loop
normally consists of four parts. These are:
Initialization: - Setting of variables of the computation to their initial values and setting the
counter for determining to exit from the loop.
Computation: - Processing
Test: - Every loop must have some way of exiting from it or else the program would
endlessly remain in a loop.
Increment: - Re-initialization of the loop for the next loop.
Example 3: - Write the algorithmic description and draw a flow chart to find the following
sum.
Sum = 1+2+3+…. + 50
Algorithmic description
1. Initialize sum too and counter to 1
1.1.If the counter is less than or equal to 50
2. Write sum
1.3 System Development Life Cycle (SDLC)
The Systems Development Life Cycle (SDLC) is a conceptual model used in project
management that describes the stages involved in a computer system development project
from an initial feasibility study through maintenance of the completed application. The
phases of SDLC is discussed below briefly.
The first step is to identify a need for the new system. This will include determining
whether a business problem or opportunity exists, conducting a feasibility study to
determine if the proposed solution is cost effective, and developing a project plan.
This process may involve end users who come up with an idea for improving their work or
may only involve IS people. Ideally, the process occurs in tandem with a review of the
organization's strategic plan to ensure that IT is being used to help the organization achieve
its strategic objectives. Management may need to approve concept ideas before any money
is budgeted for its development.
A preliminary analysis, determining the nature and scope of the problems to be solved is
carried out. Possible solutions are proposed, describing the cost and benefits. Finally, a
preliminary plan for decision making is produced.
The process of developing a large information system can be very costly, and the
investigation stage may require a preliminary study called a feasibility study, which
includes e.g. the following components:
a. Organisational Feasibility
How well the proposed system supports the strategic objectives of the organization.
b. Economic Feasibility
Cost savings
Increased revenue
Decreased investment
Increased profits
c. Technical Feasibility
d. Operational Feasibility
End users must be involved in this process to ensure that the new system will function
adequately and meets their needs and expectations.
The created system design, but must reviewed by users to ensure the design meets users'
needs.
1.3.5 Implementation
The real code is written here. Systems implementation is the construction of the new
system and its delivery into production or day-to-day operation.The key to understanding
the implementation phase is to realize that there is a lot more to be done than programming.
Implementation requires programming, but it also requires database creation and
population, and network installation and testing. You also need to make sure the people are
taken care of with effective training and documentation. Finally, if you expect your
development skills to improve over time, you need to conduct a review of the lessons
learned.
1.3.8 Maintenance
What happens during the rest of the software's life: changes, correction, additions, moves to
a different computing platform and more. This, the least glamorous and perhaps most
important step of all, goes on seemingly forever.