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

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

Dec 19, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 1

11 – User Defined Functions

Page 2: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 4

Meet George (cont.)

Page 5: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 6

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

e.g. 50 Fahrenheit is:

9

5)32( f

c

9

5)3250( c

c = 10

Page 7: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 7

Example: Temp v1

Temp 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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 16

Sqr(3) returns 9

Sqr(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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 13

FtoC Animation

Page 14: Mark Dixon, SoCCE SOFT 136Page 1 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) / 9

End Function

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

Page 15: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 15

Example: Temp v2

Temp 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 18

Function Animation: Total

Page 19: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

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

Private Sub txtCur_Change() DrawEnd Sub

Page 20: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 20

Example: SnakeTemp v2

SnakeTemp 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: Mark Dixon, SoCCE SOFT 136Page 1 11 – User Defined Functions.

Mark Dixon, SoCCE SOFT 136 Page 21

Example: SnakeTemp v3

SnakeTemp 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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: Mark Dixon, SoCCE SOFT 136Page 1 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).