home *** CD-ROM | disk | FTP | other *** search
/ Flop Magazin 35 / Flop_Magazin_35_1995_03_Raster_cs_Side_A.atr / radybas2.cap < prev    next >
Text File  |  2023-02-26  |  5KB  |  1 lines

  1. ¢Urychlovac) ]pravy BASICov`ch program+¢Radek ③t%rba, RASTER¢¢V dne&n) '*sti bych se r*d v%noval drobn[ skute'nosti, kter* m+(e velice ovlivnit rychlost va&eho BASIC programu. ¢Mo(n* jste si u( n%kdy v&imli, (e ')m je BASICov` program del&), t)m pomaleji b%(). Rychlost ale nez*vis) p@)mo na d[lce programu, ale na tom, jak daleko od za'*tku je m)sto, kter[ pr*v% pou()v*me. P@esn%j&) vysv%tlen) uk*(u na p@)kladu:¢¢100 PRINT "AHOJ"¢110 GOTO 100¢Tento progr*mek pob%() celkem rychle...¢¢Zkuste ho ale takto zmodifikovat:¢1 REM¢2 REM¢3 REM¢4 REM¢5 REM¢...¢99 REM¢100 PRINT "AHOJ"¢110 GOTO 100¢Zd*nliv% ]pln% stejn` program, ale v druh[m p@)pad% pob%() pomaleji. Pro'?¢Programovac) jazyk BASIC je interpret - ale to jste ji( jist% mnohokr*t sly&eli. Proto vlastn) program nen) p@)mo ve strojov`ch instrukc)ch, ale skl*d* se z ')sel, kter* ur'uj) funkce kter[ maj) b`t prov*d%ny. Sou'*st) BASICu je i to, (e p@ed ka(d`m p@)kazem ╱nebo skupinou p@)kaz+$ je ')slo @*dku, abychom mohli stanovit po@ad), v jak[m budou prov*d%ny. A te⇦ tedy zp%t k probl[mu s rychlost) a jej) z*vislosti...¢¢V prvn)m p@)pad% je nalezen jako prvn) @*dek ')slo 100, je "p@elo(en" a proveden. Pak jde program na dal&) @*dek. Ten "p@elo()" a provede... a pr*v% te⇦ jsme u j*dra v%ci, p@esn%ji @e'eno u p@)kazu GOTO 100. V tomto okam(iku BASIC hled* od za'*tku BASICov[ho programu @*dek s ')slem 100. Proto(e je to hned prvn) @*dek v programu, nalezne ho celkem rychle.¢V druh[m p@)pad% je situace obdobn*. Nejprve jsou postupn% nalezeny @*dky 1 a( 99, ka(d` z nich je v(dy "p@elo(en" a proveden ╱p@)kaz REM ozna'uje pozn*mku, tak(e navenek se nic ned%je$. Vznikne t)m sice jist[ zdr(en), ale tyto @*dky jsou mimo n*& nekone'n` cyklus. P@esto se v&ak jejich existence na rychlosti projev). ②*dek 100 je p@elo(en a proveden tak[ stejn% jako v prvn)m p@)pad%. Na @*dku 110 je GOTO 100. Nyn) BASIC za'ne od za'*tku prohled*vat program dokud nenalezne @*dek s ')slem 100. Najde @*dek 1 ╱a to nen) 100$, pak najde @*dek 2 ╱to taky nen) 100$, 3, 4, .. , 99 ╱taky ne$ a a( nyn) na&el @*dek 100. I kdy( jednotliv[ @*dky nebudou v+bec p@ekl*d*ny, na rychlosti se to projev)...¢¢Obdobn[ je chov*n) u p@)kaz+ FOR .. NEXT, RESTORE .. READ, GOSUB .. RETURN, .. prost% v(dycky, kdy( se pracuje s ')slem n%jak[ho @*dku. ¢╱Up@esn%n): Mo(n* V*s p@ekvapilo, (e mezi t%mito p@)kazy je i FOR .. NEXT a RETURN, ale uv%domte si, (e naraz)-li program na NEXT, vrac) se na FOR podle zapamatovan[ho ')sla @*dku, na kter[m p@)slu&ej)c) FOR byl. Tak(e i FOR a NEXT nep@)mo pracuje s ')sly @*dk+. Obdobn[ je to i u p@)kazu RETURN a u dal&)ch.$¢¢A co s t)m?...¢¢Asi v*s moc nepot%&)m... ə*dn* snadn* pomoc neexistuje.¢Jedin`m, ')m m+(ete aspo trochu zrychlit sv+j program je umis④ov*n)m n*ro'n`ch '*st) co nejbl)(e k za'*tku programu. Nemysl)m t)m pou()t co nejni(&) ')sla @*dk+ - s t)m to v+bec nesouvis)!! Bl)zkost) zde mysl)m to, aby p@ed touto '*st) bylo co nejm[n% @*dk+ ╱bez ohledu na jejich ')sla$.¢¢P@.¢M*te program, kter` m* 500 @*dk+ ╱')sla 10 a( 5000 s krokem 10$.¢10 ...¢20 ...¢...¢Od @*dku 5010 je 'asto pou()van* rutina ╱kterou vol*te z n%kolika m)st povelem GOSUB 5010$, kter* nap@)klad s')t* ')sla v n%jak[m poli:¢5010 SOUCET=0¢5020 FOR X=1 TO 20¢5030 SOUCET=SOUCET⇩POLE╱X$¢5040 NEXT X¢5050 RETURN¢¢Pak n*sleduj)c) zm%nou b%h t[to rutiny ╱a t)m i cel[ho programu$ podstatn% urychl)te:¢1 GOTO 10¢5 SOUCET=0:FOR X=1 TO 20: SOUCET=SOUCET⇩POLE╱X$:NEXT X:RETURN¢10 ... ¢20 ...¢...¢Nezapomete, (e nyn) je je&t% t@eba zm%nit v&echna vol*n) GOSUB 5010 na GOSUB 5.¢¢Shrnut):¢⇨)m m[n% @*dk+ v*& BASICov` program m*, t)m rychleji jsou prov*d%ny p@)kazy pracuj)c) s ')sly @*dk+ ╱GOTO, GOSUB, FOR .. NEXT, ...$, proto(e ka(d` programov` @*dek je hled*n od za'*tku cel[ho BASIC programu. Pokud v*m tedy jde o rychlost v)c ne( o p@ehlednost, umis④ujte na ka(d` @*dek co nejv)ce p@)kaz+. T)m sn)()te celkov` po'et @*dk+ a urychl)te pr*ci BASICu p@i hled*n) @*dku s dan`m ')slem. ⇨asto pou()van[ '*sti programu umis④ujte co nejbl)(e k "za'*tku" programu a m*lo pou()van[ '*sti ╱nebo ty, ve kter`ch V*m nejde o rychlost$ a( za n%. Nejlep&) je tyto "tot*ln%" znep@ehleduj)c) ]pravy prov*d%t a( v hotov[m programu a nechat si schovanou i p+vodn) verzi.¢¢Abyste si mohli ud%lat p@edstavu, o jak`ch 'asov`ch ]spor*ch zde hovo@)m, zkuste si spustit ╱pod 'ist`m BASICem!!! - viz. d*le$ p@ilo(en[ testovac) progr*mky:¢TEST1A.BAS ..ukazuje dobu b%hu '*sti programu pracuj)c)ho "na konci LISTingu".¢TEST1B.BAS ..ukazuje stejnou '*st um)st%nou hned "na za'*tku".¢TEST2A.BAS ..ukazuje 'as nutn` pro proveden) programu, kter` mnohokr*t vol* podprogram um)st%n` "na koci LISTingu".¢TEST2B.BAS ..ukazuje 'as stejn[ho programu, kdy( je podprogram p@em)st%n na jeden @*dek a co nejv)ce "na za'*tek".¢¢D+le(it* pozn*mka na z*v%r:¢Douf*m, (e jste si v&imli, (e se cel` 'l*nek v%nuje "'ist[mu" BASICu. Co se t`'e TURBOBASICu, tam je situace trochu jin*, proto(e TBASIC m* n%kter[ vnit@n) rutiny oproti BASICu vylep&eny. Rutina pro hled*n) @*dku s dan`m ')slem je mnohem rychlej&), tak(e skute'nosti, o kter`ch se v tomto 'l*nku zmiuji, se v TBASICu t[m%@ neprojev).¢