· Text 3543 · w8 · inlagg
Jag har en del synpunkter på Sven Wickbergs artikel "Reaktionstest" i
senaste numret av bladet. Jag tar dem i tur och ordning:
1. Avrundning.
Sven tycker att två decimalers noggrannhet på medelvärdet av testerna
är för stor pga att tiden mäts i 50-dels sekunder. Egentligen ökar
noggrannheten ju fler försök man gör, vilket utnyttjas flitigt vid
fysikaliska experiment. Om man mäter en tid på en 50-del när får man
redan efter två mätningar en noggrannhet på en 100-del, efter tio
mätningar en 500-del, osv (om det är samma slags händelse som mäts
hela tiden).
2. Avrundning.
Så vitt jag kan förstå måst det vara enklare att skriva
INT(M*100+0.5)/100
än
INT((M*1000+5)/10)/100
3. GET ...
GET-instruktionen är gjord så att den VÄNTAR på en tangenttryckning om
ingen sådan redan har gjorts. Därför kan raderna
210 IF INP(56)<127 THEN 210
210 IF SYS(5) GET W¤ ELSE 210
i ABC80- resp 800-versionen helt enkelt ersättas av
210 GET W¤
som dessutom fungerar lika bra på båda ABC80 och 800.
4. Klockan i ABC800
Femtiondedelarna i PEEK(-11) är ingefemtiondedelar, utan 93-delar
(eller 94-delar?). Så tidsberäkningen blir felaktig så som den
har skrivits. Faktiskt.
5. Heltal i ABC800
Det är som i ABC80 att positiva heltalskonstanter tar mindre plats
och är snabbare än negativa. Dock tar små negativa heltal samma plats
som stora positiva (gränsen vid ca -30). Det hela beror på att de
negativa talens minstecken behandlas som en funktion för sig, och
absolutbeloppet (0-65535) som en annan, samt att små heltal lagras
i en byte i stället för tre.
6. PRINT USING
Ordet "USING" känn bara igen av BASIC-en om det står först i en
PRINT-sats (på sin höjd efter "#Filnr"). Lämpligen används
USING-formateringen för en hel rad i taget, t ex
PRINT USING "### ### ##.##" I, J%, M
men att skriva som Sven gjort pårad 600 är också fullt legitimt.
Kanske ska titta lite närmare på de andra artiklarna också...