Pengaturcaraan Kejuruteraan
Engineering Programming
KM21303
Melvin Gan Jet Hong
Faculty of Engineering, UMS
Why Program?
Why Program?
Introduction
Computer: Hardware & Software
• A computer is a device that can perform computations and make logical decisions billions
of times faster than human beings can.
• Today’s fastest supercomputers can perform thousands of trillions (quadrillions) of
instructions per second!
• Computers process data under the control of sets of instructions called computer programs.
• Programs guide the computer through orderly sets of actions specified by people called
computer programmers.
• A computer consists of various devices referred to as hardware.
• The programs that run on a computer are referred to as software.
Introduction
Computer Organization (1)
• Virtually every computer may be envisioned as divided into six logical units or
sections:
• Input unit. This “receiving” section obtains from input devices and places it at the disposal
of the other units so that it can be processed.
• Output unit. This “shipping” section takes information that the computer has processed
and places it on various output devices to make it available for use outside the computer.
• Memory unit. This rapid-access, relatively low-capacity “warehouse” section retains
information that has been entered through the input unit, making it immediately available
for processing when needed. It also retains processed information until it can be placed on
output devices by the output unit. Information in the memory unit is volatile. The memory
unit is often called either memory or primary memory.
Introduction
Computer Organization (2)
• Arithmetic and logic unit (ALU). This “ manufacturing” section performs calculations.
It also contains the computer’s decision mechanisms. In today’s systems, the ALU is
usually implemented as part of the next logical unit, the CPU.
• Central processing unit (CPU). This “ administrative” section coordinates and
supervises the operation of the other sections.
• Tells the input unit when information should be read into the memory unit
• Tells the ALU when information from the memory unit should be used in calculations
• Tells the output unit when to send information from the memory unit to certain output
devices.
• Many of today’s computers have multiple CPUs and, hence, can perform many operations
simultaneously—such computers are called multiprocessors. A multi-core processor
implements multiprocessing on a single integrated circuit chip.
Introduction
Computer Organization (3)
• Secondary storage unit. This is the long-term, high-capacity “warehousing”
section. Programs or data not actively being used by the other units normally
are placed on secondary storage devices (e.g., your hard drive) until they’re
again needed, possibly hours, days, months or even years later. Therefore,
information on secondary storage devices is said to be persistent.
Introduction
Machine Languages, Assembly Languages and High-Level Languages (1)
• Programmers write instructions in various programming languages, some directly
understandable by computers and others requiring intermediate translation steps.
• Computer languages may be divided into three general types:
• Machine languages
• Assembly languages
• High-level languages
• Any computer can directly understand only its own machine language.
• The “natural language” of a computer and as such is defined by its hardware design.
• Machine languages are machine dependent.
• Too slow (for development), tedious and error prone for most programmers.
Introduction
Machine Languages, Assembly Languages and High-Level Languages (2)
• English-like abbreviations that represent elementary operations formed the basis of assembly
languages.
• Translator programs called assemblers convert assembly-language programs to machine language.
• Programmers still had to use many instructions to accomplish even the simplest tasks.
• To speed the programming process, high-level languages were developed in which single
statements could be written to accomplish substantial tasks.
• Translator programs called compilers convert high-level language programs into machine
language.
• Interpreter programs execute high-level language programs directly (without the delay of
compilation), although slower than compiled programs run.
Introduction
Machine Languages, Assembly Languages and High-Level Languages (3)
Introduction
Machine Languages, Assembly Languages and High-Level Languages (4)
Introduction
History of C and C++ (1)
• C++ evolved from C, which evolved from two previous programming languages, BCPL and B.
• BCPL was developed in 1967 by Martin Richards as a language for writing operating systems
software and compilers for operating systems.
• Ken Thompson modeled many features in B after their counterparts in BCPL and used B to
create early versions of the UNIX operating system at Bell Laboratories in 1970.
• The C language was evolved from B by Dennis Ritchie at Bell Laboratories.
• C initially became widely known as the development language of the UNIX operating system.
• Today, most operating systems are written in C and/or C++.
• C is available for most computers and is hardware independent.
• It’s possible to write C programs that are portable to most computers.
Introduction
History of C and C++ (2)
• C++, an extension of C, was developed by Bjarne Stroustrup in the early 1980s at Bell
Laboratories.
• C++ provides capabilities for object-oriented programming.
• Objects are essentially reusable software components that model items in the real world.
• Modular, object-oriented design and implementation makes programmers much more
productive than can previous popular programming techniques.
• Object-oriented programs are easier to understand, correct and modify.
Introduction
C++ Standard Library
• C++ programs consist of pieces called classes and functions.
• Most C++ programmers take advantage of the rich collections of classes and functions in the
C++ Standard Library.
• Two parts to learning the C++ “world.”
• The C++ language itself, and
• How to use the classes and functions in the C++ Standard Library.
• Many special-purpose class libraries are supplied by independent software vendors.
Introduction
C++ Standard Library
Introduction
Data Type (1)
Introduction
Data Type (2)
Introduction
Data Type (3)
Introduction
Typical C++ Development Environment (1)
• C++ systems generally consist of three parts: a program development
environment, the language and the C++ Standard Library.
• C++ programs typically go through six phases: edit, preprocess, compile, link,
load and execute.
Introduction
Typical C++ Development Environment (2)
• Phase 1 consists of editing a file with an editor program (normally known simply as an editor).
• You type a C++ program (typically referred to as source code) using the editor, make corrections
and save the program.
• C++ source code filenames often end with the .cpp, .cxx, .cc or .C extensions (note that C is
in uppercase) which indicate that a file contains C++ source code.
• In phase 2, you give the command to compile the program.
• In a C++ system, a preprocessor program executes automatically before the compiler’s translation phase
begins.
• The C++ preprocessor obeys commands called preprocessor directives, which indicate that certain
manipulations are to be performed on the program before compilation.
• These manipulations usually include other text files to be compiled, and perform various text
replacements.
• The most common preprocessor directives are discussed in the early chapters; a detailed discussion of
preprocessor features appears in Appendix E, Preprocessor.
• In phase 3, the compiler translates the C++ program into machine-language code (also referred to as
object code).
Introduction
Typical C++ Development Environment (3)
• Phase 4 is called linking.
• The object code produced by the C++ compiler typically contains “holes” due to missing parts,
such as references to functions from standard libraries.
• A linker links the object code with the code for the missing functions to produce an executable
program.
• Phase 5 is called loading.
• Before a program can be executed, it must first be placed in memory.
• This is done by the loader, which takes the executable image from disk and transfers it to
memory.
• Additional components from shared libraries that support the program are also loaded.
• Finally, in Phase 6, the computer, under the control of its CPU, executes the program one
instruction at a time.
Introduction
Typical C++ Development Environment (4)
• Programs do not always work on the first try.
• Each of the preceding phases can fail because of various errors.
• If this occurs, you’d have to return to the edit phase, make the necessary
corrections and proceed through the remaining phases again to determine that
the corrections fix the problem(s).
Introduction
Typical C++ Development Environment (5)
• Most programs in C++ input and/or output data.
• Certain C++ functions take their input from cin (the standard input stream; pronounced
“see-in”), which is normally the keyboard, but cin can be redirected to another device.
• Data is often output to cout (the standard output stream; pronounced “see-out”), which is
normally the computer screen, but cout can be redirected to another device.
• When we say that a program prints a result, we normally mean that the result is displayed on
a screen.
• Data may be output to other devices, such as disks and hardcopy printers.
• There is also a standard error stream referred to as cerr that is used for displaying error
messages.
Introduction
Typical C++ Development Environment (6)
Introduction
Typical C++ Development Environment (7)
Introduction
Typical C++ Development Environment (8)
Keyword
Usually lowercase, reserved, special meaning for
intended purpose
Programmer-Defined Identifiers
Not part of C++ language
In this case, variables
Punctuation
Marks the end of statement
Rules when required or not
Operators
Perform operations on pieces of data
Introduction
Typical C++ Development Environment (9)
Introduction
Typical C++ Development Environment (10)
Introduction
Typical C++ Development Environment (11)
Introduction
Flowchart
Introduction
Pseudocode
• Pseudocode (or “fake” code) is an artificial and informal language that helps you develop
algorithms.
• Similar to everyday English
• Convenient and user friendly.
• Helps you “think out” a program before attempting to write it.
• Carefully prepared pseudocode can easily be converted to a corresponding C++ program.
• Normally describes only executable statements.
• Declarations (that do not have initializers or do not involve constructor calls) are not
executable statements.
Introduction
Pseudocode