Navigátorposledních 10 z diskuze |
BASIC v2.0 - díl 2. - Smyčky útočíV první lekci jsme se naučili psát všemocný příkaz PRINT. A protože jen tak vypsat nějaký text není vůbec žádná zábava, dneska se naučíme vypsat textu trochu více, aniž by nás to bolelo. FOR ...TO ... NEXT ...Vypsat něco, co se opakuje, je základním uměním všech programovacích jazyků na světě. A my si to ukážeme na jednoduchém příkladu kdy očíslujeme řádky nějakého textu. Pokud bychom na to šli pouze příkazem PRINT, museli bychom napsat následující program : 10 PRINT "Tohle je radek 1" 20 PRINT "Tohle je radek 2" 30 PRINT "Tohle je radek 3" 40 PRINT "Tohle je radek 4" 50 PRINT "Tohle je radek 5" Pokud by bylo řádků sto, museli bychom tímto způsobem napsat program na sto řádků. Ne že by to nešlo, ale právě pro takový způsob práce existuje skvělý příkaz FOR-TO-(STEP)-NEXT. Tento příkaz umí počítat (například od nuly do sta) za nás a číslo, které právě tento příkaz "vypočítal" máme k dispozici a můžeme s ním tedy dále pracovat.
10 FOR (pro proměnnou - od čísla) TO (do čísla) STEP (s jakým přírůstkem - bez STEP zvýší o 1) 20 Něco mi tady udělej (vytiskni) a použij k tomu číslo, které zrovna máme v proměnné pro FOR 30 NEXT (ukonči nejbližší smyčku FOR,TO) Následující ukázka programu nám vypíše ten samý program jako jsme psali před chvílí 10 FOR A = 1 to 5 20 PRINT "Tohle je radek " A 30 NEXT AVýsledek po suštění příkazem RUN bude následující : Tohle je radek 1 Tohle je radek 2 Tohle je radek 3 Tohle je radek 4 Tohle je radek 5
Zde jde vidět, že příkaz FOR A=1 TO 5 má na začátku dáno, že musí počítat právě od jedničky do pětky a toto číslo při každém průchodu smyčkou navýší proměnnou o jedna. Aktuální hodnotu čísla v proměnné A můžete v tu chvíli vypsat nebo ji použít pro výpočet čehokoliv jiného. Příkaz PRINT v tuhle chvíli umí vypsat nejenom textový řetězec "Tohle je řádek", ale
vypíše i hodnotu proměnné "A", která se za příkaz PRINT přidá.
Smyčku, jak se příkazům FOR-TO(STEP)-NEXT říká můžeme použít i pro vytvoření jednoduché násobilky, která hlavně dětem pomůže krásně fixlovat při hodinách matematiky.
10 N = 7 20 FOR A = 1 TO 10 30 X = A * N 40 PRINT A " * " N " = " X 50 NEXT A Výsledkem tohoto programu je text na obrazovce, který opravdu vypadá jako násobilka : (a všimněte si také, jak příkaz print na řádku 40 dokáže všechny tyto proměnné vypsat na jednom řádku.) 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63 10 * 7 = 70 FOR ...TO ... STEP ... NEXT ...Pokud pracujeme s čísly s desetinnou čárkou, hodí se nám příkaz STEP. Tento příkaz nám říká, o kolik máme navyšovat proměnnou, která je použita v příkazu FOR-TO. V tomto případě máme možnost zvyšovat číslo například o 0.5. Program vlastně zůstane stejný, my jen přidáme na správné místo príkaz STEP. 10 FOR A = 1 to 5 STEP 0.5 20 PRINT "Tohle je radek " A 30 NEXT A Po spuštění programu nalezneme na obrazovce následující výpis: Tohle je radek 1 Tohle je radek 1.5 Tohle je radek 2 Tohle je radek 2.5 Tohle je radek 3 ... Nešvary v2.0Ne vše je v BASICu počítače Commodore 64 ideální. Jedním z nešvarů je to, jak že tento BASIC formátuje, neboli zobrazuje čísla. trochu zvláštně: Všimněte si na obrázku, že i když vypíšeme hodnotu v proměnné "A", tak je okolo ní místo, neboli mezera. Pokud se totiž jedná o kladná čísla, mezera před číslem je rezervována pro znaméno plus, které se ovšem nevypisuje. (Zde děkuji Sigimu za jeho přínos .. ) Pokud by byl výsledek záporný, znaménko minus se vypíše před hodnotu. Tvůrce tohoto BASICu napadlo, že by místo před hodnotou mohli použít tak či tak. A pak si řekli, že by bylo dobré "napsat" mezeru vlastně i za hodnotou. A jak že to všechno funguje (někdy zvláštně) vidíte na obrázku. Zde je krásně vidět, že i když píšeme proměnnou "A" pomocí PRINT ihned za textem, přesto jsou okolo čísla(proměnné) ony zmiňované mezery. Nešvary a jak si s nimi poradit !Pokud bychom z nějakého jasného důvodu přeci jen chtěli vypsat číslo na úplném začátku řádku a text těsně za ním bez mezery, musíme použít formátovacích znaků počítače Commodore64. A co to je za znaky ?? Jsou to znaky, které se zaznamenají v uvozovkovém módu, prostě když mačkáme klávesy jako by jsme chtěli hýbat kurzorem atd. Tento mod se aktivuje napsáním uvozovek a ukončí se dalšímy uvozovkami (nebo z něj vyskočit kombinací SHIFT+RETURN). V tomto módu se zaznamenají stisknuté klávesy, například pohyb kurzoru - šipky nebo klávesy home, smazat obrazovku, změna barvy .. apod. Ukázka je na následujícím obrázku. Zápis řádku 30 probíhá následovně. Ukážeme vám jak psát jeden znak za druhým : P R I N T " {zmáčknout šipku doleva} " A " {zmáčknout šipku doleva} . M I S T O " Místo posunu kurzoru při zmáčknutí směru doleva se zobrazí v závorce právě funkční znaky, které znamenají posun kurzoru zpět. Proto při spuštění programu texty budou vypsány tak, jako by jste se kurzorem vrátili o jeden znak zpět a začali psát. Pokračování a tolik oblíbený domácí úkolSmyčku můžeme použít pro jakékoliv počítání v kladných i záporných číslech. Následující příklad vypíše hodně moc čísel od -100 po +100 po 0.25 10 FOR A = -100 TO 100 STEP 0.25 20 PRINT A 30 NEXT A Smyčky všem, ať se jedná o začátečníky či pokročilé programátory ušetří vždy mnoho práce. A na závěr tolik oblíbený domácí úkol : Napište program, který vypíše na obrazovku čísla od -1000000 do +1000000 po 0.1 a všechna čísla pečlivě zapiště na papír. PCH / Unreal und Sillicon / Unreal Nový příspěvek k článku
14.04.2017 - Jack_Free
Sleduji to tu, a fandím vám, jen tak dál, sám si oprašuji vědomosti. 12.04.2017 - F6
Aha, od neuskutečnitelného úkolu k nadlidskému výkonu. V životě jsem si nemyslel, že bych to dokázal napsat, nepovažuji se za programátora, ale: 12.04.2017 - Wankes
Začnu překlepem (dalšímy-dalšími, že?). Seriál je super, možná by tu mohl zaznít názor někoho kdo to zkouší (ono pokusné dítě). Z mé aktivní doby na reálném C64 pamatuji snad jen Simonxs Basic (zoufale pomalý), nebo disketová verze Basic 3.5 co měl v ROMce C+4. Takže pro rychlé řešení čehokoliv se V2.0 používal běžně. 11.04.2017 - PCH
1. Emulator mam rad hlavne tam, kde nemuzu mit s sebou C64. 11.04.2017 - F6
1) Kdo to myslí s C64 vážně, vlastní reálnou mašinu a ne nějaký pochybný emulátor! 11.04.2017 - Jirka
:-) ... tak jsem tě, Petře, vytočil ještě večer? 10.04.2017 - PCH
Tak jsem to po sobě přečetl a musím uznat, že musím jít spát. Spánkový deficit z Atariády se ukázal v celé své kráse. Nehledejte v tom prosím logiku, není tam :) 10.04.2017 - PCH
Jirko, ... krucinál (nadávka) ( a odpověď) Je přeci jasné, že budoucí programátor musí být připraven na to, že má každý jazyk ty své úchylné problémy, které zastánci PRÁVĚ toho druhého jazyku nenávidí a upozorňují na ně. Je pravda, že basic v2.0 má své mouchy ... možná větší mouchy, ale principielně funguje zcela správně. A to se bavím o základních příkazech, logice programování a těch neprimitivnějších základů. Samozřejmě že se počítá s nasazením emulátorů, protože ani já nemám doma místo na tři C64 zapojené vedle sebe + 3x monitor. 10.04.2017 - jirka
Kucí, myšlenka BASICu jako vstupního místa pro programování mi není proti srsti, ale pokud je to míněno alespoň trošku reálně, tak předpokládám, že by to reální pokusní 10letí králíci zkoušeli asi v emulátoru. Nebo se předpokládá prosetí potenciální cílovky pomocí vlastnictví reálného 8bit železa? To by v ČR zůstalo asi tak 7 dětí včetně všech tří potomků PCH :-) |
Poslední recenzereakce na článkyTOP 10 HRY
|