Toon posts:

[VB2008] Beginnersvragen...

Pagina: 1
Acties:
  • 1.187 views

Onderwerpen


  • Modus47
  • Registratie: maart 2010
  • Niet online
Ben met een cursus VB2008 bezig dus... heb net hoofdstuk over For-Next en Do loops achter de rug en moet nu een programmaatje maken dat daar enigszins op teruggrijpt, echter... de opdracht is dat je in dit geval geen loops mag gebruiken.

Het volgende moet dus nagemaakt worden, ter illustratie een plaatje met het beginscherm en daaronder het form na 1x klikken op de linkerbutton.



De eerste klik zorgt er dus voor dat de bovenste labels geel worden en dat rechtsboven i = 1 wordt vermeld.
Nog een keer klikken maakt het middelste label geel, en nogmaals het onderste label.
Bij de 4e klik gaat dit weer terug naar de 2 bovenste labels en wordt i = 2.
Vervolgens bij de 7e klik wordt i = 3, etc. etc.

Er staat nog een kleine hint ergens:

Short description of the exercise:
Fake a For loop, without using the For loop construction.
Requirement:
The program has to be made generic in such a way that it can also work for hundred or more loops with a little change (only the number of loops) in the code.
Tip:
Use 2 variables, one for the loops and one for the steps within the loop.


Als ik nou alleen naar de functionaliteit van het voorbeeld kijk ga ik al heel anders 'redeneren' dan wanneer ik bovenstaande toelichting erbij lees. Ik heb dan ook eik totaal geen idee hoe dit aan te pakken (als ik wel loops zou mogen gebruiken nog steeds niet echt geloof ik, maar daar kom ik ms later nog op).

Ik zou zeggen 2 variabelen, bv. a en i. Bij elke klik moet a 1 groter worden en na elke 3 klikken wordt i 1 groter. Even aangenomen dat dat correct is moet ik denk ik ergens aangeven dat beide variabelen bij 1 moeten beginnen?? Zo ja waar? In de Button_Click Sub?

Ik heb nog even zitten rommelen maar zie echt niet welke logica ik moet bouwen in die Button_Click Sub. Als het nou een 'eindig' iets was, maar zowel a als i moeten eigenlijk eindeloos doorgeteld kunnen worden toch?

Het heeft ook weinig zin om nu mijn code al te posten want dat is niks meer dan alleen 2 regels Dim. Ik heb echt geen idee...

-EDIT1
als ik die hints nog eens nalees denk ik dat ik sowieso al niet goed zit met hoe ik die a en i zou gebruiken.

  • RxB
  • Registratie: september 2001
  • Laatst online: 07-02-2017
Je kan alle textboxen die je wil verkleuren in een array zetten.
je maakt 1 teller om je clicks bij te houden en 1 tmp teller om te kijken waar je zit.
de Teller laat je delen door de lengte van je textbox array.

[Voor 63% gewijzigd door RxB op 08-11-2010 20:05. Reden: Voorbeeld code verwijderd.]


  • Modus47
  • Registratie: maart 2010
  • Niet online
Arrays komen pas in een later hoofdstuk aan bod dus lijkt me sterk dat ik dat nu zou kunnen gebruiken...

  • CodeCaster
  • Registratie: juni 2003
  • Niet online

CodeCaster

👌👀 good shit ✔💯

Bij elke klik tel je eentje op bij je teller. Vervolgens doe je de teller modulo 3. Afhankelijk van wat je daarvan overhoudt kleur je de bijbehorende textbox. Bijvoorbeeld.

As always, we are nailed to a cross of our own construction.


  • Freeaqingme
  • Registratie: april 2006
  • Laatst online: 01:04
Ik heb altijd een vreselijke hekel aan dit soort opdrachten, aangezien 't in het geheel niet logisch is dat je iets als for() niet zou mogen gebruiken. Je kan 't geheel ook recursief maken, dan kan 't ook zonder for :D

No trees were harmed in creating this message. However, a large number of electrons were terribly inconvenienced.


  • CoolGamer
  • Registratie: mei 2005
  • Laatst online: 19-09 14:05

CoolGamer

What is it? Dragons?

Je zal een variabele buiten de button_click-functie nodig hebben om je huidige i bij te houden. Ik denk dat het dan wel voor zich spreekt.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


  • Modus47
  • Registratie: maart 2010
  • Niet online
CodeCaster schreef op maandag 08 november 2010 @ 20:20:
Bij elke klik tel je eentje op bij je teller. Vervolgens doe je de teller modulo 3. Afhankelijk van wat je daarvan overhoudt kleur je de bijbehorende textbox. Bijvoorbeeld.
Ik snap wel ongeveer wat je bedoelt maar ik zou nog steeds niet weten hoe dit in code om te zetten.
En nee, ik vraag niet om kant en klare code, dat wil ik toch echt zelf uitvinden. :P

  • jip_86
  • Registratie: juli 2004
  • Laatst online: 21:28
Hoezo heb je eigenlijk een for nodig :?
Met de button start je eerder een controlefunctie. Die controleert of 1,2 of 3 geel moet zijn. Om te onthouden op welke plek je bent heb je idd een variabele nodig.
Met een tweede variabele controleer je hoe vaak je de loop al gemaakt hebt.

teller1 loopt van 1-n waar n is het aantal loops dat je wilt (one for the loops)
teller2 loopt dus van 1 - 3 voor de tekstboxen (one for the steps within the loop)

  • Modus47
  • Registratie: maart 2010
  • Niet online
^^Ik ga het even laten bezinken maar vooralsnog zie ik er weinig in. Ms denk ik gewoon totaal de verkeerde richting maar ik zie in het voorbeeldprogramma bijna niks terug van wat ik tot nu toe behandeld heb in de stof.

  • Memorice
  • Registratie: maart 2006
  • Laatst online: 28-08 06:39
Zelfs als je wel een for loop zou mogen gebruiken, hoe zou je die willen toepassen? De kennis die je nodig hebt is het volgende:

- declaratie van variabele
- vergelijken van variabele (if-statement)
- modulo operator (wiskundig begrip, net als +, -, *, etc.)
- ophogen van variabele

Je idee uit de openings post met twee variabelen is een prima oplossing. Eerst kijk je wat de waarde van a modulo 3 is, is dit 0 dan kleur je de bovenste textbox geel en hoog je i op met 1, is het 1 dan kleur je de middelste geel, is het 2 dan kleur je de onderste geel. Vervolgens moet je nog een check inbouwen die er voor zorgt dat je i niet ophoogt naar 4.

Dit is niet de enige mogelijke oplossing, maar wel een van de meest simpele en voor de hand liggende oplossingen.

  • Modus47
  • Registratie: maart 2010
  • Niet online
Die Mod functie komt me ook niet heel bekend voor, maar staat wel vermeld in een eerder hoofdstuk, maar verder niet toegelicht. En wiskunde is al zooooo lang geleden. :P
Ik zat al wel aan zoiets te denken, de ene variabele moet soms een veelvoud zijn van de andere, maar hoe ik dat in een functie ofzo moest verwerken geen idee dus. Zal vanavond nog eens verder kijken, bedankt alvast.

  • NMe
  • Registratie: februari 2004
  • Laatst online: 03:29

NMe

Quia Ego Sic Dico.

Er staat dat je geen for mag gebruiken, niet dat je geen loops mag gebruiken. Gooi er gewoon een while-loop overheen, ben je ook klaar. Ik heb ook het vermoeden dat het begrijpen hoe een for-loop intern werkt het doel van die opdracht is.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Modus47
  • Registratie: maart 2010
  • Niet online
Ik geloof dat ik er wel uit ben, ik heb iig iets dat precies doet wat het voorbeeld ook doet, dus dan zal het wel goed zijn. :P

Had eerst een oplossing geheel zonder Mod bedacht, die werkte goed. Wilde toch Mod gebruiken om te kijken of ik de logica snapte. Dacht eerst dat ik beide variabelen daarin moest betrekken (dus a Mod i of i Mod a ofzo) maar dat (b)lijkt niet echt te werken.

Heb nu dus het volgende gebruikt:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label2.Text = "i = " & i
        If a Mod 3 = 1 Then
            If i = 4 Then
                End
            End If
            Label1.BackColor = Color.Yellow
            Label2.BackColor = Color.Yellow
            Label3.BackColor = System.Drawing.SystemColors.Control
            Label4.BackColor = System.Drawing.SystemColors.Control
            a = a + 1
        ElseIf a Mod 3 = 2 Then
            Label1.BackColor = System.Drawing.SystemColors.Control
            Label2.BackColor = System.Drawing.SystemColors.Control
            Label3.BackColor = Color.Yellow
            Label4.BackColor = System.Drawing.SystemColors.Control
            a = a + 1
        ElseIf a Mod 3 = 0 Then
            Label1.BackColor = System.Drawing.SystemColors.Control
            Label2.BackColor = System.Drawing.SystemColors.Control
            Label3.BackColor = System.Drawing.SystemColors.Control
            Label4.BackColor = Color.Yellow
            a = 1
            i = i + 1
        End If
    End Sub


Ik houd me aanbevolen voor evt. tips nog.

-edit
Bij nader inzien voegt dat Mod weinig toe toch? Had net zo goed If a = 1 of 2 of 3 kunnen gebruiken...?

[Voor 4% gewijzigd door Modus47 op 13-11-2010 20:38]


  • Bolukan
  • Registratie: oktober 2002
  • Laatst online: 18-09 12:02
Volgens mij willen ze dat je do loop gebruikt
Visual Basic:
1
2
3
4
5
i=1
do while i<4
 bla bla
 i = i + 1
loop

[Voor 9% gewijzigd door Bolukan op 13-11-2010 20:52]


  • Modus47
  • Registratie: maart 2010
  • Niet online
Zou kunnen ja, ik vind ze daar niet heel erg duidelijk in. Ik heb mijn opgave inmiddels ingestuurd, dus ik kan er niks meer aan veranderen.

  • NMe
  • Registratie: februari 2004
  • Laatst online: 03:29

NMe

Quia Ego Sic Dico.

Modus47 schreef op zaterdag 13 november 2010 @ 21:03:
Zou kunnen ja, ik vind ze daar niet heel erg duidelijk in. Ik heb mijn opgave inmiddels ingestuurd, dus ik kan er niks meer aan veranderen.
Als ze niet duidelijk zijn moeten ze alles goed tellen dat geen for gebruikt. Of, en dat willen leraren veel vaker dan jij denkt: ze willen dat jij gaat vragen wat eigenlijk de bedoeling is, om je zo voor te bereiden op het echte leven. Een programmeur krijgt maar zelden te horen wat de klant wil. Hij krijgt een samenvatting van wat de klant dénkt dat hij wil, en dat is vaak iets heel anders. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • marcelk
  • Registratie: december 2000
  • Niet online
Bolukan schreef op zaterdag 13 november 2010 @ 20:52:
Volgens mij willen ze dat je do loop gebruikt
Visual Basic:
1
2
3
4
5
i=1
do while i<4
 bla bla
 i = i + 1
loop
Alleen krijg je de output voor i=1 en i=2 niet te zien in je form: het repaintmechanisme wordt dan namelijk alleen aangeroepen voor i=3.

  • CoolGamer
  • Registratie: mei 2005
  • Laatst online: 19-09 14:05

CoolGamer

What is it? Dragons?

Modus47 schreef op zaterdag 13 november 2010 @ 20:24:
-edit
Bij nader inzien voegt dat Mod weinig toe toch? Had net zo goed If a = 1 of 2 of 3 kunnen gebruiken...?
Klopt. Mod had als voordeel dat wanneer "a = 4" er nog steeds wordt uitgevoerd wat staat bij "a Mod 3 = 1". Echter zet je zodra "a Mod 3 = 0" dit: "a = 1", dus de Mod is overbodig.

Mod geeft de rest van een deling. "1 Mod 3" geeft 1, want als je 1 deelt door 3 hou je 1 over.

¸.·´¯`·.¸.·´¯`·.¸><(((º>¸.·´¯`·.¸><(((º>¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸<º)))><¸.·´¯`·.¸.·´¯`·.¸.·´¯`·.¸


  • DEiE
  • Registratie: november 2006
  • Laatst online: 19-09 14:35
Het voordeel van Mod ( en delen ) kan zijn dat je het met één teller kan oplossen. Je moet in mijn voorbeeld wel vanaf 0 rekenen, en niet vanaf 1, maar is makkelijk om te bouwen.

Visual Basic:
1
2
3
i = 13
stapBinnenIteratie = i Mod 3 ' 13 Mod 3 = 1
Iteratie = i / 3 ' 13 / 3 = 4


Mijn VB is niet zo sterk, dus hoe dingen met afronden werken weet ik niet, maar dit is het idee.

  • Modus47
  • Registratie: maart 2010
  • Niet online
Daar was ik weer. :P De opdracht waar ik nu mee bezig ben is heel wat uitgebreider dus ik ga hier ongetwijfeld meerdere vragen over stellen. Hier is er vast 1:

Ik moet een .txt bestand in een textbox inlezen, dat gaat op zich wel maar ik krijg het niet uitgelijnd zoals in het voorbeeld (en zoals in het txt-bestand zelf)

Hier een paar regels van het bestand:
code:
1
2
3
4
5
7226218;  Hemlock;                22.55;  0
7711175;  Pine, Radiata;          12.45;  0
2229886;  Pine, Arkansas;         15.25;  0
0822722;  Pine, Sugar;            11.55;  0
5255228;  Douglas Fir;             9.75;  0


Zo ziet het er dus ook uit in de .exe die ik moet namaken (uitgelijnd in soort van kolommen dus). Echter als ik het maak wordt het een rommeltje. Ik kan wel tabs invoegen (?) (heb ik al geprobeerd, iets met de regel splitsen enzo) maar ik lees per regel in m.b.v. een loop, en om het zo uitgelijnd te krijgen gebruikt niet elke regel evenveel tabs?

Ik zie zo snel nergens hoe en waar je dit moet veranderen... is dat een instelling van de textbox ofzo?

  • jip_86
  • Registratie: juli 2004
  • Laatst online: 21:28
De inhoud van de hele file moet in een tekstbox staan?
Dat is toch gewoon de complete regel uit het bestand toevoegen aan een textbox? Of staat het zo niet in het voorbeeldbestand?

  • Modus47
  • Registratie: maart 2010
  • Niet online
Hmmm wacht, het lag puur aan het gebruikte lettertype in de textbox. :') Forget I asked!

  • Modus47
  • Registratie: maart 2010
  • Niet online
In het form dat ik na moet maken staat iets waarvan ik denk dat het een Button is:

http://i15.photobucket.com/albums/a396/Modus47/VBbutton.gif

Van boven naar onder disabled, enabled en click.
Ik heb alleen geen idee wat voor style te gebruiken om het zo na te maken....

  • Wmm
  • Registratie: maart 2002
  • Laatst online: 18-09 16:26
Modus47 schreef op zaterdag 25 december 2010 @ 15:51:
In het form dat ik na moet maken staat iets waarvan ik denk dat het een Button is:

[afbeelding]

Van boven naar onder disabled, enabled en click.
Ik heb alleen geen idee wat voor style te gebruiken om het zo na te maken....
Dat is toch simpel om te doen? Speel gewoon wat met de properties van een control in de designer. Hint, iets met disabled, font, backcolor, borderstyle...

DHTML Tetris


  • Modus47
  • Registratie: maart 2010
  • Niet online
Ja dat heb ik natuurlijk allang gedaan maar kan de juiste settings daarmee niet vinden. Nou ja maakt ook niet zo heel veel uit denk ik, als de functionaliteit maar werkt.

Volgende vraag:
Ik moet dus uit zo'n regel
code:
1
7226218;  Hemlock;                22.55;  0

gegevens halen. De hele regel behandel ik als string, die ik vervolgens in een array opdeel met Split. Als ik de 3e waarde van die array opvraag krijg ik echter 2255 en dat is niet goed, hij moet die punt als decimaal zien of gaan zien (het is een artikelprijs dus). Ik google me helemaal suf naar iets als 'convert string to currency' maar kan niks vinden wat lijkt te werken. Ik vond ergens CCur maar die functie kent VB niet??

Of is het zo ingewikkeld dat ik die 2255 zelf nog moet gaan opsplitsen met Left/Right o.i.d. en er dan nog een komma tussenprop?

[Voor 66% gewijzigd door Modus47 op 25-12-2010 19:40]


  • NMe
  • Registratie: februari 2004
  • Laatst online: 03:29

NMe

Quia Ego Sic Dico.

Genoeg geweest. Dit forum is niet een plek waar je even snel elk klein vraagje dat je kan verzinnen zomaar even komt dumpen in een of ander verzameltopic van al jouw kleine vraagjes. Als je een vraag hebt die een topic waard is, dan mag je gewoon een nieuw topic openen per vraag. Echter, deze kleine vraagjes die je nu stelt kun je ook prima oplossen door zelf even te Googlen of even in de manual te kijken.

Ik stel voor dat je De Quickstart even doorleest en aan de hand daarvan eventueel een nieuw topic opent als je écht een onoverkomelijk probleem tegenkomt. Maar waarom CCur niet beschikbaar is in VB.NET is redelijk makkelijk te vinden. Een beetje meer moeite steken in je eigen problemen mag wel hoor. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee