150 likes | 262 Views
15 – Structured Programming. Admin: Test 2. In class test 4 Feb 2013 28 Jan 2013: revision (technique) session 50 mins short answer (1 - 15 lines) 25% of module mark. Questions: Functions.
E N D
Admin: Test 2 • In class test • 4 Feb 2013 • 28 Jan 2013: revision (technique) session • 50 mins • short answer (1 - 15 lines) • 25% of module mark
Questions: Functions • Consider the following code: Function Smallest(num1, num2) If num1 < num2 Then Smallest = num1 Else Smallest = num2 End If End Function • name a function. • what is left in small after the following is executed?Dim small small = Smallest(23, 15) Smallest 15
Session Aims & Objectives • Aims • To highlight the fundamental ideas of the structured programming paradigm • Objectives,by end of this week’s sessions, you should be able to: • create an abstract data type, which includes • data, and • routines • use this to reduce code length
Example: Ball Bounce v1 <html> <head><title>Ball Bounce</title></head> <body style="margin: 0;"> <img id="imgBall" src="Ball.gif" style="position: absolute;" /> </body> </html> <script language="vbscript"> Option Explicit Dim x Dim y Dim xInc Dim yInc Sub window_onLoad() window.setinterval "Main()", 20 xInc = 5 yInc = 3 End Sub Sub Main() x = imgBall.style.posLeft + xInc If x <= 0 Or x >= document.body.clientWidth - imgBall.width Then xInc = -xInc Else imgBall.style.posLeft = x End If y = imgBall.style.posTop + yInc If y <= 0 Or y >= document.body.clientHeight - imgBall.height Then yInc = -yInc Else imgBall.style.posTop = y End If End Sub </script>
Structured Paradigm • Program made up of • data structures (variables & arrays), and • routines (procedures & functions)that process the data within those structures. • Each routine should perform a single, clearly identifiable operation. • Each routine should be self-contained • Abstract data type = structure + procedures
Self-Contained Routines • Self-contained: • no references to external items (objects & variables) Function a1(h, f) a1 = (h + f) * f End Function Sub a2() imgBall.Style.posLeft = 0 End Sub yes no
Question: Self-contained • Which of the following routines are self-contained?Dim s Function goo(h, f) goo = (h + f) * s End Function Function poo(j, k, vi) If j > 45 Then poo = k + vi Else poo = k - vi End If End Function no yes
Routines: Self-Contained • Good design principle: • routines (functions and procedures)should be self-contained(easier to re-use in other programs) Dim u As Long Dim a As Long a = 4 u = Twice() Function Twice() Return a * 2 End Function Dim u As Long u = Twice(4) Function Twice(a As Long) Return a * 2 End Function
Question: Self-Contained Routines • Are the following routines self contained? Dim num1 Dim num2 Dim diff Sub Compare() diff = num1 - num2 End Sub Function Half(num As Double) As Double Return num / 2 End Function
Example: Ball Bounce v1 <html> <head><title>Ball Bounce</title></head> <body style="margin: 0;"> <img id="imgBall" src="Ball.gif" style="position: absolute;" /> </body> </html> <script language="vbscript"> Option Explicit Dim x Dim y Dim xInc Dim yInc Sub window_onLoad() window.setinterval "Main()", 20 xInc = 5 yInc = 3 End Sub Sub Main() x = imgBall.style.posLeft + xInc If x <= 0 Or x >= document.body.clientWidth - imgBall.width Then xInc = -xInc Else imgBall.style.posLeft = x End If y = imgBall.style.posTop + yInc If y <= 0 Or y >= document.body.clientHeight - imgBall.height Then yInc = -yInc Else imgBall.style.posTop = y End If End Sub </script>
Example: Ball Bounce v2 Sprite.vbs Option Explicit Dim x Dim y Dim xInc Dim yInc Sub Init(tmpXInc, tmpYInc) xInc = tmpXInc yInc = tmpYInc End Sub Sub Move(img) x = img.style.posLeft + xInc If x <= 0 Or x >= document.body.clientWidth - img.width Then xInc = -xInc Else img.style.posLeft = x End If y = img.style.posTop + yInc If y <= 0 Or y >= document.body.clientHeight - img.height Then yInc = -yInc Else img.style.posTop = y End If End Sub BallBounce.htm <html> <head><title>Ball Bounce</title></head> <body style="margin: 0;"> <img id="imgBall" src="Ball.gif" style="position: absolute;" /> </body> </html> <script language="vbscript" src="Sprite.vbs"></script> <script language="vbscript"> Option Explicit Sub window_onLoad() window.setinterval "Main()", 20 Init 5, 3 End Sub Sub Main() Move imgBall End Sub </script>
Example: Balloon Shoot • Question: • what objects? • what variables? • what procedures / functions?
Tutorial Exercise: Ball Bounce • Learning Objective: To create and use your own class. • Task 1: Get the Ball Bounce examples (1, 2, and 5) from the lecture working. • Task 2: Add another sprite.Hint: Use Arrays. • Task 3: Add another 5 sprites. • Task 4: Add a hit method to the sprite class, which detects the collision with another sprite. • Task 5: Modify your page to count the number of hits between the two sprites. • Task 6: Modify your page to make sprites bounce off each other.
Tutorial Exercise: Balloon Shoot • Learning Objective: To create and use your own classes. • Task 1: Create the Balloon Shoot example (from the lecture) using object oriented concepts (classes, properties, methods, and instances)hint: use some of the code from your Interceptor example (from last week)