Transcript
Page 1: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Chapter 8

High-Level Programming Languages

Page 2: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

2

Compilers

High-level language

A language that provides a richer (more English like) set of instructions

Compiler

A program that translates a high-level language program into machine code

Page 3: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

3

Compilers

Figure 8.1 Compilation process

Page 4: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

4

Interpreters

Interpreter

A translating program that translates and executes the statements in sequence

– Assembler or compiler produce machine code as output, which is then executed in a separate step

– An interpreter translates a statement and then immediately executes the statement

– Interpreters can be viewed as simulators

Page 5: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

5

Java

• Introduced in 1996 and became instantly popular

• Portability was of primary importance

• Java is compiled into a standard machine language called Bytecode

• A software interpreter called the JVM (Java Virtual Machine) takes the Bytecode program and executes it

Page 6: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

6

Portability

PortabilityThe ability of a program to be run on different machines

Compiler portabilityA program in a standardized language can be compiled and run on any machine that has the appropriate compiler

Bytecode portabilityA program translated into Bytecode can be run on any machine that has a JVM

Page 7: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

7

Portability

Figure 8.2 Portability provided by standardized languages versus interpretation by Bytecode

Page 8: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

8

Portability

Figure 8.2 Portability provided by standardized languages versus interpretation by Bytecode

Page 9: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

9

Programming Language Paradigms

Imperative or procedural model– Program describes the processing– FORTRAN, COBOL, BASIC, C, Pascal,

Ada, and C++

Functional model– Program is written terms of mathematical

functions– LISP, Scheme (a derivative of LISP), and ML

Page 10: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

10

Programming Language Paradigms

Logic model– Program consists of facts about objects and rules that

question the relationships among facts– PROLOG

Object-oriented model– Program consists of a set of objects and the

interactions among the objects– Smalltalk and Simula – C++ is as an imperative language with some object-

oriented features– Java is an object-oriented language with some

imperative features

Page 11: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

11

Programming Language Paradigms

We examine procedural and object-oriented languages in the rest of this chapter by looking at the functionality provided in these languages

We give examples in different languages to show how syntax used to provide the functionality

Page 12: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

12

Functionality of Imperative Languages

Sequence

Executing statements in sequence until an instruction is encountered that changes this sequencing

Selection

Deciding which action to take

Iteration (looping)

Repeating an action

Page 13: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

13

Boolean Expressions

Boolean expression

A sequence of identifiers, separated by compatible operators, that evaluates to true or false

A Boolean expression can be

– A Boolean variable

– An arithmetic expression followed by a relational operator followed by an arithmetic expression

– A Boolean expression followed by a Boolean operator followed by a Boolean expression

Page 14: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

14

Boolean Expressions

Variable

A location in memory that is referenced by an identifier that contains a data value

Thus, a Boolean variable is a location in memory that can contain either true or false

Page 15: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

15

Boolean Expressions

<<=>

>=!= or <> or /=

= or ==

Page 16: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

16

Strong Typing

Data type

A description of the set of values and the basic set of operations that can be applied to values of the type (e.g. Integer, real, chars, boolean, strings)

Strong typing

The requirement that only a value of the proper type can be stored into a variable

Page 17: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

17

Declarations

Declaration A statement that associates an identifier with a variable, an action, or some other entity within the language that can be given a name; the programmer can refer to that item by name

Reserved word A word in a language that has special meaning

Case-sensitive Uppercase and lowercase letters are considered the same

Page 18: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Declaration Example

Page 19: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

19

Assignment statement

Assignment statement

An action statement (not a declaration) that says to evaluate the expression on the right-hand side of the symbol and store that value into the place named on the left-hand side

Named constant

A location in memory, referenced by an identifier, that contains a data value that cannot be changed

Page 20: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

20

Input/Output Structures

Pseudocode algorithms used the expressions Read or Get and Write or Print

High-level languages view input data as a stream of characters divided into lines

Key to the processing

The data type determines how characters are to be converted to a bit pattern (input) and how a bit pattern is to be converted to characters (output)

Page 21: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

21

Input/Output Structures

Read name, age, hourlyWage

name is a string; age is an integer; hourlyWage is a real

The data must be a string, an integer, and areal in that order.

Page 22: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

22

Control Structures

Control structure

An instruction that determines the order in which other instructions in a program are executed

Can you name the ones we defined in the functionality of pseudocode?

Page 23: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

23

Selection Statements

Figure 8.3 Flow of control of if statement

Page 24: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

24

Selection Statements

The if statement allows the program to test the state of the program variables using a Boolean expression

Page 25: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

25

Blocks

Notethe symbolsused toindicateblocksin eachlanguage

Page 26: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

26

Cascading Ifs

If (temperature > 90)Write "Texas weather: wear shorts"

Else If (temperature > 50)Write "A little chilly: wear a light jacket"

Else If (temperature > 32)Write "Philadelphia weather: wear a heavy coat"

ElseWrite "Stay inside"

Page 27: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

27

Looping Statements

Figure 8.4 Flow of control of while statement

Page 28: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

28

Looping Statements

A count-controlled loop

Set sum to 0Set count to 1While (count <= limit)

Read numberSet sum to sum + numberIncrement count

Write "Sum is " + sum

Why is itcalled acount-controlledloop?

Page 29: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

29

Looping Statements

Page 30: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

30

Looping Statements

An event-controlled loop

Set sum to 0Set allPositive to trueWhile (allPositive)

Read numberIf (number > 0)

Set sum to sum + numberElse

Set allPositive to falseWrite "Sum is " + sum

Why is it called anevent-conrolledloop? What is theevent?

Page 31: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

31

Subprogram Statements

We can give a section of code a name and use that name as a statement in another part of the program

When the name is encountered, the processing in the other part of the program halts while the named code is executed

Page 32: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

32

Subprogram Statements

What if the subprogram needs data from the calling unit?

Parameters

Identifiers listed in parentheses beside the subprogram declaration; sometimes called formal parameters

Arguments

Identifiers listed in parentheses on the subprogram call; sometimes called actual parameters

Page 33: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

33

Subprogram Statements

Figure 8.5 Subprogram flow of control

Page 34: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

34

Subprogram Statements

Figure 8.5 Subprogram flow of control

Page 35: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

35

Subprogram Statements

Value parameter

A parameter that expects a copy of its argument to be passed by the calling unit

Reference parameter

A parameter that expects the address of its argument to be passed by the calling unit

Page 36: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

36

Subprogram Statements

Think of arguments as being placed on a message board

Page 37: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

37

Subprogram Statements

Page 38: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

38

Recursion

Recursion

The ability of a subprogram to call itself

Base case

The case to which we have an answer

General case

The case that expresses the solution in terms of a call to itself with a smaller version of the problem

Page 39: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

39

Recursion

For example, the factorial of a number is defined as the number times the product of all the numbers between itself and 0:

N! = N * (N 1)! E.g. 5!=1*2*3*4*5=120

Base case

Factorial(0) = 1 (0! is 1)

General Case

Factorial(N) = N * Factorial(N-1)

Page 40: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

40

Asynchronous Processing

Asynchronous processing

Not synchronized with the program's action

– Clicking has become a major form of input to the computer

– Mouse clicking is not within the sequence of the program

– A user can click a mouse at any time during the execution of a program

Page 41: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

41

Composite Data Types

Records

A named heterogeneous collection of items in which individual items are accessed by name

Arrays

A named homogeneous collection of items in which an individual item is accessed by its position (index) within the collection

Page 42: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

42

Composite Data Types

Declare Record

Page 43: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

43

Composite Data Types

Declare record variableUse record variable

Page 44: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

44

Composite Data Types 

Figure 8.8 Array variable tenThings accessed from 0..9

An Array

Page 45: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

45

Composite Data Types

Declare Array

Page 46: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

46

Composite Data Types

Access an Array

Page 47: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

47

Functionality of Object-Oriented Languages: Review

Object class (problem-solving phase)

A description of a group of objects with similar properties and behaviors

Object (problem-solving phase)

An entity or thing that is relevant in the context of a problem

Instantiate

Create an object from a class

Page 48: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

48

Review

Encapsulation

A language feature that enforces information hiding (second definition)

Class (implementation phase)

A language construct that is a pattern for an object and provides a mechanism for encapsulating the properties and actions of the object class

Object (implementation phase)

An instance of a class

Page 49: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

49

Review

Rememberthepattern?

Fromproblemto generaldescriptionto classdefinition toprogram

Page 50: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

50

Inheritance and Polymorphism

Inheritance

A construct that fosters reuse by allowing an application to take an already-tested class and derive a class from it that inherits the properties the application needs

Polymorphism

The ability of a language to have duplicate method names in an inheritance hierarchy and to apply the method that is appropriate for the object to which the method is applied

Page 51: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

51

Inheritance and Polymorphism

Inheritance and polymorphism work together

How?

They combine to allow the programmer to build useful hierarchies of classes that can be put into a library to be reused in different applications

Page 52: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Inheritance and Polymorphism

e.g. If a Dog is commanded to speak(), it may emit a bark, while if a Pig is asked to speak(), it may respond with an oink. Both inherit speak() from Animal, but their subclass methods override the methods of the superclass, known as overriding polymorphism. Adding a walk method to Animal would give both Pig and Dog objects the same walk method.52

Page 53: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Inheritance and Polymorphism

• To inherit is to derive traits from preceding generations. In the object-oriented programming world, the term is associated with a kind of software reuse. With inheritance, new classes can be derived from existing classes, using the existing classes as building blocks. The new class inherits properties and methods from the base class. The new class can also add its own properties and methods.

• Inheritance can be understood from the following skeleton example. In this case a parent or a base class called BankAccount is declared as follows:

53

Page 54: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Inheritance example

class BankAccount{ protected:    char* Name;    char* SSNum;    char* AccountNum;    float Balance; public:    BankAccount  (char* name, char* ssnum);    void Deposit (float amount, char* accnum);    void Withdraw(float amount, char* accnum);    void PrintBalance(char* accnum); }

54

Page 55: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Inheritance example

The base class BankAccount has four variables:

• Name: which stores the name of account holder,

• SSNum: the account holder’s social security number,

• AccountNum: the account number, and

• Balance: the account balance.

• The methods Deposit and Withdraw are used to make a deposit and withdrawal from the bank account. The PrintBalance method prints the balance in the account. The BankAccount class in itself is not sufficient to carry out all the transactions on the account. Generally, there are two types of accounts: the checking account, which facilitates day to day transactions, and the savings account, which accrues interest on the saved amount.

55

Page 56: Chapter 8 High-Level Programming Languages. 2 Compilers High-level language A language that provides a richer (more English like) set of instructions

Inheritance example

We therefore derive two subclasses that inherit from the above parent class. They are SavingsAccount and Checking Account.  

class SavingsAccount: public BankAccount{ private:    float InterestRate;    float MinimumBalance; }

class CheckingAccount: public BankAccount{ private:    float MonthlyFee; }  

The subclasses SavingsAccount and CheckingAccount inherit the properties of BankAccount.

56


Top Related