.PN27

8. simwoly operacij w qzyke bejsik

     w qzyke bejsik razli~a`t sledu`}ie operacii:
- arifmeti~eskie operacii
- operacii srawneniq
- logi~eskie operacii
- operacii so strokami znakow
     arifmeti~eskie operacii predstawleny w sledu`}ej tablice:

     simwol operacii  I     zna~enie    I    primer
----------------------I-----------------I--------------
                      I                 I
          +           I     slovenie    I    A%+B%
                      I                 I
          -           I     wy~itanie   I    A%-B%
                      I                 I   
          *           I     umnovenie   I    A%*B%
                      I                 I
          /           I     delenie     I    A%/B%
                      I                 I
          \           I   celo~islennoe I    A%\B%
                      I     delenie     I 
                      I                 I
          ^           I   wozwedenie w  I    A%^2
                      I     stepenx     I
                      I                 I
          -           I   znak minus    I    -A%
                      I                 I
          MOD         I   wy~islenie    I    A! MOD B! daet celo~islennyj 
                      I     modulq      I    ostatok
                          
     rezulxta arifmeti~esko operaci priwodits  sootwetstwi  tipo 
parametra rezulxtata.

primer:        10 a%=19/8
               20 PRINT A%
               RUN
               2
               OK

prime~aniq.
     pr celo~islenno deleni operand preobrazu`ts  INTEGER-~isl  p 
|to pri~in mogu byt tolxk i diapazon o -3276 d 32767 rezulxta 
INTEGER-deleniq qwlqetsq celo~islennoj ~astx` ~astnogo obeih operandow.

primery:       10\4=2
               36.99\6.99=6

     operaci wy~isleni modul  ka~estw rezulxtat dae INTEGER-~islo 
kotoroe sootwetstwuet ostatku celo~islennogo deleniq. 

primery:       10 MOD4=2
               36.99 MOD 6.=0

.PA
     operatory srawneniq predstawleny w sledu`}ej tablice:

     simwol operacii    I      zna~enie        I      primer
------------------------I----------------------I----------------- 
                        I                      I
          =             I       rawno          I    A%=B%
                        I                      I
         <>             I       ne rawno       I    A%<>B%
                        I                      I
          <             I       menx{e         I    A%<B%
                        I                      I
          >             I       bolx{e         I    A%>B%
                        I                      I
          <=            I   menx{e ili rawno   I    A%<=B%
                        I                      I
          >=            I   bolx{e ili rawno   I    A%>=B%

esl operaci wypolnena wyrabatywaets -1  protiwno slu~a 0 ~islenny 
zna~eniq woznika`}i pr operaciq srawneniq mogu byt interesn 
ispolxzowany |t widn i sledu`}eg primera  kotoro opredelqets kako 
~islo iz dwuh peremennyh bolx{e ili menx{e.

               10Z!=5.1
               20 X!=3.5
               30 MINWERT!=-(Z! > X!)*X!-(Z! <= X!)*Z!
               40 MAXWERT!=-(Z! < X!)*X!-(Z! >= X!)*Z! 
               50 PRINT MINWERT!; MAXWERT!
               60 END
               RUN
               3.5  5.1

          logi~eskie operacii predstawleny w sledu`}ej tablice:

      simwol operacii    I         zna~enie          I     primer
-------------------------I---------------------------I-------------------
                         I                           I
          NOT            I         otricanie         I     NOT A
                         I                           I
          AND            I   logi~eskoe umnovenie    I   A AND B
                         I                           I
          OR             I   logi~eskoe slovenie     I   A OR  B
                         I                           I
          XOR            I   iskl`~a`}ee  ili        I   A XOR B
                         I                           I
          IMP            I   implikaciq              I   A IMP B
                         I                           I
          EQV            I   |kwiwalentnostx         I   A EQV B

zna~eni logi~esko funkci "istina predstawlqets naboro bitow n rawny 
nul`, a zna~enie logi~eskoj funkcii "lovx"- nulem.
                                                                      
primer:        20 IF NOT EOF(I) GOTO 80
               90 IF BE% > 70 AND HA! < 80 GOTO 100
.PA
     logi~eski operaci  mogu proizwodits  dwuhbajtnym weli~inam 
(INTEGER-zna~eni  dwoi~no predstawlenii) pr |to proizwodits pobitna 
obrabotka. |to proishodit po sledu`}im prawilam:


     operaciq   I   1 operand   I   2 operand   I  rezulxtat
----------------I---------------I---------------I-------------
                I        1      I       1       I      1
     END        I        1      I       0       I      0
                I        0      I       1       I      0
                I        0      I       0       I      0
----------------I---------------I---------------I-------------
                I        1      I       1       I      1
      OR        I        1      I       0       I      1
                I        0      I       1       I      1
                I        0      I       0       I      0
----------------I---------------I---------------I-------------
                I        1      I       1       I      0
     XOR        I        1      I       0       I      1
                I        0      I       1       I      1
                I        0      I       0       I      0
----------------I---------------I---------------I-------------
                I        1      I       1       I      1
    IMP         I        1      I       0       I      0
                I        0      I       1       I      1
                I        0      I       0       I      1
----------------I---------------I---------------I-------------
                I        1      I       1       I      1
     EQV        I        1      I       0       I      0
                I        0      I       1       I      0
                I        0      I       0       I      1
----------------I---------------I---------------I-------------
     NOT        I        1      I               I      0
                I        0      I               I      1
----------------I---------------I---------------I-------------

primer:        A%=63 AND 16
               A% rawno 16 t.k.
               63 w dwoi~nom predstawlenii: 111111
               16 w dwoi~nom predstawlenii: 010000
                                            -------
               A% w dwoi~nom predstawlenii: 010000

               a%=4 OR 2
               A% rawno 6 t.k.
               4 w dwoi~nom predstawlenii: 0100
               2 w dwoi~nom predstawlenii: 0010
                                          ------
               A% w dwoi~nom predstawlenii 0110

.CP13
warian ispolxzowani pokaza  sledu`}e primere  kotoro INTEGER-~isl  
pobitno predstawleni  1 bi ustanowlen 0 bi n ustanowlen 
podgotowleno w wide stroki znakow.

               10 BF$=" "
               20 INPUT "INTEGERZAHL"; IZ%
               30 FOR I%=15 TO 0 STEP -1
               40 BF$=BF$+STR$(ABS((IZ% AND 2^I%) -2^I%))
               50 NEXT I%
               60 PRINT BF$
               70 END                                                       
               RUN
               INTEGERZAHL:? (EINGEGEBEN WIRD 143)        *
               0000000010001111                    * wwoditsq 143
     dl strokowy peremenny dejstwitelxn operaci konkatenaci t.e 
soedineni stro렠 znakow onᠠ obozna~aets znako operaci頠 "+" 
sformirowannaq takim obrazom stroka znakow ne dolvna bytx dlinee 255 znakow.

     primer:  10 a$="ob'edinenie "
              20 B$="strok "
              30 C$="simwolow"
              40 D$=A$+B$+C$
              50 PRINT D$
              RUN
              ob'edinenie strok simwolow
              ok

dl stro znako dejstwitelxn takv operaci頠 srawneniq srawneni 
proishodit pozna~no, na baze predstawleniq w kode aSsII.

primery:       "AA" menx{e, ~em "AB"
               "stroka" rawna "stroke"
               "DB" bolx{e, ~em "CB"
               "PS" bolx{e, ~em "P#"
.PA
9.  massiwy (ARRAY) w qzyke bejsik

9.1. operator opisaniq DIM dlq massiwow

      pomo}x operator opisani DI opisywa`ts massiwy ime`}i odn il 
neskolxko izmerenij.
format:  DIM <obozna~enie peremennoj massiwa"
          (<werhnie granicy indeksa>) [,<obozna~enie peremennoj massiwa>
          (<werhnie granicy  indeksa>)]...
mogu opisywatxs massiw razli~ny tipow sootwetstwenn wybrannom 
obozna~eni peremennoj ~isl razli~ny indekso move sostawlqt maksimu 
255 t.e teoreti~esk mogu byt opisan maksimu 255-razmerny massiwy 
naimenx{i indek kavdog diapazon indekso p umol~ani rawe nul`  
pomo}x wariant BASE (sm razde 9.2. nivnq granic indeks move byt 
ustanowlena rawnoj 1.

primer:        10 DIM SI$(12), A%(5,5)
               20 DIM X5#(5,3,3,5)

prime~anie:
      qzyk堠 bejsi imeets wozmovnost ispolxzowat massiw l`bo 
razmernost  diapazono indekso o  d  be |tog neqwnog opisani 
massiwa t.k on priwodi  trudno~itaemy programma  protiwore~i 
sowremenno metodik programmirowaniq opisani razmernost massiw dolvn 
proishodit pere perwy obra}enie  l`bom |lement massiwa pr |tom  
movn zadawat werhn` granic  pomo}x arifmeti~eskog wyraveniq kotoro 
wy~islqets  moment opisani massiwa pr rabot bejsik-kompilqtora  
ka~estw werhni grani nelxz ispolxzowat peremenny il wyraveniq |t 
mogut bytx tolxko konstanty.



9. operato OPTIO BAS dl proizwolxnog zadani nivne granic indeks 
     pri opisanii massiwa.

      pomo}x operator OPTIO BAS nivnq granic indeks pr opredeleni 
razmernosti massiwa movet bytx zadana rawnoj 0 ili 1.

format: OPTION BASE N  
weli~ina N movet prinimatx zna~eniq 0 ili 1.

primer:        10 FOR I%=0 TO 4
               20 A(I%)=2*I%
               30 PRINT A(I%)
               40 NEXT
               RUN
                0  2  4  6  8
               OK
               5 OPTION BASE 1
               10 FOR I%=0 TO 4
               20 A(I%)=2*I%
               30 PRINT A(I%)
               40 NEXT
               RUN
               SUBSCRIPT OUT OF RANGE IN 20
               OK
.CP6
prime~anie:
     p umol~ani OPTIO BAS ustanawliwaets rawno 0 |to operato prevd 
wseg sluvi dl upro}ennog pereme}eni bejsik-programm t.k dl drugi 
bejsik-interpretatoro (bole staryh  ka~estw nivne granic indeksno 
oblasti po umol~ani` zadawalasx 1.


.CP15
9.3. operator ERASE dlq stiraniq oblastej pamqti, zanqtyh massiwami.

      pomo}x operator ERAS mogu byt izmenen harakteristik massiw 
ili o~i}ena pamqtx, zanqtaq uve nenuvnym massiwom.
format:  ERASE <obozna~enie peremennoj massiwa>
          [,<obozna~enie peremennoj massiwa>]...

primer:        10 DIM A! (20,20,20)
                    .
                    .                   
                    .
               80 ERASE A!
                    .
                    .
               100 DIM A!(40,5)

ukazanie:  w bejsik-kompilqtore |tot operator ne wypolnqetsq.



10. operatory cikla w qzyke bejsik
10.1 operator FOR TO STE  NEX dl obrazowani cikl  fiksirowanny 
       ~islom prohovdenij.

      pomo}x operatoro FOR TO STE  NEX programmiru`ts cikl  
fiksirowannym ~islom prohovdenij.
format:  FOR <indeks cikla>=<na~alxnoe zna~enie> TO <kone~noe zna~enie>
              [<STEP <{ag>]
                    .
                    . <operatory>
                    .
               NEXT [<indeks cikla>] [,<indeks cikla>]...


<indeks cikla> |to prostaq ~islowaq peremennaq tipa INTEGER ili REAL s prostoj
to~nostx`.
<na~alxno堠 zna~enie>,<kone~no zna~enie  <{ag mogu byt ~islowo 
konstantoj ~islowo peremenno il zna~enie ~islowog wyraveni tip 
INTEGEҠ il REA̠  prosto to~nostx` esl {a n zadan to p umol~ani`
ispolxzuets zna~eni 1 ws weli~in pere wypolnenie cikl wy~islq`ts  
w wrem  wypolneni cikl bolx{ n mogu byt izmeneny sledstwie |tog 
qwlqets to ~t nelxz osu}estwlqt pereho  tel cikl (tel cikl - 
posledowatelxnost operatorow kotora na~inaets  perwog operatora 
idu}eg posl operator FO  zakan~iwaets operatoro NEXT ime`}i to v 
indek cikla ~t  FOR) kone posledowatelxnost operatoro tel cikl 
obozna~aetsq s pomo}x` operatora NEXT.
     mogu wstre~atxs cikly wlovenny dru  druga pr |to dolvn 
sobl`datxs sledu`}e uslowie wnutrenni cik dolve polnostx ukladywatxs 
 granic wne{neg cikla neskolxk wlovenny dru  drug ciklo mogu 
zakan~iwatxsq esl |t neobhodimo odni operatoro NEXT  |to slu~a 
indeks ciklᠠ  operator堠 NEXԠ dolvn stoqt  opredelenno 
posledowatelxnosti  imenno perwy dolve stoqt indek samog wnutrenneg 
cikla, a poslednim - samogo wne{nego.
     wypolneni tel cikl proishodi taki obrazom ~t ws operator wnutr cikl obrabatywa`ts neskolxk raz dl kavdog dopustimog zna~eni 
indeks cikla perwy proho proishodi  na~alxny zna~enie indeks cikla 
zate zna~eni indeks cikl izmenqets n weli~in {aga pr polovitelxno 
{ag indek cikl uweli~iwaets n weli~in {aga pr otricatelxno {ag - 
sootwetstwenn umenx{aetsq sledu`}i proho cikl proishodi  to slu~ae 
esl nowo zna~eni cikl e} n prewysil (pr polovitelxno {age) il n 
stalo menx{e (pri otricatelxnom {age) kone~nogo zna~eniq.
	              
primer:        10 FOR I%=10 TO 0 STEP -1
               20 PRINT I%
               30 NEXT
               40 NED
               RUN
                10  9  8  7  6  5  4  3  2  1  0 
               OK
               10 J%=6
               20 FOR I%=1 TO J%+4
               30 PRINT I%
               40 NEXT
               50 END
               RUN
                1  2  3  4  5  6  7  8  9  10
               OK


prime~aniq:
     sledue stremitxs  tomu ~tob wsegd opisywat peremenny cikl ka 
INTEGER-peremennye zᠠ s~e |tog su}estwenn uskorqets wypolneni 
programmy takv sledue izbegat prevdewremennog wyhod i tel cikl  
pomo}x operator perehoda t.k iz-z |tog cik ostaets aktiwny  
blokirue dopolnitelxno mest  pamqti ~asto obra}eni  cikl move  
|to slu~a priwest  nedostatk mest  pamqt   prerywani programm p 
o{ibke  |to slu~ae esl FOR-NEXT-cik dolve byt obqzatelxn 
prevdewremenn pokinut  zawisimost o uslowi prevdewremennog prerywani 
indek cikl dolve byt izmene taki obrazom ~tob z s~e |tog cik 
planomerno zakon~ilsq.
     naprimer esl i fajl dolvn byt s~itan n bole 10 blokow 
fragment programmy w |tom slu~ae movet wyglqdetx tak:



                    .
                    .
                    .
               110 OPEN "I", 1, "BEISPIEL"
               120 FOR I%=1 TO 100
               130 INPUT# 1, Z%, X1%, Y2!
               140 IF EOF(1) THEN I%=101
                    .
                    .
                    .
               180 NEXT I%
                    .
                    .
.CP7                    
ukazanie:
     pr頠 ispolxzowani頠 peremenny蠠 ciklᠠ 頠 ~islowy蠠 wyraveniꠠ  
necelo~islennym頠 zna~eniqmi sledue obra}at wnimani nᠠ to~nost 
okrugleniq kotora move priwest  dosro~nom prerywani cikl (uslowi 
okon~ani iz-z pogre{nost okrugleni n bude opoznano) pr ispolxzowani 
kompilqtor qzyk bejsik   ka~estw indeks cikl dopustim takv 
peremennye tipa REAL s dwojnoj to~nostx`.


.CP15
10.2 operator WHILŠ  WEN dl obrazowani ciklo  peremenny ~islo 
       prohovdenij (iteracionnye cikly).

      pomo}x operatoro WHIL  WEN programmiru`ts cikl  peremenny 
~islom prohovdenij.
format: WHILE <wyravenie>
               .
               .<operatory>
               .
        WEND
cik dlits d te por pok <wyravenie> predstawlq`}e sobo ~islowo 
wyraveie otli~aets o 0 il qwlqets "istinoj  ka~estw logi~eskog 
wyraveniq cik zakan~iwaetsq esl <wyravenie sootwetstwenn rawn  il 
qwlqets "lovx`" operator WHIL  WEN wnutr programm mogu wstre~atxs 
tolxk  wid pary wnutr WHILE-cikl mogu wstre~atxs tolxk wypolnqemy 
operatory, w ~astnosti, movet bytx wnowx zaprogrammirowan WHILE-cikl.

primer:        5 REM EINFACHSTES SORTIEREN
               10 DBL%=9
               20 DIM DB%(DBL%)
               30 FOR I%==0 TO DBL%
               40 DB%(I%)=INT(RND(1)*100)
               50 NEXT
               60 GOSUB 200 'DRUCK DER AUSGANGSDATENFOLGE
               70 REM SORTIERUNG AM PLATZ
               80 DBH%=DBL%
               90 FLAG%=1
               100 WWHILE FLAG%
               110 FOR I%=DBH%-1 TO 0 STEP -1
               120 IF DB%(I%) > DB%(DBH%) THEN SWAP DB%(I%), DB%(DBH%)
               130 NEXT
               140 DBH%=DBH%-1
               150 IF DBH%=0 THEN FLAG%=0
               160 WEND
               170 PRINT
               180 GOSUB 200 'DRUCK DER SORTIERFOLGE
               190 END
               200 REM UNTERPROGRAMM
               210 FOR I%=0 TO DBL%
               220 PRINT DB%(I%);
               230 NEXT
               240 RETURN
               RUN
                24  30  31  51  5  78  49  36  98  90
                5  24  30  31  36  49  51  78  90  98
               OK

ukazanie
    dl kompilqtor qzyk bejsi dopuskaets stati~esko wloveni 
ciklo WHILE-WEND t.k kavdom operator WHILŠ dolve sootwetstwowat 
operator WEND.


.CP15
11. bezuslownye i uslownye programmnye razwetwleniq w qzyke bejsik.
11.1. operator GOTO dlq realizacii programmnyh perehodow
      (bezuslownye programmnye perehody)

     󠠠 pomo}xࠠ operatorᠠ GOTϠ move byt izmenenᠠ normalxna 
posledowatelxnostx wypolneniq strok programmy.
format:  GOTO <nomer stroki> 
posl operator GOT programm prodolvaets s stroki ukazanno  pomo}x 
<nomera stroki>.

primer:        10 DATA 2,4,6
               20 READ Z%
               30 PRINT "Z%="; Z%
               40 GOTO 10
               RUN
               Z%=2
               Z%=4
               Z%=6
               OUT OF DATA IN 10

ukazanie:
      to~k zreni stil programmirowaniq postroennog nᠠ osnow 
sowremenny蠠 dostiveniꠠ tehnologi頠 programmirowaniq sledue silxn 
ograni~iwat ispolxzowani operator GOTO  ob}e slu~a o dolve 
dejstwowat tolxk  naprawleni "kone programmy" ostalxny slu~a 
ispolxzowani dolvn byt iskl`~eniqmi kotory sledue izbegat  kavdo 
kollektiwe programmistow.

     operato GOT move byt  polxzo primene dl togo ~tob  dlinny 
programma obleg~it proces zapis nakoplenny teksto programm dl |togo 
niv strok  nomerom kotory zawedom bolx{ samogobolx{og nomer strok 
programmy, podleva}ej wwodu, sleduet zaprogrammirowatx sledu`}ij operator:

               60000 SAVE "B:TESTPROG.BAS"

wsegda kogd neobhodim proizwest zapis  pamqt  revim nastolxno |w 
(bez nomera stroki), proishodit perehod na stroku 60000:

               GOTO 60000

dalee sleduet aktiwaciq operatora SAVE.


.CP15
11.2. operatory IF, THEN, i ELSE dlq realizacii uslownyh perehodow.

     kodowym slowom IF na~inaetsq uslownyj operator (nepolnyj ili polnyj).
format:  IF <wyravenie> GOTO <nomer stroki> [ELSE <posledowatelxnostx
             operatorow>]
         ili
         IF <wyravenie> THEN <posledowatelxnostx operatorow>
            [[,] ELSE <posledowatelxnostx operatorow>
         <posledowatelxnostx operatorow> = <operator>=[:<operator>]
         ili   
         <posledowatelxnostx operatorow> = <nomer stroki>
uslownyj operator dolven ume}atxsq w (logi~eskoj) bejsik-stroke,t.e. 
uslownyj operator movet imetx maksimum 255 znakow.
     w ka~estwe <wyraveniq> movet bytx logi~eskoe ili ~islowoe wyravenie.
esl logi~esko wyraveni imme zna~eni "istina" il ~islowo wyraveni 
otli~ets o nulq wypolnq`ts operetory stoq}i  wetw GOT il   THEN 
w wse drugi  slu~aq wypolnq`ts operatory stoq}i  strok posl 
operator ELSŠ otsutstwue (nepolny uslowny operator) t wypolnqets sledu`}aq stroka programmy.
<posledowatelxnost operatorow  |t posledowatelxnost wypolnqemy 
operatoro qzyk bejsik kotory razdelen  pomo}x ":" il nome stroki 
dopuskaetsq wlovenie uslownyh operatorow.

primery:       10 IF A%=3 THEN PRINT B%
               20 IF (A%=0) OR NOT (B%=4)
                  THEN C%=5 ELSE GOTO 50
               30 IF A% THEN A%=A%+100 : B%=200 : PRINT C%:
                  GOTO 100 ELSE A%=A%-100 : B%=C%*5+D% : PRINT B%

prime~anie:
     zasluviwaet wnimaniq sledu`}ij primer:
               10 IF X! > Y! THEN A!=3*X!+Y! ELSE B!=3*Y!+X!/2
               20 C%=0


.CP15
11.3.  operator ON  dlq formulirowaniq perehoda na nomer iz spiska

     kodowy slowo O na~inaets operato CAS dl osu}estwleni perehod 
ili wyzowa podprogramy.
format:  ON <wyravenie>  GOTO <spisok nomerow strok>
         ili
         ON <wyravenie> GOSUB <spisok nomerow strok>
         <spisok nomerow strok> =  <nomer stroki>[,<nomer stroki>]...
<wyravenie move byt ~islowy wyraveniem ime`}i celo~islenno zna~eni 
o  d 25 wkl`~itelxno  danno slu~a zna~eni wyraveni okrugqets d 
blivaj{eg naibolx{eg celog ~isla pr zna~eni wyraveniq rawno N 
operato dejstwue sledu`}i obrazom i spisk berets N-y nome stroki  
rabot programm prodolvaets  danno strok pr sobl`deni specifikaci 
GOTϠ il GOSUB esl wyraveni rawn  il bolx{ ~isl nomero stro  
spiske t programm prodolvaets s sledu`}e stroki esl wyraveni imee 
otricatelxno zna~enie il bolx{ ~e 255 poqwlqets soob}eni o o{ibke  
ILLEGAL FUNCTION CALL.

primery:       10 ON I%-I% GOTO 100, 200, 300
               50 ON G% GOSUB 500,700
                    .
                    .                   .
                    .
               500 REM G%=1 : podprogramma1

                    .
                    .
                    .
               590 RETURN
               700 REM G%=2 : podprogramma2
                    .              
                    .
                    .
               870 RETURN
.PA

12. rabota s podprogrammami na qzyke bejsik

12.1. konstrukciq GOSUB i RETURN dlq obespe~eniq raboty s podprogrammami

      pomo}xࠠ instrukci GOSU  movn obra}atxs 렠 podprogrammam 
raspolovennym w programme.
format:  GOSUB  nomer stroki
           .
           .
         RETURN
podprogramma raspolovenna  programme predstawlqe sobo nekotoru 
swqzannu posledowatelxnost proizwolxny stro instrukcij okan~iwa`}u`s 
instrukcie RETURN  odno podprogramm mogu wstre~atxs neskolxk 
instrukci RETURN posledowatelxnost instrukci dolvn byt sostawlen 
taki obrazom ~tob  konc wsegd byl instrukci RETURN  podprogramma 
mogu byt drugi wyzow podprogramm pereho  podprogramm osu}estwlqets 
instrukcie GOSUB pr |to danna instrukci soob}ae nome stroki  
kotoro dolvn startowatxs podprogramma sledue obratit wnimani n to 
~t |to nome strok n dolve byt obqzatelxn perwo strokoj  kotoro 
na~inaets podprogramma  otdelxny slu~aq taka podprogramm move imet 
dave neskolxko startowyh strok (podprogramma s to~kami whodow!).
     instrukci RETUR dejstwue taki obrazom ~t uprawleni wypolnenie 
programm wozwrw}aets instrukcii neposredstwenn sledu`}e z instrukcie 
GOSUB.

primer:        10 F%=I
               20 FOR I%=1 TO 6
               30 GOSUB 100
               40 NEXT
               50 END
               100 REM podprogramma, raspolovennaq w programme
               110 F%=F%*F%
               120 PRINT F%
               130 RETURN
               RUN
                1  2  6  24  120  720
               OK

prime~anie:
     podprogrammy raspolovenny  programme celesoobrazn ispolxzowat 
wsegd  te slu~aqh kogd kakaq-lib opredelenna posledowatelxnost 
instrukcij trebuetsq w neskolxkih mestah programmy w odnom i tom ve wide.


.CP15
12.2  instrukci CAL dl wyzow program  ma{inno kod  organizacie 
        pereda~i parametrow

     instrukci CAL pozwolqe wkl`~at  bejsik-programm podgotowlenny  
ma{inno kod  zagruvenny  pamqt programmny segmenty pr |to kavdy 
segmen move polu~it obrabotannu  bejsik-programmo informaci  wid 
parametrow to~n takv rezulxtat rabot programmnog segment movn 
wernutx w bejsik-programmu ~erez sootwetstwu`}ie parametry.
format:  CALL <startowyj adres programmy w ma{innom kode>
         /(<parametr>/, <parametr>/...)/
      ka~estw堠 <parametra razre{aets ispolxzowat tolxk prosty 
peremennye l`bogo tipa (ne movet bytx konstantoj ili wyraveniem).
     (otnositelxno pereda~i parametrow smotri prilovenie a.)

primer:        100 RUTIN%=&H7000
               110 CALL RUTIN%(Z!, 15%, AI$)

ukazanie:
      pomo}x programmno instrukci movn wyzywat takv podprogramm 
~ere bejsik kotory polu~en kompilqtorom rabota`}i  operacionno 
sisteme SCPX.

prime~anie:
     dl programm  ma{inno kod awtomati~esk organizuets ste razmero 
1 bajt esl |to oblast n hwataet, t movn organizowat  standartno 
programm  ma{inno kod nowu oblastx odnak pere wozwrato ukazatel 
steka snowa sleduet ustanowitx na prevnee zna~enie.
     t.k  oblast ma{innog kod oby~n rabota`  {estnadcateri~nym 
~islam t  startowy adre takv sledue zadawat  {estnadcateri~no wid 
(smotri stroku programmy 100 w primere).
      otli~i o format  bejsik-interpretator  bejsik-kompilqtor 
wmest startowog adres podprogramm ukazywa` kakoe-lib im podprogrammy 
sostoq}e maksimalxn i  simwolow dl standartno programm n assembler 
|t im dolvn byt ob'qwlen  pomo}x PUBLIC zadani parametro n 
obqzatelxno ta ka  danno slu~a parametr movn peredat takv  
pomo}x` instrukcii COMMON (smotri 12.6.).


.CP15
12.3. funkciq VARPTR dlq podgotowki adresow pamqti

     funkci VARPTҠ peredae na~alxny adre perwog bajt oblast pamqt 
dl zadawaemy peremenny il oblaste wwoda-wywod (oblast bufera kakogo-
libo nabora dannyh.
format:   VARPTR  (<argument>)
          ili
          VARPTR (#<nomer nabora dannyh>)
     pere perwy ispolxzowanie funkci peremenno dolvn byt priswoen 
kakoe-lib zna~enie esl |tog n byl sdelano t proishodi soob}eni o 
o{ibke  ka~estw <argumenta movn zadawat l`bu prostu ~islowu 
peremennuࠠ il peremennu tip simwolxno strok il l`bu ~islowu 
peremennu pol il peremennu pol tip simwolxno stroki zadanny adres 
leva  diapazon o -3276 d 32767 sledue obratit wnimani n to ~t 
adres pol izmenq`tsq esl pozv budu ob'qwlen e} kakie-lib prosty 
peremennye |t zna~it ~t opredeleni na~alxny adresowpole dolvn 
proishoditx neposredstwenno peredih dalxnej{im ispolxzowaniem.
     <nome nabor dannyh ustanawliwaets pr otkryti nabor danny  
pomo}x instrukci OPE (smotr punk 15.4.) pr zadani <nomer nabor 
dannyh> podgotawliwaetsq na~alxnyj adres oblasti wwoda-wywoda.
     funkci ispolxzu` dl pereda~ adreso ob'qwlenny  bejsik-programm 
peremennyh i t.d. programme na assemblere.

primer:        30 ADDR%=VARPTR(#3)


.CP15
12.4 instrukci opisani DE US dl uslownog perehod  polxzowatelxsku 
       ma{innu` programmu

      pomo}x instrukci DEƠ US movn wkl`~it  kaku`-lib bejsik-
programmu programmnye segmenty w ma{innom kode.
format  opisanie DEFUS (<nomer>  <startowy adre programm  ma{inno 
                            kode>
          wyzow    <identifikato peremennoj>=US (<nomer (<fakti~esko 
                      wyravenie>)
     movn ispolxzowatxmaksimalxn 1 sostawlenny polxzowatele programmny 
segmento  ma{inno kode ime`}i nomer o  d 9 esl nome n zadan t 
standartn ispolxzuets nome 0 startowy adre programm  ma{inno kod 
predstawlqe sobo wyraveni tip INTEGER INTEGER-peremennu il INTEGER-
konstantu  kavdo programm est kakoj-lib parametr  pomo}x kotorog 
movn peredat programmnom segment sootwetstwu`}e ~islowo zna~enie  
rezulxtat rabot programmnog segment takv movn peredat tolxk odn 
~islowoe zna~enie wyzywaw{ej bejsik-programme.
(otnositelxno pereda~i parametrow smotri prilovenie a.).

primer:        10 DEF USR 5=32763
                    .
                    . 
                    .
               90 !=USR 5(A!-B!*C%)

prime~anie:
      odno bejsik-programm move sodervatxs skolxk ugodn instrukci 
DE US  odinakowym nomerami po|tom  kakoj-lib wypolnqemo movn snow 
ustanowitx startowye adresa.
     pr rabot  bejsik-kompilqtoro sledue obratit wnimani n to ~t 
dl USR-wyzowo n predusmotren pereda~ parametrow odnak  pomo}x 
instrukci POKŠ (smotr punk 13.9. movn zapisat danny  kaku`-lib 
za}i}ennu oblast pamqti kotory zate mogu byt s~itan  obrabotan 
standartno programmo  ma{inno kode standartna programm  ma{inno 
kod move wozwratit celo~islenno zna~eni wyzywaw{e programme ostalxny 
zna~eni movn s~itat  pomo}x instrukci PEE (smotr punk 14.4. i 
kakoj-lib za}i}enno oblast operatiwno pamqti rekomenduets neobhodimy 
stadartny programm  ma{inno kod  pomo}x redaktor swqze wkl`~it  
otkompilirowannu bejsik-programmu danny programmny blok movn wyzywat 
zatem s pomo}x` instrukcii CALL (smotri punkt 12.2.)


.CP15
12.5. instrukciq CHAIN dlq sozdaniq owerlejnyh struktur w bejsik-programmah.

     s pomo}x` instrukcii CHAIN movno dozagruvatx programmnye segmenty.
format:  CHAIN  /MERGE/<dopustimyj identifikator nabora dannyh>/,
                /,<nome򠠠 stroki>//,ALL//,DELETE<oblast wy~erkiwaemy 
                 nomerow strok>//
<dopustimy identifikato nabor dannyh predstawlqe sobo kakoj-lib 
dopustimy  operacionno sistem SCP identifikato nabor dannyh o 
zadaets ka wyraveni i simwolxny strok ka pkrkmenna tip simwolxno 
strok il ka konstant tip simwolxno stroki identifikato zadaets  
kawy~kah  ukazanno nabor danny sodervats dozagruvaemy bejsik-
programmy nabo danny sozda` komando SAV (smotr punk 5.11.) esl n 
zadan priznak tipa, to awtomati~eski prinimaetsq priznak ".BAS".
     esl ispolxzuets opci MERGE t dozagruvaemy programm sme{iwa`ts  
su}estwu`}e programme pr |to sledue u~itywat ws uslowiq upomqnuty 
pr opisani komand MERGŠ (smotr punk 5.14.) esl opci MERGŠ n 
ispolxzuetsq t dozagruvaemy堠 programmny堠 segment standartn 
obrabatywa`ts  revim LOAD pr |to sledue u~itywat ws uslowiq 
upomqnuty pr opisani komand LOA (smotr punk 5.12.  primenenie parametr  R osobenn sledue obratit wnimani n to ~t terq` swo 
zna~eni neqwny opisani tipo (smotr punk 7.2.) opisani funkci  
ustanowk OPTIO BAS (smotr punk 9.2.)  slu~a neobhodimost i sledue 
powtoritx w nowoj programme.
      pomo}x parametr nome strok soob}aets startowa strok dl 
zagruvaemog programmnog segmenta danny nome strok n izmenqets pr 
wozmovno perenumeraci  pomo}x komand RENU (smotr punk 5.10.) esl 
nome strok n zadan dozagruvaemy programmny segmen startuets  perwo 
stroki programmy.
     esl ispolxzuets opci ALL t dozagruvaemom programmnom segment 
preda`ts ws zna~eni peremennyh  protiwno slu~a programmnom segment 
predostawlq`ts tolxk fakti~eski zna~eni te peremennyh kotory byl 
opisany w instrukciqh COMMON (smotri punkt 12.6.).
     opeci DELETŠ wyzywae stirani ukazanny strok prevd ~e bude 
zagruve nowy programmny segment dl zadani oblast stiraemy stro 
dejstwu`t priwedennye w komande DELETE prawila (smotri punkt 5.9.).
     nabory dannyh posle wypolneniq instrukcii CHAIN osta`tsq otkrytymi.

primer:        100 CHAIN "nabor dannyh 1"
               150 CHAIN "nabor dannyh 1", 300
               200 CHAIN "nabor dannyh 1", 300, ALL
               250 CHAIN MERGE "nabor dannyh 1", 400
               350 CHAIN MERGE "nabor dannyh 1", 400, DELETE 200-700
               10 COMMON I%, K%()
               20 I%=5
               30 FOR I%=I% TO 0 STEP -1
               40 K%(I%)=I%+2*I%
               50 PRINT I%,K%(I%)
               60 NEXT
               70 CHAIN "PROG2"
               P
               5         15
               4         12
               3         9
               2         6
               1         3
               0         0
               0         0
               1         3
               2         6
               3         9
               4         12
               5         15
     podprogramm PROG2 razme}enna  nabor danny  identifikatoro 
"PROG2.BAS"
               10 COMMON I%, K%()
               20 FOR I%=0 TO I%
               30 PRINT I%, K%(I%)
               40 NEXT
               50 END

prime~anie:
     pr rabot  bejsik-kompilqtoro nelxz zadawat opci ALL MERGE 
DELET  paramet nome stroki esl hotq skompilirowat kaku`-lib bejsik-
programmu t |ti opci n dolvn bytx peremenny lu~{ soob}at  pomo}x 
instrukcii COMMON (smotri punkt 12.6.).


.CP15
12.6. instrukciq opisaniq COMMON

     instrukci COMMOΠ pozwolqe peredawat informaci dl sceplenny  
nalovenny programmny segmento wmest  programmno instrukcie CHAI 
(smotri punkt 12.5.).
format:  COMMON <identifikator peremennoj> /, <identifikator peremennoj>/...
     ukazywa`ts ws peremennye fakti~esko raspoloveni kotory dolvn 
bytx predostawleno dozagruvaemym programmnym segmentam.
     identifikator pole sledue zadawat  krugly skobka "()" kavdo 
opisani堠 COMMOΠ dolvn stoqt pere wsem頠 ostalxnym頠  instrukciqm 
sootwetstwu`}eg programmnog segmenta posledowatelxnost parametro  
instrukci COMMOΠ  otdelxny programmny segmento move byt razli~noj 
kavdyj parametr sleduet zadawatx tolxko odin raz.

primer:        10 COMMON I%, I1%, T#(), S1$, S2$
                    .
                    .
                    .
               50 CHAIN "nabor dannyh I", 20
                    .
                    .
                    .

prime~anie:
     pr rabot  bejsik-kompilqtoro wse polqm ukazanny  instrukci 
COMMON predwaritelxn dolvn byt zadan razmernost  instrukci DI 
(smotr punk 9.1.) dl bejsik-kompilqtor forma instrukci COMMOΠ by 
ras{iren sledu`}im obrazom:
format:   COMMON //<imq>///<identifikator peremennoj>//,
                 <identifikator peremennoj>/...
     pr頠 |to  pomo}x imen movn zadat identifikato kakoj-lib 
standartno programm  ma{inno kod (maksimalxn  simwolow) blagodar 
|tom pr wyzow kakoj-lib takog rod standartno programm  pomo}x 
instrukci CAL̠ (smotr punk 12.2. n trebuets zadawat peredawaemy 
parametry.
ipr rabot  bejsik-kompilqtoro pere kakoj-lib instrukcie COMMOΠ mogu 
stoqtx tolxko sledu`}ie instrukcii opisaniq:
               COMMON
               DIM
               OPTION BASE
               REM
               DEFDBL, DEFSNG, DEFINT, DEFSTR
               %INCLUDE


.CP15
12.7. instrukciq %INCLUDE dlq wstawok ishodnogo teksta wo wremq kompilqcii

     (movno ispolxzowatx tolxko dlq bejsik-kompilqtora.)

      pomo}x instrukci INCLUD bejsik-kompilqto move ukazat  kakoj-
lib ishodno programm kaki ishodny programmny blok sledue s~itat i 
wne{ne pamqti |t dopolnitelxny strok programm wstawlq`ts wmest 
instrukcii %INCLUDE.
format:  %INCLUDE <dopustimyj identifikator nabora dannyh>
<dopustimy identifikato nabor dannyh predstawlqe sobo kakoj-lib 
dopustimy  operacionno sistem identifikato nabor dannyh o zadaets  
wid konstant simwolxnog tipa pri~e tolxk im danno instrukci eg n 
obqzatelxn zakl`~at  kawy~ki ti nabor danny awtomati~esk prinimaets 
rawnym ".BAS".
      pomo}x instrukci %INCLUD  movn wstawlqt tolxk bejsik-ishodny 
programm (hranq}ies  kod ASCII) on n mogu sodervat  swo o~ered drugie instrukcii %INCLUDE.
     wnimanie!! obqzannost polxzowatel sledit z tem ~tob wstawlenna 
programm n wyzywal konfliktny situaci  peremennymi ispolxzuemym  
drugi ~astq programmy takv sledue obratit wnimani n to ~tob n 
bylo instrukcij GOTO ili GOSUB, priwodq}}ih k nesu}estwu`}im strokam.
     nomerᠠ stro렠 wstawlenno programm dolvn byt uporqdo~en  
sootwetstwu`}e posledowatelxnost  perwy nome strok dolve byt bolx{ 
nomer strok instrukci %INCLUDE maksimalxny nome strok wstawlenno 
programm dolve byt menx{ nomer stroki stoq}e  wyzywa`}e programm 
posl堠 instrukci %INCLUDE ograni~eni n dejstwu` esl頠 programm 
kompiliruetsq s opciej /s.
     instrukci %INCLUDŠ dolvn byt posledne instrukcie  kakoj-lib 
stroke.


.CP15
13 instrukci dl wwod  wywod n |kra il pe~atx  kana wwoda-wywod 
     ili dlq adresow pamqti w qzyke bejsik.

13.1 instrukci INPUԠ dl zapolneni peremenny  process wypolneni 
       programmy 

     instrukci INPU pozwolqe priswaiwat peremenny  process wypolneni 
programmy opredelennye zna~eniq w wide wyravenij.
format:    INPUT  /;//"<posledowatelxnostx simwolow>";/<peremennaq>/,
                  <peremennaq>/...
            ili
           INPUT /;//"<posledowatelxnostx simwolow>",/<peremennaq>/,
                  <peremennaq>/...
     ukazanna <posledowatelxnost simwolow wydaets dl zapros n wwo n 
|kran esl posledowatelxnost simwolo n zadana t  ka~estw zapros n 
wwo䠠 ispolxzuets tolxk zna wopros "?" esl頠 posl堠 parametr 
<posledowatelxnost simwolow ispolxzuets ";",t  ka~estw zapros n wwo 
postoqnn indiciruets "?" movn otmenit wyda~ znak woprosa esl wmest 
to~k  zapqto posl parametr <posledowatelxnost simwolow postawit 
zapqtu` (format 2).
     wwo zna~eni proishodi  to porqdk <peremennyh> ka on priweden 
 instrukci INPUT zna~eni otdelq`ts dru o drug zapqtoj whodny 
posledowatelxnost zawer{a` klawi{e "ET" koli~estw wwedenny zna~eni 
dolvn sootwetstwowat koli~estw peremennyh esl kakaq-lib whodna 
posledowatelxnost zawer{aets klawi{e "ET kogd e} n wse peremenny 
byl priswoen zna~eniq t proishodi nowy zapro n wwod esl wweden 
zna~eni bolx{e ~e imeets peremennyh t li{ni zna~eni ignoriru`tsq 
esl wwodqts nedopustimy simwoly t wes wwo otmenqets  wydaets nowy 
zapros na wwod.
      ka~estw peremenno movn ispolxzowat l`by ~islowy peremennye 
peremenny tip simwolxno strok il peremenny polq wwedenny danny 
dolvn sootwetstwowat sootwetstwu`}i tipa peremennyh pr wwod dl 
peremenny tip simwolxno strok sledue u~itywatx ~t zapqta s~itaets 
pr obrabotk razdelitelem esl  whodno strok simwolo trebuets 
zapqtaq t whodnu strok simwolo sledue zakl`~it  kawy~k " "" to~n 
takv sledue ispolxzowatxkawy~ki esl  na~al   konc strok simwolo 
ime`tsq zna~a}ie probely.

primer:        10 INPUT "wwod A,B,C"; A%,B%,C%                      
prime~anie.
     esl頠 wwo䠠 zawer{a` klawi{eꠠ "ET" t odnowremenn kurso 
ustanawliwaets  na~al sledu`}e strok |krana |to pereho n nowu 
strok movn ustranitx esl neposredstwenn posl kl`~ewog slow INPU 
postawitx to~ku s zapqtoj.


.CP15
13.2 instrukci LINŠ INPU dl wwod l`by posledowatelxnoste stro  
       processe wypolneniq programmy

     instrukci LINŠ INPUԠ prinimae simwol wwedenny polxzowatele  
klawiatury  priswaiwae eg  ka~estw simwolxno strok kakoj-lib 
zadannoj peremennoj tipa simwolxnoj stroki.
format:  LINE INPUT /;//"<posledowatelxnostx simwolow>";/
                    <peremennaq tipa simwolxnoj stroki>
                    ili
         LINE INPUT /;//"<posledowatelxnostx simwolow>",/
                    <peremennaq tipa simwolxnoj stroki>
     zadanna <posledowatelxnost simwolow wywodits n |kra  otwe n 
zapro n wwod esl posledowatelxnost simwolo n zadana t  ka~estw 
zapros n wwo ispolxzuets tolxk zna wopros "?" esl posl parametr 
<posledowatelxnost simwolow ispolxzuets ";" t postoqnn  ka~estw 
zapros n wwo idiciruets "?" wywo znak wopros movn otmenitx esl 
wmest to~k  zapqto posl parametr <posledowatelxnost simwolow 
postawitx zapqtu` (format 2).
     peremenna tip simwolxno strok prinimae wwodimu posledowatelxnost 
simwolow prinima`ts ws simwoly wkl`~a kawy~ki zapqtu  probely wwo 
zawer{a`t klawi{ej "ET". movno wwoditx maksimalxno 254 simwola.

primer:        10 LINE INPUT;"wwod peremennyh V";V
prime~anie:
     esl頠 wwo䠠 zawer{a` klawi{eꠠ "ET" t odnowremenn kurso 
ustanawliwaets  na~al sledu`}e strok |krana |to pereho n nowu 
strok movn otmenitx esl neposredstwenn posl kl`~ewog slow INPU 
postawitx to~ku s zapqtoj.


.CP15
13.3. instrukciq PRINT dlq besformatnogo wywoda informacii na |kran

      pomo}xࠠ instrukci PRINԠ movn wypolnit besformatnyꠠ wywo 
informacii na |kran.
format:   PRINT  /<spisok wyravenij dlq wywoda>/;//
          ili
          ? /<spisok wyravenij dlq wywoda>/;//
          <spisok wyravenij dlq wywoda>=<wyravenie>
          /,<wyravenie>/...
          ili
          <spisok wyravenij dlq wywoda>=<wyravenie>
          /;<wyravenie>/...
          ili
          <spisok wyravenij dlq wywoda>=<wyravenie>
          /<wyravenie>/...
     <wyravenie move byt l`by ~islowy wyravenie il wyravenie i 
simwolxny strok ~islowo peremenno il peremenno tip simwolxno strok 
il ~islowo konstanto il konstanto tip simwolxno stroki wyraveni 
movn otdelqt dru o drug  pomo}x "," "; il  " pr |to danny 
razdelitel movn ispolxzowat sowmestno pr razdeleni |lemento spisk 
zapqto proishodi wywo sledu`}eg |lement spisk s sme}enie n 1 
kolono wprawo pr razdeleni |lemento spisk to~ko  zapqto il  
pomo}x   proishodi posledowatelxny wywod poslednem |lement spisk 
pri kakom-libo ~islowom zna~enii otwoditsq odna poziciq.
     kavda instrukci PRIN na~inae wywo  nowo strok  to slu~ae 
esl posl posledneg |lement spisk n sledue to~k  zapqto il 
zapqtaq  danno slu~~a wywo prodolvaets  sootwetstwu`}eg interwal  
to v stroke esl instrukci PRIN zadan be parametrow t on wypolnqe 
pereho  sledu`}e strok (wywo pusto stroki) esl proishodi prewy{eni 
format stroki t awtomati~esk wypolnqets pereho n nowu strok  
prodolvenie pe~ati.
     pr wywod ~ise  odinarno to~nostx n pe~at wyda`ts  cifr esl 
dl we}estwenny ~ise  odinarno to~nostx koli~estw dejstwitelxny 
bolx{ 6 t proishodi predstawleni  polulogarifmi~esko wid (naprimer 
10^(-6 ka 0.000001 n 10^(-7 ka 1e-7) dl we}estwenny ~ise  dwojno 
to~nostx dl predstawleni ~ise ispolxzu`ts 1 cifr ~isla dl kotory 
trebuets bolx{ 1 cifr takv predstawlq`ts  polulogarifmi~esko wid  
pomo}x` |ksponenty.
     wmest kl`~ewog slow "PRINT movn ispolxzowatxtakv zna wopros 
"?".
primery:       10 B%=4
               20 PRINT B%,B%+4
               30 PRINT B%*(-4),B%^4;
               40 PRINT B%-4
               RUN
                4          8       -16        256   0
               OK
               10 FOR I%=I TO 5
               20 I%=I%+5
               30 K%=K%+10
               40 ? I%;K%
               50 NEXT
               RUN
                5   10  10  20  15  30  20  40  25  50
               OK
               10 B%=3
               20 PRINT "B rawno"; B%
               30 PRINT "B*B rawno" B%*B%"i";
               40 PRINT "B+B pawno" B%+B%
               RUN
               b rawno 3
               B*B rawno 9 i B+B rawno 6
               ok



13.4. instrukciq PRINT USING dlq formatirowannogo wywoda na |kran

     instrukci PRINԠ USIN pozwolqe qwn  to~n kontrolirowat forma 
wywod dannyh movn raspe~atat konstant il zna~eni peremenny kavdog 
tipa.
format:  PRINT USING <ukazanie formata>;<spisok wyravenij dlq wywoda>/;/
         <spisok wyravenij dlq wywoda>=<wyravenie>/;<wyravenie>/...
     wyraveni move byt l`by ~islowy wyravenie il wyravenie i 
simwolxny strok kakoj-lib ~islowo peremenno il peremenno tip 
simwolxno konstant il konstanto tip simwolxno stroki |lement spisk 
otdelq`t drug ot druga to~koj s zapqtoj.
     ukazani format move byt peremenno tip simwolxno strok il 
zakl`~enno    konstanto tip simwolxno stroki niv priweden simwol 
formata i ih funkcii:
.PA

-----------I-------------------I---------------------------------------------
  simwol   I       wywod       I                  prime~anie
-----------I-------------------I---------------------------------------------
           I perwyj simwol wy- I simwol wybiraetsq iz zna~eniq wyraveniq iz
    !      I raveniq iz sim-   I simwolxnyh strok, na~inaq slewa.
           I wolxnyh strok.    I
-----------I-------------------I----------------------------------------------
           I cifra ili probel  I wywod cifry ili probela, esli w dannom ili
    =      I ili znak minus    I sledu`}em meste stoit wedu}ij nulx. otrica-
           I                   I telxnyj znak polu~aetsq dlq otricatelxnyh
           I                   I ~isel.
-----------I-------------------I---------------------------------------------
           I desqti~na to~k   wywo desqti~no to~ki, eslwywodimo ~is-
    .      I ili probel        I lo qwlqetsq desqti~nym ~islom, ina~e wywod
           I                   I probelom
-----------I-------------------I---------------------------------------------
           I znak ~isla + ili -I pered kavdym ~islom ustanawliwaetsq znak 
    +                          ~isla zna ~isl move byt ustanowle 
           I                   I takve posle ~isla.
-----------I-------------------I---------------------------------------------
           I znak - ili probel I raspe~atywaetsq otricatelxnyj znak ~isla,
    -      I                   I dlq polovitelxnyh ~isel ustanawliwaetsq
           I                   I probel. znak ~isla movet bytx ustanowlen 
           I                   I takve posle ~isla.
-----------I-------------------I---------------------------------------------
           I                   I wywod * wmesto wedu}ih nulej pered perwoj 
   **      I         *         I cifroj ili pered znakom ~isla. oba simwola
           I                   I * opredelq`t dwe pozicii w formate.
-----------I-------------------I---------------------------------------------  
           I                   I zapqtaq slewa ot desqti~noj to~ki ukazywaet
   ,       I         ,         I na to, ~to wse tri pozicii zapqtoj dlq ot-
           ɠ                   delen tysq dolvn byt zapolneny  
           I                   I formate opisywaetsq odna poziciq.
-----------I-------------------I---------------------------------------------
           ɠ                   wmest  stawits pl` il minus D 
   ^^^^    I     ESDD          I predstawlq`t soboj dwe cifry. dannyj format
           I                   I wyzywaet wywod ~isla w |ksponencialxnom 
           I                   I predstawlenii.
-----------I-------------------I---------------------------------------------
   ___     I                   I znak pod~erkiwaniq dejstwuet takim obrazom, 
znak pod-  I    literal        I ~to sledu`}ij neposredstwenno za nim simwol
~erkiwaniq I                   I raspe~atywaetsq bez izmeneniq kak simwol i 
           I                   I ne interpretiruetsq kak uprawlq`}ij simwol.
-----------I-------------------I---------------------------------------------
           ɠ                  ɠopisywaets pol dl wywod simwolxno 
    &      I zna~enie simwolx- I stroki peremennoj dliny, t.e. simwolxnaq
            simwolxnostrok  strok wywodits  swoe perwona~alxno 
           I                   I wide.
-----------I-------------------I---------------------------------------------       
  /<N      I zna~enie simwolx- I wywodqtsq N+2 simwolow, t.e. dlq kosoj ~er-
probelow   I noj stroki        I ty takve rezerwiruetsq odna poziciq pe~ati.
           I                   I esli zarezerwirowannoe pole dlinnee zadan-
           ɠ                  I nog zna~eni simwolxno stroki t on 
           I                   I razme}aetsq w pole slewa, a sprawa pole za-
           I                   I polnqetsq probelami.
-----------I-------------------I---------------------------------------------
           I                   I neposredstwenno slewa ot wywodimogo ~isla
   $$      I         $         I wywoditsq simwol $. rezerwiru`tsq wse pozi-
           I                   I cii  pe~ati w formate. otricatelxnye ~isla
           ɠ                   movn raspe~atywat tolxk  to slu~ae   simwol   I       wwod        I                  prime~anie
-----------I-------------------I----------------------------------------------
           I                   I esli znak minus wywoditsq sprawa ot ~isla.
-----------I-------------------I----------------------------------------------
           I                   I wedu}ie pustye pozicii zapolnq`tsq simwolom
   **                         $  neposredstwenn pere ~islo wywodits 
           I                   I simwol   . w formate opisywa`tsq tri pozi-
           I                   I cii wywoda.
-----------I-------------------I----------------------------------------------

      ukazani format pomim l`by drugi simwolo mogu sodervatxs 
zadanny simwoly on ispolxzu`ts dl rezerwirowani mesta |t uprawlq`}i 
simwol wybira`ts i strok format  issledu`tsq esl uprawlq`}i simwol 
trebu` kakoe-lib zna~eni simwolxno strok il kakoe-lib ~islowo 
zna~enie t i spisk wyraveni dl wywod wybiraets o~eredno wywodimo 
zna~eni  prowerqets eg dopustimostx esl wyraveni  specifikaci 
pe~at n sootwetstwu` dru drugu t programm prerywaets  wyda~e 
soob}eni o o{ibke poskolxk dl wyraveni trebuets odn simwolxna 
stroka  dl simwolxno strok drugo ~islowo zna~enie esl zna~eni 
~islowog wyraveni bolx{ ~e movn wydat  danny formatom t ~isl 
wywodits be formatirowaniq esl wpered stoi simwo % t wywo 
proishodi n sledu`}e stroke wypolneni programm prodolvaetsq pr 
wywod ~ise  plawa`}e to~ko  pomo}x specifikaci format INTEGE 
proishodi okrugleni d sledu`}eg celog ~isla kavdo wyraveni wywodits 
soglasn sootwetstwu`}e specifikaci  opisani formata wypolnqets kavda 
funkciq pe~ati w spiske, esli ona wstre~aetsq.
     posl堠 obrabotk頠 simwolxno strok formatᠠ 頠 zamen simwolo 
rezerwirowani mest sootwetstwu`}im zna~eniqm proishodi wywo izmenenno 
takim obrazom simwolxnoj stroki formata.
     pr |to ws simwol  wywod formata n qwlq`}ies uprawlq`}im 
simwolam  smysl priwedenno wy{ tablicy raspe~atywa`ts be izmenenij 
esl "spiso wyraveni dl wywoda posl pe~at modeficirowanno  simwolxno 
strok頠 formatᠠ e} n is~erpan t snowᠠ na~inaets dalxnej{e 
formatirowanno堠 redaktirowani堠 pe~at頠 󠠠 postroenie sledu`}e 
modificirowanno simwolxno strok formata pr |to u~itywaets sledu`}i 
|lement wywoda redaktirowani pe~at modeficirowanno simwolxno strok 
format proishodi d te por pok n bude is~erpa spiso |lemento 
wywoda  otdelxny slu~aq mogu byt ispolxzowan n ws pozici  konc 
simwolxnoj stroki formata.

               10 PRINT USING "##.##";.89
         (1)   20 PRINT USING "###.##";987.678
               30 PRINT USING "##.##"; 10,3.3,66.777,.24
               40 PRINT USING "+##.##"; -58.19,.9,45.6
               50 PRINT USING "##.##-"; -58.19,.9,45.6
               60 PRINT USING "**##.#"; 12.39,-.9
               70 PRINT USING "####,.##"; 3421.5
               80 PRINT USING "#,###.##"; 4321.5
               90 PRINT USING "##.##^^^^"; 345.67
               100 PRINT USING ".####^^^^"; 777777
               110 PRINT USING "+.##^^^^"; 321
               120 PRINT USING "##.##_K_M__H"; 15.97
               130 PRINT USING "##.##"; 123.45
               140 PRINT USING ".##"; .997
               150 A$="PROGRAMM"                    (2)
               160 B$="EDV"                         (3)
               170 C$="ANLAGE"                      (4)

(1 - primery (2 - programma (3 - sistem obrabotk danny n baz |wm  
(4) - ustanowka

               180 PRINT USING "1";A$;B$;C$
               190 PRINT USING "ZAHL ###.## WURDE IN FORMAT
                   _#_#_#_._#_# GEDRUCKT";23.45               (1)
               RUN
               0.89
               987.68
               10.00 3.30 66.78 0.24
               -58.19 +0.90 +45.60
               58.19- 0.90 45.60
               *12.4 *-0.9
               4,321.50
               4,321.50
               3.46E+02
               .7778E+06
               +.32E+03
               15.97KM/H
               %1233.45
               %1.00
               PEA                                           (2)
               ZAHL   23.45 WURDE IM FORMAT ###.## GEDRUCKT
               OK

(1) - ~islo ###.## bylo raspe~atano w formate _#_#_#_._#_#;
23.45;    (2) - ~islo 23.45 bylo raspe~atano w formate ###.##


.CP15
13.5 instrukci LPRINԠ    LPRINԠ USINǠ dl wywod n pe~at  
        formatirowaniem i bez formatirowaniq          

     instrukci LPRINԠ  LPRIN USIN realizu` instrukci PRINԠ  PRIN 
USING (smotri punkt 13.3. i punkt 13.4.) dlq kakogo-libo ustrojstwa pe~ati.
format:   LPRINT /<spisok wyravenij dlq wywoda>//;/
          LPRINT USING <ukazanie formata>;<spisok wyravenij dlq wywoda>/;/
          <spisok wyravenij dlq wywoda>=<wyravenie>/;/<wyravenie>/...
     <wyravenie move byt l`by ~islowy wyravenie il wyravenie i 
simwolxny strok kakoj-lib ~islowo peremenno il peremenno tip 
simwolxno strok il ~islowo konstanto il konstanto tip simwolxno 
stroki. otdelxnye |lementy spiska otdelq`tsq drug ot druga to~koj s zapqtoj.
     koli~estw simwolo dl odno strok pe~at ograni~en d 13  move 
byt proizwolxn ustanowlen  pomo}x instrukci WIDT LPRIN (smotr punk 
13.7.).


.CP15
13.6. instrukciq WRITE dlq wywoda na |kran

      pomo}x instrukci WRIT movn wydawat n |kra ~islowy zna~eni  
zna~eni simwolxny strok wywo proishodi be interwalow  ka~estw 
razdelitel ispolxzuets zapqtaq zna~eni simwolxny stro zakl`~a`ts  
kawy~ki  ".
format:   WRITE /<spisok wyravenij dlq wywoda>/
          <spisok wyravenij dlq wywoda>=<wyravenie>/;<wyravenie>/...
     <wyravenie move byt l`by ~islowy wyravenie il wyravenie i 
simwolxny strok kakoj-lib ~islowo peremenno il peremenno tip 
simwolxno strok il ~islowo konstanto tip simwolxno stroki otdelxny 
|lement spisk otdelq`ts dru o drug zapqtoj esl parametr n zadany 
to instrukciq WRITE wyzywaet perehod na sledu`}u` stroku.
.CP15
primer:        10 m%=20: N%=40: Z$="STRING"
               20 WRITE M%,N%,Z$
               30 PRINT M%,N%,Z$
               RUN
               20,40,"STRING"
               20      40     STRING
               OK

.CP15
13.7 instrukciq WIDTH dlq ustanowki dliny  stroki wywoda

      pomo}x instrukci WIDT zada` koli~estw simwolo  strok wywod 
na |kran ili ustrojstwo pe~ati.
format:   WIDTH /LPRINT/ <dlina>
     <dlina move byt celo~islenny wyraveniem celo peremenno il celo 
konstantoj on move prinimat zna~eni mevd 1  25 wkl`~itelxno 
standartn ustanowlen zna~eni 8 (|kran il 13 (ustrojstw pe~ati) |t 
zna~eni opredelqe koli~estw simwolo  kotoro move byt ob'edinen  
odn stroku pr dostiveni dlin strok  konc awtomati~esk wstawlqets 
simwo wozwrat karetk "CR" wywo sledu`}i simwolo proishodi n 
sledu`}ej stroke.
     esl zadan opci LPRINT t ustanowk dlin strok otnosits  
ustrojstwu pe~ati, w protiwnom slu~ae k |kranu.

primer:        40 PRINT "1...5...10...15...20...25...30"
               RUN
               1...5...10...15...20...25...30
               OK
               10 WRITE 20
               40 PRINT "1...5...10...15...20...25...30"
               RUN
               1...5...15...20
               ...25...30
               OK               


.CP15
13.8. instrukci OUԠ dl fizi~eskog wywod kakogo-lib zna~eni  kana 
      wywoda.

   instrukciq oUt obespe~iwaet neposredstwennu` zapisx w wyhodnoj port.
format:        OUT<PORT-adres>,<~islo>
parametr <PORT-adres  <~islo predstawlq` sobo celo~islenny wyraveniq 
cely peremenny il cely konstanty kotory mogu prinimat zna~eni mevd 
0 i 255 wkl`~itelxno.
   ukazanie:
   danna instrukci qwlqets inwersno instrukcie p otno{eniࠠ  
instrukcii INr (smotri punkt 14.3.).
   primer:     100 oUT 3,80


.CP15
13.9. instrukciq POKE dlq zapisi zadannogo bajta po zadannomu adresu

     instrukci POK peresylae odi baj p kakomu-lib adresu leva}em 
mevdu 0 i 65535.
format:  POKE <adres>,<zna~enie>
     parametr movn zadawat ka  desqti~no ta   {estnadcateri~no 
wide.
     <adres move byt kakoj-lib ~islowo peremenno il頠 ~islowo 
konstantoj celogo tipa.
     <zna~enie move byt kakim-lib ~islowy wyraveniem ~islowo 
peremenno il ~islowo konstanto celog tip  prinimat zna~eni mevd  
i 255.
ukazanie: 
      danna instrukci qwlqets inwersno instrukcie p otno{eni  
instrukcii PEEK (smotri punkt 14.4.).

primer:        10 A%=PEEK(&H8000)
               20 PRINT HEX$(A%)
               30 POKE &H8000,&H20A
               40 A5=PEEK(&H8000)
               50 PRINT HEX$(A%)
               60 END
               80 POKE 32768,42
               RUN
               24
               2A
               OK

      sledu`}e primer standartna programm  ma{inno kod堠 i 
programmnog nabor danny  operatiwnu pamqtx pr dalxnej{e wypolneni 
programm e movn wyzwat  pomo}x CAL (smotr punk 12.2. il US 
(smotri punkt 12.4.).

                    .
                    .
                    .
               100 READ ADR%
               110 READ DAT%
               120 IF DAT%=0 THEN 160
               130 POKE ADR%, DAT%
               140 ADR%=ADR%+1
               150 GOTO 110
               160  .
                    .
                    .
                    .
               1000 DATA 35720,34,120,79,250,00,00,00,36,73
               1010 DATA 220,37,33,-1

     sledue obratit wnimani n to ~t  danno primer oblast  3572 
zarezerwirowana instrukciej CLEAR (smotri punkt 5.4.).


.CP15               
13.10. instrukciq WAIT dlq sinhronizacii s wne{nimi ustrojstwami

     instrukci WAI pozwolqe sinhronizirowat swqzny process pr rabot 
s wne{nimi ustrojstwami.
format:  WAIT <adres porta>,<AND-maska>/,<XOR-maska>/
     algoritm ovidaniq rabotaet sledu`}im obrazom:
zna~enie leva}e p adres porta swqzywaets  zna~enie XOR-mask 
logi~esko operacie iskl`~a`}e ili rezulxta swqzywaets  zna~enie AND-
mask logi~esko operacie i esl rezulxta otli~aets o nulq t bejsik-
programm prodolvae wypolnqtxsq esl XOR-mask n zadana t standartn 
ispolxzuetsq zna~enie nulx.
     <adre porta>,<AND-maska  <XOR-maska dolvn byt celym peremennym 
 celym konstantami cely zna~eni dolvn levat mevd  頠 25 
wkl`~itelxno.

primer:        100 WAIT 17,7,1
pri |tom wypolnqetsq sledu`}ij algoritm:
     prowerqetsq kanal s adresom 17. na dannom kanale imeetsq, naprimer, 6.

          (XOR 1) AND 7=0

rezulxtat ne rawen nul`; takim obrazom, programma prodolvaet wypolnqtxsq.
     esli, naprimer, teperx w kanale budet zna~enie 1, to polu~im:

          (1 XOR 1) AND 7=0

     rezulxtat rawen nul`; instrukciq WAIT wypolnqetsq snowa.


.CP15
13.11. instrukciq SWAP dlq obmena zna~eni~mi dwuh l`byh peremennyh
       odinakowogo tipa

      pomo}x instrukci SWA movn wypolnit obmenzna~eniqm mevd dwum 
peremennymi odinakowogo tipa.
format:  SWAP <peremennaq - 1>,<peremennaq - 2>.
      ka~estw peremenny movn ispolxzowat cely peremennye we}estwenny 
peremennye odinarnoj i dwojnoj to~nosti i peremennye tipa simwolxnoj stroki.

primer:        10 A$="A1"
               20 A2$="*"
               30 A3$="A2"
               40 A4$="=A3"
               50 PRINT A1$;A2$;A3$;A4$
               60 SWAP A1$,A3$
               70 PRINT A1$;A2$;A3$;A4$
               RUN
               A1*A2=A3
               A2*A1=A3
               OK
