[Basic][Ti83+] inkorten met For(

Pagina: 1
Acties:

  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
Ik ben een simpel klein spelletje aan het maken op de TI83+, dat is een grafische rekenmachientje, met wat leuke dingetjes erop.
Ik ben dus bezig met mijn eerste programma, verwacht dus alsjeblieft niet dat ik alles al weet en wat er allemaal kan.
aub geen berichten dat ik niet heb gezocht, ik heb gezocht alleen niks bruikbaars kunnen vinden.
code:
1
2
3
4
5
6
7
8
If (A)=16
   Then:1>K
   If (I)=1
      Then:J*T+M>M
      Else:M-J>M
      End
   Goto 2
   End


Voor het spel heb ik heb bovenstaande gemaakt, deze komt, 8 keer voor in het programma maar met variable de A en de 1,
De A heeft een wisselde waarde die niet veranderd mag worden, en bij de A hoort de 1
bij de B hoort de 2 C3 D4, enz.
En het werkt.
Maar dat nam zeer veel ruimte onnodige inbeslag op het kleine rekenmachientje
toen heb ik deze bedacht (met hulp van bob over het IRC kanaal.)

code:
1
2
3
4
5
6
7
8
9
10
11
12
0>N
For(O,A,B)
N+1>1
   If (O)=16
      Then:N>K
      If (I)=N
         Then:J*T+M>M
         Else:M-J>M
         End
      Goto 2
      End
   end


theoretisch zou die volgens mij moeten werken.
Alleen de Goto 2 werkt niet, dit schijnt zo te zijn. in het boekje dat het ook niet kan,
Je schijnt daarvoor een "Return" te moeten gebruiken.
Return:Goto 2 heb ik ermaar van gemaakt, aangezien het na het programma niet kan.
dat werkte dus ook niet.

dus heb ik er dit van gemaakt
code:
1
2
3
4
5
6
7
8
9
......
         Else:M-J>M
         End
      1>X
      End
   end
If X=1
   Then:Goto 2
   End

En deze soort gelijke
code:
1
2
3
4
5
         End
      End
   1>X
   end
If X=1

en nog werkt het niet.
Ik zie duidelijk iets over het hoofd. maar wat?

[ Voor 12% gewijzigd door Smuggler op 04-10-2005 20:30 . Reden: code haakjes gedaan ]

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Ik zie helemaal geen label 2, dus hoe moet ie daarnaartoe kunnen springen?

'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.


  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Zo ver ik weet kan je met je TI niet naar een regel springen maar ga je met een goto naar een lbl dat je geset hebt, labels kun je aangeven met:

code:
1
2
3
lbl A
zet hier je zooi neer
goto A


label naam kan van A-Z, AA-ZZ en dat rare tekentje kan ook nog (0 met streepje ofzoiets).
-NMe- schreef op dinsdag 04 oktober 2005 @ 19:55:
Ik zie helemaal geen label 2, dus hoe moet ie daarnaartoe kunnen springen?
GRRR. Denk ook eens een oplossing te kunnen geven :@

[ Voor 29% gewijzigd door Kayshin op 04-10-2005 19:57 ]

My personal videoteek: -Clique-; -NMe- is een snol!


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
lbl 2 zit op een hele andere plek in het programma,
dit is slechts een klein gedeelte.
ik kan wel het hele programma posten.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Kan een label wel een numerieke naam hebben? volgens mij niet namelijk... Even uitproberen...

My personal videoteek: -Clique-; -NMe- is een snol!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Smuggler schreef op dinsdag 04 oktober 2005 @ 19:57:
ik kan wel het hele programma posten.
Dat is niet nodig lijkt me. :)

Komt je programma überhaupt wel bij die goto aan? Zet er eens Disp "Test" voor? :)

'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.


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
Kayshin schreef op dinsdag 04 oktober 2005 @ 19:59:
Kan een label wel een numerieke naam hebben? volgens mij niet namelijk... Even uitproberen...
dat lukt,
zoals ook al in de bovenste code staat,
de bovenste werkt. alleen is deze zeer langdradig en neemt veel ruimte in beslag.

bedankt alvast voor jullie snelle antwoorden.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
-NMe- schreef op dinsdag 04 oktober 2005 @ 20:00:
[...]

Dat is niet nodig lijkt me. :)

Komt je programma überhaupt wel bij die goto aan? Zet er eens Disp "Test" voor? :)
Nee, het programma komt erniet aan.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Ligt blijkbaar niet aan het feit dat label numeriek is, geprobeerd.

Ik denk dat je prog nog steeds in de loop zit terwijl je naar je label wil gaan, dit zou niet leuk zijn voor het geheugengebruik neem ik aan, kan zijn dat hij hier op fout gaat...

My personal videoteek: -Clique-; -NMe- is een snol!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Smuggler schreef op dinsdag 04 oktober 2005 @ 20:01:
Nee, het programma komt erniet aan.
Dan is O blijkbaar nooit gelijk aan 16, wat dus betekent dat A groter is dan 16, of B kleiner dan 16, of misschien wel beide. :)

'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.


  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Smuggler schreef op dinsdag 04 oktober 2005 @ 20:01:
[...]


Nee, het programma komt erniet aan.
Check je A en B waarden dan eens voor de loop, als je A groter is als 16 of je B is kleiner als 16 neemt ie de if niet
-NMe- schreef op dinsdag 04 oktober 2005 @ 20:06:
[...]

Dan is O blijkbaar nooit gelijk aan 16, wat dus betekent dat A groter is dan 16, of B kleiner dan 16, of misschien wel beide. :)
En weer te laat :(

[ Voor 33% gewijzigd door Kayshin op 04-10-2005 20:08 ]

My personal videoteek: -Clique-; -NMe- is een snol!


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
in een ander gedeelte van het programma, worden A t/m H afgebeeld op een positie op het beeldscherm.
zodra die ervoor bij is geeft mijn rekenmachiene ERR:DOMAIN
het stukje wat hier onder staat dat het programma zodra er 1 van de letters bij 16 is, iets anders gaat uitvoeren.
blijkbaar lukt dat dus niet echt.

bij 8 H lukte die wel zag ik net in een testje (het is telkens een andere Letter die erals eerste is.)

ik hoop dat die 8 een goede hint is, toen bereikte het programma 1 malig wel Lbl 2
de 3e code gebruikte ik dan van me eerste bericht.

[ Voor 5% gewijzigd door Smuggler op 04-10-2005 20:15 ]

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
Kayshin, de A gaat per stapje steeds 1 omhoog en begint bij 1
er gebeuren ook geen vreemde dingen mee, dit zie ik op het schermpje.
de A B t/m H zijn constant zichtbaar, maar er gebeurd niks (behalve de H) als ze op hun bestemming zijn aangekomen.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
sorry, ik ben al achter de fout (minstens 100 keer overheen gelezen)
op mijn rekenmachine zelf was ik de >N vergeten bij N+1>N


edit>
Maar het werkt nogsteeds niet, de 1e keer werkte die wel ^^ zie tekst hierboven.
1 fout eruit waarschijnlijk nog een paar te gaan.
nog steeds wilt tie af en toe de Goto 2 niet pakken
soms wel maar dan is K 4 ofzo, terwijl het 7 hoort te zijn.
de 2e code gebruik ik op dit moment.


edit:
ook sorry voor de 3 dubbel dubbel post zie ik nu.

[ Voor 56% gewijzigd door Smuggler op 04-10-2005 20:44 . Reden: dubbelpost ]

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
"kick" (24 uur)
Aub geen opmerkingen over (nu mijn 4 dubbele post)Creepy weet ervan O-)
ondertussen alweer verder, en zelf verder op onderzoek uitgegaan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
0>N
For(O,A,H)
Output(1,2,N)
N+1>N
Output(2,2,N)
Output(3,2,O)
Pauze
   If (O)=16
      Then:N>K
      If (I)=N
         Then:J*T+M>M
         Goto 2
         Else:M-J>M
         Goto 2
         End
      Goto 2
      End
   end

Zo is de code nu. met wat outputs om te kijken wat de waarden zijn tijdens het uitvoeren.

Nou geeft het rekenmachientje na lang kijken alleen de getallen van A tot H aan.
en niet de letters A tot H wat de bedoeling was.

Ik krijg dus
code:
1
2
3
 1
 2
 4

Als de waarde van A, 2 is en de waarde van H, 4 is.
Het probleem is denk ik nu blootgelegd,

for(O,A,B,C,D,E,F,G,H) werkt niet (ook wel logisch)
for(O,"A","H") werkt ook niet.
Achteraf gezien is het nu best logisch dat het niet werkte.
word het nu toch schrijven?
of heeft iemand een hint (een hint is voor mij vaak beter dan de oplossing, kan ik lekker gaan puzzelen)
ik kom erniet meer uit.
alvast bedankt als je tot hier toe alles hebt gelezen _/-\o_

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

ik weet zeker dat je op een 83 (geen +) je een label A erin te zetten ofzo :P

-niks-


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Labels hebben hier verder niet meer veel mee te maken? :)

Smuggler: je zal nu een beetje kunstig moeten gaan programmeren. Het makkelijkste is het als je in een string (ik ga even uit van Str0) de tekst "ABCDEFGH" opslaat, dus:
code:
1
"ABCDEFGH"->Str0

Dan verander je je for:
code:
1
For (O,1,8)

A en H betekenen namelijk niets als ik je commentaar hier zo lees. ;)
Het kan ook zijn dat je for van 0 tot 7 moet lopen, maar dat weet ik zo even niet uit mijn hoofd. Dat heeft in elk geval te maken met het volgende puntje:

Vervolgens kun je met de index in O gaan spelen met behulp van substrings:
code:
1
Sub(Str0,O,1)->Str1

Dan heb je het karakter dat je wil afdrukken in Str1 staan. :)

(Het is dat arrays geen karakters mogen bevatten in TI-BASIC, anders was dat natuurlijk makkelijker geweest. :P)

[ Voor 12% gewijzigd door NMe op 05-10-2005 22:53 ]

'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.


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
-NMe- schreef op woensdag 05 oktober 2005 @ 22:52:

A en H betekenen namelijk niets als ik je commentaar hier zo lees. ;)
dan is me commentaar niet 100% correct geweest.
De oorspronkelijk code moet zoals je leest het toch echt hebben van de waarde A t/m H.
code:
1
2
3
4
5
6
7
8
If (A)=16
   Then:1>K
   If (I)=1
      Then:J*T+M>M
      Else:M-J>M
      End
   Goto 2
   End


zo heb ik de code nu,
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
"ABCDEFGH">str6
0>N
For(O,1,8)
Output(1,2,N)
sub(str6,O,1)>str5
Output(1,2,N)
N+1>N
Output(2,2,N)
Output(3,2,O)
Output(4,2,Str5
String5>O
Output(5,2,O)
   If (O)=16
   Then:N>K
      If (I)=N
         Then:J*T+M>M
         Goto 2
         Else:M-J>M
         Goto 2
         End
      Goto 2
      End
   End

nu heb je A=1 en B=2
maar ik wil. A hoort bij 1
B hoort bij 3
waarbij A en B hun eigenwaarde behouden
anders haalt A natuurlijk nooit de 16.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


Verwijderd

even voor de duidelijkheid, de letters in strings zijn pure ASCII codes van letters.
maar de letters waar je waarden aan kunt toekennen zijn stukjes geheugen.
een leter kan dus een waarde bevatten maar dat heeft geen invloed op de strings.
als je een letter wilt tekenen maak dan een output(X,Y,"L") L=de letter
of moeten x en y nu andersom,
je mag me ook het hele progje mailen dan bekijk ik het morgen tijdens wiskunde even.

  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
de Output wat hier staat is alleen ten controle, tijdens het uitvoeren van het programma.

Output (Y,X,zichtbare waard)

wat erin de str5 staat is dus goed, A is netjes A en B is netjes B
tijdens A, is N netjes 1
en tijdens B is N netjes 2

het enige wat nu nog moet gebeuren:
If (O)=16
O is dan A B of een andere letter, met de waarde die erinzit.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Smuggler schreef op donderdag 06 oktober 2005 @ 20:19:
dan is me commentaar niet 100% correct geweest.
De oorspronkelijk code moet zoals je leest het toch echt hebben van de waarde A t/m H.

[..]

nu heb je A=1 en B=2
maar ik wil. A hoort bij 1
B hoort bij 3
waarbij A en B hun eigenwaarde behouden
anders haalt A natuurlijk nooit de 16.
Hmm, als ik het zo lees zoek je in feite dus gewoon arrays (of lists in TI-BASIC)? Alleen werk je dan met Lnaam{0} t/m Lnaam{7} in plaats van A t/m H.
Smuggler schreef op donderdag 06 oktober 2005 @ 20:52:
het enige wat nu nog moet gebeuren:
If (O)=16
O is dan A B of een andere letter, met de waarde die erinzit.
O kan geen letters bevatten. Variabelen kunnen in TI-BASIC alleen getallen voorstellen, voor letters heb je 10 strings tot je beschikking.

[ Voor 25% gewijzigd door NMe op 06-10-2005 21:48 ]

'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.


  • Smuggler
  • Registratie: Juni 2005
  • Laatst online: 22:44

Smuggler

Wat wil jij nu echt bereiken?

Topicstarter
ik hoop nu dat ik kan zeggen dat het definitief werkt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"ABCDEFGH">str6
0>N
For(O,1,8)
sub(str6,O,1)>str5
N+1>N
expr(str5)>X
   If X=16
   Then:N>K
      If I=N
         Then:J*T+M>M
         Goto 2
         Else:M-J>M
         Goto 2
         End
      Goto 2
      End
   End

de truc is dus expr(str5)>X
die laat dus de waarde uit de letter van str5 komen.en geeft die de letter X.
Met X wordt dan verder gegaan.

allemaal bedankt voor jullie hulp.

9.900Wp PV (enphase), 55kwh EV(Tesla), 75kwh EV(Tesla), 6kWh thuisbatterij (EVAPOWER),+ sygenergy 54kwh Tibber

Pagina: 1