Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Funktion käyttö?

codemike [05.02.2011 02:02:06]

#

Miten funktiota käytetään? Suorittaako tietokone aina ohjelmaa yhdessä kohtaa vai voiko se tutkia monia funktioita samanaikaisesti ("moniajon tapaan")? Alla ole ohjelma toimii jos poistaa kaiken Sub Main2() lähtien. Jos kyseisen ohjelman haluaa suorittaa kahdella sub Main()(tai miten ne nyt visual basicissa voi nimetä?) niin laitetaanko Sub Main2() funktio kutsu ohjelman alkuun ja jos niin miten?

Module Module1
    Sub Main()
        Console.Clear()
        Console.Write("Write text: ")
        Dim Text = Console.ReadLine()
        If ContainsSuchword(Text) Then
            Console.WriteLine("There is one or more such words")
        Else
            Console.WriteLine("There is no such words")
        End If
        Threading.Thread.Sleep(1000)
    End Sub
    Private Function ContainsSuchword(ByVal text As String) As Boolean
        Dim Suchwords = New String() {"word1", "word2", "you were"}
        For Each Suchword In Suchwords
            If text.ToLower.Contains(Suchword) Then
                Return True
            End If
        Next
        Return False
    End Function
End Module

    Sub Main2()
        Console.Clear()
        Console.Write("Write text: ")
        Dim Text = Console.ReadLine()
        If ContainsSuchword(Text) Then
            Console.WriteLine("There is one or more such B words")
        Else
            Console.WriteLine("There is no such words")
        End If
        Threading.Thread.Sleep(1000)
    End Sub
    Private Function ContainsSuchword(ByVal text As String) As Boolean
        Dim Suchwords = New String() {"word1B", "word2B", "you wereB"}
        For Each Suchword In Suchwords
            If text.ToLower.Contains(Suchword) Then
                Return True
            End If
        Next
        Return False
    End Function
End Module

Mod. lisäsi kooditagit.

Hennkka [05.02.2011 08:30:55]

#

codemike kirjoitti:

Suorittaako tietokone aina ohjelmaa yhdessä kohtaa vai voiko se tutkia monia funktioita samanaikaisesti ("moniajon tapaan")?

VB.net suorittaa ohjelmaa aina oletuksellisesti yhdestä kohtaa, mutta säikeillä voi korjata tämän ongelman.

codemike kirjoitti:

Alla ole ohjelma toimii jos poistaa kaiken Sub Main2() lähtien.

Johtuu siitä, että siinä on syntaxi virhe. KAIKKIEN funktioiden (ja aliohjelmien) on oltava jonkin luokan/modulen sisällä. Koodissasi kuitenkin rivillä 22 lopetetaan module, mutta ei aloiteta uutta.

codemike kirjoitti:

Jos kyseisen ohjelman haluaa suorittaa kahdella sub Main()(tai miten ne nyt visual basicissa voi nimetä?) niin laitetaanko Sub Main2() funktio kutsu ohjelman alkuun ja jos niin miten?

Ei

En tiedä tarkasti, mitä tuon koodin olisi tarkoitus tehdä, mutta tässä nyt korjattu versio säikeillä:

Module Module1
    Sub Main()
        'Luodaan säie objektit
        Dim t1 As New System.Threading.Thread(AddressOf Main1)
        Dim t2 As New System.Threading.Thread(AddressOf Main2)
        'Aloitetaan säikeiden suoritus
        t1.Start()
        t2.Start()
    End Sub

    Sub Main1()
        Console.Clear()
        Console.Write("Write text: ")
        Dim Text = Console.ReadLine()
        If ContainsSuchword(Text) Then
            Console.WriteLine("There is one or more such words")
        Else
            Console.WriteLine("There is no such words")
        End If
        Threading.Thread.Sleep(1000)
    End Sub

    Private Function ContainsSuchword(ByVal text As String) As Boolean
        Dim Suchwords = New String() {"word1", "word2", "you were"}
        For Each Suchword In Suchwords
            If text.ToLower.Contains(Suchword) Then
                Return True
            End If
        Next
        Return False
    End Function

    Sub Main2()
        Console.Clear()
        Console.Write("Write text: ")
        Dim Text = Console.ReadLine()
        If ContainsSuchwordB(Text) Then
            Console.WriteLine("There is one or more such B words")
        Else
            Console.WriteLine("There is no such words")
        End If
        Threading.Thread.Sleep(1000)
    End Sub

    Private Function ContainsSuchwordB(ByVal text As String) As Boolean
        Dim Suchwords = New String() {"word1B", "word2B", "you wereB"}
        For Each Suchword In Suchwords
            If text.ToLower.Contains(Suchword) Then
                Return True
            End If
        Next
        Return False
    End Function
End Module

ps.Toivottajasti joku Mod korjaa tuojon sinun viestiin kooditagit, olisi nimittäin helpompaa luettavaa.

codemike [05.02.2011 17:50:35]

#

Kiitos paljon avusta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta