11 – parameters
DESCRIPTION
11 – Parameters. Question: Arrays. How many array variables are in the following code: Dim x Dim y Dim f(4) x = 12 y = 6 f(2) = 21. 1. Question: Arrays. How many errors are in the following code: Dim x Dim y Dim f(4) f = 3 y(3) = 6 f(1) = 19 f(5) = 21. Session Aims & Objectives. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/1.jpg)
Mark Dixon Page 1
11 – Parameters
![Page 2: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/2.jpg)
Mark Dixon Page 2
Question: Arrays• How many array variables are in the
following code:
Dim xDim yDim f(4) x = 12 y = 6 f(2) = 21
1
![Page 3: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/3.jpg)
Mark Dixon Page 3
Question: Arrays• How many errors are in the following code:
Dim xDim yDim f(4) f = 3 y(3) = 6 f(1) = 19 f(5) = 21
![Page 4: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/4.jpg)
Mark Dixon Page 4
Session Aims & Objectives• Aims
– To introduce passing parameters/arguments to procedures to make them more general purpose
• Objectives, after this week’s sessions, you should be able to:
– use parameters in your programs to make procedures more flexible
– distinguish between formal and actual parameters
– pass parameters by reference and by value– identify and correct parameter errors
![Page 5: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/5.jpg)
Mark Dixon Page 5
Example: Clock (analysis)SPECIFICATION
• User Requirements – to know what the time is
• Software Requirements– Functional:
–display current time in analogue (traditional clock face) format
– Non-functionalshould be easy to read
![Page 6: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/6.jpg)
Mark Dixon Page 6
Example: Clock (user interface)• 14 objects:
– 12 numbers– mid point– second point
(moving)
![Page 7: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/7.jpg)
Mark Dixon Page 7
Example: Clock v0 (HTML)<html>
<head><title></title></head>
<body>
<div id=div1 style="position: absolute;">1</div>
<div id=div2 style="position: absolute;">2</div>
<div id=div3 style="position: absolute;">3</div>
<div id=div4 style="position: absolute;">4</div>
<div id=div5 style="position: absolute;">5</div>
<div id=div6 style="position: absolute;">6</div>
<div id=div7 style="position: absolute;">7</div>
<div id=div8 style="position: absolute;">8</div>
<div id=div9 style="position: absolute;">9</div>
<div id=div10 style="position: absolute;">10</div>
<div id=div11 style="position: absolute;">11</div>
<div id=div12 style="position: absolute;">12</div>
<img id=imgMid style="position: absolute;" src="dot.gif" />
<img id=imgSec style="position: absolute;" src="dot.gif" />
</body>
</html>
![Page 8: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/8.jpg)
Mark Dixon Page 8
Example: Clock v1 (HTML)• Remove 'hard coded' tags
<html>
<head><title></title></head>
<body>
<img id=imgMid style="position: absolute;" src="dot.gif" />
<img id=imgSec style="position: absolute;" src="dot.gif" />
</body>
</html>
![Page 9: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/9.jpg)
Mark Dixon Page 9
Example: Clock v1 (code)Option Explicit
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 div3.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 3) * 200 div3.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 3) * 200 div4.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 4) * 200 div4.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 4) * 200 div5.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 5) * 200 div5.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 5) * 200 div6.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 6) * 200 div6.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 6) * 200 div7.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 7) * 200 div7.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 7) * 200 div8.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 8) * 200 div8.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 8) * 200 div9.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 9) * 200 div9.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 9) * 200 div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style='position: absolute;'>" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 … … … div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setInterval "ShowHands", 500 End Sub
• use loop to put in tags
![Page 10: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/10.jpg)
Mark Dixon Page 10
Example: Clock v1 (code)
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub
current time and date
Option Explicit
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 div3.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 3) * 200 div3.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 3) * 200 div4.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 4) * 200 div4.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 4) * 200 div5.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 5) * 200 div5.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 5) * 200 div6.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 6) * 200 div6.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 6) * 200 div7.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 7) * 200 div7.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 7) * 200 div8.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 8) * 200 div8.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 8) * 200 div9.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 9) * 200 div9.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 9) * 200 div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub
![Page 11: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/11.jpg)
Mark Dixon Page 11
Example: Clock v1 (code)Option Explicit
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 div3.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 3) * 200 div3.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 3) * 200 div4.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 4) * 200 div4.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 4) * 200 div5.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 5) * 200 div5.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 5) * 200 div6.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 6) * 200 div6.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 6) * 200 div7.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 7) * 200 div7.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 7) * 200 div8.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 8) * 200 div8.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 8) * 200 div9.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 9) * 200 div9.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 9) * 200 div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 … … … div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
![Page 12: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/12.jpg)
Mark Dixon Page 12
Example: Clock v1 (code)
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub
Option Explicit
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 div3.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 3) * 200 div3.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 3) * 200 div4.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 4) * 200 div4.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 4) * 200 div5.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 5) * 200 div5.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 5) * 200 div6.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 6) * 200 div6.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 6) * 200 div7.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 7) * 200 div7.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 7) * 200 div8.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 8) * 200 div8.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 8) * 200 div9.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 9) * 200 div9.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 9) * 200 div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub
• same 2 lines duplicated– not identical
• different object• different angle
![Page 13: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/13.jpg)
Mark Dixon Page 13
Problem: Inflexible Procedure• Procedure does exactly the same each time
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) Position End Sub
Sub Position() imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200End Sub
![Page 14: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/14.jpg)
Mark Dixon Page 14
Parameters/Arguments: What• Sometimes procedures need information
– Making a cup of tea:• milk, and number of sugars
• Makes them more flexible
Make cupof tea
Milk
Sugars
![Page 15: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/15.jpg)
Mark Dixon Page 15
Parameters: How• Procedure Declaration
– formal parameters define name
• Procedure Call– actual parameters list values in order
Option ExplicitDim res
Sub Calc(Num1, Num2) res = Num1 * Num2 End Sub
Sub btnCalc_Click() Calc 5, 2 Calc 11, 15 End Sub
![Page 16: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/16.jpg)
Mark Dixon Page 16
Parameters: How
![Page 17: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/17.jpg)
Mark Dixon Page 17
Error: Wrong number of arguments
Option Explicit
Sub Twice(num) parResult.innerText = num * 2 End Sub Twice 3 Twice 4, 3 Twice
![Page 18: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/18.jpg)
Mark Dixon Page 18
Questions: Parameters• Name the procedures in the following code
and state how many parameters they take:
Sub hello(s, x)Dim i s = "" For i = 1 To x s = s + "Hello" NextEnd Sub
Sub DisplayScore() parScore.innerText = scoreEnd Sub
hello takes 2 parameters
DisplayScore takes 0 parameters
![Page 19: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/19.jpg)
Mark Dixon Page 19
Questions: ParametersGiven the following declaration:
• What will the following put in parRes?
Sub thing(Num1, Num2, Num3)Dim tmpOutput tmpOutput = (Num1 + Num2) * Num3 parRes.innerText = tmpOutputEnd Sub
thing 2, 3, 6thing 6, 3, 2thing 20, 5, 2
301850
![Page 20: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/20.jpg)
Mark Dixon Page 20
Example: Clock v2 (code)Option Explicit
Sub window_OnLoad()
Dim ang
Dim s
Dim i
s = ""
For i = 1 To 12
s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>"
Next
document.body.innerHTML = s & document.body.innerHTML
imgMid.style.pixelleft = document.body.clientwidth / 2
imgMid.style.pixeltop = document.body.clientheight / 2
ang = 6.2 / 12
Position div1, ang
Position div2, ang * 2
Position div3, ang * 3
Position div4, ang * 4
Position div5, ang * 5
Position div6, ang * 6
Position div7, ang * 7
Position div8, ang * 8
Position div9, ang * 9
Position div10, ang * 10
Position div11, ang * 11
Position div12, ang * 12
window.setinterval "ShowHands", 500
End Sub
Sub ShowHands()
Dim ang
Dim s
ang = 6.2 / 60
s = Second(Now())
Position imgSec, ang * s
End Sub
Sub Position(objO, a)
objO.style.pixelleft = imgMid.style.pixelleft + Sin(a) * 200
objO.style.pixeltop = imgMid.style.pixeltop - Cos(a) * 200
End Sub
Sub Position(objO, a) objO.style.pixelleft = imgMid.style.pixelleft + Sin(a) * 200 objO.style.pixeltop = imgMid.style.pixeltop - Cos(a) * 200End Sub
Position imgSec, ang * s
Position div1, angPosition div2, ang * 2Position div3, ang * 3Position div4, ang * 4… … …Position div9, ang * 9Position div10, ang * 10Position div11, ang * 11Position div12, ang * 12
![Page 21: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/21.jpg)
Mark Dixon Page 21
Comparison of Clock Code
<html> <head><title></title></head> <body> <img id=imgMid style="position: absolute;" src=dot.gif /> <img id=imgSec style="position: absolute;" src=dot.gif /> </body></html>
<script language=VBScript>Option Explicit
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 Position div1, ang Position div2, ang * 2 Position div3, ang * 3 Position div4, ang * 4 Position div5, ang * 5 Position div6, ang * 6 Position div7, ang * 7 Position div8, ang * 8 Position div9, ang * 9 Position div10, ang * 10 Position div11, ang * 11 Position div12, ang * 12 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) Position imgSec, ang * s End Sub
Sub Position(objO, a) objO.style.pixelleft = imgMid.style.pixelleft + Sin(a) * 200 objO.style.pixeltop = imgMid.style.pixeltop - Cos(a) * 200 End Sub</script>
<html> <head><title></title></head> <body> <img id=imgMid style="position: absolute;" src=dot.gif /> <img id=imgSec style="position: absolute;" src=dot.gif /> </body></html>
<script language=VBScript>Option Explicit
Sub window_OnLoad() Dim ang Dim s Dim i s = "" For i = 1 To 12 s = s & "<div id=div" & i & " style=""position: absolute;"">" & i & "</div>" Next document.body.innerHTML = s & document.body.innerHTML imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 div3.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 3) * 200 div3.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 3) * 200 div4.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 4) * 200 div4.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 4) * 200 div5.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 5) * 200 div5.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 5) * 200 div6.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 6) * 200 div6.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 6) * 200 div7.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 7) * 200 div7.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 7) * 200 div8.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 8) * 200 div8.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 8) * 200 div9.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 9) * 200 div9.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 9) * 200 div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub</script>
<html> <head><title></title></head> <body> <div id=div1 style="position: absolute;">1</div> <div id=div2 style="position: absolute;">2</div> <div id=div3 style="position: absolute;">3</div> <div id=div4 style="position: absolute;">4</div> <div id=div5 style="position: absolute;">5</div> <div id=div6 style="position: absolute;">6</div> <div id=div7 style="position: absolute;">7</div> <div id=div8 style="position: absolute;">8</div> <div id=div9 style="position: absolute;">9</div> <div id=div10 style="position: absolute;">10</div> <div id=div11 style="position: absolute;">11</div> <div id=div12 style="position: absolute;">12</div> <img id=imgMid style="position: absolute;" src=dot.gif /> <img id=imgSec style="position: absolute;" src=dot.gif /> </body></html>
<script language=VBScript>Option Explicit
Sub window_OnLoad() Dim ang imgMid.style.pixelleft = document.body.clientwidth / 2 imgMid.style.pixeltop = document.body.clientheight / 2 ang = 6.2 / 12 div1.style.pixelleft = imgMid.style.pixelleft + Sin(ang) * 200 div1.style.pixeltop = imgMid.style.pixeltop - Cos(ang) * 200 div2.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 2) * 200 div2.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 2) * 200 div3.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 3) * 200 div3.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 3) * 200 div4.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 4) * 200 div4.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 4) * 200 div5.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 5) * 200 div5.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 5) * 200 div6.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 6) * 200 div6.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 6) * 200 div7.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 7) * 200 div7.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 7) * 200 div8.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 8) * 200 div8.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 8) * 200 div9.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 9) * 200 div9.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 9) * 200 div10.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 10) * 200 div10.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 10) * 200 div11.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 11) * 200 div11.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 11) * 200 div12.style.pixelleft = imgMid.style.pixelleft + Sin(ang * 12) * 200 div12.style.pixeltop = imgMid.style.pixeltop - Cos(ang * 12) * 200 window.setinterval "ShowHands", 500 End Sub
Sub ShowHands() Dim ang Dim s ang = 6.2 / 60 s = Second(Now()) imgSec.style.pixelleft = imgMid.style.pixelleft + Sin(ang * s) * 200 imgSec.style.pixeltop = imgMid.style.pixeltop - Cos(ang * s) * 200 End Sub</script>
v0 (64 lines) v1 (59 lines) v2 (51 lines)
(2474 bytes) (2064 bytes) (941 bytes)
![Page 22: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/22.jpg)
Mark Dixon Page 22
Example: Clock v3• Use for loop instead of repeated calls
Position div1, angPosition div2, ang * 2Position div3, ang * 3Position div4, ang * 4Position div5, ang * 5Position div6, ang * 6Position div7, ang * 7Position div8, ang * 8Position div9, ang * 9Position div10, ang * 10Position div11, ang * 11Position div12, ang * 12
For i = 1 To 12 Position document.getElementById("div" & i), ang * iNext
![Page 23: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/23.jpg)
Mark Dixon Page 23
Example: Clock v4
![Page 24: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/24.jpg)
Mark Dixon Page 24
Memory Addresses• Memory addresses - keep track of where
variables are stored in memory• Every byte (position) in memory has a memory
address:
• e.g. variable identified by name xstored at location 63542(address of the first byte of data for variable x)
23xIdentifier
Value
Computer Memory
63542
0
![Page 25: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/25.jpg)
Mark Dixon Page 25
Example: Change the Value
![Page 26: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/26.jpg)
Mark Dixon Page 26
Parameter Passing Methods • 2 ways to pass parameters to procedures:
– Passing by Value: literal value is passed from the call to the definitionSub Change1(ByVal x) …End Sub
– Passing by Reference: variable’s memory address (a reference to the variables position in memory) is passed from the call to the definitionSub Change2(ByRef y) …End Sub
![Page 27: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/27.jpg)
Mark Dixon Page 27
Why pass by reference?• Previously, used parameters to pass data
into a procedure (input)
• Pass by reference, allows:– the procedure to change the value of the
passed variable– data to be input and output via parameters
ChangeByVal x
SetByRef x
![Page 28: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/28.jpg)
Mark Dixon Page 28
What can be passed• Pass by value – both literals and variables
can be passed (variables are substituted by their value)
Change1 y Change1 21
• Pass by reference – only variables can be passed (in fact the variable’s memory address is passed)
Change2 y literals cannot be passed – they have no memory address
Change2 21 ERROR
![Page 29: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/29.jpg)
Mark Dixon Page 29
Two results?• Total and Average algorithms share a lot of
code
• Useful to combine them
• TotAve procedure:
double (average)integer (total)TotAve
![Page 30: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/30.jpg)
Mark Dixon Page 30
Example: Total and Average Sub TotAve(ByRef T, ByRef A)
Dim i
T = 0
For i = 1 to 5
T = T + Nums(i)
Next
A = T / 5
End Sub
tot = 0
ave = 0
TotAve tot, ave ' What is the value of ave and tot?
TotAvevar Tvar A
![Page 31: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/31.jpg)
Mark Dixon Page 31
Questions: Parameter Passing• Consider the following code: Dim a Sub Add(ByRef item, ByVal extra) item = item + extra End Sub a = 5
• What is the value of a, after each of these: Add a, 3 Add a, a Add 4, 4
8
16
Error – cannot pass 4 by reference
![Page 32: 11 – Parameters](https://reader036.vdocuments.site/reader036/viewer/2022081519/56812b6d550346895d8f8dbe/html5/thumbnails/32.jpg)
Mark Dixon Page 32
Tutorial Exercise: Clock• LEARNING OBJECTIVE:
– use parameters provided by event procedures
• Task 1: Get the Clock (v2) example (from the lecture) working.
• Task 2: Modify your code – display lots of dots for the second hand (as per v3).
• Task 3: Modify your code – add an hour and minute hand