.HE                                                str. #

  











                        turbo-paskalx
                 rUKOWODSTWO   POLXZOWATELQ 
               ==============================



    PEREWOD S NEMECKOGO  RUKOWODSTWA POLXZOWATELQ SISTEMY
 
                        PASCAL-TURBO

                  DLQ p|wm "robotron 1715"







                         ~ASTX III.




        ukazateli i dinami~eskie operacii s pamqtx`.
.PA
.HE ~astx iii ukazateli i dinami~eskie operacii s pamqtx` str. #

     1. uKAZATELX (POINTER).

    tIР "UKAZATELX OPREDELQETS PUTE ZADANI ZNAK ^(STRELK 
WWERH) STAWQ]EGOSѠ PEREĠ IMENE͠ TIP POSLŠ ZNAK   
OPREDELITEL TIPA NAPRIMER TYP  CONNECTIO  =^DATASTRING;.
    tIР "UKAZATELX OPREDELQEԠ DINAMI^ESKIŠ PEREMENNYE T.E 
PEREMENNYE,OB'QWLENNYŠ נ PROGRAMM  TIPO͠ "UKAZATELX" MOGU 
ZANIMAT PAMQT  oz DINAMI^ESKI BE PREDWARITELXNOG UKAZANI 
FAKTI^ESKI GRANI PEREMENNOJ KA \T IMEE MESTO, PRIMERU  
SLU^A OB'QWLENI STATI^ESKOG  MASSIWA.
    pOSLŠ TOGO KA PEREMENNAѠ STANOWITSѠ NENUVNOJ OBLASTX 
ZANIMAEMAѠ EJ MOVEԠ BYTؠ OSWOBOVDEN Ӡ POMO]X STANDARTNO 
PROCEDUR DISPOSE(<IM DINAMI^ESKO PEREMENNOJ>).
    pEREMENNYE IME@]IŠ TIР "UKAZATELX" MOVNϠ SRAWNIWATؠ  
POMO]X OPERACI    > rEZULXTA SRAWNENI IMEE  TI BOOLEAN 
TA VE KA  PR SRAWNENI NEDINAMI^ESKI PEREMENNYH.
   dRUGI PRQMY OPERACI  UKAZATELQM ZAPRE]ENY.
   sTANDARNOŠ ZNA^ENIŠ UKAZATEL "NIL MOVE BYTؠ DANϠ L@BOM 
UKAZATEL@."NIL OZNA^AEԠ NULEWOŠ ZNA^ENIŠ DINAMI^ESKO 
PEREMENNOJ.
    hOTѠ  PAMQTؠ POĠ DINAMI^ESKIŠ PEREMENNYŠ WYDELQETS 
TRANSLQTORO͠ AWTOMATI^ESKɠ W WREM WYPOLNENIѠ PROGRAMMY PR 
OPREDELENIɠ UKAZATELѠ NEOBHODIMϠ OPISATؠ OBLASTؠ PAMQTI 
DOSTATO^NU DLѠ TOGO ^TOB٠  NE MOVN BYLϠ POMESTITؠ ODN 
PEREMENNU DANNOG TIPA |T PEREMENNA MOVE IMET KA PROSTOJ 
TA  PERE^ISLQEMY IL STRUKTURIROWANNY TIP.
     POMO]X UKAZATELEʠ MOVNϠ ORGANIZOWYWATؠ SWQZANNY 
(SPISO^NYE DINAMI^ESKI STRUKTURY dLѠ \TOGϠ PEREMENNAQ N 
KOTORU SSYLAETSѠ UKAZATELX,DOLVN IMET TIР ZAPISɠ (RECORD),
ODN I POLE KOTORO SODERVI SSYLK N UKAZATELX.
    pRIME OPREDELENI UKAZATELQ:
TYP PERSONPOINTE =^PERSON;
       PERSO  RECORD
                   NAM       :STRING[50];(*POL IMEN LI^NOSTI*)
                   SPECIALITY :STRING[50];   (*POLE POFESSII *)
                   NEXTPERSON :PERSONPOINTER;(*POLE DLQ SSYLKI
                                            NA SLEDU@]U@ ZAPISX*)
                   END;
VAR
   FIRSTPERSON,LASTPERSON,NEWPERSON:PERSONPOINTER;


     oPREDELENNYŠ ZDESؠ PEREMENNYŠ IME@Ԡ TIР  UKAZATELE 
(POINTER). oNɠ UKAZYWA@Ԡ N ZAPISX,IME@]U TIР PERSON 
uPOTREBLQT PEREMENNU TIP "UKAZATEL N TIP  WYRAVENIQH GD 
TREBUETSѠ NŠ SSYLO^NAѠ PEREMENNAѠ MOVNϠ TOLXKϠ POSLŠ E 
RAZIMENOWANIѠ Ӡ POMO]X OPERATOR ^, POME]AEMOGϠ POSLŠ IMEN 
SOOTWETSTWU@]Eʠ PEREMENNOJ  \TO͠ SLU^AŠ PEREMENNAѠ TIP 
"UKAZATELX PRIOBRETAE TO TIP KOTORY UKAZA  SSYLKE  N 
TI UKAZATELQ.
   nAPRIMER ESLɠ OPISAN PROCEDUR ^TENI ZAPIS GETRECORĠ  
FORMALXNY PARAMETROM IME@]I TI PERSON T DL ^TENI ZAPIS 
OTKUD LIB  POMO]X POCEDUR GETRECOR (KOTORU SLEDUE OPISAT 
RANEE  OBLAST PAMQTI N KOTORU DINAMI^ESKɠ UKAZYWAEԠ TI 
PERSONPOINTER, NUVN NAPISAT SLEDU@]EE:

NEW(FIRSTPERSON)  (*POLU^ENIŠ SSYLKɠ N OBLAST 
        PAMQTI,ISPOLXZUEMU DL HRANENI PEREMENNO FIRSTPERSON*)
GETRECORD(FIRSTPERSON^);(*ZAPISX W \TU OBLASTX PAMQTI ZAPISI TIPA
                        PERSO P SSYLK N IM FIRSTPERSON*)
    zDESؠ STANDARTNAѠ POCEDUR NEW, PARAMETRO͠ KOTOROʠ DOLVN 
BYTؠ PEREMENNAQ IME@]AѠ TIР UKAZATELQ WYDELQEԠ נ oz 
DINAMI^ESK OBLAST PAMQTI DOSTATO^NU DL HRANENI ODNO ZAPIS 
TIPA N KOTORY SSYLAETS UKAZATELX.
    dRUGOʠ WOZMOVNOSTX DINAMI^ESKOG WYDELENIѠ OBLASTɠ PAMQT 
DL HRANENI PEREMENNYH N KOTORU SSYLAETS UKAZATELX QWLQETS 
UPOTREBLENI STANDARTNO PROCEDUR GETME WMEST NEW.
    |T PROCEDUR IMEE PARAMETR <PEREMENNAQ_TIPA_UKAZATELX  
<CELOŠ ^ISLO>.pERWYʠ PARAMETҠ DOLVE IMETؠ TIР UKAZATELѠ N 
NEKOTORU OBLASTؠ PAMQTI WTOROʠ NAZNA^AEԠ DLѠ DINAMI^ESKO 
PEREMENNOʠ TREBUEMY RAZME OPERATIWNO PAMQT נ BAJTAH tAKI 
OBRAZO͠ PRɠ UPOTREBLENI PROCEDUR GETME͠ OPREDELENIŠ RAZMER 
PAMQTI ZANIMAEMOGϠ DINAMI^ESKOʠ PEREMENNOJ LEVIԠ N 
PROGRAMMISTE  PRɠ UPOTREBLENI PROCEDUR٠ NEW \Tՠ OPERACI 
WYPOLNQE TRANSLQTO AWTOMATI^ESKI HOTQ WOZMOVNO  N SAMY 
OPTIMALXNY OBRAZOM.
    dINAMI^ESKAѠ PEREMENNAQ RAZMEҠ KOTOROʠ UKAZYWAETSQ 
POME]AETSѠ נ OBLASTɠ PAMQTɠ TRANSLQTORA,NAZYWAEMOʠ "KU^EJ 
(HEEP) "kU^A RASPOLAGAETS  oz NA^INA  PERWOG SWOBODNOG 
BAJT (ZNA^IT Z PROGRAMMNY TEKSTOM  PROSTIRAETS D BAJT  
NAIWYS[I ADRESO (DL WOSXMIBITOWY PROCESSORO \TO ADRE RAWE 
$FFF ).
    tRANSLQTOҠ TURBϠ UPRAWLQE "KU^EJ  POMO]X ZNA^ENIѠ TA 
NAZYWAEMOGϠ UKAZATEL "KU^I (HEEPPOINTER) KOTORY STAWITSѠ  
NA^AL PROGRAMM  UKAZYWAE N PERWY SWOBODNY  "KU^E ADRES.
   pRɠ KAVDO UPOTREBLENI NE IL GETME UKAZATEL "KU^I BUDE 
AWTOMATI^KSK ( SLU^A UPOTREBLENI NEW ,IL "WRU^NU@"( SLU^A 
ISPOLXZOWANI GETMEM USTANAWLIWATXS N NOWY PERWY SWOBODNY  
"KU^E BAJT.
   sTANDARTNAѠ FUNKCIѠ MEMAVAI̠ (MEMOR٠ AVAILABLE-DOSTUPNA 
PAMQTX WOZWRA]AEԠ CELOŠ ZNA^ENIŠ RAZMER "KU^I  
BAJTAH,SWOBODNO  DANNOM MOMENTU fUNKCI N IMEE PARAMETROW.
   sTANDARTNAѠ FUNKCIѠ MAXAVA (MAXIMU AVALAIBLE- MAKSIMALXN 
DOSTUPNYJ WOZWRA]AE CELO ZNA^ENI RAWNO MAKSIMALXNOM RAZMER 
KU^I NAZNA^ENNOʠ TRANSLQTORO נ DANNOʠ PROGRAMME POSKOLXK 
RAZMEҠ "KU^I ZAWISI  O DLIN PROGRAMMY ^E BOLX[ MEST  
oz ZANIMAEԠ TEKS PROGRAMMY TE MENX[ OSTAETSѠ PAMQTɠ DL 
PEREMENNY PROGRAMMY-"KU^I".
   sTANDARTNYŠ FUNKCIɠ ORĠ (ORDE -PORQDOK ɠ PTҠ (POINTER-
UKAZATELX SLUVAԠ DLѠ WZAIMNOGϠ PREOBRAZOWANIѠ UKAZATELEʠ  
CELO^ISLENNY PEREMENNY  OBRATNO.
   ORD(<POINTER>)-WOZWRA]AEԠ CELOŠ ZNA^ENIŠ SODERVA]EGOSѠ  
UKAZATEL ADRESA.
   PTR(<cELO^ISLENNAѠ PEREMENNAQ>)-PREOBRAZUEԠ CELO^ISLENNU 
PEREMENNU נ UKAZATELX KOTORYʠ ISPOLXZUE \Tՠ PEREMENNY  
KA^ESTW ADRESA.
   oSWOBOVDENIŠ DINAMI^ESK ZANQTO PAMQTI KA UVŠ GOWORILOS 
WY[E MOVEԠ OSU]ESTWLQTXSѠ Ӡ POMO]X STANDARTNOʠ PROCEDUR 
DISPOSE PARAMETRO͠ KOTOROʠ QWLQETSѠ PEREMENNAQ SOZDANNA 
PROCEDURO NE .

   kROMŠ \TOʠ PROCEDURY IMEETSѠ E]Š ɠ DRUGAѠ WOZMOVNOST 
OSWOBOVDENI DINAMI^ESK ZANQTO PAMQTI PROCEDUR MARK/RELEASE. 
eSLɠ PAMQT ZANQT DINAMI^ESK  POMO]X PROCEDUR٠ GETMEM T 
OSWOBOVDATؠ EŠ NAD  POMO]X PROCEDUR FREEMEM.  \TO͠ SLU^A 
NUVNϠ UKAZAT  PROCEDUR FREEME  TO^NOST T OBLASTؠ PAMQTI 
KOTORAѠ BYL ZADAN  SOOTWETSTWU@]E PROCEDURŠ GETME͠ OBOIM 
PARAMETRAM .
   oSWOBOVDENI DINAMI^ESKO PEREMENNO  oz OSU]ESTWLQETSѠ PR 
ODNO OBRA]ENI  OSWOBOVDA@]I PROCEDURA TOLXK ODNOJ  IMENN 
POSLEDNEJ RASPOLOVENNOʠ נ PAMQTɠ PEREMENNOJ OSWOBOVDENI PEREMENNOʠ נ SEREDINŠ "KU^I NEWOZMOVNO |TϠ PROISHODI 
POTOMU,^TϠ DINAMI^ESKI PEREMENNY ZAGRUVA@TS  PAMQT PϠ TIP 
STEKA PERWY WO[EL-WY[E POSLEDNIJ.
   dINAMI^ESK ZANQTA PAMQT OSWOBOVDAETS DWUM SPOSOBAMI:
   Ӡ POMO]X PROCEDUR DISPOSE(<PEREMENNA TIP UKAZATELX> WS 
PEREMENNYŠ POINTER-TIP OSWOBOVDA@TSѠ ɠ DOSTUР ˠ NI͠ BOLE 
NEWOZMOVEN.
    POMO]X PROCEDUR MARK(<PEREMENNA TIP UKAZATELX> POINTER-
PEREMENNA POME^AETSQ  ZATE ON MOVE BYT UDALEN Iڠ "KU^I 
PROCEDURO RELEASE(<PEREMENNA TIP UKAZATELX>) tAKI OBRAZOM,D 
UDALENIѠ Ӡ POMO]X \TOʠ PROCEDUR٠ DINAMI^ESKAѠ PEREMENNA 
PRODOLVAE BYT DOSTUPNOJ.
    dLѠ WY^ISLENIѠ ABSOL@TNOGϠ ADRES KAKOJ-LIBϠ PEREMENNO 
PROGRAMM٠ SU]ESTWUE STANDARTNA FUNKCI ADR(<IMѠ PEREMENNOJ>) 
\T FUNKCIѠ WOZWRA]AEԠ CELOŠ DESQTI^NOŠ ZNA^ENIŠ ADRES 
PEREMENNOJ eSLɠ PEREMENNAѠ IMEEԠ STRUKTURNYʠ TIP T 
WOZWRA]AETS ADRE PERWOG BAJT \TO PEREMENNOJ.
    wOZMOVN TAKV WOZWRA]ENI ADRESO ^ASTE STRUKTUR \LEMENTO 
MASSIWOW POLE  ZAPISQ  T.D.
.PA
            2. oBLASTX PAMQTI "KU^A" I STEKI.

   uKAZATELؠ STEK (STACKPOINTER OPREDELQE SWOBODNO MESTϠ  
"KU^E  NAIWYS[I ADRESOM.
   uKAZATELؠ REKURSI (RECURPTR POKAZYWE ADRE N  KILOBAJ 
MENX[ (40 HEX) ^E STACKPOINTER.
   sISTEM PROWERQE PR KAVDO OBRA]ENI  PROCEDURA NEW/GETME 
ILɠ ˠ REKURSIWNY͠ PROCEDURAM WYPOLNQETSѠ Lɠ SOOTNO[ENIE 
HEAPPTR<RECURPTR.
    SLU^A ,ESL \T SOOTNO[ENI NŠ WYPOLNQETSQ-GENERIRUETS 
SOOB]ENI O O[IBK WREMEN ISPOLNENI (RU TIM ERROR).
   pROWERK USLOWIQ NAHODITSѠ L UKAZATELؠ STEK (STACKPTR 
DALX[E,^E͠ UKAZATEL REKURSI (RECURPTR N PROIZWODITSQ tAKA 
PROWERK MOVE OKAZATXS NEOBHODIMOJ,KOGD REKURSIWNAѠ PROCEDUR 
SEBѠ WYZYWAEԠ BOLE ^E 300-40 RAZ  \TO͠ SLU^AŠ UKAZATEL 
STEK DOLVEΠ BYT PEREDWINU  STORONՠ UWELI^ENIQ dLѠ \TOG 
NUVNϠ WYPOLNIT SLEDU@]U OPERACI PRISWAIWANI NOWOGϠ ZNA^ENI 
UKAZATEL REKURSII:
             RECURPTR:=STACKPTR-2*MAXDEPTH-512,
      GDEMAXDEPTH -OVIDAEMAѠ MAKSIMALXNAѠ GLUBIN REKURSIɠ  
PROGRAMME,
             51 -UWELI^ENI PAMQTɠ (נ BAJTAH),PREDNAZNA^ENNO 
DLQ HRANENIQ PARAMETROW I WNE[NIH SSYLOK.

.PA
            3 . rASPREDELENIE PAMQTI.

     3.1.rASPREDELENIE ozu PRI KOMPILQCII W PAMQTX
     (OPCIQ KOMPILQTORA "COMPILE -->MEMORY).

  +-------------------+ ADRES ozu 0000 HEX
  I                 I <- OPERACIONNAQSISTEMACP/M
  I                   I  (ZONA SWQZI)
  +-------------------+
  I                   I <- BIBLIOTEKA pASKALQ
  +-------------------+
  I                   I <- INTERFEJS TURBO, REDAKTOR,
  I                   I    KOMPILQTOR
  +-------------------+   
  I                   I <- SOOB]ENIQ OB O[IBKAH,ESLI
  I                   I    ONI ZAGRUVENY
  +-------------------+
  I                   I <- TEKST PROGRAMMY NA pASKALE
  I                   I
  +-------------------+
  I                   I
  I                   I  <- OB'EKTNYE KODY. rASPOLAGA@TSQ
  I                   I    " SNIZU-WWERH" ZA NAINIZS[IM 
  I                   I     ADRESOM TABLICY IMEN
  +-------------------+
  I                   I  <- TABLICY IMEN RASPOLAGA@TSQ
  I                   I  "SWERHU-WNIZ", NA^INAQ S NAIWYS[EGO
  ɠ                ɠADRESAZANQTOG OB'EKTNYM KODAMI
  +-------------------+
  I                   I  STEK CENTRALXNOGO PROCECCORA
  +-------------------+
  I                   I  OPERACIONNAQ SISTEMA CP/M(BIOS,BDOS I 
  I                   I  DR. PROGRAMMY)
  I                   I
  +-------------------+ NAIWYS[IJ ADRES ozu (FFFF HEX DLQ
                         WOSXMIBITNYH I FFFFFFFF HEX DLQ
                         [ESTNADCATIBITNYH |wm )                  
                   
         3.2. rASPREDELENIE PAMQTI PRI KOMPILQCII NA DISKETU
              (OPCIQ KOMPILQTORA COMPILE-->COMFILE).
     
    rASPREDELENIŠ PAMQTɠ  \TO SLU^A IDENTI^N PUNKT 3. D 
ADRESA GDŠ ZAKAN^IWAETS ISHODNY TEKS PROGRAMM N pASKALE 
rASPOLOVENIŠ OB'EKTNYȠ KODOנ OTNOSITELXNϠ NEBOLX[OGϠ BUFER 
WYWODA נ KOTORYʠ POME]A@TS ZAPISɠ TRANSLIRUEMOʠ PROGRAMMY 
NAHODITSѠ נ oz N TO MESTE GD נ REVIMŠ KOMPILQCIɠ 3.1 
RASPOLAGALIS B OB'EKTNY KOD WSE OTTRANSLIROWANNO PROGRAMMY 
pOSKOLXKU KAˠ UVŠ GOWORILOSX WYHODNOʠ BUFEҠ PO^Tɠ WSEGD 
MENX[E ^E͠ WSѠ PROGRAMMA MEST  oz OΠ ZANIMAEԠ MENX[E 
iSKL@^ENI SOSTAWLQE TO SLU^AJ KOGD ISHODNA PROGRAMM MAL 
NASTOLXKO ^TϠ OB'EKTNAѠ (OTTRANSLIROWANNAQ PROGRAMM ZAJME 
MEST MENX[E ^E WELI^IN WYHODNOG BUFERA.

.PA
           3.3.rASPREDELENIE PAMQTI W ZAGRUVENNOJ
               OB'EKTNOJ PROGRAMME.

   dϠ KONC ISHODNOG TEKST N pASKAL RASPREDELENIŠ PAMQTɠ  
oz ANALOGI^N PUNKTA 3.  3.2.
   iSHODNYʠ TEKSԠ N pASKAL OSTAETS נ oz PRɠ WYPOLNENI 
PROGRAMMY OTTRANSLIROWANNO NEPOSREDSTWENN  PAMQTX.z ISHODNY 
TEKSTO IMEE MEST SLEDU@]E RASPREDELENI PAMQTI:
 I                     I <- ISHODNYJ TEKST NA pASKALE
 +---------------------+       
 I                     I <- OB'EKTNYE KODY PROGRAMMY
 I                     I
 I                     I
 +---------------------+ <- NA^ALO "KU^I":WER[INA EE
 I                     I   RASPOLAGAETSQ W NAIWYS[EM
 I                     I   SWOBODNOM ADRESE.
 I                     I ^RECURPTR
 +---------------------+ <- WER[INA UKAZATELQ REKURSII
 I                     I 
 I                     I ^ STACKPTR                     
 +---------------------+ <- WER[INA UKAZATELQ STEKA
 I                     I <- GLAWNAQ TABLICA IMEN:NA^INAETSQ
 I                     I    S NIZ[EGO ADRESA.
 +---------------------+ 
 I                     I <-  OPERACIONNAQ SISTEMA CP/M
 +---------------------+ 

           3.4. rASPREDELENIE PAMQTI PRI WYPOLNENII
                   KOMANDNYH FAJLOW (COM-FILES).

 +---------------------+
 I                     I OS CP/M (ZONA SWQZI)
 +---------------------+ <- 100 HEX
                       <- BIBLIOTEK pASKALQ-8 I WOZMOV-
 I                     I     NO, ABSOL@TNYE PEREMENNYE.
 +---------------------+ <- sTARTOWYJ ADRES PROGRAMMY
 I                     I <- OB'EKTNYE KODY 
 I                     I
 +---------------------+ <- WER[INA UKAZATELQ "KU^I"
 I                     I     RABO^AQ OBLASTX "KU^I"
 I                     I 
 +---------------------+ <- UKAZATELX WER[INY STEKA REKU-
 I                     I      RSII
 I                     I      OBLASTX STEKA REKURSII
 +---------------------+ <- UKAZATELX WER[INY STEKA PRCES- 
 I                     I      SORA. sTEK PROCESSORA.
 +---------------------+ <- GLAWNAQ TABLICA IMEN
 I                     I <- WSTROENNYJ ZAGRUZ^IK TURBO
 +---------------------+
 I                     I os CP/M
 +---------------------+  
.PA

