OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů
Právě je 21 lis 2017, 02:03

Všechny časy jsou v UTC + 1 hodina




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 
Autor Zpráva
 Předmět příspěvku: Chyby ROM/BASICu
PříspěvekNapsal: 22 led 2017, 17:50 
Offline
Kecálek

Registrován: 18 říj 2014, 22:10
Příspěvky: 158
Has thanked: 8 times
Been thanked: 33 times
Aby sme ten SAM BASIC len nechválili, tak tu mám jeden príklad, ktorý ukáže hneď dve chyby:
Nepresná nula a taktiež mal cyklus prebehnúť ešte raz pre a=0.5 .
Příloha:
simc0001.png
simc0001.png [ 2.87 KiB | Zobrazeno 497 krát ]


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Chyby ROM/BASICu
PříspěvekNapsal: 23 led 2017, 09:12 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 11 čer 2013, 14:27
Příspěvky: 1291
Has thanked: 788 times
Been thanked: 209 times
SAM BASIC bohužel vykročil ve šlépějích spectráckého, taky nebyl při uvedení produktu na trh dokončen...

Chyb je více, např.
http://www.worldofsam.org/node/69

Moje zkušenosti:
- systém nezpracuje velký počet (stovku?) LABELů
- obarvované instrukce či názvy procedur (CTRL+I, CTRL+P) občas způsobí různá chybová hlášení

Chyby u basicového kalkulátoru jsou na pováženou, vždyť se autor prý poučil z chyb spectrácké romky
a matematické rutiny jej živily nejen na škole ale také ve firmách (psal grafické a 3D knihovny pro nové herní konzole - PS a spol.)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Chyby ROM/BASICu
PříspěvekNapsal: 24 led 2017, 12:53 
Offline
Pan Štábní

Registrován: 22 kvě 2013, 20:14
Příspěvky: 1704
Bydliště: Bratislava
Has thanked: 174 times
Been thanked: 302 times
Ked chcete mat exaktne presne vysledky, nepouzivajte floating-point format cisel. Floating point vzhladom na svoje kodovanie z principu nevie presne ulozit hodnoty ine ako 2^N (N je cele cislo) a ich sucty. Napriklad hodnota 0.1 predstavuje v dvojkovej sustave nekonecny "dvojtinny" rozvoj, pretoze sa neda vyjadrit suctom konecneho poctu celociselnych mocnin dvojky a tym padom sa ani neda zakodovat exaktne presne. A ked sa pocita s viacerymi nepresnymi hodnotami (napr. 0.1 + 0.1) tak nepresnost narasta.

Ak chcete aby vam aritmeticke rutinky vysledky automaticky zaokruhlovali na (v desiatkovej sustave) najblizsie rozumne cisla, potom sa mozete lahko dozit ineho druhy chyby - napr. vysledok operacie 1.00000001 - 1.00000001 sa zaokruhli na najblizsie "rozumne" cislo, a tym je nula.

Pokial pozadujete desatinne cisla s exaktnou presnostou, treba pouzivat fixed point aritmetiku. Kedze v beznych basicoch (napr. ZX) nieco take nemame, da sa to obist tak, ze vsetky hodnoty na vstupe vynasobime desiatimi (stomi...) tak aby sme nasledne pocitali len s celymi cislami, a na vystupe ich tou istou "bulharskou" konstantou zase vydelime. Presne takto pracuju aj rozne tabulkove programy (Excel...) pri nastaveni typu cisla na "currency" - tento format je urceny napr. na finacne vypocty, kde treba garantovat exaktnu presnost.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 

Všechny časy jsou v UTC + 1 hodina


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 2 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz