...

Programming Languages Lecture 3 Section 1.3 Robb T. Koether

by user

on
Category: Documents
14

views

Report

Comments

Transcript

Programming Languages Lecture 3 Section 1.3 Robb T. Koether
Programming Languages
Lecture 3
Section 1.3
Robb T. Koether
Hampden-Sydney College
Mon, Sep 2, 2013
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
1 / 25
1
Programming Languages
2
Building an Executable Program
3
Program Organization
4
Example
5
Assignment
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
2 / 25
Outline
1
Programming Languages
2
Building an Executable Program
3
Program Organization
4
Example
5
Assignment
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
3 / 25
High-Level Languages
C++ Code
cin >> cost;
if (cost > 100.0)
{
discount = 0.10 * cost;
price = cost - discount;
}
else
price = cost;
cout << price;
Instructions use some English words (if, else, while, etc.)
Expressions are written in something resembling standard
algebraic notation.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
4 / 25
High-Level Languages
C++ Code
int c = 3*(10 + 20);
C code to add 10 and 20 and multiply by 3.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
5 / 25
Assembly Language
Assembly Code
li
addi
li
mult
mflo
$s0,10
$s1,$s0,20
$s0,3
$s1,$s0
$s1
Each instruction represents a single basic operation at the
machine level (add, multiply, compare, etc.)
Mnemonics are used instead of words.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
6 / 25
Machine Language
Machine Code
Hex
2410000A
22110014
24100003
02300018
00008812
Binary
00100100000100000000000000001010
00100010000100010000000000010100
00100100000100000000000000000011
00000010001100000000000000011000
00000000000000001000100000010010
Assembly
li
$s0,10
addi $s1,$s0,20
li
$s0,3
mult $s1,$s0
mflo $s1
Each instruction represents a single basic operation.
Each instruction is written entirely numerically.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
7 / 25
Outline
1
Programming Languages
2
Building an Executable Program
3
Program Organization
4
Example
5
Assignment
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
8 / 25
Program Translation
A computer is capable of interpreting and executing only machine
language (numerical) instructions.
Humans (almost always) write programs in high-level languages
such as C++.
Therefore, a C++ program must be translated into machine
language in order to be run.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
9 / 25
Compilers
A compiler is a program that translates a high-level language such
as C++ into machine language.
The compiler must first check the syntax of the source code.
A syntax error is a violation of the grammar rules of the language.
If there are syntax errors, then error messages are displayed and
the process stops.
If there are no syntax errors, then the compiler produces the
object code.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
10 / 25
Linkers
A linker combines the object code produced by the compiler with
library functions (e.g., the square root function) needed by the
program.
If the linker is unable to locate a function, it reports a link error and
the process stops.
If there are no link errors, the linker produces a fully functioning
program.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
11 / 25
Program Translation
Source code
Preprocessor
Object code
Modified
source code
Executable
code
Compiler
Robb T. Koether (Hampden-Sydney College)
Linker
Programming Languages
Mon, Sep 2, 2013
12 / 25
Loaders
The loader copies the program into a suitable location in main
memory and begins execution.
A run-time (or logical) error is an error that occurs during
execution.
Typically, run-time errors cannot be detected by the compiler or
the linker before execution.
Division by zero would be a run-time error.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
13 / 25
Assemblers
Many compilers produce assembly code as an intermediate step,
and then invoke an assembler to finish the translation.
An assembler translates an assembly language program into
machine language.
Assembly code is more readable than machine code.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
14 / 25
Outline
1
Programming Languages
2
Building an Executable Program
3
Program Organization
4
Example
5
Assignment
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
15 / 25
The C++ Program Hierarchy
A statement typically performs a single task.
For example, evaluate a formula.
A function is a group of statements that accomplishes a task
requiring several steps.
For example, insert a new name into a list of names.
A file contains a group of related functions.
For example, all functions that manage lists of names.
A program consists of a collection of related files.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
16 / 25
Statements
A statement is a one-line instruction.
A statement typically performs a single action.
Examples
Evaluate a formula.
Print a line of output.
Make a yes/no decision.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
17 / 25
Functions
A function consists of several statements which together perform
a single task as a component of a larger problem.
Each function is given a name.
Program execution begins with the function main().
Examples
average(): Find the average of a set of numbers.
insert(): Insert a new name into a list of names.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
18 / 25
Files
A file consists of a set of functions having something in common.
Each file is stored separately under its own name.
For example, list.cpp.
Files are compiled separately from each other, to be linked later.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
19 / 25
Projects
A project consists of several files containing all the functions
which, when linked together, will form a complete program.
The project is given a name.
For example, ListManager.vcxproj.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
20 / 25
The C++ Program Hierarchy
MyProg.vcxproj
// MyProg.cpp
// list.cpp
int main()
{
:
}
:
void insert(...)
{
:
}
void delete(...)
{
:
}
// stats.cpp
float avg(float a, float b)
{
return (a + b)/2.0;
}
int search(...)
{
:
}
:
float max(float a, float b)
{
if (a > b)
return a;
else
return b;
}
:
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
21 / 25
Outline
1
Programming Languages
2
Building an Executable Program
3
Program Organization
4
Example
5
Assignment
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
22 / 25
Example of a C++ Program
Example
GradeReport.cpp
GradeStats.cpp
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
23 / 25
Outline
1
Programming Languages
2
Building an Executable Program
3
Program Organization
4
Example
5
Assignment
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
24 / 25
Assignment
Assignment
Read Section 1.3.
Robb T. Koether (Hampden-Sydney College)
Programming Languages
Mon, Sep 2, 2013
25 / 25
Fly UP