. , . ( - ) , , - .
, , , . , ( ) .
(. .4.1) , , , -. ORD(X), X. ORD(X) X, .. ORD(X) = X X, . ORD(X) , 0 1 ( ), 0 155 (), 0 65535 (). - , ORD(X) .
:
PRED (X) - (, ORD(X)- 1), ..
ORD(PRED(X)) = ORD(X) - 1;
SUCC (X) - , ORD(X) +1, ..
ORD(SUCC(X)) = ORD(X) + 1.
,
var
: Char;
begin
:= '5';
end.
PRED(C) '4', SUCC(C) - '6'.
, , PRED(X) , a SUCC(X) - .
. , , . . 4.1 , .
4.1
, | ||
Byte | 0...255 | |
ShortInt | -128...+127 | |
Word | 0...65535 | |
Integer | -32768...+32767 | |
LongInt | -2 147 483 648... +2 147 483 647 |
, .. , WORD, BYTE ( ), LONGINT INTEGER, , , SHORTINT.
, , .4.2. b, s, w, i, l BYTE, SHORTINT, WORD, INTEGER LONGINT, x - ; vb, vs, vw, vi, vl, vx . .
|
|
4.2
, | ||
abs (x) | x | |
chr(b) | Char | |
dec (vx[, i]) | - | vx i, i - 1 |
inc(vx[, i]) | - | vx i, i - 1 |
Hi(i) | Byte | |
Hi(w) | To | |
Lo(i) | " | |
Lo (w) | " | |
odd(l) | Boolean | True, - |
Random (w) | , 0...(w-l) | |
sgr (x) | X | |
swap (i) | Integer | |
swap (w) | Word |
, , - , ( ). , , :
var
: Integer;
, : Real;
begin
:= 32767; { INTEGER}
:= + 2; { !}
:= LongInt()+2; { }
WriteLn(x:10:0, :10:0)
end.
-32767 32769
. FALSE () TRUE (). :
ord(False) = 0;
ord(True) = 1;
False < True;
succ(False)= True;
pred(True) = False.
, , :
var
1: Boolean;
begin
for 1:= False to True do....
. . 0...255. , ORD.
ASCII (American Standard Code for Information Interchange - ). 7- , .. 128 0 127. 8- , , 0 255. 0...127 ASCII (. 4.3). 128...255 ( .2 ).
4.3
ASCII | |||||||
NUL | BL | ' | |||||
! | A | a | |||||
STX | " | b | |||||
# | |||||||
EOT | $ | D | d | ||||
ENQ | % | E | e | ||||
& | F | f | |||||
BEL | ' | G | g | ||||
BS | ( | H | h | ||||
) | I | i | |||||
LF | * | J | j | ||||
VT | + | k | k | ||||
FF | , | L | i | ||||
CR | - | M | m | ||||
SO | . | N | n | ||||
SI | / | ||||||
DEL | p | P | |||||
DC1 | Q | q | |||||
DC2 | R | r | |||||
DC3 | S | s | |||||
DC4 | T | t | |||||
NAK | U | u | |||||
SYN | V | V | |||||
ETB | w | w | |||||
CAN | X | X | |||||
EM | |||||||
SUB | : | z | z | ||||
ESC | / | [ | { | ||||
FS | < | \ | l | ||||
GS | = | ] | } | ||||
RS | > | ^ | ~ | ||||
US | ? | n |
|
|
, , , , , .
4.4
, | |||
Real | 11...12 | -39...+38 | |
Double | 15...16 | -324...+308 | |
extended | 19...20 | -4951...+4932 | |
comp | 19...20 | -2*1063+1...+2*63-1 |
.4.4, 6 10 :
s | e | m |
s - ; - ; ; m - .
m 23 ( SINGLE) 63 ( EXTENDED) , 7...8 SINGLE 19...20 EXTENDED . () () , , , ().
, , SINGLE, DOUBLE EXTENDED . , . , ( ) . .1. .
. :
set 87=N
set 87=Y
, - .
, EXTENDED, .
|
|
, (. 2.6 .2) :
{$N+,E+}
type
RealType = Real:
var
epsilon: RealType;
begin
epsilon:= 1;
while 1+epsilon/2 > 1 do
epsilon:= epsilon/2;
WriteLn(epsilon)
end.
REALTYPE ( SINGLE, REAL, DOUBLE EXTENDED)
1.08420217248550-0019
EXTENDED. , 1 + epsilon/2 WHILE, EXTENDED. (, REALTYPE = REAL 9. 09494701772928-0013), :
{$N+,E+}
type
RealType= Real;
var
epsilon, epsl:RealType;
begin
epsilon:= 1;
repeat
epsilon:= epsilon/2;
epsl:= 1 + epsilon
until epsl = 1;
WriteLn(2*epsilon)
end.
, REAL . , REAL REAL EXTENDED. REAL , .. . , , SINGLE DOUBLE: REAL 2...3 . , .
, . , - , 19...20 ( 8 ). : , .. : .
, . 2.5. REAL , INTEGER - .
4.5
abs (x) | Real, Integer | ||
rn () | Real | Real | ( ) |
cos () | To | , | |
() | " | " | |
fr () | " | " | |
int(x) | " | " | |
ln(x) | " | " | |
Pi | - | " | = 3.141592653... |
Random | - | " | , 0...[1] |
Pandom(x) | Integer | Integer | , 0...(-1) |
Randomize | - | - | |
sin(x) | Real | Real | , |
sqr (x) | To | ||
sqrt (x) | " | " |
|
|
( : , c, ) , .. c . , , c , . , -5520 .
PACKED, , , , ; : , .
. , (, ). , :
type
digit =array[0..9] of Char;
matrix =array[Byte] of Single;
var
m: matrix;
d: digit;
i: Integer;
begin
.......
m[17]:= ord(d[i-l])/10;
.......
end.
:
< > = ARRAY [ <..> ] OF <>
< > - ;
ARRAY, OF - (, );
<..> - , ; , , - ;
<> - .
, LONGINT - LONGINT.
, , :
var
,b: array [1..10] of Real;
-, . <>, OF, - , , , , :
type
mat = array [0..5] of array [-2..2] of array [Char] of Byte;
:
type
mat = array [0..5,-2..2,Char] of Byte;
, , - , ( ) , , , 65520 . , . , ,
var
: array[1..2,1..2] of Byte;
begin
a [1,1]:=1;
a [2,1]:=2;
a [l, 2]:=3;
a [2,2]:=4;
end.
1,3,2, 4. MOVE.
, :
var
,b:array [1..5] of Single;
begin
.....
a:= b;
.....
end.
, . . , ,
if a = b then...
, :
var
a,b:array [1..5] of Single;
eq:Boolean;
i:Byte;
begin
.....
eq:= True; for i:= 1 to 5 do
if a[i] <> b[i] then
eq:= False;
if eq then
.....
end.
- , , . , () . , .
:
< > = RECORD <.> END
< > - ;
|
|
RECORD, END - (,); <.> - ; , .
, . () (), :
type
BirthDay = record
day,month: Byte;
year: Word
end;
var
a,b: Birthday;
.......
BIRTHDAY ( ) DAY, MONTH YEAR (, ); BIRTHDAY.
, ,
:= b;
, , .. , :
.day:= 27;
b.year:= 1939;
:
type
BirthDay = record
day,month: Byte;
year: Word
end;
var
: record
name: String;
bd: BirthDay
end;
begin
.....
if c.bd.year = 1939 then...
end.
, WITH:
WITH <> DO <>
WITH, DO - (, );
<> - , , , ; <> - .
:
with c.bd do month:= 9;
with do with bd do month:= 9;
with c,bd do month:= 9;
c.bd.month:= 9;
, :
type
Forma = record
Name: String;
case Byte of
0: (Birthplace: String [40]);
1: (Country: String [20];
EntryPort: String [20];
EntryDate: 1.. 31;
ExitDate: 1..31)
end;
FORMA NAME , CASE... OF. ( - : 0 1). , , . , , , .
, , .. . , :
var
mem4: record case Byte of
0: (by: array'[0..3] of Byte);
1: (wo: array [0..1] of Word);
2: (lo: longint);
end;
4 , 4 . , , 4 ( ), WORD ( WO) , , LONGINT ( LO). , , :
var
: Word;
xb: Byte;
x1: Longint;
begin
.....
with m do
begin
lo:= trunc(2*pi*x);
if wo[1] = 0
then if by[l] = 0 then
xb:= x[0]
else
x:= wo[0]
else
x1:= lo
end;
.....
end.
CASE... OF, , , , . END CASE... OF. ( - , END, RECORD). CASE... OF : , , , . , . , . , : , , :
type
reel = record
a: Byte;
b: Word;
end;
rec2 = record
: longint;
case x: Byte of
1: (d: Word);
2: (e: record
case Boolean of
3:(freel);
3:(g Single);
'3':( Word);
end)
end;
var
r: rec2;
begin
r.x:= 255;
if r.e.g = 0 then
WriteLn('O.K. ')
else
WriteLn(r.e.g)
end.
case Boolean of
, , , , , - TRUE FALSE. , , - , , .
, , , -, .. , (. ).
- . . , , 0 256 (, , ). .
, , . , . .
:
type
digitChar= set of '0'..'9';
digit = set of 0..9;
var
sl,s2,s3:digitChar;
s4,s5,s6:digit;
begin
.....
s1:=['1','2','3'];
s2:=['3','2','1'];
s3:=['2','3'];
s4:=[0..3,6];
s5:=[4,5];
s6:=[3..9];
.....
end.
S1 S2 , S3 S2, .
:
< > = SET OF <.>
< > - ;
SET, OF - (, );
<.> - ,
, WORD, INTEGER, LONGINT.
: , ; (. ). , - - .
:
* ; , ; , S4*S6 [3], S4*S5 - (. );
+ ; , :
S4+S5 [0,1,2,3,4,5,6];
S5+S6 [3,4,5,6,7,8,9];
- ; , :
S6-S5 [3,6,7,8,9];
S4-S5 [0,1,2,3,6];
= ; TRUE, ;
<> ; TRUE, ;
<= ; TRUE, ;
>= ; TRUE, ;
IN ; - , - ; TRUE, , :
3 in s6 TRUE;
2*2 in s1 FALSE.
. INCLUDE - . :
INCLUDE (S,I)
S - , TSetBase;
I - TSetBase, .
EXCLUDE - . :
EXCLUDE(S,I)
- , INCLUDE.
+ -, , c .
4.1, , . , . BEGINSET, 2 N. PRIMERSET ( ) 1. :
- BEGINSET NEXT PRIMERSET;
- BEGINSET NEXT , , ..2*NEXT, 3*NEXT ..
, BEGINSET .
N, 256 .
4.1
Program Primer_numbers_detect;
{ N }
const
N = 255; { }
type
SetOfNumber = set of 1..N;
var
n1,next,i: Word; { }
BeginSet, { }
PrimerSet: SetOfNumber; { }.
begin
BeginSet:= [2..N]; { }
PrimerSet:= [1]; { }
next:= 2; { }
while BeginSet <> [] do { }
begin
n1:= next; {n1-, (next)}
{ :}
while n1 <= N do
begin
Exclude(BeginSet,nl);
n1:= n1+next { }
end; { }
Include(PrimerSet,next);
{ , }
repeat
inc(next)
until (next in BeginSet) or (next > N)
end; { }
{ :}
for i:= 1 to N do
if i in PrimerSet then Write(i:8);
WriteLn
END.
. SETOFNUMBER :
type
SetOf Number = set of 1.. 1;
.
1 3 5 7
BeginSet PrimerSet , ! : , ( ); , 1, - 0. , 8 . , 8 . - 256 . 16 .
: 1.256. 256 , :
Error 23: Set base type out of range.
( 23: .)
- 0 255 256 ( -5536 ).
STRING () . ARRAY[O..N] OF CHAR, , , - 0 N, N - . N STRING [N] , 255. N, , N=255.
. , ARRAY [0..N] OF CHAR, :
var
st: String;
begin
.....
if st[5] = 'A' then...
end.
0 , 1. . , :
var
st: String;
i: Byte;
begin
i:= ord(st [0]); {i - }
while (i <> 0) and (st[i] = ' ') do
begin
dec(i);
st[0]:= chr(i)
end;
.....
end.
ORD(st[0]), .. , LENGTH(st), :
while (Length(st)<>0) and (st[Length(st)]=' ') do
st[0]:= chr(Length(st)-1)
+ - , :
st:= '1 + 'b';
st:= st + ''; {st "abc"}
N, . , , 1:
var
st: String [1];
begin
St:='123';
WriteLn(st)
end.
.
CONCAT(S1 [,S2,..., SN]) - STRING; , - SI, S2,..., SN.
COPY(ST, INDEX, COUNT) - STRING; ST COUNT , INDEX.
DELETE (ST, INDEX, COUNT) - ; UNT ST, INDEX.
INSERT (SUBST, ST, INDEX) - ; SUBST ST, INDEX.
LENGTH (ST) - INTEGER; ST.
POS (SUBST, ST) - INTEGER; ST SUBST , ; , .
STR(X [; WIDTH [: DECIMALS] ], ST) - ; X ST , WRITELN ; WIDTH DECIMALS, , : WIDTH , X, a DECIMALS - ( , - ).
VAL(ST, X, CODE) - ; ST X, ; CODE , , X , ST, , ; ST , ; , val (' 123',k,i) : k 123, i 0, val (' 123 ', k, i) : k , a i 4.
UPCASE () - CHAR; , , ; ( ), .
:
var
: Real;
: Integer;
st,st1: String;
begin
st:= concat('12','345'); { st 12345}
st1:= copy(st,3,Length(st)-2); {st1 345}
insert('-',st1,2); { st1 3-45}
delete(st,pos('2',at),3); { st 15}
str(pi:6:2,st); { st 3.14}
val(''3,1415',x,y); { 2, }
end.
=, , >, <, >=, <= , (. .4.1 .2). , R(0).
TRUE:
'''' < '. '
'' > '1'
'Turbo' <' Turbo Pascal'
'' >'Turbo Pascal'
( , , ), - .
. -, , . -, . , . , . -, .
:
<> = FILE OF <>;
<> = TEXT;
<> = FILE;
<> - ( );
FILE, OF - (, );
TEXT - ;
<> - , .
:
type
product = record
name: String;
code: Word;
cost: comp
end;
textSO = file of String [80];
var
fl: file of char;
f2: text;
f3: file;
f4: text80;
f5: file of product;
:
- ( FILE OF...);
- ( TEXT);
- ( FILE).
F1, F4 F5- , F2 - , F3 - . , , . . .
: INPUT - OUTPUT - . , , :
PROGRAM NameOfProgram(input,output);
, .
, ( ). , : .
ASSIGN:
ASSIGN (<..>, < ..>);.
<..> - ( , );
< ..> - , .
, , ASSIGN(f, ' '), INPUT OUTPUT.
, . , .
Close.
, , ASSIGN, . :
CLOSE (<..>)
. CLOSE . , ASSIGN.
RENAME.
. :
RENAME (<..>, < >)
< > - , . , RESET, REWRITE APPEND.
ERASE.
-. :
ERASE (<..>)
, RESET, REWRITE APPEND.
, RENAME CLOSE . , , NAME. , , - ( ). , .
var
fi: text; { }
fo: text; { }
name: String;
name_bak: String;
k, i: Word;
const
bak = '.bak';
begin
.......
{ name bak .:}
k:= pos('.',name);
if k = 0 then
k:= length(name) +1;
name_bak:= copy(name,1,k-1) + bak;
{ :}
assign(fi,name);
{$I-} ' reset(fi);
if lOResult <> 0 then
halt; { : }
close(fi);,
{ .-:}
assign(f,name_bak);
reset (fo);
{$I+}
if lOResult = 0 then
begin {. :}
close(fo); { }
erase(fo) { }
end;
{ , :}
rename(f i,name_bak);
reset(fi);
assign(fo,name);
rewrite(fo);
.......
end.
: . ,
rename(fi,name_bak);
, .
FLUSH.
, , . :
FLUSH (<..>)
, () . FLUSH . , RESET.
EOF (<. . >): BOOLEAN.
, . TRUE, . , , - .
CHDIR.
. :
CHDIR (<>)
<> - , .
GETDIR.
( ). :
GETDIR (<>, <>)
<> - WORD, : 0 - , 1 - , 2 - ..;
<> - STRING, .
MKDIR.
. :
MKDIR (<>)
<> - STRING, . , .. .^
RMDIR.
. :
RMDIR (<>)
, .. .
IORESULT: WORD.
-.
, . - .. , IORESULT -. {$I-} , {$I+} . , - , - , IORESULT.
DOS.TPU, TURBO. TPL. . USES DOS ( . .9).
DISKFREE (<>): LONGINT.
. <> BYTE : 0 - , 1 - , 2 - .. -1, .
DISKSIZE (<>): LONGINT.
-1, .
FINDFIRST.
, . :
FINDFIRST (<>, <>, <>)
<> - , ;
<> - BYTE, (); <> - SEARCHREC, .
- :
* , ( ) ;
? , .
:
*. * ;
*. * , (cl.pas,!2345, c.dat ..);
a?.dat a0.dat, az.dat ..
'. ,
:\dir\subdir\*.pas
.PAS SUBDIR, ; SUBDIR DIR, , , .
<> (), , FINDFIRST. DOS. TPU:
const
Readonly = $01; { }
Hidden = $02; { }
SysFile = $04; { }
VolumeID = $08; { }
Directory = $10; { }
Archive =$20; { }
AnyFile= $3F; { }
, $ 06 - / .
FINDFIRST SEARCHREC. DOS. TPU :
type
SearchRec = record
Fill: array [1..21] of Byte;
Attr: Byte;
Time: LongInt;
Size: LongInt;
Name: String.[12]
end;
Attr - (. );
Time - ; ; UNPACKTIME (.);
Size - ;
Name - . TIME
UNPACKTIME(Time: Longlnt; var T:DateTime).
DOS. TPU DateTime:
type
DateTime = record
year:Word; { 19}
month:Word; { I..12}
day:Word; { 1..31}
hour:Word; { 0..23}
min:Word; { 0..59}
sec:Word { 0..59}
end;
FINDFIRST DOSERROR WORD, :
0 - ;
2 - ;
18 - ( ).
FINDNEXT.
. :
FINDNEXT (<.>)
<.> - SEARCHREC (. ), .
FINDFIRST FINDNEXT. PAS- :
Uses DOS;
var
S: SearchRec;
begin
FindFirst('*.pas',AnyFile,S);
while DosError = 0 do begin
with S do
WriteLn(Name:12,Size:12);
FindNext(S)
end
end.
GETFTIME.
. :
GETFTIME (<..>, <>)
<> - LONGINT, .
SETFTIME.
. :
SETFTIME (<..>, <>)
<> - .
DATETIME LONGINT
PACKTIME (var T:DateTime; var Time:LongInt).
( DA TETIME . ).
GETFATTR.
. :
GETFATTR (<..>, <>)
<> - WORD, .
SETFATTR.
. :
SETFATTR (<..>, <>)
FSEARCH: PATHSTR.
. :
FSEARCH (<>, <.>)
<> - ( PATHSTR; ); <.> - , ( STRING); .
FSEARCH PATHSTR. , , .
PATHSTR DOS.TPU :
type
PathStr = String[79];
, , <.>. , , . , , .
, , \SUBDIR\MYFILE.PAS. , - ,
FSEARCH ('MYFILE,PAS','\SUB; \SUBDIR').
\SUBDIR\MYFILE.PAS,
FSEARCH ('MYFILE.PAS1,'\SUB')
. , SUBDIR, MYFILE.PAS ( , ).
FSPLIT.
, .. , . :
FSPLIT (<>, <>, <>, <>)
<> - , ( , , );
<> - DIRSTR=STRING [67], ;
<> - NAMESTR=STRING [8], ;
<> - EXTSTR=STRING [4],