Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

7.12. Arrays van Arrays

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

De mogelijkheid bestaat een array te creëren met als elementen andere arrays.
Je kan hier spreken over een "jagged array" (of een array van arrays).  Deze komen van pas wanneer je een collectie van arrays (dus van andere collecties) wil beheren.

Om dit te verwezenlijken heb je het datatype Array nodig.  Je declareert de arrayvariabele met elementen van het datatype Array.
Visual Basic 2012 Broncode - Codevoorbeeld 140
Module Example
    Sub Main()
        Dim names() As String = {"Brussels", "Antwerp", "Ghent"}
        Dim zipCodes() As Integer = {1000, 2000, 0}
        '
        Dim cities(1) As Array
        cities(0) = names                                                  ' (1)
        cities(1) = zipCodes                                               ' (2)
        ' or : Dim cities As Array() = {names, zipCodes}
        '
        Console.WriteLine(names(1))                                        ' (3)
        Console.WriteLine(cities(0)(1))                                    ' (4)
        '
        cities(1)(2) = 9000
        Console.WriteLine(zipCodes(2))                                     ' (5)
        '
        Console.ReadLine()
    End Sub
End Module
Console Application Output
Antwerp
Antwerp
9000
Opgelet : een arrayvariabele bevat steeds een verwijzing naar een array, dus een array van arrays bevat niet die arrays zelf, maar bevat er verwijzingen naartoe.

Een verwijzing (referentie) naar een array kan je bekomen door gewoon de arrayvariabele-identifier te gebruiken (zoals in regels (1) en (2)).
Of in het geval van een array van arrays bekom je dergelijke referentie van een array door het gerelateerde element aan te spreken.
Zo komt het dat cities of cities(0) bijvoorbeeld naar hetzelfde (naar dezelfde array) verwijzen.

Meervoudige indexverwijzingen (zoals in regels (4) en (5)) kunnen verwarrend zijn, maar moet je gewoon stapsgewijs ontleden om ze te begrijpen.
Als cities en cities(0) naar hetzelfde verwijzen bijvoorbeeld, dan is cities(0)(1) of names(1) dus ook een verwijzing naar hetzelfde element uit de cities array.  Regels (3) en (4) geven immers hetzelfde resultaat.

7.12.1. Oefening

Opgave :

Maak een programma naar onderstaand voorbeeld (zie programmaverloop)
gebruik makende van drie tabellen :
- één tabel voor de studenten namen (één dimensional String array)
- één tabel voor de studenten punten (meer dimensionale Integer array)
- één tabel voor de studenten (array van arrays, verwijzend naar bovenstaande
  arrays)

Eens de drie tabellen zijn aangemaakt, mag je in het programma enkel nog gebruik
maken van de laatste tabel (array van arrays).

Bewaar ook de gemiddeldes in de studenten punten tabel.
Console Application Output
Student Count ? 2
Topic Count ? 2

Name Student 1 ? John
John Score Topic 1 ? 4
John Score Topic 2 ? 6

Name Student 2 ? Paul
Paul Score Topic 1 ? 6
Paul Score Topic 2 ? 8

Name : John
Score Topic 1 : 4
Score Topic 2 : 6
Average Score : 5

Name : Paul
Score Topic 1 : 6
Score Topic 2 : 8
Average Score : 7
Oplossing :
Visual Basic 2012 Broncode - Codevoorbeeld 141
Module ExerciseSolution
    Sub Main()
        Console.Write("Student Count ? ")
        Dim studentCount As Integer = Console.ReadLine()
        Console.Write("Topic Count ? ")
        Dim topicCount As Integer = Console.ReadLine()
        Console.WriteLine()
        '
        Dim studentUpperbound As Integer = studentCount - 1
        Dim names(studentUpperbound) As String
        Dim topicUpperbound As Integer = topicCount
        Dim scores(studentUpperbound, topicUpperbound) As Double
        Dim students(1) As Array
        Const namesIndex As Integer = 0, scoresIndex As Integer = 1
        students(namesIndex) = names
        students(scoresIndex) = scores
        '
        Dim studentIndex, topicIndex As Integer
        For studentIndex = 0 To studentUpperbound
            Console.Write("Name Student " & (studentIndex + 1) & " ? ")
            students(namesIndex)(studentIndex) = Console.ReadLine()
            For topicIndex = 0 To topicUpperbound - 1
                Console.Write(students(namesIndex)(studentIndex) & _
                              " Score Topic " & (topicIndex + 1) & " ? ")
                students(scoresIndex)(studentIndex, topicIndex) = _
                                                              Console.ReadLine()
            Next
            Console.WriteLine()
        Next
        '
        For studentIndex = 0 To studentUpperbound
            For topicIndex = 0 To topicUpperbound - 1
                students(scoresIndex)(studentIndex, topicUpperbound) += _
                      students(scoresIndex)(studentIndex, topicIndex)
            Next
            students(scoresIndex)(studentIndex, topicUpperbound) /= _
                                                                 topicUpperbound
        Next
        '
        Console.WriteLine()
        For studentIndex = 0 To studentUpperbound
            Console.WriteLine("Name : " & students(namesIndex)(studentIndex))
            For topicIndex = 0 To topicUpperbound - 1
                Console.WriteLine("Score Topic " & (topicIndex + 1) & " : " & _
                                students(scoresIndex)(studentIndex, topicIndex))
            Next
            Console.WriteLine("Average Score : " & _
                           students(scoresIndex)(studentIndex, topicUpperbound))
            Console.WriteLine()
        Next
        '
        Console.ReadLine()
    End Sub
End Module

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.