What Is a Computer Program?

Programming Notes Page

A computer program is a
collection of instructions, or statements (also called code)
carried out by the computer's CPU. These instructions can be written in
many different languages. Except for operating systems and utilities,
all the categories of programs listed in the preceding section are
application programs. These programs are developed to help users solve
problems or perform tasks, such as sending mail messages, editing text,
or finding a specific article in a library.

Application programs are
usually composed of many files. Some of these files contain instructions
for the computer, whereas other files contain data. On DOS- or
Windows-based PCs, some common extensions for program files are .exe
(executable), .dll (dynamic link library.), .ini (initialization), and .hlp
(help). These extensions define the type of file.

By default, most pro-gram
files are stored in the folder that bears the application's name or an
abbreviation of it. To view a list of the files needed to run an
application, you can open that application's directory or folder.

The system software that
controls your computer also includes many files.

Program Control Flow

Although all the files in the
program's folder are considered parts of the program, usually one file
represents the core. This file is often called the executable file
because it is the one that the computer executes when you launch the
program. On PCs running DOS or Windows, the executable file has the same
name as the program (or an abbreviation of it), plus the extension .exe.

When you launch a program, the
computer begins reading and carrying out statements at the executable's
main entry point. Typically, this entry point is the first line (or
statement) in the file, although it may be elsewhere. After execution of
the first statement, program control passes, or flows, to another
statement, and so on, until the last statement of the program has been
executed. Then the program ends. The order in which program statements
are executed is called program control flow.

The example in the below picture
shows the flow of a small program that controls a furnace. The program
constantly checks the thermostat setting and current temperature. If the
current temperature is at or above the thermostat setting, the program
executes the statements that turn off the furnace. If the current
temperature is below the thermostat setting, the program executes the
statements that turn on the furnace.

Variables

One element that most computer
languages have in common is variables--placeholders for data being
processed. For example, imagine you are writing a program that prompts
users to enter their ages. You need a placeholder, or variable, to
represent the data (different ages) they enter. In this case, you might
choose to name the variable Age. Then, when a user enters a number at
the prompt, this data becomes the value of the variable Age.

Just as in algebra, you can
use variables in programs to perform actions on data. For example,
consider the instruction:

Age + 2

If the value of Age is 20, the
result of this instruction is 22; if the value is 30, the result is 32;
and so on.

Algorithms and Functions

Algorithms are the series of
steps by which problems are solved. Algorithms have been worked out for
solving a wide range of mathematical problems, such as adding numbers or
finding a square root.

Algorithms represent
solutions to problems. The steps to the solution (instructions) remain
the same, whether you are working out the solution by computer or by
hand.

Functions are the
expression of algorithms in a specific computer language. You reuse
functions when you need them. You do not have to rewrite the lines of
code represented by the function each time. For example:

sqrt(x)

is a way of referring to the
square root's function. The (x) after the name of the function is the
argument. You use arguments to pass input to functions as the program
runs. In this example, x is a variable representing a number. If x is
equal to 12, then the function will find the square root of 12. After
the function finds the square root, it returns this value to the
program. You can then use the value in other calculations.

Different computer
languages use different names, such as subroutines, procedures, and
routines, for these blocks of reusable code. There are subtle
differences between these terms, but for now, the term "function"
will be used for all of them.

TW0 APPROACHES TO
PROGRAMMING

Until the 1960s, relatively
little structure was imposed on how programmers wrote code. As a result,
following control flow through hundreds or thousands of lines of code
was almost impossible. Programmers, for example, often used goto
statements to jump to other parts of a program. A goto statement
does exactly what the name implies. It identifies a different line of
the program to which control jumps. (It goes to.) The issue with goto
statements is identifying how program control flow proceeds after the
jump. Does control return to the jumping-off place, or does it continue
at the new location?

Structured programming evolved
in the 1960s and 1970s. The name refers to the practice of building
programs using a set of well-defined structures. One goal of structured
programming is the elimination of goto statements.

Software developers have found
that using structured programming results in improved efficiency, but
they continue to struggle with the process of building software quickly
and correctly.

Reuse is recognized as the key
to the solution. Reusing code allows programs to be built quickly and
correctly. Functions, which are the building blocks of structured
programming, are one step along this path. In the 1980s, computing took
another leap forward with the development of object-oriented programming
(OOP). The building blocks of OOP, called objects, are reusable, modular
components. Experts claim that OOP will be the dominant programming
approach through at least the end of the 1990s.

OOP builds on and enhances
structured programming. You do not leave structured programming behind
when you work with an object-oriented language. Objects, for example,
are composed of structured program pieces, and the logic of manipulating
objects is also structured.

Structured Programming

Researchers in the 1960s
demonstrated that programs could be written with three control
structures:

If-Then and If-Else Flowchart

Sequence structure
defines the default control flow in a program. Typically, this structure
is built into programming languages. As a result, unless directed
otherwise, a computer executes lines of code in the order in which they
are written. The picture above shows a flowchart of this sequential flow. The
commands in the rectangles represent two sequential lines of code.
Program control flows from the previous line of code to the next line.
The commands are written in pseudo-code, which is an informal language
programmers use as they are working through the logic of a program.
After the command sequence is developed, the programmers translate the
pseudo-code into a specific computer language.

Selection structures
are built around a
condition statement. If the condition statement is true, certain
lines of code are executed. If the condition statement is false, those
lines of code are not executed. The two most common selection structures
are: If-Then and If-Else (sometimes called If-Then-Else). The picture to
the right shows a flowchart of the if-then-else structure.

Looping Flowchart

Repetition (or looping) structures are also built around condition statements. If
the condition is true, then a block of one or more commands is repeated
until the condition is false. The computer first tests the condition
and, if it is true, executes the command block once. It then tests the
condition again. If it is still true, the command block is repeated.
Because of this cycling, repetition structures are also called loops.
Three common looping structures are: For-Next, While, and Do-While.

Last revised:
February 26, 2013.

Few people nowadays remember that the IBM PC was
not the first "personal computer" and that MS-DOS was not the first industry
standard operating system. In fact, MS-DOS was but an imperfect copy of the
operating system that really has a claim to that title.

The first generation of personal computers (or microcomputers, as they were
known then) used chips like the Intel 8008, 8080, Zilog Z80, MOS Technology 6502
and Motorola 6800. While some early microcomputers (for example, the Apple II)
used proprietary operating systems, hundreds of different manufacturers licensed
a product called CP/M (as in Control Program / Monitor) made by a company
called Digital Research. Long before the IBM PC and its clones / compatibles,
the CP/M architecture provided for industry standard software that was portable
across hundreds of different brands and models. This was DRI founder Gary
Kildall's main contribution to the software industry. Microsoft simply followed
in DRI's footsteps.