рхохгхпнбюммюъ йнмярюмрю ъбкъеряъ оепелеммни я онярнъммшл гмювемхел , ее мекэгъ хяонкэгнбюрэ б нопедекемхх дпсцху йнмярюмр хкх рхонб. рюйхл напюгнл, рюй йюй MIN х MAX ъбкъчр- яъ рхохгхпнбюммшлх йнмярюмрюлх, якедсчыюъ хмярпсйжхъ ъбкъер- яъ ньханвмни: CONST MIN : INTEGER = 0; MAX : INTEGER = 50; TYPE RANGE : ARRAY[MIN..MAX] OF INTEGER; (* ньхайю: опх нопедекемхх рхою хяонкэгсеряъ рхохгхпнбюммюъ йнмярюмрю *) 15.2. ярпсйрспмше рхохгхпнбюммше йнмярюмрш й ярпсйрспмшл рхохгхпнбюммшл йнмярюмрюл нрмняъряъ йнмя- рюмрш рхою люяяхбнб х рхою гюохях. нмх вюярн хяонкэгсчряъ дкъ янгдюмхъ хмхжхюкхгхпнбюммшу рюакхж дкъ тсмйжхи напюанрйх хгнапюфемхи х р.д. б онякедсчыху пюгдекюу ондпнамн нохяш- бюеряъ йюфдюъ хг ярпсйрспмшу йнмярюмр. 15.2.1. йнмярюмрш рхою люяяхбнб нопедекемхе йнмярюмрш щрнцн рхою янярнхр хг хдемрхтхйю- рнпю, гю йнрнпшл якедсер дбнернвхе, оняке дбнернвхъ гюохяш- бюеряъ хдемрхтхйюрнп рхою, опедбюпхрекэмн нопедекеммнцн йюй рхо люяяхбю хкх нохяюмхе рхою люяяхбю. оняке мецн ярюбхряъ гмюй пюбемярбю х гюрел гмювемхе йнмярюмрш, опедярюбкеммне б бхде мюанпю йнмярюмр, нрдекеммшу дпсц нр дпсцю гюоършлх х гюйкчвеммшу б йпсцкше яйнайх. - 72 - опхлепш: TYPE STATUS = (ACTIVE,PASSIVE,WAITING); STRING_REP = ARRAY[STATUS] OF STRING[7]; CONST STAT : STRING_REP = ('ACTIVE','PASSIVE','WAITING'); б дюммнл опхлепе нопедекъеряъ йнмярюмрю STAT (рхохгхпн- бюммюъ йнмярюмрю рхою люяяхбю), йнрнпюъ лнфер ашрэ хяонкэгн- бюмю дкъ опенапюгнбюмхъ гмювемхи яйюкъпмнцн рхою STATUS б яннрберярбсчыее хл ярпнйнбне гмювемхе. йнлонмемрюлх йнмярюм- рш STAT ъбкъчряъ: STAT[ACTIVE] = 'ACTIVE' STAT[PASSIVE] = 'PASSIVE' STAT[WAITING] = 'WAITING' рхо йнлонмемр йнмярюмрш рхою люяяхбю лнфер ашрэ кчани рхо, йпнле рхонб FILE (тюик) х POINTER (сйюгюрекэ). яхлбнкэ- мше йнмярюмрш рхою люяяхбю лнцср ашрэ яоежхтхжхпнбюмш йюй ндхмнвмше яхлбнкш х йюй ярпнйх. рюйхл напюгнл нопедекемхе: CONST DIGITS : ARRAY[0..9] OF CHAR = ('0','1','2','3','4','5','6','7','8','9'); лнфмн гюохяюрэ б анкее сднамни тнпле : CONST DIGITS: ARRAY[0..9] OF CHAR = '0123456789'; 15.2.2. лмнцнлепмше йнмярюмрш рхою люяяхбнб лмнцнлепмше йнмярюмрш рхою люяяхбнб лнфмн нопедекхрэ, бшдекхб йнмярюмрш, нопедекъчыхе гмювемхе он йюфднлс "мюопюб- кемхч" б нрдекэмше яйнайх , нрдекеммше дпсц нр дпсцю гюоърш- лх. кефюыхе бмсрпх йнмярюмрш яннрберярбсчр яюлшл опюбшл хмдейяюл пюглепмнярх. TYPE CUBE = ARRAY[0..1,0..1,0..1] OF INTEGER; CONST MAZE : CUBE = (((0,1),(2,3)),((4,5),(6,7))); BEGIN WRITELN(MAZE[0,0,0],' = 0'); WRITELN(MAZE[0,0,1],' = 1'); WRITELN(MAZE[0,1,0],' = 2'); WRITELN(MAZE[0,1,1],' = 3'); WRITELN(MAZE[1,0,0],' = 4'); WRITELN(MAZE[1,0,1],' = 5'); WRITELN(MAZE[1,1,0],' = 6'); WRITELN(MAZE[1,1,1],' = 7'); END. - 73 - 15.2.3. йнмярюмрш рхою гюохяеи нопедекемхе йнмярюмрш рхою гюохяеи хлеер якедсчысч ярпсйрспс: ямювюкю ярнхр хдемрхтхйюрнп йнмярюмрш, гю мхл дбнернвхе, гю дбнернвхел -- хдемрхтхйюрнп опедбюпхрекэмн нопедекеммнцн рхою гюохях кхан нопедекемхе рхою гюохях, оня- ке йнрнпнцн ярюбхряъ гмюй пюбемярбю х, мюйнмеж, яюлю йнмя- рюмрю, опедярюбкеммюъ б бхде яохяйю йнмярюмр, гюдючыху гмю- вемхе онкеи, нрдекеммшу дпсц нр дпсцю гюоършлх, х гюйкчвем- мнцн б яйнайх. TYPE POINT = RECORD X,Y,Z INTEGER; END; OS = (RT_11,RSX_11,RSTS,UNIX); UI = (CCP,SOMETHING_ELSE,MеNU_MASTER); COMPUTER = RECORD OPERATING_SYSTEMS : ARRAY[1..4] OF OS; USER_INTERFACE : UI; END; CONST ORIGO : POINT = (X : 0; Y : 0; Z : 0;); SUPER_COMP : COMPUTER = (OPERATING_SYSTEMS :(RT_11,RSX_11,RSTS,UNIX); USER_INTERFACE:MеNU_MASTER); PLANOL : ARRAY[1..3] OF POINT = ((X:1;Y:4;Z:5),(X:10;Y:-78;Z:45),(X:100;Y:10;Z:-7)); онкъ-йнмярюмрш днкфмш ашрэ нопедекемш б рнл фе онпъдйе б йюйнл нмх Pюяонкюцючряъ б нопедекемхх рхою гюохяеи. еякх б гюохях яндепфюряъ онкъ рхою тюикнб хкх рхою сйюгюрекеи, рн йнмярюмрш рюйнцн рхою гюохяеи нопедекхрэ мекэгъ. еякх йнмя- рюмрю рхою гюохях яндепфхр бюпхюмрш, рн опнцпюллхяр днкфем кхьэ онке йнмйпермнцн бюпхюмрю. еякх бюпхюмрмюъ вюярэ яндепфхр онке опхгмюйю, рн ецн гмювемхе рнфе якедсер ноPедекхрэ. 15.3. йнмярюмрш лмнфеярбеммнцн рхою йнмярюмрю лмнфеярбеммнцн рхою янярнхр хг ндмни хкх анкее яоежхтхйюжхи щкелемрнб, нрдекеммшу дпсц нр дпсцю гюоъ- ршлх х гюйкчвеммшу б йбюдпюрмше яйнайх. б йювеярбе яоежхтх- йюжхх щкелемрю лнфер бшярсоюрэ йнмярюмрю хкх бшпюфемхе, нцпюмхвхбючыее пюлйх дхюоюгнмю. рюйне бшпюфемхе янярнхр хг дбсу йнмярюмр, нрдекеммшу дпсц нр дпсцю '..'. опхлеп: TYPE LAT = SET OF 'A'..'Z'; RUS = SET OF 'ч'..'в'; - 74 - CONST UPPER_CASE : LAT = ['A'..'Z']; VOCALS : RUS = ['о','ю','я','й','ю','к','э']; DELIMITER : SET OF CHAR = [' '..'/',':'..'?','['..'''','*'..'_']; 16. рхош тюикнб т_ю_и_к_ш наеяоевхбючр опнцпюлле йюмюкш, он йнрнпшл лнфмн бшонкмърэ оепедювс дюммшу. онд тюикнл лнфмн онмхлюрэ кхан дхяйнбши тюик -- щрн тюик, упюмъыхияъ мю дхяйе, х б щрнл яксвюе дюммше явхршбючряъ хкх гюохяшбючряъ мю йюйни- мхасдэ люцмхрмши мняхрекэ, кхан к_н_ц_х_в_е_я_й_х_е с_я_р_п_н_и_я_р_б_ю, рюйхе, мюопхлеп, йюй опедбюпхрекэмн нопедекеммше б яхяреле тюикш INPUT хкх OUTPUT, йнрнпше напюыючряъ й сярпниярбюл вепег ярюмдюпрмше йюмюкш ббндю- бшбндю ноепюжхнммни яхярелш. б йювеярбе кнцхвеяйху сярпниярб лнцср бшярсоюрэ рюйфе йкюбхюрспю хкх щйпюм реплхмюкю. тюик янярнхр хг онякеднбюрекэмнярх йнлонмемр ндмнцн х рнцн фе рхою. йнкхвеярбн йнлонмемр б тюике (пюглеп тюикю) б нохяюмхх тюикю ме нопедекъеряъ. блеярн щрнцн яхярелю ъгшйю PASCAL/FAST упюмхр деяйпхорнп тюикю, днярсо й йнрнпнлс лнфмн онксвхрэ вепег сйюгюрекэ тюикю. йюфдши пюг, йнцдю йюйни-кхан йнлонмемр гюохяшбюеряъ б тюик хкх явхршбюеряъ хг мецн, сйю- гюрекэ тюикю оепелеыюеряъ й якедсчыеи йнлонмемре. ю рюй йюй бяе йнлонмемрш тюикю хлечр ндхмюйнбсч дкхмс, онкнфемхе йюйн- цн-кхан нопедекеммнцн йнлонмемрю лнфмн кецйн бшвхякхрэ. рюйхл напюгнл, сйюгюрекэ тюикю лнфмн оепедбхмсрэ й кчанлс йнлонмемрс тюикю, врн наеяоевхбюер опълни днярсо йн бяел йнлонмемрюл тюикю. 16.1. нопедекемхе рхою тюикнб. нопедекемхе рхою тюикнб мювхмюеряъ гюпегепбхпнбюммшлх якнбюлх FILE OF оняке йнрнпшу гюдюеряъ рхо йнлонмемрнб тюи- кю, нохяюммши йюй нашвмн. - 75 - опхлепш: TYPE PRODUCT_NAME = STRING[80]; PRODUCT = FILE OF RECORD NAME : PRODUCT_NAME; ITEM_NUMBER : REAL; IN_STOCK : REAL; MIN_STOCK : REAL; SUPPLIER : INTEGER; END; VAR PRODUCT_FILE : PRODUCT; PRODUCT_NAMES : FILE OF PRODUCT_NAME; рхонл йнлонмемрнб тюикю лнфер ашрэ кчани рхо, йпнле рхою тюик (еякх бгърэ опхбедеммши опхлеп, рн гюдюмхе рхою FILE OF PRODUCT ме дносяйюеряъ). оепелеммше рхою тюик мекэгъ хяонкэгнбюрэ мх б ноепюрнпюу опхябюхбюмхъ, мх б бшпюфемхъу (йпнле оепедювх оюпюлерпю-оепелеммни б опнжедспе хкх бгърхе ецн юдпеяю). 16.2. ноепюжхх мюд тюикюлх. б онякедсчыху пюгдекюу опхбндхряъ нохяюмхе опнжедсп, опедмюгмювеммшу б PASCAL/FAST дкъ напюанрйх тюикнб. хдемрхтхйюрнп FILVAR хяонкэгсеряъ б дюкэмеиьел дкъ нангмюве- мхъ оеPелеммни рхою тюик, нохяюммни рюй, йюй нохяюмн бшье. 16.2.1. ноепюжхъ ASSIGN (мюгмювемхе хлемх тюикс) яхмрюйяхя: ASSIGN(FILVAR,STR); STR -- щрн ярпнйнбне бшпюфемхе хкх ярпнйнбюъ оепелеммюъ , яндепфюыхе кчане опюбхкэмне хлъ тюикю. щрн хлъ тюикю мюг- мювюеряъ оепелеммни рхою тюик FILVAR х бяе нярюкэмше деярбхъ мюд FILVAR асдср тюйрхвеяйх опедонкюцюрэ деиярбхъ мюд дхяйн- бшл тюикнл. ноепюрнп мюгмювемхъ мхйнцдю ме мсфмн сонрпеакърэ дкъ тюикю, йнрнпши б мюярнъыхи лнлемр нрйпшр. - 76 - 16.2.2. ноепюжхъ REWRITE (янгдюмхе мнбнцн тюикю) яхмрюйяхя: REWRITE(FILVAR); опх бшонкмемхх щрни опнжедспш янгдюеряъ мнбши тюик мю дхяйе я хлемел, мюгмювеммшл оепелеммни рхою тюик (FILVAR) (вепег ASSIGN). мнбши тюик ондцнрюбкхбюеряъ й напюанрйе, рн еярэ сйюгюрекэ тюикю сярюмюбкхбюеряъ мю мювюкн тюикю (мю йнлонмемр я мнлепнл 0). кчани сфе ясыеярбсчыхи тюик я рюйхл фе хлемел опедбюпхрекэмн ярхпюеряъ. дхяйнбши тюик, янгдюбюе- лши опх онлных опнжедспш REWRITE ямювюкю ъбкъеряъ осяршл, рн еярэ нм ме яндепфхр мх ндмнцн йнлонмемрю (оняке бшгнбю REWRITE, EOF(FILEVAR) бяецдю хярхммн). 16.2.3. ноепюжхъ RESET (сярюмнбйю тюикю б хяундмне янярнъмхе) яхмрюйяхя: RESET(FILVAR); опх бшонкмемхх щрни ноепюжхх дхяйнбши тюик я хлемел, мюгмювемшл тюикнбни оепелеммни FILVAR (вепег ASSIGN) , онд- цнрюбкхбюеряъ й напюанрйе х сйюгюрекэ тюикю сярюмюбкхбюеряъ мю мювюкн тюикю, рн еярэ мю йнлонмемр я мнлепнл 0. FILVAR днкфмю гюдюбюрэ сфе ясыеярбсчыхи тюик, б опнрхбмнл яксвюе бнгмхйюер ньхайю ббндю/бшбндю. 16.2.4. ноепюжхъ READ (времхе хг тюикю) яхмрюйяхя: READ(FILVAR, VAR); VAR нангмювюер ндмс хкх анкее оепелеммшу рюйнцн фе рхою, врн х йнлонмемрш оепелеммни FILVAR, нрдекеммшу дпсц нр дпсцю гюоършлх. йюфдюъ оепелеммюъ вхрюеряъ хг опедбюпхрекэмн нрйпшрнцн дхяйнбнцн тюикю х оняке бшонкмемхъ йюфдни ноепюжхх времхъ сйюгюрекэ тюикю оепелеыюеряъ мю якедсчысч йнлонмемрс. опх оношрйе времхъ, йнцдю рейсыюъ онгхжхъ сйюгшбюер мю йнмеж тюикю, р.е. йнцдю EOF(FILVAR)=TRUE, бнгмхйюер ньхайю. - 77 - 16.2.5. ноепюжхъ WRITE (гюохяэ б тюик) яхмрюйяхя: WRITE (FILVAR, VAR); VAR нангмювюер ндмс хкх меяйнкэйн оепелеммшу рнцн фе рхою, врн х йнлонмемрш оепелеммни FILVAR, нрдекеммшу дпсц нр дпсцю гюоършлх. йюфдюъ оепелеммюъ гюохяшбюеряъ б тюик х оня- ке йюфдни гюохях сйюгюрекэ тюикю оепелеыюеряъ мю якедсчысч йнлонмемрс. 16.2.6. ноепюжхъ SEEK (оепелеыюер сйюгюрекэ мю N-ши йнлонмемр тюикю) яхмрюйяхя: SEEK(FILVAR, N); опх бшонкмемхх йнлюмдш SEEK сйюгюрекэ тюикю оепелеыюеряъ мю N-и йнлонмемр тюикю, нангмювеммнцн FILVAR. N -- щрн жекнвхякеммне бшпюфемхе. онкнфемхе оепбни йнлонмемрш яннрберярбсер N = 0 (мскч). врнаш сбекхвхрэ тюик, лнфмн оепедбхмсрэ сйюгюрекэ гю онякедмхи йнлонмемр тюикю: рюй напюыемхе SEEK(FILVAR,FILESIZE(FILVAR)) ядбхцюер рейсысч онгхжхч мю йнмеж тюикю. 16.2.7. ноепюжхъ FLUSH (нвхярйю астепю яейрнпю) яхмрюйяхя: FLUSH(FILVAR); йнлюмдю FLUSH нясыеярбкъер нвхярйс бмсрпеммецн астепю яейрнпю дхяйнбнцн тюикю FILVAR, х цюпюмрхпсер, врн астеп яейрнпю ашк гюохяюм мю дхяй, еякх бн бпелъ онякедмецн намнб- кемхъ тюикю бшонкмъкхяэ йюйхе-кхан ноепюжхх гюохях. FLUSH наеяоевхбюер рюйфе, врн якедсчыюъ ноепюжхъ времхъ деиярбхрекэмн асдер вхрюрэ дюммше я дхяйнбнцн тюикю. ноепюжхч FLUSH ме якедсер опхлемърэ, еякх тюик гюйпшр. - 78 - 16.2.8. ноепюжхъ CLOSE (гюйпшбюер нрйпшрши тюик) яхмрюйяхя: CLOSE(FILVAR); дхяйнбши тюик, мюгмювеммши оепелеммни FILVAR, гюйпшбюеряъ х яопюбнвмхй дхяйю намнбкъеряъ я рел, врнаш нрнапюгхрэ мнбше ябедемхъ н янярнъмхх тюикю. якедсер нрле- рхрэ, врн тюик якедсер гюйпшбюрэ дюфе, еякх нм ашк рнкэйн явхрюм я дхяйю, рюй йюй йюфдши нрйпшрши тюик рпеасер гюрпюр оюлърх нйнкн 0,5KB. 16.2.9. ноепюжхъ ERASE (ярхпюер дхяйнбши тюик) яхмрюйяхя: ERASE(FILVAR); б пегскэрюре бшонкмемхъ йнлюмдш ERASE ярхпюеряъ дхяйн- бши тюик, мюгмювеммши оепелеммни FILVAR. Eякх тюик нрйпшр (рн еярэ мюд мхл опнбндхкхяэ деиярбхъ, насякнбкеммше йнлюм- дюлх RESET х REWRITE), мн ме ашк гюйпшр, рн оепед ярхпюмхел тюикю менаундхлн ецн гюйпшрэ. 16.2.10. ноепюжхъ RENAME (оепехлемнбшбюер дхяйнбши тюик) яхмрюйяхя: RENAME(FILVAR,STR); дхяйнбнлс тюикс, йнрнпши мюгмювем оепелеммни FILVAR, опхябюхбюеряъ мнбне хлъ, гюдюбюелне бшпюфемхел STR. яопюбнвмхй дхяйю намнбкъеряъ, б мецн гюмняхряъ мнбне хлъ тюикю. мхйнцдю ме якедсер бшонкмърэ ноепюжхч RENAME, еякх тюик нрйпшр. нрлерхл, врн опнцпюллхяр яюл днкфем якедхрэ гю рел, врнаш ме ясыеярбнбюкн тюикю я хлемел, янбоюдючыхл я хлемел, гюдюбюелшл бшпюфемхел STR. Eякх фе рюйни тюик сфе ясыеяр- бсер, рн бшонкмемхе дюммни ноепюжхх лнфер опхбеярх й смхврн- фемхч сфе ясыеярбнбюбьецн я рюйхл хлемел тюикю. мхфе опхбндхряъ опхлеп тсмйжхх, пегскэрюр йнрнпни пюбем TRUE (хярхмю), еякх тюик, оепедюбюелши йюй оюпюлерп, ясыеярбсер, б опнрхбмнл яксвюе пегскэрюр пюбем FALSE (кнфэ). - 79 - TYPE NAME = STRING[66]; FUNCTION EXIST(FILE_NAME: NAME): BOOLEAN; VAR FIL: FILE; BEGIN ASSIGN(FIL, FILE_NAME); (*$I-*) RESET(FIL); (*$I+*) EXIST := (IORESULT = 0); END; 16.3. ярюмдюпрмше тсмйжхх дкъ напюанрйх тюикнб. б ъгшйе пеюкхгнбюмш якедсчыхе ярюмдюпрмше тсмйжхх, опедмюгмювеммше дкъ напюанрйх тюикнб: 16.3.1. тсмйжхъ EOF (опнбепйю мю йнмеж тюикю) яхмрюйяхя: EOF(FILVAR) щрн кнцхвеяйюъ тсмйжхъ, пегскэрюр йнрнпни пюбем TRUE(хярхмю), еякх сйюгюрекэ тюикю мюундхряъ б йнмже дхяйн- бнцн тюикю, рн еярэ гю онякедмхл йнлонмемрнл тюикю хкх еякх тюик ме яндепфхр мх ндмни йнлонмемрш. еякх сйюгюрекэ тюикю мюундхряъ б дпсцнл леяре, рн пегскэрюр бшонкмемхъ тсмйжхх EOF асдер FALSE (кнфэ). 16.3.2. тсмйжхъ FILEPOS (нопедекемхе рейсыецн гмюве- мхъ сйюгюрекъ) яхмрюйяхя: FILEPOS(FILVAR) щрн жекнвхякеммюъ тсмйжхъ, пегскэрюр йнрнпни пюбем мнлепс йнлонмемрю, мю йнрнпши сярюмнбкем сйюгюрекэ тюикю. оепбюъ йнлонмемрю тюикю хлеер мнлеп мнкэ. тсмйжхъ FILEPOS ме лнфер хяонкэгнбюрэяъ дкъ рейярнбнцн тюикю. - 80 - 16.3.3. тсмйжхъ FILESIZE (нопедекемхе пюглепю дхяйн- бнцн тюикю) яхмрюйяхя: FILESIZE(FILVAR) жекнвхякеммюъ тсмйжхъ, пегскэрюр бшонкмемхъ йнрнпни пюбем пюглепс дхяйнбнцн тюикю (рн еярэ пюбем йнкхвеярбс йнл- онмемр тюикю). тюик днкфем ашрэ нрйпшр. еякх FILESIZE(FILVAR) пюбем мскч, рн тюик осяр. ноепюжхъ FILESIZE ме лнфер ашрэ опхлемемю й тюикс, рнкэйн врн янгдюммнлс ное- пюрнпнл REWRITE. 16.4. хяонкэгнбюмхе тюикнб оепед рел, йюй хяонкэгнбюрэ тюик, менаундхлн бшгбюрэ опнжедспс ASSIGN, врнаш мюгмювхрэ тюикс хлъ. оепед бшонкме- мхел ноепюжхх ббндю-бшбндю менаундхлн нрйпшрэ тюик опх онлн- ых опнжедсп REWRITE хкх RESET. б пегскэрюре бшонкмемхъ щрху йнлюмд сйюгюрекэ тюикю сярюмюбкхбюеряъ мю оепбсч йнлонмемрс дхяйнбнцн тюикю, рн еярэ FILEPOS(FILVAR)=0. оняке бшонкмемхъ йнлюмдш REWRITE, FILESIZE(FILVAR) пюбмн мскч. оняке гюбепьемхъ ноепюжхи ббндю/бшбндю тюик наъгюрекэмн мсфмн гюйпшрэ. еякх тюик ме гюйпшр, рн щрн лнфер опхбеярх й онрепе дюммшу, х б щрнл яксвюе тюик ме асдер бмеяем б йюрю- кнц. мхфе опхбндхряъ опхлеп опнцпюллш, йнрнпюъ янгдюер дхя- йнбши тюик я мюгбюмхел PRODUCT.DTA х гюохяшбюер б мецн 100 гюохяеи рхою PRODUCT. рюйхл напюгнл ондцнрюбкхбюеряъ опълни днярсо й тюикс (рн еярэ лнфмн вхрюрэ хкх гюохяшбюрэ йнлон- мемрш, пюяонкнфеммше б кчанл леяре тюикю): - 81 - PROGRAM INIT_PRODUCT_FILE; CONST MAX_NUMBER_OF_PRODUCTS = 100; TYPE PRODUCT_NAME = STRING[20]; PRODUCT = RECORD NAME : PRODUCT_NAME; ITEM_NUMBER : INTEGER; IN_STOCK : REAL; SUPPLIER : INTEGER; END; VAR PRODUCT_FILE : FILE OF PRODUCT; PRODUCT_REC : PRODUCT; I : INTEGER; BEGIN ASSIGN(PRODUCT_FILE,'PRODUC.DAT'); REWRITE(PRODUCT_FILE); (* нрйпшрхе тюикю *) WITH PRODUCT_REC DO BEGIN NAME := '' ; INSTOCK := 0 ; SUPPLIER := 0 ; FOR I:=1 TO MAX_NUMBER_OF_PRODUCTS DO BEGIN ITEM_NUMBER := I; WRITE(PRODUCT_FILE,PRODUCT_REC); END; END; CLOSE(PRODUCT_FILE); END. мхфе опхбндхряъ опхлеп опнцпюллш, йнрнпюъ делнмярпхпсер хяонкэгнбюмхе опнжедспш онхяйю (SEEK) дкъ тюикю я опълшл днярсонл. опнцпюллю хяонкэгсеряъ дкъ намнбкемхъ дхяйнбнцн тюикю PRODUC.DAT, янгдюммнцн опедшдсыеи опнцпюллни. - 82 - PROGRAM UP_DATE_PRODUCT_FILE; CONST MAX_NUMBER_OF_PRODUCTS = 100; TYPE PRODUCT_NAME = STRING[20]; PRODUCT = RECORD NAME : PRODUCT_NAME; ITEM_NUMBER: INTEGER; IN_STOCK : REAL; SUPPLIER : INTEGER; END; VAR PRODUCT_FILE : FILE OF PRODUCT; PRODUCT_REC : PRODUCT; PNR : INTEGER; BEGIN ASSIGN(PRODUCT_FILE,'PRODUC.DAT'); RESET(PRODUCT_FILE); CLRSCR; WRITE('ENTER PRODUCT NUMBER (0= STOP ) '); READLN(PNR); WHILE PNR IN [1..MAX_NUMBER_OF_PRODUCTS] DO BEGIN SEEK(PRODUCT_FILE,PNR-1); READ(PRODUCT_FILE,PRODUCT_REC); WITH PRODUCT_REC DO BEGIN WRITE('ENTER NAME OF PRODUCT (',NAME:20,') '); READLN(NAME); WRITE('ENTER NUMBER IN STOCK (',IN_STOCK:20,') '); READLN(IN_STOK); WRITE('ENTER SUPPLIER NUMBER (',SUPPLIER:20,') '); READLN(SUPPLIER); ITEM_NUMBER := PNR; END; SEEK(PRODUCT_FILE,PNR-1); WRITE(PRODUCT_FILE,PRODUCT_REC); CLRSCR;WRITELN; WRITE('ENTER PRODUCT NUMBER (0 = STOP) '); READLN(PNR); END; CLOSE(PRODUCT_FILE); END. 16.5. рейярнбше тюикш б нркхвхе нр дпсцху рхонб тюикнб, рейярнбше тюикш -- щрн ме опнярн онякеднбюрекэмнярх бекхвхм нпедекеммнцн рхою. унръ нямнбмшлх щкелемрюлх рейярнбнцн тюикю ъбкъчряъ яхлбнкш, нмх нпцюмхгнбюмш б ярпнйх х б йнмже йюфдни ярпнйх ярнхр люпйеп й_н_м_ж_ю я_р_п_н_й_х (онякеднбюрекэмнярэ яхлбнкнб CR/LF -- бнгбпюр_йюперйх/оепебнд_ярпнйх). рюй йюй дкхмю ярпнй лнфер хглемърэяъ, бшвхякхрэ онкнфе- мхе б тюике рни хкх хмни ярпнйх мебнглнфмн. онщрнлс рейярн- - 83 - бше тюикш лнфмн напюаюршбюрэ рнкэйн онякеднбюрекэмн. анкее рнцн, ббнд х бшбнд рейярнбнцн тюикю мекэгъ опнхгбндхрэ ндмнбпелеммн. 16.5.1. ноепюжхх мюд рейярнбшлх тюикюлх оепелеммюъ тюикю рейярнбнцн рхою нохяшбюеряъ опх онлных ярюмдюпрмнцн хдемрхтхйюрнпю рхою TEXT. оепед рел, йюй опхлемърэ нохяюмше дюкее ноепюжхх мюд рейярнбшлх тюикюлх, менаундхлн бшгбюрэ опнжедспс ASSIGN (врнаш гюдюрэ хлъ тюи- кю), ю гюрел оепед бшонкмемхел ноепюжхх ббндю-бшбндю якедсер бшонкмхрэ опнжедспс RESET хкх REWRITE. опнжедспю REWRITE хяонкэгсеряъ дкъ янгдюмхъ мнбнцн рейярнбнцн тюикю. едхмяр- беммни ноепюжхеи, йнрнпсч лнфмн бшонкмхрэ мюд тюикнл, ъбкъеряъ ноепюжхъ днаюбкемхъ мнбшу йнлонмемр б йнмеж тюикю. опнжедспю RESET нрйпшбюер сфе ясыеярбсчыхи тюик дкъ времхъ. опх пюанре я рейярнбшлх тюикюлх дносяйюеряъ рнкэйн онякедн- бюрекэмне времхе йнлонмемрнб тюикю. йнцдю мнбши рейярнбши тюик гюйпшбюеряъ, б йнмже ецн юбрнлюрхвеяйх днаюбкъеряъ лер- йю йнмжю тюикю. ббнд/бшбнд яхлбнкнб б рейярнбшу тюикюу бшонкмъеряъ опх онлных яоежхюкэмшу опнжедсп READ (вхрюрэ) х WRITE (охяюрэ). ярпнйх рейярнбнцн тюикю напюаюршбючряъ опх онлных яоежхюкэмшу ноепюжхи мюд рейярнбшлх тюикюлх:READLN х WRITELN. 16.5.2. опнжедспю READLN яхмрюйяхя: READLN (FILEVAR); бшонкмъер оеPеунд мю мювюкн якедсчыеи ярPнйх, рн еярэ оеPеяйюйхбюер веPег яхлбнкш ярPнйх, бйкчвюъ х онякеднбюрекэ- мнярэ CR/LF. 16.5.3. опнжедспю WRITELN Cхмрюйяхя: WRITELN (FILVAR); гюохяшбюер люпйеп йнмжю ярпнйх, рн еярэ онякеднбюрекэ- мнярэ CR/LF, б рейярнбши тюик. 1 - 84 - 16.5.4. тсмйжхъ EOLN (опнбепйю мю йнмеж ярпнйх) Cхмрюйяхя: EOLN (FILVAR); кнцхвеяйюъ тсмйжхъ, пегскэрюр бшонкмемхъ йнрнпни пюбем TRUE (хярхмю), еякх сйюгюрекэ тюикю ярнхр мю яхлбнке CR люпйепю ярпнйх CR/LF. еякх пегскэрюр ноепюжхх EOF (FILVAR) пюбем "хярхмю", рн х пегскэрюр EOLN (FILVAR) рнфе опхмхлюер гмювемхе TRUE (хярхмю). 16.5.5. тсмйжхъ SEEKEOLN яхмрюйяхя: SEEKEOLN (FILVAR); дюммюъ ноепюжхъ юмюкнцхвмю ноепюжхх EOLN гю хяйкчвемхел рнцн, врн опносяйючряъ опнаекш х гмюйх рюаскъжхх оепед рел йюй бшонкмъеряъ опнбепйю мю йнмеж ярпнйх. пегскэрюр дюммни ноепюжхх хлеер аскебяйхи рхо. 16.5.6. тсмйжхъ SEEKEOF яхмрюйяхя: SEEKEOF (FILVAR); юмюкнцхвмю ноепюжхх EOF, гю хяйкчвемхел рнцн, врн сйю- гюрекэ тюикю оепеяйюйхбюер вепег опнаекш, гмюйх рюаскъжхх х люпйеп йнмжю ярпнйх (онякеднбюрекэмнярэ CR/LF ) оепед рел йюй опнбндхряъ опнбепйю мю йнмеж тюикю. рхо пегскэрюрю -- аскебяйхи. опхлемхрекэмн й рейярнбнлс тюикс пегскэрюр ноепюжхх EOF пюбем TRUE, еякх сйюгюрекэ тюикю пюяонкюцюеряъ