programming languages - lecture 3 section 1people.hsc.edu/faculty-staff/robbk/coms261/lectures...an...

25
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

Upload: others

Post on 28-Jun-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Programming LanguagesLecture 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

Page 2: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 3: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 4: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

High-Level Languages

C++ Codecin >> 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 standardalgebraic notation.

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 4 / 25

Page 5: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

High-Level Languages

C++ Codeint 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

Page 6: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Assembly Language

Assembly Codeli $s0,10addi $s1,$s0,20li $s0,3mult $s1,$s0mflo $s1

Each instruction represents a single basic operation at themachine 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

Page 7: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Machine Language

Machine CodeHex Binary Assembly

2410000A 00100100000100000000000000001010 li $s0,1022110014 00100010000100010000000000010100 addi $s1,$s0,2024100003 00100100000100000000000000000011 li $s0,302300018 00000010001100000000000000011000 mult $s1,$s000008812 00000000000000001000100000010010 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

Page 8: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 9: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Program Translation

A computer is capable of interpreting and executing only machinelanguage (numerical) instructions.Humans (almost always) write programs in high-level languagessuch as C++.Therefore, a C++ program must be translated into machinelanguage in order to be run.

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 9 / 25

Page 10: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Compilers

A compiler is a program that translates a high-level language suchas 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 andthe process stops.If there are no syntax errors, then the compiler produces theobject code.

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 10 / 25

Page 11: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Linkers

A linker combines the object code produced by the compiler withlibrary functions (e.g., the square root function) needed by theprogram.If the linker is unable to locate a function, it reports a link error andthe process stops.If there are no link errors, the linker produces a fully functioningprogram.

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 11 / 25

Page 12: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Program Translation

Source code

Modifiedsource code

Executablecode

Object codePreprocessor

Linker

Compiler

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 12 / 25

Page 13: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Loaders

The loader copies the program into a suitable location in mainmemory and begins execution.A run-time (or logical) error is an error that occurs duringexecution.Typically, run-time errors cannot be detected by the compiler orthe 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

Page 14: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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 intomachine language.Assembly code is more readable than machine code.

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 14 / 25

Page 15: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 16: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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 taskrequiring 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

Page 17: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 18: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Functions

A function consists of several statements which together performa 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

Page 19: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 20: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Projects

A project consists of several files containing all the functionswhich, 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

Page 21: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

The C++ Program Hierarchy

// stats.cpp

float avg(float a, float b){ return (a + b)/2.0;}

float max(float a, float b){ if (a > b) return a; else return b;} :

// list.cpp

void insert(...){ :}

void delete(...){ :}

int search(...){ :} :

// MyProg.cpp

int main(){ :} :

MyProg.vcxproj

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 21 / 25

Page 22: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 23: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Example of a C++ Program

ExampleGradeReport.cppGradeStats.cpp

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 23 / 25

Page 24: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

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

Page 25: Programming Languages - Lecture 3 Section 1people.hsc.edu/faculty-staff/robbk/Coms261/Lectures...An assembler translates an assembly language program into machine language. Assembly

Assignment

AssignmentRead Section 1.3.

Robb T. Koether (Hampden-Sydney College) Programming Languages Mon, Sep 2, 2013 25 / 25