11 – User Defined Functions

24
Mark Dixon, SoCCE SOFT 136 Page 1 11 – User Defined Functions

description

11 – User Defined Functions. 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. Meet George. Common Boa Constrictor boa constrictor imperator - PowerPoint PPT Presentation

Transcript of 11 – User Defined Functions

Page 1: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 1

11 – User Defined Functions

Page 2: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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

Page 3: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 3

Meet George• Common Boa Constrictor

– boa constrictor imperator• Native to Central & South America• No venom (no poison)

Page 4: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 4

Meet George (cont.)

Page 5: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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

Page 6: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 6

George (cont.)• To convert from Fahrenheit to Celsius:

e.g. 50 Fahrenheit is:

95)32(

fc

95)3250(

c

c = 10

Page 7: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 7

Example: Temp v1Temp v1

Option Explicit

Private Sub Form_Load() lblResult.Caption = ((txtFah.Text - 32) * 5) / 9End Sub

Private Sub txtFah_Change() lblResult.Caption = ((txtFah.Text - 32) * 5) / 9End Sub

Calculationrepeated

Page 8: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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

Page 9: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 9

Built in Functions: Sqr

• Sqr – gives square root of a number:

– ExamplesSqr(4) returns 16Sqr(3) returns 9Sqr(2) returns 4

SquareRoot

Option Explicit

Private Sub txtNum_Change()Dim tmpNum As Double tmpNum = Val(Me.txtNum.Text) Me.lblResult.Caption = Sqr(tmpNum)End Sub

Sqr DoubleX: Double

Page 10: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 10

• Rnd() function– generates pseudo-random numbers– >= 0 and <1

• Randomize – initialises random number generator

Built in Functions: Rnd

Random Single

RandomNumbers

Option Explicit

Private Sub Form_Load() RandomizeEnd Sub

Private Sub btnRandom_Click() Me.lblNum.Caption = Rnd()End Sub

Page 11: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 11

User Defined Functions (how)• Syntax very similar to procedure definition:Function <name>(<parameters>) As <type> [<Statement-Block>] <name> = <value>End Function• Where

– <name> represents function’s name you choose– <parameters> represent information needed– <type> represents the return type– <value> represent the return value

Page 12: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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

Page 13: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 13

FtoC Animation

Page 14: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 14

FtoC Function• The declaration:

Function FtoC(F As double) As double FtoC = ((f-32) * 5) / 9End Function

• The call: lblResult.Caption = FtoC(50)

Page 15: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 15

Example: Temp v2Temp v2

Option Explicit

Function FtoC(F As Double) As Double FtoC = ((F - 32) * 5) / 9End Function

Private Sub Form_Load() lblResult.Caption = FtoC(txtFah.Text)End Sub

Private Sub txtFah_Change() lblResult.Caption = FtoC(txtFah.Text)End Sub

Page 16: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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

Page 17: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 17

Question: Function Headers• Generate the code for the following

diagrams:

Minutes integerHours: integerMins: integer

Euros integerPounds: integer

Function Minutes(Mins As Integer, _ Hours As Integer) As Integer

Function Euros(Pounds As Integer) As Integer

Page 18: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 18

Function Animation: Total

Page 19: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 19

Example: SnakeTemp v1SnakeTemp 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 DrawEnd Sub

Private Sub txtCur_Change() DrawEnd Sub

Page 20: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 20

Example: SnakeTemp v2SnakeTemp v2

Option ExplicitConst st = 80Const en = 95Const x1 = 200Const x2 = 300Const x3 = 500Const x4 = 600Const 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 DrawEnd Sub

Private Sub txtCur_Change() DrawEnd Sub

Page 21: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 21

Example: SnakeTemp v3SnakeTemp v3

Option ExplicitConst st = 80Const en = 95

Const x1 = 200Const x2 = 300Const x3 = 500Const x4 = 600Const 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) / 9End 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 DrawEnd Sub

Private Sub txtCur_Change() DrawEnd Sub

Page 22: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 22

Tutorial Exercises: Temp• Task 1: Get the temperature examples v1

and v2 (from the lecture) working

Page 23: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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

Page 24: 11 – User Defined Functions

Mark Dixon, SoCCE SOFT 136 Page 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): Date Years Inches Tuesday 25 June 2002 6 70.5

  5½   Monday 25 June 2001 5 70.0

  4½   Sunday 25 June 2000 4 68.0 Saturday 25 December 1999 3½ 66.0 Friday 25 June 1999 3 61.0 Friday 25 December 1998 2½ 57.5 Thursday 25 June 1998 2 48.5 Thursday 25 December 1997 1½ 43.0 Wednesday 25 June 1997 1 37.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).