 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 566 Wohnort: Jüterbog
|
Verfasst am: 23.10.2008, 21:37 Titel: |
|
|
Wobei ich meine das j nur ne Hilfsvariable ist und nicht interessiert....
NOT ist gut... und damn kurz was aber wenn zwischen 0 und 2 geswapt wird?
hilft dann noch NOT?
Bool .... man möge ihn vierteilen... aber leider ist er ja schon tot
1&1|1
1&0|0 AND?
0&1|0
0&0|0
*lol* |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.10.2008, 21:55 Titel: |
|
|
NOT dreht einfach die bits um. da kannst du nur zwischen "an und aus" wechseln. und dabei nicht prüfen "IF a = 1", sondern einfahc "IF a" - liefert true, wenn's ungleich 0 ist. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 566 Wohnort: Jüterbog
|
Verfasst am: 23.10.2008, 22:45 Titel: |
|
|
was ich nicht verstehe ist folgendes in zippos code:
"...THEN c = 1 AND j = 1"
was versucht wird ist klar...
Aber wieso meckert hier FB vom Syntax her nicht?
Wenns denn kein Fehler ist, was passiert da oben denn logisch hinter THEN?
Zwischen THEN und END IF sind die beiden Zuweisungen(c=1,j=1) in Ordnung, aber so?
Hab ich noch nie in einem BASIC Dialekt gesehen!
oder ist das gar zulässig?
Mutton |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 23.10.2008, 22:50 Titel: |
|
|
Code: | THEN c = (1 AND j) = 1 |
völlig okay.
damit kann man wunderbare kurzschriebweisen festlegen, z.B.
Code: | buttongedrueckt = (gedrueckt = 1) |
buttongedrueckt erhält den wert TRUE, wenn die bedingung in klammern (die sind der übersichthalber da) auch TRUE ist. im fall oben erhält c den wert TRUE, wenn 1 AND j die Zahl 1 ergibt. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Muttonhead

Anmeldungsdatum: 26.08.2008 Beiträge: 566 Wohnort: Jüterbog
|
Verfasst am: 23.10.2008, 23:08 Titel: |
|
|
Sowas gab es bei good old AMIGABasic nicht....
da wär nen Syntax Error gekommen
Ich glaub ich werd zu alt dafür
genug gelernt für heute, hab Dank
Mutton |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.10.2008, 12:50 Titel: |
|
|
das sollte es da genau so gegeben haben O_o
das sind einfachste sprachelemente, die ich bisher überall gefunden habe. _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 24.10.2008, 14:56 Titel: |
|
|
Zitat: | Code: | IF i = 1 AND j = 0 AND a = 0 THEN a = 1 AND j = 1
IF i = 1 AND j = 0 AND a = 1 THEN a = 0 AND j = 1 |
|
Meinst du nicht eher "THEN a = 1: j = 1"? |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.10.2008, 18:16 Titel: |
|
|
was meinste, worauf ich schon die ganze zeit hinaus will.  _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sippo

Anmeldungsdatum: 17.04.2008 Beiträge: 125
|
Verfasst am: 25.10.2008, 12:15 Titel: |
|
|
hab nun nen code gebaut, der zwar sehr lang ist, bei dem ich auch einige Möglichkeitn kenne ihn zu kürzen, aber er funktiniert^^. Natürlich könnte man z.b. die basisadresse noch in eine variable setzen und so com 1 und 2 ansteuern und den ganzen unteren teil könnte man in eine for next- schleife setzen...
Code: |
dim shared as integer a(1 to 10)
screen 15
declare Sub ausfuehren
do
if multikey (&H10) then
a(1) = 1
end if
if multikey (&H11) then
a(2) = 1
end if
if multikey (&H12) then
a(3) = 1
end if
if multikey (&H13) then
a(4) = 1
end if
if multikey (&H14) then
a(5) = 1
end if
if multikey (&H15) then
a(6) = 1
end if
if multikey (&H16) then
a(7) = 1
end if
if multikey (&H17) then
a(8) = 1
end if
if multikey (&H1E) then
a(1) = 0
end if
if multikey (&H1F) then
a(2) = 0
end if
if multikey (&H20) then
a(3) = 0
end if
if multikey (&H21) then
a(4) = 0
end if
if multikey (&H22) then
a(5) = 0
end if
if multikey (&H23) then
a(6) = 0
end if
if multikey (&H24) then
a(7) = 0
end if
if multikey (&H25) then
a(8) = 0
end if
locate 1,1
print "1 ="; a(1)
locate 2,1
print "2 ="; a(2)
locate 3,1
print "3 ="; a(3)
locate 4,1
print "4 ="; a(4)
locate 5,1
print "5 ="; a(5)
locate 6,1
print "6 ="; a(6)
locate 7,1
print "7 ="; a(7)
locate 8,1
print "8 ="; a(8)
ausfuehren
loop until inkey = chr (27)
sub ausfuehren
if a(8) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(8) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(7) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(7) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(6) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(6) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(5) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(5) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(4) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(4) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(3) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(3) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(2) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(2) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
if a(1) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(1) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
out (1020), 2
out (1020), 0
end sub |
edit:
ich glaub das oben beschriebene mach ich nun einfach mal immerhin is der code für einen so kurzen nutzen recht lang. und das mit not sollte ich auch nochmal probieren, bei mir hat der immer zwischen 0 und -1 gewechselt. lag das an meim dateityp?? und welcher war der dateity der nur true und false kennt???? (bit wär ja logisch xD aber mal ernst wie belege ich nur 1 bit die dateitypen in der tabelle fangen ja erst mit byte an)
edit2:
noch ne frage: wie kann ich mehrere teile eines arrays gleichzeitig ansprechen? z.b wenn array(1) und array(2) den gleichen wert bekommen sollen?
und für die, die es interresiert hier mein neuer code (mit genau 100 zeilen also 92 weniger als der alte und komfortablerer steuerung)
Code: |
dim shared as integer a(8),c
screen 13
declare sub ausfuehren
do
if multikey (&H02) then
if a(1) = 1 then
a(1) = 0
else a(1) = 1
end if
end if
if multikey (&H03) then
if a(2) = 1 then
a(2) = 0
else a(2) = 1
end if
end if
if multikey (&H04) then
if a(3) = 1 then
a(3) = 0
else a(3) = 1
end if
end if
if multikey (&H05) then
if a(4) = 1 then
a(4) = 0
else a(4) = 1
end if
end if
if multikey (&H06) then
if a(5) = 1 then
a(5) = 0
else a(5) = 1
end if
end if
if multikey (&H07) then
if a(6) = 1 then
a(6) = 0
else a(6) = 1
end if
end if
if multikey (&H08) then
if a(7) = 1 then
a(7) = 0
else a(7) = 1
end if
end if
if multikey (&H09) then
if a(8) = 1 then
a(8) = 0
else a(8) = 1
end if
end if
do
loop until multikey (&H02) = 0
do
loop until multikey (&H03) = 0
do
loop until multikey (&H04) = 0
do
loop until multikey (&H05) = 0
do
loop until multikey (&H06) = 0
do
loop until multikey (&H07) = 0
do
loop until multikey (&H08) = 0
do
loop until multikey (&H09) = 0
for c = 1 to 8
locate c,1
print "Ausgang";c;"=";a(c)
next
ausfuehren
loop until inkey = chr (27)
sub ausfuehren
for c = 8 to 1
if a(c) = 1 then
out (1019), 64
out (1020), 1
out (1020), 0
out (1019), 0
end if
if a(8) = 0 then
out (1019), 0
out (1020), 1
out (1020), 0
end if
out (1020), 2
out (1020), 0
next
end sub |
der nutzen des codes ist die ansteuerung des com ports hinter dem sich ein schieberegister befindet, welches 8 ausgänge ansteuert.
wer genaueres wissen will:
http://www.skilltronics.de/versuch/elektronik_pc/4094.html |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 27.10.2008, 16:12 Titel: |
|
|
Zitat: | und den ganzen unteren teil könnte man in eine for next- schleife setzen... |
und den oberen zum großen Teil auch.
Zitat: | und das mit not sollte ich auch nochmal probieren, bei mir hat der immer zwischen 0 und -1 gewechselt. lag das an meim dateityp?? und welcher war der dateity der nur true und false kennt???? |
Das mit dem Wechsel von 0 und -1 ist korrekt; wenn du speziell einen Wechsel zwischen 0 und 1 haben wolltest, geht 1-a (oder für einen Wechsel zwischen 4 und 8 kann man 12-a nehmen ... wenn man so was will ...)
Einen Datentyp für true und false gibt es unter FreeBASIC nicht (außer spezielle Bitfelder in UDTs, die hier nichts bringen). Der kleinste Datentyp ist ein BYTE. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|