Jen mala poznamka k tomu ON GOTO a ON GOSUB. GCC podporuje "computed goto" popr. by slo pouzit tabulku odskoku. Asi to neni tak elegantni jako puvodni "ON" prikazy, ale BaCon by to mohl podporovat*.
* computed goto umi assembler i BASIC (a hlavne v assembleru je to hodne dobre), kupodivu standardni cecko tak uplne ne, i kdyz je mezi temito jazyky
Mně se v Basicu vždy programovalo dobře, a když se porovnají ukázky kódu v tomto článku tak je okamžitě patrné že Basic má oproti jazyku C mnohem úspornější a přehlednější syntaxi. Je jasné že na profi programování Basic vhodný není, ale pro nás sváteční programátory kteří si občas něco naprogramují jen tak pro radost bych Basic zachoval i do budoucna ;-)
[jirik66]
"Je jasné že na profi programování Basic vhodný není, ale pro nás sváteční programátory kteří si občas něco naprogramují jen tak pro radost bych Basic zachoval i do budoucna"
No ja videl v prumyslove sfere zase celkem dost ruznych pripadu vytvorenych bud ciste ve Visual Basicu nebo jako "makra" v officech. Samozrejme, oproti puvodnimu BASICu je to neco trochu jineho, ale minimalne v teto forme bych rekl, ze se Basic porad drzi. :)
jj Visual Basic a dokonce i Visual Basic Classic se pořád drží. To je z pohledu ajťáka až zvláštní, ale ve firmách jsou (logicky) zakonzervovány i dost staré aplikace, takže zase proč ne.
https://www.tiobe.com/tiobe-index/ ukazuje v první dvacítce VB, ale i Delphi.
Drží se i ANSI BASIC, dají se v něm programovat tiskárny Zebra https://www.zebra.com/content/dam/zebra_new_ia/en-us/manuals/printers/common/programming/zpl-zbi2-pm-en.pdf
Ideální by pro mě byl nějaký modernější Basic, kde je přístup k multimédiím stejně snadný, jako v osmibitových BASICech. Protože jsme od té doby moc nepostoupili dopředu :-) Kde stačily dva-tři příkazy na vykreslení nějakého obrázku je dneska nutný řešit desítky příkazů pro otevření okna, handling událostí a já nevím co všechno dalšího.
Samozřejmě to jako vývojář "dávám", ale prostě ten starý přístup měl něco do sebe. Trošku blízko je tomu Turtle v Pythonu, ale tam se zase neřeší vstupy, takže je to těžký :-) Možná PyGame, ale i to je pro prváky zbytečně složitý...
QB64 je multiplatformny (Linux, Windows), sucastou je aj IDE, tutorialy su na webe https://www.youtube.com/@qb64official59
Souhlas, ta interaktivita a přímočarost Basicu měla hodně do sebe.
Nedávno jsem se díval na Processing, to je taky (jeden z mnoha) pokusů vrátit se k základům.
https://processing.org/
Pavle, diky za zajimavy clanek, jako vzdy. :)
Trochu jsi me zaskocil s tim idexovanim poli v BASICu. Je to - pravda - uz hodne dlouho, ale mlhave si pamatuji (protoze z BASICu jsem prechazel rovnou na C a pozdeji na C++), ze jsem byl trochu prekvapeny tim, ze v C se pole idexuje 0 - (n -1) a od toho se odviji pocet pruchodu cyklem for.
Mam totiz takovy dojem, v pripade FOR-NEXT, neslo o pocatecni a hranicni hodnotu, kdy se cyklus zastvy - jako v C, ale o pocatecni hodnotu a pocet pruchodu cyklem. K tomuto cyklu jeste existovala direktiva STEP ktera pak zvysovala citace v cyklu, ale neovlivnila tim nijak, kolikrat byl cyklus proveden. Mam dokokonce dojem, ze nektere interpretery ani totiz neznaly cyklis WHILE. Nebo jsem honeznal/nepouzaval - jak pisu, uz je to moc davno a ja to davam z hlavy, takze se muzu plest....
6. 12. 2022, 13:04 editováno autorem komentáře
Díky!
S těmi smyčkami v BASICu je to tak, že se zadává startovní hodnota (ta je jasná) a potom limit, který se nikdy nepřekročí, ale může se ho dosáhnout (narozdíl od range v Pythonu apod., což lidi mate).
Takže třeba FOR I=0 TO 5:PRINT I:NEXT I vypíše hodnoty od 0 do 5 včetně.
Pokud tam dám krok FOR I=0 TO 5 STEP 2:PRINT I:NEXT I, tak se vypíše 0, 2,4
a pro init=1: FOR I=1 TO 5 STEP 2.... se vypíše 1, 3, 5
Limit se fakt nikdy nepřekročí, takže
FOR I=1 TO 5 STEP 0.7... udělá 1, 1.7, 2.4, 3.1, 3.8 a 4.5, dál ne.
Vcelku hodně logické řešení v porovnání s dneškem :-)
PS: teď otestováno v Atari BASICu, jistota je kulomet
Diky ze doplneni a osvezeni pameti.
Kazdopadne, rikam si, ze by mozna bylo vhodnejsi ten cyklus FOR-NEXT-STEP delat spis pres do..while v C a ne se snazit jej za kazdou cenu napasovat na ceckovsky for. Myslim, ze by se tak snadneji kontroloval a prizpusobit konvencim v BASICu a treba u poli by autor nemusel myslet na to, ze musi o jednicku znizit limitu. Znamenalo by to take mene zasahu (uprav) v BASICovem kodu. Zas na druhou stranu by to mozna vedlo ke zmatkum, pri naslednem porovnavani obou verzi kodu...
Tak nějak to bylo. U jazyka C se podmínka ukončení cyklu FOR vyhodnocuje před každým průchodem.
U některých BASICů se zase podmínka ukončení cyklu vyhodnocuje až v momentě provedení příkazu NEXT. Každý takový cyklus tak proběhne minimálně jedenkrát, což nemusí být zrovna příjemné. Jedním z takových BASICů byl zrovna Atari BASIC. Ten také neznal cyklus WHILE. Nic co by se nedalo nahradit pomocí IF a GOTO.