Download presentation
Presentation is loading. Please wait.
1
Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions
2
Mark Dixon, SoCCE SOFT 136Page 2 Session Aims & Objectives Aims –To introduce user defined functions Objectives, by end of this week’s sessions, you should be able to: –Create your own function definitions –Call these functions
3
Mark Dixon, SoCCE SOFT 136Page 3 Meet George Common Boa Constrictor –boa constrictor imperator Native to Central & South America No venom (no poison)
4
Mark Dixon, SoCCE SOFT 136Page 4 Meet George (cont.)
5
Mark Dixon, SoCCE SOFT 136Page 5 George (cont.) Problem: –Difficult to keep –Require temperature and humidity controlled environment –Much of the literature is from the US Temperature in Fahrenheit Solution –Need a program to convert from Celsius to Fahrenheit
6
Mark Dixon, SoCCE SOFT 136Page 6 George (cont.) To convert from Fahrenheit to Celsius: e.g. 50 Fahrenheit is: c = 10
7
Mark Dixon, SoCCE SOFT 136Page 7 Example: Temp v1 Temp v1 Option Explicit Private Sub Form_Load() lblResult.Caption = ((txtFah.Text - 32) * 5) / 9 End Sub Private Sub txtFah_Change() lblResult.Caption = ((txtFah.Text - 32) * 5) / 9 End Sub Calculation repeated
8
Mark Dixon, SoCCE SOFT 136Page 8 Procedures and Functions Both Procedures and Functions –Group of statements –Identified by unique name –mirror real life activities Procedures – just do something Functions – return a value –used to perform calculations
9
Mark Dixon, SoCCE SOFT 136Page 9 Built in Functions: Sqr Sqr – gives square root of a number: –Examples Sqr(4)returns16 Sqr(3)returns9 Sqr(2)returns4 Square Root Option Explicit Private Sub txtNum_Change() Dim tmpNum As Double tmpNum = Val(Me.txtNum.Text) Me.lblResult.Caption = Sqr(tmpNum) End Sub Sqr Double X: Double
10
Mark Dixon, SoCCE SOFT 136Page 10 Rnd() function –generates pseudo-random numbers –>= 0 and <1 Randomize – initialises random number generator Built in Functions: Rnd Random Single Random Numbers Option Explicit Private Sub Form_Load() Randomize End Sub Private Sub btnRandom_Click() Me.lblNum.Caption = Rnd() End Sub
11
Mark Dixon, SoCCE SOFT 136Page 11 User Defined Functions (how) Syntax very similar to procedure definition: Function ( ) As [ ] = End Function Where – represents function’s name you choose – represent information needed – represents the return type – represent the return value
12
Mark Dixon, SoCCE SOFT 136Page 12 Function Header – gives: –name (e.g. Double), –parameter names and types (e.g. num: integer), and –return type (e.g. integer) Function Body – gives code: Function Double(num As integer) As integer Double = num * 2 End Function Function Implementation: Code Double integernum: integer
13
Mark Dixon, SoCCE SOFT 136Page 13 FtoC Animation
14
Mark Dixon, SoCCE SOFT 136Page 14 FtoC Function The declaration: Function FtoC(F As double) As double FtoC = ((f-32) * 5) / 9 End Function The call: lblResult.Caption = FtoC(50)
15
Mark Dixon, SoCCE SOFT 136Page 15 Example: Temp v2 Temp v2 Option Explicit Function FtoC(F As Double) As Double FtoC = ((F - 32) * 5) / 9 End Function Private Sub Form_Load() lblResult.Caption = FtoC (txtFah.Text) End Sub Private Sub txtFah_Change() lblResult.Caption = FtoC (txtFah.Text) End Sub
16
Mark Dixon, SoCCE SOFT 136Page 16 Question: Function Diagrams Draw function diagram for the following code: Function Thing() As Double Function Miles(km As Double) As Double Function Twice(num As Long) As Long Thing double Miles doublekm: double Twice longnum: long
17
Mark Dixon, SoCCE SOFT 136Page 17 Question: Function Headers Generate the code for the following diagrams: Minutes integer Hours: integer Mins: integer Euros integerPounds: integer Function Minutes(Mins As Integer, _ Hours As Integer) As Integer Function Euros(Pounds As Integer) As Integer
18
Mark Dixon, SoCCE SOFT 136Page 18 Function Animation: Total
19
Mark Dixon, SoCCE SOFT 136Page 19 Example: SnakeTemp v1 SnakeTemp v1 Option Explicit Sub Draw() Dim t As Long picTemp.Cls picTemp.Line (200, 1 * 200)-(200, 16 * 200) For t = 80 To 95 Step 1 picTemp.Line (200, (t - 79) * 200)-(300, (t - 79) * 200) Next For t = 80 To 95 Step 5 picTemp.Line (300, (t - 79) * 200)-(500, (t - 79) * 200) picTemp.Print t & "F = " & (((t - 32) * 5) / 9) & "C" Next picTemp.Line (200, (txtCur.Text - 79) * 200)-(600, (txtCur.Text - 79) * 200), vbRed picTemp.Print txtCur.Text & "F = " & (((txtCur.Text - 32) * 5) / 9) & "C" End Sub Private Sub Form_Load() Me.Show Draw End Sub Private Sub txtCur_Change() Draw End Sub
20
Mark Dixon, SoCCE SOFT 136Page 20 Example: SnakeTemp v2 SnakeTemp v2 Option Explicit Const st = 80 Const en = 95 Const x1 = 200 Const x2 = 300 Const x3 = 500 Const x4 = 600 Const yS = 200 ' Vertical scaling factor. Const yO = st - 1 ' Vertical offset (gap at top). Sub Draw() Dim t As Long picTemp.Cls picTemp.Line ( x1, ( st - yO ) * yS )-( x1, ( en - yO ) * yS ) For t = st To en Step 1 picTemp.Line ( x1, (t - yO ) * yS )-( x2, (t - yO ) * yS ) Next For t = st To en Step 5 picTemp.Line ( x2, (t - yO ) * yS )-( x3, (t - yO ) * yS ) picTemp.Print t & "F = " & (((t - 32) * 5) / 9) & "C" Next picTemp.Line ( x1, (txtCur.Text - yO ) * yS )-( x4, (txtCur.Text - yO ) * yS ), vbRed picTemp.Print txtCur.Text & "F = " & (((txtCur.Text - 32) * 5) / 9) & "C" End Sub Private Sub Form_Load() Me.Show Draw End Sub Private Sub txtCur_Change() Draw End Sub
21
Mark Dixon, SoCCE SOFT 136Page 21 Example: SnakeTemp v3 SnakeTemp v3 Option Explicit Const st = 80 Const en = 95 Const x1 = 200 Const x2 = 300 Const x3 = 500 Const x4 = 600 Const yS = 200 ' Vertical scaling factor. Const yO = st - 1 ' Vertical offset (gap at top). Function FtoC(F As Double) As Double FtoC = ((F - 32) * 5) / 9 End Function Sub Draw() Dim t As Long picTemp.Cls picTemp.Line (x1, (st - yO) * yS)-(x1, (en - yO) * yS) For t = st To en Step 1 picTemp.Line (x1, (t - yO) * yS)-(x2, (t - yO) * yS) Next For t = st To en Step 5 picTemp.Line (x2, (t - yO) * yS)-(x3, (t - yO) * yS) picTemp.Print t & "F = " & FtoC(t) & "C" Next picTemp.Line (x1, (txtCur.Text - yO) * yS)-(x4, (txtCur.Text - yO) * yS), vbRed picTemp.Print txtCur.Text & "F = " & FtoC(txtCur.Text) & "C" End Sub Private Sub Form_Load() Me.Show Draw End Sub Private Sub txtCur_Change() Draw End Sub
22
Mark Dixon, SoCCE SOFT 136Page 22 Tutorial Exercises: Temp Task 1: Get the temperature examples v1 and v2 (from the lecture) working
23
Mark Dixon, SoCCE SOFT 136Page 23 Tutorial Exercises: Snake Temp Task 1: Get the snake temperature examples from the lecture working. Task 2: There is another place that a function can be used to simplify the code. Hint: it’s to do with calculating the vertical plotting position
24
Mark Dixon, SoCCE SOFT 136Page 24 Tutorial Exercises: Snake Length Task 1: Create a program that stores the following length (inch) data in an array, and plots a graph of it (using line method): DateYearsInches Tuesday 25 June 2002670.5 5½ Monday 25 June 2001570.0 4½ Sunday 25 June 2000468.0 Saturday 25 December 19993½66.0 Friday 25 June 1999361.0 Friday 25 December 19982½57.5 Thursday 25 June 1998248.5 Thursday 25 December 19971½43.0 Wednesday 25 June 1997137.5 Task 2: Modify your code – add code that calculates an average length and plots it on the graph (use a function to calculate the total). Task 3: Modify your code – to convert all values to cm (1 inch = 2.54 cm).
Similar presentations
© 2024 SlidePlayer.com Inc.
All rights reserved.