150 likes | 265 Views
This session on structured programming focuses on fundamental concepts such as functions, routines, and abstract data types. It emphasizes the importance of self-contained routines to enhance code reusability and reduce complexity. Through hands-on examples, including a "Ball Bounce" simulation, participants will learn to create and manipulate data structures effectively. By the end of this session, learners will be equipped to utilize structured programming techniques to streamline their code and enhance clarity in their programming practices.
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)