Fundamentals of Sub Programs
Fundamentals of Sub Programs
Survey Of Programming
Languages
8 – Subprograms
Spring, 2008
Doug L Hoffman, PhD
1
CSCI 360 – Survey Of Programming Languages
Chapter 9 Topics
Introduction
Fundamentals of Subprograms
Design Issues for Subprograms
Local Referencing Environments
Parameter-Passing Methods
Parameters That Are Subprogram Names
Overloaded Subprograms
Generic Subprograms
Design Issues for Functions
User-Defined Overloaded Operators
Coroutines
Page 2
CSCI 360 – Survey Of Programming Languages
Introduction
Page 3
CSCI 360 – Survey Of Programming Languages
Fundamentals of Subprograms
4
CSCI 360 – Survey Of Programming Languages
Fundamentals of Subprograms
Page 5
CSCI 360 – Survey Of Programming Languages
Basic Definitions
Page 6
CSCI 360 – Survey Of Programming Languages
Page 7
CSCI 360 – Survey Of Programming Languages
Page 8
CSCI 360 – Survey Of Programming Languages
Page 9
CSCI 360 – Survey Of Programming Languages
Page 10
CSCI 360 – Survey Of Programming Languages
Page 11
CSCI 360 – Survey Of Programming Languages
Page 12
CSCI 360 – Survey Of Programming Languages
Parameter Passing
13
CSCI 360 – Survey Of Programming Languages
Page 14
CSCI 360 – Survey Of Programming Languages
Page 15
CSCI 360 – Survey Of Programming Languages
Page 16
CSCI 360 – Survey Of Programming Languages
Page 17
CSCI 360 – Survey Of Programming Languages
Page 18
CSCI 360 – Survey Of Programming Languages
Page 19
CSCI 360 – Survey Of Programming Languages
By textual substitution
Formals are bound to an access method at the
time of the call, but actual binding to a value or
address takes place at the time of a reference or
assignment
Allows flexibility in late binding
Page 20
CSCI 360 – Survey Of Programming Languages
Page 21
CSCI 360 – Survey Of Programming Languages
Page 23
CSCI 360 – Survey Of Programming Languages
Page 24
CSCI 360 – Survey Of Programming Languages
Page 25
CSCI 360 – Survey Of Programming Languages
Page 26
CSCI 360 – Survey Of Programming Languages
Pascal
– Not a problem; declared size is part of the
array’s type
Ada
– Constrained arrays - like Pascal
– Unconstrained arrays - declared size is part of
the object declaration
Page 27
CSCI 360 – Survey Of Programming Languages
Page 28
CSCI 360 – Survey Of Programming Languages
Similar to Ada
Arrays are objects; they are all single-dimensioned,
but the elements can be arrays
Each array inherits a named constant (length in
Java, Length in C#) that is set to the length of the
array when the array object is created
Page 29
CSCI 360 – Survey Of Programming Languages
Page 30
CSCI 360 – Survey Of Programming Languages
Page 31
CSCI 360 – Survey Of Programming Languages
Page 32
CSCI 360 – Survey Of Programming Languages
Page 33
CSCI 360 – Survey Of Programming Languages
Overloaded Subprograms
An overloaded subprogram is one that has the same name
as another subprogram in the same referencing
environment
– Every version of an overloaded subprogram has a unique protocol
C++, Java, C#, and Ada include predefined overloaded
subprograms
In Ada, the return type of an overloaded function can be
used to disambiguate calls (thus two overloaded functions
can have the same parameters)
Ada, Java, C++, and C# allow users to write multiple
versions of subprograms with the same name
Page 34
CSCI 360 – Survey Of Programming Languages
Generic Subprograms
Page 35
CSCI 360 – Survey Of Programming Languages
Page 36
CSCI 360 – Survey Of Programming Languages
37
CSCI 360 – Survey Of Programming Languages
Page 38
CSCI 360 – Survey Of Programming Languages
Page 39
CSCI 360 – Survey Of Programming Languages
Coroutines
A coroutine is a subprogram that has multiple entries and
controls them itself
Also called symmetric control: caller and called coroutines
are on a more equal basis
A coroutine call is named a resume
The first resume of a coroutine is to its beginning, but
subsequent calls enter at the point just after the last
executed statement in the coroutine
Coroutines repeatedly resume each other, possibly
forever
Coroutines provide quasi-concurrent execution of program
units (the coroutines); their execution is interleaved, but
not overlapped
Page 40
CSCI 360 – Survey Of Programming Languages
Page 41
CSCI 360 – Survey Of Programming Languages
Page 42
CSCI 360 – Survey Of Programming Languages
Page 43
CSCI 360 – Survey Of Programming Languages
Summary
44
CSCI 360 – Survey Of Programming Languages
Summary
Page 45
CSCI 360 – Survey Of Programming Languages
Next Time…
Implementing
Subprograms
Page 46