Presentation is loading. Please wait.

Presentation is loading. Please wait.

Mark Dixon, SoCCE SOFT 136Page 1 9 – Procedures. Mark Dixon, SoCCE SOFT 136Page 2 Session Aims & Objectives Aims –To introduce the main concepts involved.

Similar presentations


Presentation on theme: "Mark Dixon, SoCCE SOFT 136Page 1 9 – Procedures. Mark Dixon, SoCCE SOFT 136Page 2 Session Aims & Objectives Aims –To introduce the main concepts involved."— Presentation transcript:

1 Mark Dixon, SoCCE SOFT 136Page 1 9 – Procedures

2 Mark Dixon, SoCCE SOFT 136Page 2 Session Aims & Objectives Aims –To introduce the main concepts involved in grouping instructions, to deal with large programs. Objectives, by end of this week’s sessions, you should be able to: –define procedures, and –call procedures

3 Mark Dixon, SoCCE SOFT 136Page 3 Large Programs Real programs get very large Exponential increase in effort AB CD 1 (A) 3 (A, B, AB) 6 (A, B, C, AB, AC, BC) 10 (A, B, C, D, AB, AC, BC, AD, BD, CD)

4 Mark Dixon, SoCCE SOFT 136Page 4 General Procedures (what?) Group of ordered instructions Identified by unique name Almost all computer code procedures –mirror real life procedures Making a cup of tea: 1. Fill the kettle with water 2. Plug the kettle in 3. Switch the kettle on 4. Wait for the kettle to boil 5. Put a tea bag into the cup 6. Add sugar to the cup 7. Stir 8. Add milk to the cup 9. Stir 10. Take the tea bag out

5 Mark Dixon, SoCCE SOFT 136Page 5 General Procedures (why?) Code reuse: same code used in many places (reduces duplication) Break up long code: large chunks of code are difficult to understand and maintain

6 Mark Dixon, SoCCE SOFT 136Page 6 General Procedures (how) Definition: Sub name() [Statementblock] End Sub Call: name

7 Mark Dixon, SoCCE SOFT 136Page 7 Procedures

8 Mark Dixon, SoCCE SOFT 136Page 8 Questions: Procedures Write a line of code that calls the following procedure: Sub Thing() x = 24 End Sub Add lines of code around the following code to define a procedure: picMain.Cls picMain.Circle (800,800), 100 Thing Sub Circ() End Sub

9 Mark Dixon, SoCCE SOFT 136Page 9 Example: Hotel Rooms v1 Option Explicit Const RoomCost = 32.5 Dim Rooms As Integer Dim Nights As Integer Dim TotalCost As Single Private Sub btnCalc_Click() Rooms = Val(txtRooms.Text) Nights = Val(txtNights.Text) TotalCost = Rooms * Nights * RoomCost lblCost.Caption = "£" & TotalCost End Sub Input Process Output Hotel Rooms v1 result of operations should be visible immediately! Shneiderman 1998, p. 205

10 Mark Dixon, SoCCE SOFT 136Page 10 Example: Hotel Rooms v2 Option Explicit Const RoomCost = 32.5 Dim Rooms As Integer Dim Nights As Integer Dim TotalCost As Single Private Sub Form_Load() Rooms = Val(txtRooms.Text) Nights = Val(txtNights.Text) TotalCost = Rooms * Nights * RoomCost lblCost.Caption = "£" & TotalCost End Sub Private Sub txtRooms_Change() Rooms = Val(txtRooms.Text) Nights = Val(txtNights.Text) TotalCost = Rooms * Nights * RoomCost lblCost.Caption = "£" & TotalCost End Sub Private Sub txtNights_Change() Rooms = Val(txtRooms.Text) Nights = Val(txtNights.Text) TotalCost = Rooms * Nights * RoomCost lblCost.Caption = "£" & TotalCost End Sub Hotel Rooms v2 Duplicate 23 lines

11 Mark Dixon, SoCCE SOFT 136Page 11 Example: Hotel Rooms v3 Option Explicit Const RoomCost = 32.5 Dim Rooms As Integer Dim Nights As Integer Dim TotalCost As Single Private Sub Calculate() Rooms = Val(txtRooms.Text) Nights = Val(txtNights.Text) TotalCost = Rooms * Nights * RoomCost lblCost.Caption = "£" & TotalCost End Sub Private Sub Form_Load() Calculate End Sub Private Sub txtRooms_Change() Calculate End Sub Private Sub txtNights_Change() Calculate End Sub Duplicate Calls, not Code Hotel Rooms v3 20 lines

12 Mark Dixon, SoCCE SOFT 136Page 12 Example: Face v2 Private Sub btnDraw_Click() picFace.Cls picFace.Circle (2400, 2400), 2000 If chkNose.Value = vbChecked Then picFace.Line (2400, 2200)-Step(0, 600) End If If optOpen.Value = True Then picFace.Circle (1600, 1600), 500 picFace.Circle (3200, 1600), 500 Else picFace.Line (1100, 1600)-Step(1000, 0) picFace.Line (2700, 1600)-Step(1000, 0) End If If optHappy.Value = True Then picFace.Circle (2400, 2400), 1200,, 3.4, 6 Else picFace.Circle (2400, 4400), 1200,, 0.6, 2.5 End If End Sub Face v2

13 Mark Dixon, SoCCE SOFT 136Page 13 Example: Face v3 Private Sub DrawFace() picFace.Cls picFace.Circle (2400, 2400), 2000 If chkNose.Value = vbChecked Then picFace.Line (2400, 2200)-Step(0, 600) End If If optOpen.Value = True Then picFace.Circle (1600, 1600), 500 picFace.Circle (3200, 1600), 500 Else picFace.Line (1100, 1600)-Step(1000, 0) picFace.Line (2700, 1600)-Step(1000, 0) End If If optHappy.Value = True Then picFace.Circle (2400, 2400), 1200,, 3.4, 6 Else picFace.Circle (2400, 4400), 1200,, 0.6, 2.5 End If End Sub Private Sub Form_Load() Me.Show DrawFace End Sub Private Sub chkNose_Click() DrawFace End Sub Private Sub optHappy_Click() DrawFace End Sub Private Sub optOpen_Click() DrawFace End Sub Face v3

14 Mark Dixon, SoCCE SOFT 136Page 14 Example: Face v4 Private Sub DrawFace() picFace.Cls picFace.Circle (2400, 2400), 2000 DrawNose DrawEyes DrawMouth End Sub Private Sub DrawNose() If chkNose.Value = vbChecked Then picFace.Line (2400, 2200)-Step(0, 600) End If End Sub Private Sub DrawEyes() If optOpen.Value = True Then picFace.Circle (1600, 1600), 500 picFace.Circle (3200, 1600), 500 Else picFace.Line (1100, 1600)-Step(1000, 0) picFace.Line (2700, 1600)-Step(1000, 0) End If End Sub Private Sub DrawMouth() If optHappy.Value = True Then picFace.Circle (2400, 2400), 1200,, 3.4, 6 Else picFace.Circle (2400, 4400), 1200,, 0.6, 2.5 End If End Sub Private Sub Form_Load() Me.Show DrawFace End Sub … Face v3

15 Mark Dixon, SoCCE SOFT 136Page 15 Module Hierarchy Charts Private Sub DrawFace() picFace.Cls picFace.Circle (2400, 2400), 2000 DrawNose DrawEyes DrawMouth End Sub Private Sub DrawNose() If chkNose.Value = vbChecked Then picFace.Line (2400, 2200)-Step(0, 600) End If End Sub Private Sub DrawEyes() If optOpen.Value = True Then picFace.Circle (1600, 1600), 500 picFace.Circle (3200, 1600), 500 Else picFace.Line (1100, 1600)-Step(1000, 0) picFace.Line (2700, 1600)-Step(1000, 0) End If End Sub Private Sub DrawMouth() If optHappy.Value = True Then picFace.Circle (2400, 2400), 1200,, 3.4, 6 Else picFace.Circle (2400, 4400), 1200,, 0.6, 2.5 End If End Sub Private Sub Form_Load() Me.Show DrawFace End Sub … DrawFace Draw Eyes Draw Nose Draw Mouth

16 Mark Dixon, SoCCE SOFT 136Page 16 Example: Heart Rate Option Explicit Dim HR(0 To 6) As Long Private Sub Form_Load() HR(0) = 134 HR(1) = 127 HR(2) = 139 HR(3) = 155 HR(4) = 143 HR(5) = 151 HR(6) = 141 End Sub Private Sub btnDraw_Click() Dim i As Long picMain.Cls For i = 0 To 6 picMain.Line -(i * 500, HR(i) * 10) Next End Sub

17 Mark Dixon, SoCCE SOFT 136Page 17 Tutorial Exercises: Hotel Rooms Task 1: Get the Hotel Rooms examples versions 1, 2, and 3 (from the lecture) working. Task 2: Modify your code – to give the result 0 if the user enters a negative number for either number of rooms or number of nights.

18 Mark Dixon, SoCCE SOFT 136Page 18 Tutorial Exercises: Face Task 1: Get the Face examples versions 3 and 4 (from the lecture) working. Task 2: Modify your code – use constants to remove all magic numbers.

19 Mark Dixon, SoCCE SOFT 136Page 19 Tutorial Exercises: Stick Man Task 1: Modify your stick man program (from previous week), to use procedures (decide which lines of code should be grouped together and what name should be used).

20 Mark Dixon, SoCCE SOFT 136Page 20 Tutorial Exercises: Heart Rate Task 1: Get the Heart Rate program (from the lecture) working. Task 2: Modify your program, to use procedures (decide which lines of code should be grouped together and what name should be used). Task 3: Modify your program so that the first vertical line (from the origin 0,0) is not drawn. Task 4: Modify your program to draw horizontal lines at the 160 and 120 BPM marks.


Download ppt "Mark Dixon, SoCCE SOFT 136Page 1 9 – Procedures. Mark Dixon, SoCCE SOFT 136Page 2 Session Aims & Objectives Aims –To introduce the main concepts involved."

Similar presentations


Ads by Google