ch05 functions and an introduction to recursion

47
Photonic Modeling and Design Lab. Graduate Institute of Photonics and Optoelectronics & Department of Electrical Engineering National Taiwan University C++ C++ C++ C++ Programming Programming Programming Programming Chapter Chapter Chapter Chapter 5 Functions and an 5 Functions and an 5 Functions and an 5 Functions and an Introduction to Recursion Introduction to Recursion Introduction to Recursion Introduction to Recursion Yih Yih Yih Yih-Peng Peng Peng Peng Chiou Chiou Chiou Chiou Room 617, BL Building Room 617, BL Building Room 617, BL Building Room 617, BL Building (02) 3366 (02) 3366 (02) 3366 (02) 3366-3603 3603 3603 3603 [email protected] [email protected] [email protected] [email protected] YPC - NTU GIPO & EE Introduction to C++ Programming NTU BA 2 Objectives Objectives Objectives Objectives

Upload: others

Post on 22-Feb-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Ph

oto

nic

Mo

de

ling

an

d D

es

ign

La

b.

Gra

du

ate

Ins

titute

of P

ho

ton

ics

an

d O

pto

ele

ctro

nic

s &

De

pa

rtme

nt o

f Ele

ctric

al E

ng

ine

erin

g

Na

tion

al T

aiw

an

Un

ive

rsity

C++C++C++C++Programming

ProgrammingProgrammingProgramming

Chapter Chapter Chapter Chapter 5 Functions and an

5 Functions and an 5 Functions and an 5 Functions and an

Introduction to RecursionIntroduction to RecursionIntroduction to RecursionIntroduction to Recursion

YihYihYih Yih--- -PengPengPengPengChiou

ChiouChiouChiou

Room 617, BL BuildingRoom 617, BL BuildingRoom 617, BL BuildingRoom 617, BL Building

(02) 3366(02) 3366(02) 3366(02) 3366--- -3603

360336033603

[email protected]

[email protected]

[email protected]

[email protected]

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

2

ObjectivesObjectivesObjectivesObjectives

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

3

OutlineOutlineOutlineOutline

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

4

OutlineOutlineOutlineOutline

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�C

on

struct p

rog

rams fro

m sm

all, simp

le pieces, o

r com

po

nen

ts.

�d

ivid

e and

con

qu

er

�D

eclare and

use fu

nctio

ns to

facilitate the d

esign

, imp

lemen

tation

, o

peratio

n an

d m

ainten

ance o

f large p

rog

rams

�O

verv

iew sev

eral C+

+ S

tand

ard L

ibrary

math

fun

ction

s

�L

earn h

ow

to d

eclare yo

ur o

wn

fun

ction

s

�R

and

om

nu

mb

er gen

eration

and

a versio

n o

f the casin

o d

ice gam

e

�sto

rage classes an

d sco

pe ru

les

�im

pro

ve p

rog

ram p

erform

ance

�in

line fu

nctio

ns an

d referen

ce param

eters

�F

un

ction

ov

erload

ing

-o

ne fu

nctio

n o

f the sam

e nam

e

�p

erform

similar task

s for arg

um

ents o

f differen

t typ

es or p

ossib

ly

for d

ifferent n

um

bers o

f argu

men

ts

�F

un

ction

temp

lates -a m

echan

ism fo

r defin

ing

a family

of o

verlo

aded

fu

nctio

ns

�R

ecursio

n -

fun

ction

s that call th

emselv

es

5

5.1Introduction

IntroductionIntroductionIntroduction

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�C

++

pro

gram

s are typ

ically w

ritten b

y co

mb

inin

g

�n

ew fu

nctio

ns an

d classes y

ou

write w

ith “p

repack

aged

” fun

ction

s

�classes av

ailable in

the C

++

Stan

dard

Lib

rary

�C

++

Stan

dard

Lib

rary p

rov

ides

�co

mm

on

math

ematical calcu

lation

s

�strin

g m

anip

ulatio

ns

character m

anip

ulatio

ns

�in

pu

t/ou

tpu

terro

r check

ing

�m

any

oth

er usefu

l op

eration

s

�F

un

ction

s

�m

od

ularize a p

rog

ram b

y sep

arating its task

s into

self-contain

ed u

nits

�b

y u

ser-

user-d

efined

fun

ctions

or p

rog

ramm

er-defin

ed fu

nctio

ns

�M

otiv

ation

s for “fu

nctio

nalizin

g” a p

rog

ram

�d

ivid

e-and-co

nq

uer m

akes p

rog

ram d

evelo

pm

ent m

ore m

anag

eable

�so

ftware reu

sability

�usin

g ex

isting fu

nctio

ns as b

uild

ing b

lock

s to create n

ew p

rogram

s

�av

oid

repeatin

g co

de in

a pro

gram

6

5.2

Pro

gra

m C

om

po

ne

nts

in C

++

��

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�A

fun

ction

is

inv

ok

ed b

y a

fun

ction

call, and

wh

en th

e called

fun

ction

com

pletes

its task, it eith

er

return

s a result o

r

simp

ly retu

rns

con

trol to

the

caller

7

5.2

Pro

gra

m C

om

po

ne

nts

in C

++

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�F

un

ction

s typ

es

�m

emb

ers of a class

�g

lob

al fun

ction

s -n

ot m

emb

ers of a class

�<cmath>

head

er file -

perfo

rm co

mm

on

math

ematical calcu

lation

s

�G

lob

al fun

ctions (all) –

type fx_name(arguments)�

Arg

um

ents: co

nstan

ts, variab

les or m

ore co

mp

lex ex

pressio

ns

8

5.3

Ma

th L

ibra

ry F

un

ctio

ns

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�http://msdn.microsoft.com/en-us/library/7wsh95e5.aspx

9

5.3

Ma

th L

ibra

ry F

un

ctio

ns

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

10

5.4

Fu

nc

tion

De

finitio

ns

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�fo

rmat o

f a fun

ction

defin

ition

retu

rn-v

alu

e-ty

pe

functio

n-n

am

e(para

mete

r-list)

{decla

ratio

ns a

nd sta

tem

ents

}

�retu

rn-va

lue-typ

evoid -

a fun

ction

do

es no

t return

a valu

e�

All v

ariables d

efined

in fu

nctio

n d

efinitio

ns are lo

cal variab

les—th

ey’re k

no

wn

on

ly in

the fu

nctio

n in

wh

ich th

ey’re d

efined

�A

fun

ction

’s param

eters are also lo

cal variab

les of th

at fun

ction

.�

Fu

nctio

n square

(lines 1

9–

22

) receives a co

py

of th

e valu

e of arg

um

ent x

from

line 1

3 an

d sto

res it in th

e param

eter y.

�L

ine 6

is a fun

ction

pro

toty

pe.

�N

ot req

uired

if the d

efinitio

n ap

pears b

efo

re th

e functio

n’s first u

se in th

e

pro

gram

-th

e functio

n h

eader also

serves as th

e functio

n p

roto

type

11

5.4

Fu

nc

tion

De

finitio

ns

expects to

receive an

integ

er valu

e from

the caller

info

rms th

e com

piler to

return

s an in

teger resu

lt to th

e callerC

heck

by

com

piler

If data ty

pe n

ot m

atch =

> co

nvert

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�p

ara

meter-list : a

com

ma

-sepa

rated

list con

tainin

g th

e declaratio

ns

of th

e param

eters received

by

the fu

nctio

n w

hen

it’s called

�If n

o v

alue receiv

ed, p

ara

meter-list is v

oid

or sim

ply

left emp

ty

�A

typ

e mu

st be listed

for each

param

eter in th

e param

eter list

�d

eclara

tion

s an

d sta

temen

ts : fun

ction

bo

dy

, also called

a blo

ck

or co

mp

ou

nd

statemen

t.

�V

ariables can

be d

eclared in

any b

lock

, and

blo

cks can

be n

ested.

�T

hree w

ays to

return

con

trol as a fu

nctio

n w

as inv

ok

ed

�n

ot retu

rnin

g a resu

lt: con

trol retu

rns w

hen

the p

rog

ram reach

es the

fun

ction

-end

ing

righ

t brace, o

r by ex

ecutin

g th

e statemen

treturn;

�retu

rnin

g a resu

lt, the statem

ent

return

expre

ssion;

evalu

ates exp

ressio

nan

d retu

rns th

e valu

e of ex

pressio

n to

the

caller.

12

5.4

Fu

nc

tion

De

finitio

ns

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

13

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

14

5.5

Fu

nc

tion

s

with

Mu

ltiple

P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

15

5.5

Fu

nc

tion

s w

ith M

ultip

le P

ara

me

ters

�W

hen

maximum

is called (lin

e 20

), the p

arameters x

(y,z) is in

itialized

with

the v

alue o

f the arg

um

ent n

um

ber1

(nu

mb

er2, n

um

ber3

)

�T

here m

ust b

e on

e argu

men

t in th

e fun

ction

call for each

param

eter (also

called a fo

rmal p

arameter) in

the fu

nctio

n d

efinitio

n

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

16

5.5

Fu

nc

tion

s w

ith M

ultip

le P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

17

5.5

Fu

nc

tion

s w

ith M

ultip

le P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�A

fun

ction

pro

toty

pe (also

called a fu

nctio

n d

eclaration

) tells the

com

piler th

e nam

e of a fu

nctio

n, th

e typ

e of d

ata return

ed b

y th

e

fun

ction

, the n

um

ber o

f param

eters the fu

nctio

n ex

pects to

receive,

the ty

pes o

f tho

se param

eters and

the o

rder in

wh

ich th

e param

eters

of th

ose ty

pes are ex

pected

.

�C

om

piler ch

ecks calls to

a fun

ction

with

the fu

nctio

n p

roto

typ

e

�n

um

ber an

d ty

pes o

f argu

men

ts, argu

men

ts in th

e correct o

rder

�v

alue retu

rned

by

the fu

nctio

n can

be u

sed co

rrectly

18

5.6

Fu

nc

tion

Pro

toty

pe

s a

nd

Arg

um

en

t Co

erc

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�T

he p

ortio

n o

f a fun

ction

pro

toty

pe th

at inclu

des th

e nam

e of th

e

fun

ction

and

the ty

pes o

f its argu

men

ts (no

t inclu

din

g th

e return

typ

e)

is called th

e fun

ction

sign

ature

or sim

ply

the sig

natu

re

�F

un

ction

s in th

e sam

e scop

e mu

st ha

ve u

niq

ue

sign

atures.

�T

he sco

pe is w

here th

e fun

ction is k

no

wn

and

accessible.

19

5.6

Fu

nc

tion

Pro

toty

pe

s a

nd

Arg

um

en

t Co

erc

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�A

rgu

men

t coercio

n-

forcin

g arg

um

ents to

the ap

pro

priate ty

pes

specified

by

the p

arameter d

eclaration

s

�e.g

. intin

call bu

t double in p

roto

typ

e

�C

on

versio

n b

y p

rom

otio

n ru

les -If arg

um

ent v

alues th

at do

no

t co

rrespond

precisely

to th

e param

eter typ

es in th

e fun

ction p

roto

typ

e can b

e co

nv

erted b

y th

e com

piler to

the p

rop

er typ

e befo

re the fu

nctio

n is called

.

�w

itho

ut lo

sing

data, e.g

., inttodouble

�T

he ty

pe o

f each v

alue in

a mix

ed-ty

pe ex

pressio

n is p

rom

oted

to th

e “h

igh

est” typ

e in th

e exp

ression (actu

ally a tem

po

rary v

ersion

of each

valu

e is created

and

used

for th

e exp

ression

—th

e orig

inal v

alues rem

ain

un

chan

ged

).

20

5.6

Fu

nc

tion

Pro

toty

pe

s a

nd

Arg

um

en

t Co

erc

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

21

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�T

he C

++

Stan

dard

Lib

rary is d

ivid

ed in

to m

any

po

rtion

s, each w

ith

its ow

n h

eader file.

�T

he h

eader files co

ntain

the fu

nctio

n p

roto

typ

es for th

e related

fun

ction

s that fo

rm each

po

rtion

of th

e library

.

�T

he h

eader files also

con

tain d

efinitio

ns o

f vario

us class ty

pes an

d

fun

ction

s, as well as co

nstan

ts need

ed b

y th

ose fu

nctio

ns.

�A

head

er file “instru

cts” the co

mp

iler on

ho

w to

interface w

ith

library

and

user-w

ritten co

mp

on

ents.

22

5.7

C+

+ S

tan

da

rd L

ibra

ry H

ea

de

r File

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

23

5.7

C+

+ S

tan

da

rd L

ibra

ry H

ea

de

r File

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

24

5.7

C+

+ S

tan

da

rd L

ibra

ry H

ea

de

r File

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

25

5.7

C+

+ S

tan

da

rd L

ibra

ry H

ea

de

r File

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

26

5.7

C+

+ S

tan

da

rd L

ibra

ry H

ea

de

r File

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�D

evelo

p a g

ame-p

layin

g p

rog

ram th

at inclu

des m

ultip

le fun

ction

s

�rand

and

RAND_MAX

in th

e <cstdlib>

head

er file

i= rand();

gen

erates an u

nsig

ned

integ

er betw

een 0

and

RAND_MAX

�V

isual S

tud

io: RAND_MAX

= 3

27

67

= 2

15-1

�G

NU

C+

+: RAND_MAX

= 2

14

748

364

7 =

23

1-1

�ev

ery n

um

ber b

etween

0 an

d RAND_MAX

has an

equ

al cha

nce (o

r

pro

bab

ility) o

f bein

g ch

osen

each tim

e rand

is called

�S

caling

1 + rand() % 6

�6

: scaling

factor, sh

ift the ran

ge to

1-6

from

0-5

by ad

din

g 1

�F

un

ction

rand

actually

gen

erates pseu

do

rand

om

nu

mb

ers

�R

epeatab

ility is an

imp

ortan

t characteristic o

f rand

�R

epeated

ly callin

g rand

pro

du

ces a sequ

ence o

f nu

mb

ers that ap

pears to

be ran

do

m, b

ut th

e sequ

ence rep

eats itself each tim

e the p

rog

ram ex

ecutes.

27

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

28

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�T

o sh

ow

that th

e nu

mb

ers pro

duced

by rand

occu

r with

app

rox

imately

equ

al likelih

oo

d, F

ig.5

.8 sim

ulates 6

,00

0,0

00 ro

lls of a d

ie

29

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

30

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

31

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�srand-

in h

eader file <

cstdlib>

, it takes an

unsigned

integ

er

argu

men

t and

seeds

the r

and

fun

ction

to p

rod

uce a d

ifferent seq

uen

ce of

rand

om

nu

mb

ers for each

execu

tion

.

�unsignedint:

�tw

o-b

ytes: 0

–6

553

5 (2

16-1

) fou

r-bytes: 0

–4

294

967

295

(23

2-1)

32

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

33

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�T

o ran

do

mize w

itho

ut h

avin

g to

enter a seed

each tim

esrand( time( 0

) );

�time

in <ctime>

�ty

pically

return

s the cu

rrent tim

e as the n

um

ber o

f seconds sin

ce January

1,

1970, at m

idnig

ht G

reenw

ich M

ean T

ime (G

MT

)

�R

ollin

g a six

-sided

die w

ith th

e statemen

tface = 1+ rand() % 6;

�g

eneralize th

is result as

nu

mb

er=

shiftin

gV

alu

e+rand() %

scalin

gF

acto

r;

34

5.8

Ca

se

Stu

dy

: Ra

nd

om

Nu

mb

er G

en

era

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�C

raps:

On

e of th

e mo

st po

pu

lar gam

es of ch

ance p

layed

in casin

os an

d

back

alleys w

orld

wid

e.

�A

play

er rolls tw

o d

ice. Each

die h

as six faces. T

hese faces co

ntain

1, 2

, 3, 4

, 5

and 6

spots. A

fter the d

ice hav

e com

e to rest, th

e sum

of th

e spots o

n th

e two

upw

ard faces is calcu

lated. If th

e sum

is 7 o

r 11 o

n th

e first roll, th

e play

er win

s. If th

e sum

is 2, 3

or 1

2 o

n th

e first roll (called

“craps”), th

e play

er loses (i.e.,

the “h

ouse” w

ins). If th

e sum

is 4, 5

, 6, 8

, 9 o

r 10 o

n th

e first roll, th

en th

at sum

beco

mes th

e play

er’s “poin

t.” To w

in, y

ou m

ust co

ntin

ue ro

lling th

e dice u

ntil

you “m

ake y

our p

oin

t.” The p

layer lo

ses by

rollin

g a 7

befo

re mak

ing th

e poin

t.

�E

nu

mera

tion

: declares a u

ser-defin

ed ty

pe

�gameStatus

is declared

to b

e of n

ew ty

pe S

tatus

�set o

f integ

er con

stants rep

resented

by id

entifiers

�T

he v

alues o

f these en

um

eration

con

stants

start at 0, u

nless sp

ecified

oth

erwise, an

d in

cremen

t by 1

�enumMonths {

JAN

= 1, FEB, MAR, APR, MAY, JUN, JUL, AUG,

SEP, OCT, NOV, DEC };

�resu

lting in

the v

alues 1

thro

ugh

12

35

5.9

Ca

se

Stu

dy: G

am

e o

f Ch

an

ce

; Intro

du

cin

g enum

enum

enum

enum

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

36

5.9

Ca

se

Stu

dy: G

am

e o

f Ch

an

ce

; Intro

du

cin

g enum

enum

enum

enum

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

37

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

38

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

39

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

40

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�T

he attrib

utes o

f variab

les inclu

de n

ame, ty

pe, size an

d v

alue

�E

ach id

entifier in

a pro

gram

has o

ther attrib

utes, in

clud

ing

storag

e class,

scop

ean

d lin

kag

e

�C

++

pro

vid

es five sto

rage-class sp

ecifiers: auto

, register

,

extern

, mutable

and

static

�A

n id

entifier’s sto

rag

e class d

etermin

esth

e perio

d d

urin

g w

hich

tha

t

iden

tifier exists in

mem

ory

.

�A

n id

entifier’s sco

pe

is wh

ere the id

entifier can

be referen

ced in

a

pro

gram

�th

roug

hou

t a pro

gram

; oth

ers from

limited

po

rtions o

f a pro

gram

. (5.1

1)

�A

n id

entifier’s lin

ka

ge

determ

ines w

heth

er it’s kn

ow

n

�o

nly

in th

e sou

rce file wh

ere it’s declared

or

�acro

ss mu

ltiple files th

at are com

piled

, then

link

ed to

geth

er.

�A

n id

entifier’s sto

rage-class sp

ecifierh

elps d

etermin

e its storag

e class

and

link

age.

41

5.1

0S

tora

ge

Cla

ss

es

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�S

torag

e-classsp

ecifierscan

be sp

lit into

two

: auto

matic

and

static

�A

uto

ma

ticsto

rage class: k

eyw

ord

s auto

and

register

�v

ariables are created

wh

en p

rog

ram ex

ecutio

n en

ters the b

lock

in

wh

ich th

ey’re d

efined

�th

ey ex

ist wh

ile the b

lock

is active an

d th

ey’re d

estroy

ed w

hen

the p

rog

ram ex

its the b

lock

.

�S

tatic

storag

e class: key

wo

rds e

xtern

and

static

�v

ariables ex

ist from

the p

oin

t at wh

ich th

e pro

gram

beg

ins

execu

tion

and

last for th

e du

ration

of th

e pro

gram

�allo

cated w

hen

the p

rog

ram b

egin

s execu

tion

�in

itialized o

nce w

hen

its declaratio

n is en

cou

ntered

�fo

r fun

ction

s, the n

ame o

f the fu

nctio

n ex

ists wh

en th

e pro

gram

b

egin

s execu

tion

, just as fo

r all oth

er fun

ction

s

�n

ot n

ecessary u

sed th

rou

gh

ou

t the p

rog

ram ev

en th

ou

gh

they

ex

ist from

the start o

f pro

gram

execu

tion

42

5.1

0S

tora

ge

Cla

ss

es

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�A

uto

matic sto

rage class

�o

nly

local v

ariables o

f a fun

ction

can b

e�

E.g

. auto doublex;

exists o

nly

in th

e nearest en

closin

g p

air of cu

rly b

races with

in th

e b

od

y o

f the fu

nctio

n in

wh

ich th

e defin

ition ap

pears:

�L

ocal v

ariables are o

f auto

matic sto

rage class b

y d

efau

lt, so k

eyw

ord

auto

rarely

is used

.

43

5.1

0S

tora

ge

Cla

ss

es

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�register intcounter = 1;

�su

gg

eststh

at the in

teger v

ariable c

ounter

be p

laced in

on

e of th

e

com

pu

ter’s registers (in

mach

ine-lan

gu

age n

orm

ally lo

aded

into

a register)

�T

he co

mp

iler mig

ht ig

no

re register

declaratio

ns, e.g

., insu

fficient

�register

can b

e used

on

ly w

ith lo

cal variab

les and

fun

ction p

arameters.

44

5.1

0S

tora

ge

Cla

ss

es

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�S

tatic

-k

eyw

ord

s extern

and

static

declare id

entifiers fo

r variab

les

�S

tatic-storag

e-class variab

les ( and

the n

ame o

f fun

ctions) ex

ist (allo

cated) fro

m th

e po

int at w

hich

the p

rog

ram b

egin

s execu

tion

and

last fo

r the d

uratio

n o

f the p

rog

ram.

�S

uch

a variab

le is initialized

on

ce wh

en its d

eclaration

is enco

un

tered.

�T

wo

typ

es of id

entifiers

�ex

ternal id

entifiers (su

ch as g

lob

al variab

lesan

d g

lob

al fun

ction

nam

es)

�lo

cal variab

les declared

with

the sto

rage-class sp

ecifierstatic

.

�G

lob

al variab

les

�p

lacing

variab

le declaratio

ns o

utsid

e any class o

r fun

ction d

efinitio

n.

�retain

their v

alues th

rou

ghou

t the ex

ecutio

n o

f the p

rog

ram.

�G

lob

al variab

les and

glo

bal fu

nctio

ns can

be referen

ced b

y an

y fu

nctio

n

that fo

llow

s their d

eclaration

s or d

efinitio

ns in

the so

urce file

45

5.1

0S

tora

ge

Cla

ss

es

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�L

ocal v

ariables d

eclared static

�e.g.

static intcount = 1;

�k

no

wn

on

ly in

the fu

nctio

n in

wh

ich th

ey’re d

eclared,

�b

ut retain

their v

alues w

hen

the fu

nctio

n retu

rns to

its caller.

�T

he n

ext tim

e the fu

nctio

n is called

, the s

tatic

local v

ariables

con

tain th

e valu

es they

had

wh

en th

e fun

ction last co

mp

leted ex

ecutio

n.

�A

ll nu

meric v

ariables o

f the static sto

rage class are in

itialized

to zero

if th

ey’re n

ot ex

plicitly

initialized

by y

ou

46

5.1

0S

tora

ge

Cla

ss

es

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�S

cop

eo

f an id

entifier: p

ortio

n o

f the p

rog

ram w

here it ca

n b

e used

�E

.g., d

eclare a local v

ariable in

a blo

ck: it can

be referen

ced o

nly

in

that b

lock

and

in b

lock

s nested

with

in th

at blo

ck.

�T

his sectio

n—

functio

nsco

pe, g

lob

al nam

espace sco

pe, lo

cal scop

ean

d

fun

ction-p

roto

typ

e scop

e

�tw

o o

ther sco

pes—

class scop

e(C

h.9

) and

nam

espace sco

pe

(Ch

.2

4)

�g

lob

al n

am

espa

ce scop

e

�A

n id

entifier d

eclared o

utsid

e any fu

nctio

n o

r class. it is “kn

ow

n” in

all

fun

ctions fro

m th

e po

int at w

hich

it’s declared

un

til the en

d o

f the file

�G

lob

al variab

les, fun

ction d

efinitio

ns an

d fu

nctio

n p

roto

typ

es placed

ou

tside a fu

nctio

n

�L

abels

(iden

tifiers follo

wed

by a co

lon

such

as start:

) are the o

nly

iden

tifiers with

fun

ction

scop

e.

�can

be u

sed an

yw

here in

the fu

nctio

n in

which

they

appear, b

ut n

ot b

e outsid

e

�used

in goto

statemen

ts (Appen

dix

F).

�im

plem

entatio

n d

etails that fu

nctio

ns h

ide fro

m o

ne an

oth

er.

47

5.1

1S

co

pe

Ru

les

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�L

oca

lsco

pe -

iden

tifiers declared

insid

e a blo

ck

�b

egin

s at the id

entifier’s d

eclaration

and

end

s at the term

inatin

g rig

ht

brace (}

) of th

e blo

ck in

wh

ich th

e iden

tifier is declared

�L

ocal v

ariables (in

cludin

g static)

, fun

ction p

arameters

�A

ny b

lock

can co

ntain

variab

le declaratio

ns.

�W

hen

blo

cks are n

ested an

d an

iden

tifier in an

ou

ter blo

ck h

as the sam

e n

ame as an

iden

tifier in an

inn

er blo

ck, th

e iden

tifier in th

e ou

ter blo

ck is

“hid

den

” un

til the in

ner b

lock

termin

ates.

48

5.1

1S

co

pe

Ru

les

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�F

un

ction

pro

toty

pe sco

pe: o

nly

iden

tifiers in th

e param

eter list of a fu

nctio

n

pro

toty

pe (n

ames n

ot req

uired

, only

types req

uired

)

�N

ames in

the list are ig

nored

by

the co

mpiler

�Id

entifiers u

sed in

a functio

n p

roto

type can

be reu

sed elsew

here in

the p

rogram

w

ithout am

big

uity

�In

a single p

roto

type, a p

articular id

entifier can

be u

sed o

nly

once

49

5.1

1S

co

pe

Ru

les

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

50

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

51

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�S

tack

: a data stru

cture an

alog

ou

s to a p

ile of d

ishes

�p

ush

ing th

e dish

on

to th

e stack, an

d p

op

pin

g th

e dish

off th

e stack (b

oth

from

the to

p)

�last-in

, first-out (L

IFO

) data stru

ctures

�F

un

ction

call stack(p

rogram

execu

tion

stack)

�w

ork

ing “b

ehin

d th

e scenes” -

sup

po

rts the fu

nctio

n call/retu

rn m

echan

ism

�su

pp

orts th

e creation

, main

tenan

ce and

destru

ction o

f each called

fun

ction’s au

tom

atic variab

les

�as each

fun

ction (fx

) is called

, it may

, in tu

rn, call o

ther fx

(s)

�k

eep tra

ck o

f the retu

rn a

dd

resses to retu

rn co

ntro

l to th

e fxcallin

g it

�E

ach tim

e a fxcalls an

oth

er fx, a

n en

try is p

ush

ed o

nto

the sta

ck

�T

his en

try, called

a stack

fram

eo

r an activ

ation

record

, con

tains th

e

return

add

ress and

som

e add

ition

al info

rmatio

n

52

5.1

2F

un

ctio

n C

all S

tac

k a

nd

Ac

tiva

tion

Re

co

rds

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�If th

e called fu

nctio

n retu

rns, in

stead o

f calling

ano

ther fu

nctio

n b

efore

return

ing, th

e stack

fram

e for th

e fun

ction

call is p

op

ped

, and

con

trol

transfers to

the retu

rn ad

dress in

the p

op

ped

stack fram

e.

�called

fun

ction

find

s the in

form

ation

to retu

rn at th

eto

po

f the stack

�If o

ne fu

nctio

n m

akes a call to

ano

ther, a n

ew stack

frame is p

ush

ed

�T

hu

s, the retu

rn ad

dress req

uired

by th

e new

ly called

fun

ction to

retu

rn to

its caller is no

w lo

cated at th

e top

of th

e stack.

�A

no

ther im

po

rtant resp

on

sibility

of stack

frame

�A

uto

ma

tic varia

bles, p

arameters an

d lo

cal variab

les the fu

nctio

n d

eclares

�n

eed to

exist w

hile a fu

nctio

n is ex

ecutin

g

�n

eed to

remain

active if th

e fun

ction m

akes calls to

oth

er fun

ctions

�W

hen

called fu

nctio

n retu

rns—

and

no

lon

ger n

eeds its lo

cal auto

matic

variab

les—its stack

frame is p

op

ped

from

the stack

, and

tho

se local

auto

matic v

ariables are n

o lo

ng

er kn

ow

n to

the p

rog

ram

�O

nly

a certain am

ou

nt o

f mem

ory

can b

e used

to sto

re activatio

n reco

rds o

n

the fu

nctio

n call stack

du

e to fin

ite com

pu

ter mem

ory

�stack

ov

erflow

-if m

ore fu

nctio

n calls o

ccur th

an can

stored

53

5.1

2F

un

ctio

n C

all S

tac

k a

nd

Ac

tiva

tion

Re

co

rds

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

54

5.1

2F

un

ctio

n C

all S

tac

k a

nd

Ac

tiva

tion

Re

co

rds

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�activ

ation

record

�1. OS

calls main: retu

rn ad

dress R

1 an

d au

to-v

ar. a�

2. main

calls square: retu

rn ad

dressR2 an

d au

to-v

ar. x

55

5.1

2F

un

ctio

n C

all S

tac

k a

nd

Ac

tiva

tion

Re

co

rds

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

56

5.1

2F

un

ctio

n C

all S

tac

k a

nd

Ac

tiva

tion

Re

co

rds

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�square retu

rns to

main: stack

is po

pp

ed, g

ives R2

and

loo

sing

x�

main return

s to O

S: stack is p

op

ped

again

, giv

es R1an

d lo

osin

g a

57

5.1

2F

un

ctio

n C

all S

tac

k a

nd

Ac

tiva

tion

Re

co

rds

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�A

n em

pty

param

eter list: writin

g eith

er void

or n

oth

ing at all in

paren

theses

�T

he p

roto

typ

e

voidprint();

specifies th

at fun

ction

print

do

es no

t take arg

um

ents an

d d

oes n

ot retu

rn

a valu

e

58

5.1

3F

un

ctio

ns

with

Em

pty

Pa

ram

ete

r Lis

ts

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

59

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�C

++

pro

vid

es inlin

e fun

ctions

to h

elp red

uce th

e execu

tion-tim

e ov

erhead

of fu

nctio

n calls—

especially

for sm

allfu

nctio

ns.

�q

ualifier i

nline

befo

re a fun

ction’s retu

rn ty

pe in

the fu

nctio

n d

efinitio

n:

“adv

ises” the co

mp

iler to g

enerate a co

py o

f the fu

nctio

n’s co

de in

place

(wh

en ap

pro

priate) to

avo

id a fu

nctio

n call.

�T

he co

mp

iler can ig

no

re the i

nline

qu

alifier and

typ

ically d

oes so

for all

bu

t the sm

allest fun

ction

s

�trad

e-off b

etween

mem

ory

and

time

60

5.1

4In

line

Fu

nc

tion

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�K

eyw

ord

const

in fu

nctio

n cube

’s param

eter list (line 9

) tells the

com

piler th

at the fu

nctio

n d

oes n

ot m

od

ify v

ariable s

ide

, ensu

ring

side

’s valu

e is no

t chan

ged

by th

e fun

ction d

urin

g th

e calculatio

n.

�N

otice th

at the co

mp

lete defin

ition

of fu

nctio

n cube

app

ears befo

re it’s u

sed in

the p

rog

ram.

�T

his is req

uired

so th

at the co

mp

iler kn

ow

s ho

w to

exp

and

a cube

fun

ction

call into

its inlin

edco

de.

�F

or th

is reason, reu

sable in

line fu

nctio

ns are ty

pically

placed

in h

eader files,

so th

at their d

efinitio

ns can

be in

clud

ed in

each so

urce file th

at uses th

em.

61

5.1

4In

line

Fu

nc

tion

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

62

5.1

4In

line

Fu

nc

tion

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

Tw

o w

ays to

pass arg

um

ents to

fun

ction

s

�p

ass-by

-va

lue

�a co

py

of th

e argu

men

t’s valu

e is mad

e and

passed

(on

the

fun

ction

call stack) to

the called

fun

ction

�ch

ang

es to th

e cop

y d

o n

ot affect th

e orig

inal

�p

reven

ts the accid

ental sid

e effects

�p

ass-by

-reference

�th

e caller giv

es the called

fun

ction

the ab

ility to

access th

e

caller’s d

ata

directly, an

d to

mo

dify

that d

ata

�referen

ce param

eter: an alias fo

r its corresp

on

din

g arg

um

ent in

a

fun

ction

call.

�fu

nctio

n p

roto

typ

e by

an am

persan

d (&

)

�th

e orig

inal v

ariable can

be m

od

ified b

y th

e called fu

nctio

n

�to

specify

a reference to

a con

stant, p

lace the c

onst

qu

alifier

�F

un

ction

s can retu

rn referen

ces, bu

t this can

be d

ang

erous.

63

5.1

5R

efe

ren

ce

s a

nd

Re

fere

nc

e P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

64

5.1

5R

efe

ren

ce

s a

nd

Re

fere

nc

e P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

65

5.1

5R

efe

ren

ce

s a

nd

Re

fere

nc

e P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

66

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�R

eferences can

also b

e used

as alia

sesfo

r oth

er variab

les

with

in a fu

nctio

n // u

se the sam

e mem

ory

67

5.1

5R

efe

ren

ce

s a

nd

Re

fere

nc

e P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

68

5.1

5R

efe

ren

ce

s a

nd

Re

fere

nc

e P

ara

me

ters

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�U

sed in

a fu

nctio

n rep

eated

ly w

ith th

e sam

e arg

um

ent v

alu

e for

a p

articu

lar p

ara

meter

�O

mits an

argu

men

t for a p

arameter w

ith a d

efault arg

um

ent in

a fu

nctio

n call, th

e com

piler rew

rites the fu

nctio

n call an

d in

serts the

defau

lt valu

e of th

at argu

men

t.

�D

efault arg

um

ents m

ust b

e the rig

htm

ost (trailin

g) arg

um

ents in

a fu

nctio

n’s p

arameter list.

�D

efault arg

um

ents m

ust b

e specified

with

the first o

ccurren

ce of th

e

fun

ction

nam

e—ty

pically

, in th

e fun

ction

pro

toty

pe.

�D

efault v

alues can

be an

y ex

pressio

n, in

clud

ing

con

stants, g

lob

al v

ariables o

r fun

ction

calls.

�D

efault arg

um

ents also

can b

e used

with

inline

fun

ction

s.

69

5.1

6D

efa

ult A

rgu

me

nts

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

70

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

71

5.1

6D

efa

ult A

rgu

me

nts

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�u

nary

scop

e resolu

tion

op

erator (:

:)

: to access a g

lob

al

variab

le wh

en a lo

cal variab

le of th

e same n

ame is in

scop

e

72

5.1

7U

na

ry S

co

pe

Re

so

lutio

n O

pe

rato

r

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

73

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�F

un

ction

s of th

e sam

e na

me w

ith d

ifferent sig

na

tures

�U

sed to

create several fu

nctio

ns o

f the sam

e nam

e that p

erform

similar

tasks, b

ut o

n d

ifferent d

ata typ

es

�T

he co

mp

iler uses o

nly

the p

arameter lists to

distin

gu

ish b

etween

ov

erload

ed fu

nctio

ns.

�F

un

ction

main

is no

t man

gled

, becau

se it cann

ot b

e ov

erload

ed.

�U

se cautio

n w

hen

ov

erload

ing

fun

ction

s with

defau

lt param

eters,

becau

se this m

ay cau

se amb

igu

ity,

�e.g

. a fxw

ith 3

par. &

a fx. w

ith 3

par +

1 d

efault p

ar. (com

pilatio

n erro

r)

74

5.1

8F

un

ctio

n O

ve

rloa

din

g

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

75

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�F

un

ction

temp

lates:id

entica

lp

rog

ram lo

gic an

d o

peratio

ns fo

r

�N

ote: O

verlo

aded

fun

ctions p

erform

similar o

peratio

ns th

at inv

olv

e

differen

t pro

gram

log

ic on

differen

t data ty

pes.

�D

efines a w

ho

le family

of o

verlo

aded

fun

ction

s

�G

iven

the arg

um

ent ty

pes =

> au

tom

atically g

enerates sep

arate fun

ction

temp

late specializatio

ns

to h

and

le each ty

pe o

f call app

rop

riately

76

5.1

9F

un

ctio

n T

em

pla

tes

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

77

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

78

5.1

9F

un

ctio

n T

em

pla

tes

�E

very

param

eter in th

e temp

late param

eter list (often

referred to

as a form

al typ

e param

eter) is preced

ed b

y k

eyw

ord

typename

or k

eyw

ord

class

(wh

ich are sy

no

ny

ms in

this co

ntex

t).

�T

he fo

rmal ty

pe p

arameters are p

laceho

lders fo

r fun

dam

ental

typ

es or u

ser-defin

ed ty

pes.

�T

he n

ame o

f a typ

e param

eter mu

st be u

niq

ue in

the tem

plate

param

eter list for a p

articular tem

plate d

efinitio

n.

�M

ore th

an o

ne class, e.g

. template <class T1, class T2>

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�R

ecursiv

e fun

ction: fu

nctio

n callin

g itself, eith

er directly

, or in

directly

(thro

ug

h an

oth

er fun

ction)

�B

ase case:fu

nctio

n so

lvin

g o

nly

the sim

plest case, sim

ply

return

s a result

�m

ore co

mp

lex: d

ivid

ing th

e pro

blem

into

two

con

ceptu

al pieces

�A

: a piece th

at the fu

nctio

n k

no

ws h

ow

to d

o an

d

�B

: a piece th

at it do

es no

t kn

ow

ho

w to

do

�T

o m

ake recu

rsion feasib

le, B m

ust resem

ble th

e orig

inal p

rob

lem, b

ut

be a slig

htly

simp

ler or sm

aller versio

n.

�T

his n

ew p

rob

lem lo

ok

s like th

e orig

inal, so

the fu

nctio

n calls a co

py o

f itself to

wo

rk o

n th

e smaller p

rob

lem—

this is referred

to as a recu

rsive call

and

is also

called th

e recursio

n step

.

�T

he recu

rsion

step o

ften in

clud

es the k

eyw

ord

return -

its result w

ill be

com

bin

ed w

ith th

e po

rtion o

f the p

rob

lem th

e fun

ction k

new

ho

w to

solv

e to

form

the resu

lt passed

back

to th

e orig

inal caller, p

ossib

ly main

�E

ach tim

e the fu

nctio

n calls itself w

ith a slig

htly

simp

ler versio

n o

f the

orig

inal p

rob

lem in

ord

er to ev

entu

ally co

nv

erge o

n th

e base case.

�A

t that p

oin

t, the fu

nctio

n reco

gn

izes the b

ase case and

return

s a result to

the

prev

ious co

py o

f the fu

nctio

n, an

d a seq

uen

ce of retu

rns en

sues u

p th

e line

un

til the o

rigin

al call even

tually

return

s the fin

al result to

the o

rigin

al caller

79

5.2

0R

ec

urs

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�Ex. factorial

80

5.2

0R

ec

urs

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

81

5.2

0R

ec

urs

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�unsignedlongint:

>=

4 B

ytes: 0

to >

= (2

32-1

) = 4

29

49

67

29

5

�int:

4 B

ytes =

> -

23

1to

(2

31-1

) = 2

14

74

83

647

82

5.2

0R

ec

urs

ion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�F

ibo

nacci n

um

ber is th

e sum

of th

e prev

iou

s two

Fib

on

acci nu

mb

ers.

�fibonacci(0) = 0

fibonacci(1) = 1

fibonacci(n) = fibonacci(n–1) + fibonacci(n–2)

�T

he F

ibo

nacci series

0, 1, 1, 2, 3, 5, 8, 13, 21, …

�A

series occu

rs in n

ature an

d, in

particu

lar, describ

es a form

of sp

iral.

�T

he ratio

of su

ccessive F

ibo

nacci n

um

bers co

nv

erges o

n a co

nstan

t v

alue o

f 1.6

18

….

�T

his n

um

ber, to

o, freq

uen

tly o

ccurs in

natu

re and

has b

een called

the

go

lden

ratioo

r the g

old

en m

ean.

�H

um

ans ten

d to

find

the g

old

en m

ean aesth

etically p

leasing

.

�A

rchitects o

ften d

esign

win

do

ws, ro

om

s and

bu

ildin

gs w

ho

se leng

th

and

wid

th are in

the ratio

of th

e go

lden

mean

.

�P

ostcard

s are often

desig

ned

with

a go

lden

mean

leng

th/w

idth

ratio.

83

5.2

1E

xa

mp

le U

sin

g R

ec

urs

ion

: Fib

on

ac

ci S

erie

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

84

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

85

5.2

1E

xa

mp

le U

sin

g R

ec

urs

ion

: Fib

on

ac

ci S

erie

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�C

++

do

es no

t specify

the o

rder in

wh

ich th

e op

erand

s of m

ost

op

erators (in

clud

ing

+) are to

be ev

aluated

.

�D

on

’t assum

e the o

rder in

wh

ich th

ese calls execu

te (It’s OK

in

Fig

.5.2

9.)

�fibonacci(n) = fibonacci(n–1) + fibonacci(n–2)

�In

som

e pro

gram

s the ev

aluatio

n o

f an o

peran

d can

hav

e side

effects(ch

ang

es to d

ata valu

es) that co

uld

affect the fin

al result o

f

the ex

pressio

n

�C

++

specifies th

e ord

er of ev

aluatio

n o

f the o

peran

ds o

f on

ly fo

ur

op

erators—

&&

, ||

, com

ma (,

) and

?:

.

86

5.2

1E

xa

mp

le U

sin

g R

ec

urs

ion

: Fib

on

ac

ci S

erie

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�E

ach lev

el of recu

rsion

in fu

nctio

n fibonacci

has a d

ou

blin

g

effect on

the n

um

ber o

f fun

ction

calls; i.e., the n

um

ber o

f recursiv

e

calls that are req

uired

to calcu

late the n

th F

ibo

nacci n

um

ber is o

n

the o

rder o

f 2n.

�C

alculatin

g th

e 20

th F

ibo

nacci n

um

ber: 2

20≈

a millio

n calls

the 3

0th

Fib

on

acci nu

mb

er: 23

0≈a b

illion

calls

�C

om

pu

ter scientists refer to

this as ex

po

nen

tial com

plex

ity.

87

5.2

1E

xa

mp

le U

sin

g R

ec

urs

ion

: Fib

on

ac

ci S

erie

s

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�B

oth

are based

on

a con

trol statem

ent:

iteration

: repetitio

nstru

cture recu

rsion

: a selection

structu

re

�B

oth

inv

olv

e repetitio

n:

exp

licitly a rep

etition

structu

re thro

ug

h rep

eated fu

nctio

n calls

�B

oth

inv

olv

e a termin

ation

test:

loo

p-co

ntin

uatio

n co

nd

ition

fails a base case is reco

gn

ized

�B

oth

grad

ually

app

roach

termin

ation

:

mo

difies a co

un

ter p

rod

uces sim

pler v

ersion

s

�B

oth

can o

ccur in

finitely

:

the lo

op

-con

tinu

ation

test nev

er beco

mes false

the recu

rsion

step d

oes n

ot co

nv

erges o

n th

e base case

88

5.2

2R

ec

urs

ion

vs

. Itera

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

89

5.2

2R

ec

urs

ion

vs

. Itera

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

90

5.2

2R

ec

urs

ion

vs

. Itera

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

�N

egativ

eso

f Recu

rsion

�rep

eatedly

inv

ok

es the m

echan

ism, an

d co

nseq

uen

tly th

e o

verh

ead, o

f fun

ction

calls.

�ex

pen

sive in

bo

th p

rocesso

r time an

d m

emo

ry sp

ace.

�E

ach recu

rsive call cau

ses ano

ther co

py

of th

e fun

ction

(actually

o

nly

the fu

nctio

n’s v

ariables) to

be created

; this can

con

sum

e co

nsid

erable m

emo

ry.

�Iteratio

n n

orm

ally o

ccurs w

ithin

a fun

ction

, so th

e ov

erhead

of

repeated

fun

ction

calls and

extra m

emo

ry assig

nm

ent is o

mitted

.

91

5.2

2R

ec

urs

ion

vs

. Itera

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

92

5.2

2R

ec

urs

ion

vs

. Itera

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

93

5.2

2R

ec

urs

ion

vs

. Itera

tion

YP

C -

NT

U G

IPO

& E

EIn

trod

uctio

n to

C+

+ P

rog

ram

min

gN

TU

BA

94

5.2

2R

ec

urs

ion

vs

. Itera

tion