 Download Download Presentation 10 – Array Variables

# 10 – Array Variables

Download Presentation ## 10 – Array Variables

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
##### Presentation Transcript

1. 10 – Array Variables

2. Questions: Loops • What is the value of t, after this code executes? t = 0 For x = 4 To 6 t = t + x Next 15

3. Questions: Loops • Simplify the following code, so that it is easy to change the number of faces:parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>"parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>"parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>"parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>"parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>"parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>"parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>" Dim f For f = 1 To 7 parFaces.innerHTML = parFaces.innerHTML + "<img src=face.jpg>" Next

4. Session Aims & Objectives • Aims • To introduce the main concepts involved in handling more complex (multi valued) data • Objectives,after this week’s sessions, you should be able to: • declare arrays • assign values to array elements • use array elements • use for loops with arrays

5. Example: German Numbers • SPECIFICATION • User Requirements • help people learn German numbers 1 - 10 • Software Requirements • Functional: • show German word for numbers (between 1 and 10) • user enter digits • check if correct • Non-functionalshould be easy to use • User Requirements • describe user's objectivesno mention of technology • Software Requirements • Functional • list facilities to be provided (often numbered) • Non-functional • list desired characteristics(often more subjective)

6. Example: German Numbers • Problem: can't directly pick random word • Can: pick random number 1 – eins 2 – zwei 3 – drei 4 – vier 5 – funf 6 – sechs 7 – sieben 8 – acht 9 – neun 10 – zehn

7. Example: German Numbers v0 Sub btnStart_OnClick() n = 1 + Int(Rnd() * 10) If n = 1 Then parQuest.innerText = "What is eins?" Else If n = 2 Then parQuest.innerText = "What is zwei?" Else If n = 3 Then parQuest.innerText = "What is drei?" Else If n = 4 Then parQuest.innerText = "What is vier?" Else If n = 5 Then parQuest.innerText = "What is funf?" Else If n = 6 Then parQuest.innerText = "What is sechs?" Else If n = 7 Then parQuest.innerText = "What is sieben?" Else If n = 8 Then parQuest.innerText = "What is acht?" Else If n = 9 Then parQuest.innerText = "What is neun?" Else If n = 10 Then parQuest.innerText = "What is zehn?" End If End If End If End If End If End If End If End If End If End If End Sub <script language=vbscript> Option Explicit Dim n Sub Window_OnLoad() Randomize End Sub Sub btnStart_OnClick() n = 1 + Int(Rnd() * 10) If n = 1 Then parQuest.innerText = "What is eins?" Else If n = 2 Then parQuest.innerText = "What is zwei?" Else If n = 3 Then parQuest.innerText = "What is drei?" Else If n = 4 Then parQuest.innerText = "What is vier?" Else If n = 5 Then parQuest.innerText = "What is funf?" Else If n = 6 Then parQuest.innerText = "What is sechs?" Else If n = 7 Then parQuest.innerText = "What is sieben?" Else If n = 8 Then parQuest.innerText = "What is acht?" Else If n = 9 Then parQuest.innerText = "What is neun?" Else If n = 10 Then parQuest.innerText = "What is zehn?" End If End If End If End If End If End If End If End If End If End If End Sub Sub btnCheck_OnClick() If CInt(txtAns.value) = n Then parRes.innerText = "Correct!" Else parRes.innerText = "Sorry, please try again." & n End If End Sub </script> • Pick random number • Use If statements • one inside another

8. Array Variables (what) Index Value 0 134 1 127 • index – identifies individual values (called elements) 2 139 3 155 4 143 • the value of element 3 is 155 5 151 6 141 • multiple values– stored in single variable • last element

9. Arrays Variables

10. Array Variables (Declaration) • General syntax:Dimvarname(lastElement) • Specific examples: Dim HR(16) Dim x(8)

11. Array Variables (Assignment) • General syntax:arrayname(index)=expression • Specific examples:HR(0) = 134 HR(5) = 151 + b x(5) = 23.87 x(7) = (y + 189.2516) / 2

12. Arrays: why? (declaration) 5 variable declarations Single array declaration Dim Name1 Dim Name2 Dim Name3 Dim Name4 Dim Name5 Name1 = "Bob" Name2 = "Sally" Name3 = "Jo" Name4 = "Fred" Name5 = "Alison" Dim Name(4) Name(0) = "Bob" Name(1) = "Sally" Name(2) = "Jo" Name(3) = "Fred" Name(4) = "Alison"

13. Arrays: why? (use) Dim Num Num = Int(Rnd() * 5) If Num = 0 Then Res = Name1 ElseIf Num = 1 Then Res = Name2 ElseIf Num = 2 Then Res = Name3 ElseIf Num = 3 Then Res = Name4 Else Res = Name5 End If Dim Num Num = Int(Rnd() * 5) Res = Name(Num) Single line of code picks any element

14. Example: German Numbers v1 <script language=vbscript> Option Explicit Dim Nums(10) Dim n Sub Window_OnLoad() Randomize Nums(1) = "eins" Nums(2) = "zwei" Nums(3) = "drei" Nums(4) = "vier" Nums(5) = "funf" Nums(6) = "sechs" Nums(7) = "sieben" Nums(8) = "acht" Nums(9) = "neun" Nums(10) = "zehn" End Sub Sub btnStart_OnClick() n = 1 + Int(Rnd() * 10) parQuest.innerText = "What is " & Nums(n) & "?" End Sub Sub btnCheck_OnClick() If CInt(txtAns.value) = n Then parRes.innerText = "Correct!" Else parRes.innerText = "Sorry, please try again." & n End If End Sub </script> Array Declaration Array Assignment Array Use

15. Example: German Numbers v0 vs. v1 v0 <script language=vbscript> Option Explicit Dim n Sub Window_OnLoad() Randomize End Sub Sub btnStart_OnClick() n = 1 + Int(Rnd() * 10) If n = 1 Then parQuest.innerText = "What is eins?" Else If n = 2 Then parQuest.innerText = "What is zwei?" Else If n = 3 Then parQuest.innerText = "What is drei?" Else If n = 4 Then parQuest.innerText = "What is vier?" Else If n = 5 Then parQuest.innerText = "What is funf?" Else If n = 6 Then parQuest.innerText = "What is sechs?" Else If n = 7 Then parQuest.innerText = "What is sieben?" Else If n = 8 Then parQuest.innerText = "What is acht?" Else If n = 9 Then parQuest.innerText = "What is neun?" Else If n = 10 Then parQuest.innerText = "What is zehn?" End If End If End If End If End If End If End If End If End If End If End Sub Sub btnCheck_OnClick() If CInt(txtAns.value) = n Then parRes.innerText = "Correct!" Else parRes.innerText = "Sorry, please try again." & n End If End Sub </script> <script language=vbscript> Option Explicit Dim Nums(10) Dim n Sub Window_OnLoad() Randomize Nums(1) = "eins" Nums(2) = "zwei" Nums(3) = "drei" Nums(4) = "vier" Nums(5) = "funf" Nums(6) = "sechs" Nums(7) = "sieben" Nums(8) = "acht" Nums(9) = "neun" Nums(10) = "zehn" End Sub Sub btnStart_OnClick() n = 1 + Int(Rnd() * 10) parQuest.innerText = "What is " & Nums(n) & "?" End Sub Sub btnCheck_OnClick() If CInt(txtAns.value) = n Then parRes.innerText = "Correct!" Else parRes.innerText = "Sorry, please try again." & n End If End Sub </script> v1 27 lines 54 lines

16. Error: Subscript Out of Range • Index too big/small <script language="vbscript"> Option Explicit Dim x(3) x(0) = 9 x(1) = 5 x(2) = 21 x(3) = 23 x(4) = 12 x = 5 </script>

17. Error: Type mismatch • index missing <script language="vbscript"> Option Explicit Dim x(3) x(0) = 9 x(1) = 5 x(2) = 21 x(3) = 23 x = 5 </script>

18. Error: Type mismatch • index given for non-array variable: b <script language="vbscript"> Option Explicit Dim x(3) Dim b x(0) = 9 x(1) = 5 x(2) = 21 x(3) = 23 b(3) = 12 </script>

19. Questions: Arrays • Write a line of code that declares an array called Books with 56 elements • Write a line of code that assigns the value 45 to the 18th element of the array. • Write some code that makes the background red, but only when the 12th array element is larger than 6 Dim Books(55) Books(17) = 45 If Books(11) >6 Thendocument.bgColor = "red" End If

20. Example: Capital Cities • SPECIFICATION • User Requirements • help people learn Capital Cities • Software Requirements • Functional: • ask user for capital of random country • user enter capital • check if correct • Non-functionalshould be easy to use

21. Example: Capital Cities • Two arrays – stored in same order: Country City

22. Example: Capital Cities • How many array: • declarations? • assignments? Option Explicit Dim Country(4) Dim City(4) Dim Num Sub Window_OnLoad() Country(1) = "UK" City(1) = "London" Country(2) = "France" City(2) = "Paris" Country(3) = "Spain" City(3) = "Madrid" Country(4) = "Greece" City(4) = "Athens" Randomize End Sub Sub btnStart_OnClick() Num = 1 + CInt(Rnd() * 3) parQuest.innerText = "What is the capital of " & Country(Num) & "?" End Sub

23. Question: Arrays • Write a statement that will decide whether the answer given by the user is correct: Option Explicit Dim Country(4) Dim City(4) Dim Num Sub Window_OnLoad() Country(1) = "UK" City(1) = "London" Country(2) = "France" City(2) = "Paris" Country(3) = "Spain" City(3) = "Madrid" Country(4) = "Greece" City(4) = "Athens" Randomize End Sub Sub btnStart_OnClick() Num = 1 + CInt(Rnd() * 3) parQuest.innerText = "What is the capital of " & Country(Num) & "?" End Sub If txtNum.value = City(Num) Then

24. Example: Drinks v1 Total of array Clears array Displays array Searches array

25. Example: Drinks v1 <script language=VBScript> Dim Units(6) Dim curUnit Sub Window_OnLoad() curUnit = 0 End Sub Sub btnAdd_OnClick() Units(curUnit) = txtUnit.value curUnit = curUnit + 1 End Sub Sub btnClear_OnClick() Units(0) = 0 Units(1) = 0 Units(2) = 0 Units(3) = 0 Units(4) = 0 Units(5) = 0 Units(6) = 0 curUnit = 0 End Sub Sub btnShow_OnClick() lblRes.innerText = "" lblRes.innerText = lblRes.innerText & Units(0) & " " lblRes.innerText = lblRes.innerText & Units(1) & " " lblRes.innerText = lblRes.innerText & Units(2) & " " lblRes.innerText = lblRes.innerText & Units(3) & " " lblRes.innerText = lblRes.innerText & Units(4) & " " lblRes.innerText = lblRes.innerText & Units(5) & " " lblRes.innerText = lblRes.innerText & Units(6) End Sub ….

26. Example: Drinks v1 …. Sub btnTotal_OnClick() Dim total total = 0 total = total + Units(0) total = total + Units(1) total = total + Units(2) total = total + Units(3) total = total + Units(4) total = total + Units(5) total = total + Units(6) lblRes.innerText = total End Sub Sub btnFind_OnClick() If txtUnit.value = Units(0) Then lblRes.innerText = "Found in slot 0" ElseIf txtUnit.value = Units(1) Then lblRes.innerText = "Found in slot 1" ElseIf txtUnit.value = Units(2) Then lblRes.innerText = "Found in slot 2" ElseIf txtUnit.value = Units(3) Then lblRes.innerText = "Found in slot 3" ElseIf txtUnit.value = Units(4) Then lblRes.innerText = "Found in slot 4" ElseIf txtUnit.value = Units(5) Then lblRes.innerText = "Found in slot 5" ElseIf txtUnit.value = Units(6) Then lblRes.innerText = "Found in slot 6" Else lblRes.innerText = "Not Found" End If End Sub </script>

27. Array Algorithms • Common tasks to many programs: • Reset all elements • Display all elements • Total all elements • Search all elements • Find maximum value • Find minimum value • Average • Sort

28. Example: Drinks v2 (Reset) • Use loop counter variable (i) as array index:

29. Example: Drinks v2 (Total)