VBA HOMEWORK PROBLEM due in 7 hours

profileKaydee
ch7_p1.pdf

P ro

gr am

m in

g fo

r M

ec h

an ic

al

En gi

n ee

rs (

M E2

0 9

)

C o

u rs

e G

u id

e C

h ap

te r

7

Pa rt

1

Lo o

p C

o n

tr o

l S tr

u ct

u re

s

Lo op

C on

tr ol

S tr

uc tu

re s

In t

h is

c h

ap te

r, y

o u

w ill

le ar

n h

o w

t o

s tr

u ct

u re

lo o

p s

w it

h in

y o

u r

co d

e. I

n o

th er

w o

rd s,

a b

lo ck

o f

co d

e, p

la ce

d w

it h

in lo

o p

b

o u

n d

ar ie

s, w

ill b

e ex

ec u

te d

u n

ti l a

p re

-p re

sc ri

b e

d c

o n

d it

io n

is

m et

.

Fo r-

N ex

t L oo

p

Su p

p o

se y

o u

w an

t re

ad in

d at

a en

te re

d b

y th

e u

se r

in t

h e

fi rs

t 5

ro

w s

o f

Sh ee

t1 , C

o lu

m n

B .

O n

e w

ay is

t o

w ri

te t

h e

n ec

es sa

ry

st at

em en

ts , l

ik e

th is

:

O p t i o n B a s e 1

D i m m y N u m ( 5 ) A s S t r i n g

m y N u m ( 1 ) = S h e e t 1 . C e l l s ( 1 , 2 ) . V a l u e

m y N u m ( 2 ) = S h e e t 1 . C e l l s ( 2 , 2 ) . V a l u e

m y N u m ( 3 ) = S h e e t 1 . C e l l s ( 3 , 2 ) . V a l u e

m y N u m ( 4 ) = S h e e t 1 . C e l l s ( 4 , 2 ) . V a l u e

m y N u m ( 5 ) = S h e e t 1 . C e l l s ( 5 , 2 ) . V a l u e

A m

o re

e ff

ic ie

n t

w ay

is t

o u

se t

h e

Fo r-

N ex

t L oo

p st

ru ct

u re

:

F o r x = 1 T o 5 S t e p 1

m y N u m ( x ) = S h e e t 1 . C e l l s ( x , 2 ) . V a l u e

N e x t

H er

e, w

e u

se t

h e

lo o

p v

ar ia

b le

, x , t

o p

ro vi

d e

th e

ar ra

y in

d ex

n

u m

b e

r. T

h e

lo o

p v

ar ia

b le

w ill

b e

se t

to t

h e

"S ta

rt "

va lu

e (

1 in

t h

is

ca se

), a

n d

in cr

em en

te d

b y

th e

"S te

p "

va lu

e (

1 in

t h

is c

as e)

e ac

h

ti m

e th

e lo

o p

is e

xe cu

te d

. Ea

ch t

im e

x is

in cr

em e

n te

d , i

t is

co

m p

ar ed

t o

t h

e "S

to p

" va

lu e

( 5

in t

h is

c as

e) .

W h

en x

> 5

, p

ro ce

ss in

g w

ill ju

m p

t o

t h

e st

at em

en t

fo llo

w in

g th

e "N

ex t"

. Th

e ex

am p

le a

b o

ve w

ill e

xe cu

te t

h e

st at

em en

t in

t h

e lo

o p

5 t

im es

.

C o

n si

d er

t h

e fo

llo w

in g

co d

e:

F o r x = 1 T o 5 S t e p 2

m y N u m ( x ) = S h e e t 1 . C e l l s ( x , 2 ) . V a l u e

N e x t

H o

w m

an y

ti m

es w

ill t

h e

st at

em en

t b

e ex

ec u

te d

?

A n

o th

er o

p ti

o n

is t

o a

d d

t h

e n

am e

o f

th e

v ar

ia b

le b

e in

g in

cr em

en te

d a

ft er

t h

e "N

ex t"

k ey

w o

rd li

ke t

h is

: F o r x = 1 T o 5 S t e p 2

m y N u m ( x ) = S h e e t 1 . C e l l s ( x , 2 ) . V a l u e

N e x t x

Th is

is g

o o

d p

ro gr

am m

in g

p ra

ct ic

e , b

ec au

se it

h el

p s

m ak

e yo

u r

co d

e m

o re

u n

d er

st an

d ab

le a

n d

e as

ie r

to d

eb u

g, p

ar ti

cu la

rl y

w h

en y

o u

h

av e

n es

te d

F o

r- N

ex t

Lo o

p s.

Le t’s

tr y

so m

e ex

am p

le s

th at

m ak

es u

se o

f th

e Fo

r- N

ex t

st ru

ct u

re .

In -C

la ss

E xe

rc is

e #1

U se

t h

e F

o r-

N ex

t co

n tr

o l s

tr u

ct u

re t

o w

ri te

a f

u n

ct io

n t

o c

o m

p u

te

th e

fa ct

o ri

al o

f an

y p

o si

ti ve

in te

ge r.

F u n c t i o n F a c t o r i a l ( n u m b e r A s I n t e g e r ) A s D o u b l e

< p

u t

yo u

r co

d e

h er

e>

E n d F u n c t i o n

D o

es y

o u

r so

lu ti

o n

lo o

k so

m et

h in

g lik

e th

is ?

F u n c t i o n F a c t o r i a l ( n u m b e r A s I n t e g e r ) A s D o u b l e

' d e c l a r e l o c a l v a r i a b l e

D i m l o o p V a r i a b l e A s I n t e g e r

' c h e c k i n p u t

I f n u m b e r < 0 T h e n E x i t F u n c t i o n

' i n i t i a l i z e r e s u l t

F a c t o r i a l = 1

' c o m p u t e f a c t o r i a l u s i n g F o r - N e x t l o o p

F o r l o o p V a r i a b l e = 2 T o n u m b e r

F a c t o r i a l = F a c t o r i a l * l o o p V a r i a b l e

N e x t l o o p V a r i a b l e

E n d F u n c t i o n

In -C

la ss

E xa

m pl

e #2

N u

m er

ic al

p ro

b le

m s

ar e

o ft

en s

o lv

ed u

si n

g N

es te

d Lo

op s

(l o

o p

s w

it h

in lo

o p

s) .

W ri

te a

S ub

p ro

ce d

u re

t o

c al

cu la

te t

h e

fa ct

o ri

al s

o f

n u

m b

er s

fr o

m 1

to

3 0

, a n

d t

ab u

la te

t h

e re

su lt

s in

a w

o rk

sh ee

t t

ab le

.

S u b f a c t ( )

< p

u t

yo u

r co

d e

h er

e>

E n d S u b

D o

es y

o u

r so

lu ti

o n

lo o

k so

m et

h in

g lik

e th

is ?

S u b f a c t ( )

' d e c l a r e l o c a l v a r i a b l e s

D i m f a c t o r i a l A s D o u b l e , n A s I n t e g e r , i A s I n t e g e r

' w r i t e r e s u l t s t a b l e c o l u m n h e a d i n g s

C e l l s ( 1 , 1 ) = " n " : C e l l s ( 1 , 2 ) = " f a c t o r i a l "

' o u t e r l o o p

F o r n = 1 T o 3 0

f a c t o r i a l = 1

' i n n e r l o o p t o c a l c u l a t e f a c t o r i a l o f n

F o r i = 1 T o n

f a c t o r i a l = f a c t o r i a l * i

N e x t i

C e l l s ( n + 1 , 1 ) = n

C e l l s ( n + 1 , 2 ) = f a c t o r i a l

N e x t n

E n d S u b

D o-

Lo op

C on

tr ol

S tr

uc tu

re

Th e

D o

-L o

o p

is s

im ila

r to

t h

e Fo

r- N

ex t,

b u

t lo

o p

in g

co n

ti n

u es

in

d ef

in it

el y

u n

ti l a

c o

n tr

o l s

ta te

m en

t w

it h

in t

h e

b lo

ck t

el ls

V B

A t

o

ex it

t h

e lo

o p

. In

g en

e ra

l, it

c an

lo o

k so

m et

h in

g lik

e th

is :

D o

<s ta

te m

en ts

>

I f

<l o

gi ca

l e xp

re ss

io n

> T h e n G o T o

<l ab

el >

<s ta

te m

en ts

>

L o o p

<l ab

el > :

O r.

..

D o

<s ta

te m

en ts

>

I f < l o g i c a l e x p r e s s i o n > T h e n E x i t D o

<s ta

te m

en ts

>

L o o p

Ca ut

io n:

I f y

ou d

on ’t

h av

e so

m et

hi ng

li ke

th

e G o T o

o r E x i t D o

s h

o w

n in

t h

es e

ex am

p le

s,

yo u

r p

ro gr

am c

o u

ld r

u n

in d

ef in

it el

y, t

h u

s "h

an gi

n g

u p

" yo

u r

Ex ce

l p ro

gr am

. Th

is c

an r

es u

lt in

lo ss

o f

yo u

r w

o rk

.

Ex am

pl e

D i m x !

x = 1 0

D o

I f x < 0 T h e n E x i t D o

x = x – 1

L o o p

Th e

p ro

ce d

u re

w ill

e xi

t th

e lo

o p

w h

en x

< 0

, p ro

ce e

d in

g w

it h

t h

e st

at em

en t

fo llo

w in

g L o o p

. If

t h

e co

n d

it io

n is

n o

t in

cl u

d e

d , t

h e

lo o

p

w o

u ld

r ep

e at

u n

ti l x

r ea

ch e

d a

v al

u e

o f

ap p

ro xi

m at

el y

-1 0

3 8 .

H o

w m

an y

ti m

es w

ill t

h e I f

s ta

te m

en t

b e

ex ec

u te

d ?

W h

at v

al u

e w

ill x

h av

e af

te r

th e

lo o

p is

e xi

te d

?

D o-

W hi

le L

oo p

A c

o n

ve n

ie n

t va

ri at

io n

o f

th e

D o-

Lo op

is t

h e

D o-

W hi

le .

Th e

ex it

co

n d

it io

n is

s p

ec if

ie d

in t

h e

D o

s ta

te m

en t.

D o W h i l e

<l o

gi ca

l c o

n d

it io

n >

< st

at em

e n

ts >

L o o p

Th u

s, t

h e

p re

vi o

u s

ex am

p le

a b

o ve

c o

u ld

b e

w ri

tt en

t h

is w

ay :

D o W h i l e x > = 0

x = x – 1

L o o p

Le t’s

p ra

ct ic

e th

e D

o- W

h ile

w it

h a

n in

te re

st in

g ex

am p

le f

ro m

M

E3 0

9 .

In -C

la ss

E xe

rc is

e #3

C re

at e

a Fu

n ct

io n

p ro

ce d

u re

t o

c al

cu la

te si n𝑥

u si

n g

th e

M ac

la u

ri n

se

ri e

s ex

p an

si o

n f

o r

th e

si n

f u

n ct

io n

( M

ac la

u ri

n s

er ie

s ar

e n

am ed

af

te r

th e

Sc o

tt is

h m

at h

em at

ic ia

n C

o lin

M ac

la u

ri n

):

w h

er e 𝑥

is in

r ad

ia n

s.

Th e

te rm

s o

f th

is s

er ie

s ex

p an

si o

n g

et s

m al

le r

an d

s m

al le

r.

C al

cu la

te si n⁡𝑥

u si

n g

th e

d im

in is

h in

g te

rm s

u n

ti l y

o u

e n

co u

n te

r o

n e

b el

o w

a "

to le

ra n

ce "

va lu

e 𝜀 =

1𝑒 − 5.

W h

er e

th e

f ac

to ri

al is

n ee

d ed

in t

h e

eq u

at io

n , u

se t

h e

fu n

ct io

n w

e cr

ea te

d in

E xe

rc is

e #1

( if

t h

e fu

n ct

io n

is in

a n

o p

en w

o rk

b o

o k,

V B

A

w ill

f in

d it

). F

o r

ex am

p le

: t e r m = ( - 1 ) ^ n * x ^ ( 2 * n + 1 ) / f a c t o r i a l ( 2 * n + 1 )

Th e

so lu

ti o

n lo

o ks

li ke

t h

is :

F u n c t i o n M y S i n ( x A s D o u b l e ) A s D o u b l e

' D e c l a r e l o c a l v a r i a b l e s

D i m t e r m A s D o u b l e , t o l A s D o u b l e , n A s I n t e g e r

' i n i t i a l c o n d i t i o n s

t o l = 0 . 0 0 0 0 1 ' t o l e r a n c e v a l u e

n = 0 ' n f o r f i r s t t e r m

t e r m = x ' f i r s t t e r m v a l u e

M y S i n = t e r m

' l o o p u n t i l t o l e r a n c e a c h i e v e d

D o W h i l e A b s ( t e r m ) > t o l

n = n + 1 ' n e x t v a l u e o f n

t e r m = ( - 1 ) ^ n * x ^ ( 2 * n + 1 ) / _

F a c t o r i a l ( 2 * n + 1 ) ' n e x t t e r m v a l u e

M y S i n = M y S i n + t e r m ' u p d a t e s i n ( x )

L o o p

E n d F u n c t i o n

9 e

xe cu

ta b

le s

ta te

m en

ts .