TFIOElem = string [40]; { ...}
{ - 10 , 40 : }
TFIOArray = array [1..10] of TFIOElem;
{ }
{ " "}
procedure DoSortArray(FioCount: Integer; var FioArray: TFIOArray);
Var
I, J: Integer;
STmp: TFIOElem;
MinStrIdx: Integer;
Begin
for I:= 1 to FioCount - 1 do { -}
Begin
MinStrIdx:= I; { i- }
{ , }
for J:= I + 1 to FioCount do { }
if FioArray[J] < FioArray[MinStrIdx] then
MinStrIdx:= J; { }
{ , i- }
if MinStrIdx <> I then
Begin
STmp:= FioArray[I]; { i- }
{ }
FioArray[I]:= FioArray[MinStrIdx];
FioArray[MinStrIdx]:= STmp;
end;
end;
end; {END of DoSortArray}
{ MakeSort ...,
St }
procedure MakeSort(var St: string);
Var
{ 10 , 40 }
StrAr: TFIOArray;
I, Len, CurArIdx: Integer;
Begin
{ ", " ","}
while Pos(', ', St) > 0 do
Delete(St, Pos(', ', St) + 1, 1);
Len:= Length(St); { }
I:= 1; { WHILE}
CurArIdx:= 1; { }
StrAr[CurArIdx]:= ''; { }
{ .
... StrAr,
CurArIdx ...}
while I <= Len do { }
Begin
if St[I] = ',' then { }
Begin
Inc(CurArIdx); { }
StrAr[CurArIdx]:= ''; { }
End
else { }
StrAr[CurArIdx]:= StrAr[CurArIdx] + St[I];
Inc(I); { }
end; { WHILE}
{
- ..., }
for I:= 1 to CurArIdx do
Writeln('FIO ', I, ': ', StrAr[I]);
{ }
DoSortArray(CurArIdx, StrAr);
St:= ''; { St}
{ var- St ...}
for I:= 1 to CurArIdx do
Begin
St:= St + StrAr[I]; { "" }
if I < CurArIdx then { ... }
St:= St + ', '; { ", "}
end;
end; {END of MakeSort}
|
|
Var
S: string;
begin { }
Writeln(' ... :');
Readln(S); { }
MakeSort(S); { ( ...)}
Writeln(' ... :');
Writeln(S); { }
Readln;
end.
6.7.
. .
1) ,
2) ( ) 'xz' , 5
3) , 'a', , 'z', ,
4) 3 , 'a'
5) 3 , 'th'
6) '*' , ()
7) 3 , , '*'
8) '' ,
9) 'a' 'd' ,
10) ,
11) 2- , , 1
12) ,
13) 2- , ()
14) '*'
15)
16) ,
17)
18) , ,
19)
20)
6.8. (. . 1.10)
6.9.
1) ?
2) ?
3) ? ?
4) ?
5) ?
6) ?
7) ?
8) ?
7. Pascal
7.1.
Pascal- .
7.2.
Pascal, (. 7.7).
7.3.
:
, ;
;
.
(. 7.6):
1) ;
2) ;
3) ;
|
|
4) ;
5) .
7.4.
1) (. 7.7).
2) (. 7.5).
3) , .
4) (. 7.9).
5) (. . 1.11).
7.5 Pascal
7.5.1. RECORD
(Real, Integer, Byte, Char, Boolean ..), (array) (string), Pascal , RECORD. (STRUCT). :
Type
<_> = record
<_1>: <_>;
<_2>: <_>;
<_N>: <_>;
end;
, , ( RECORD). RECORD :
type { }
TBirthDay = record
Fam: string [40]; {}
Day, Month: Byte; { }
Year: Word; { }
end;
var { }
a, b: TBirthDay;
TBirthDay ( ) Day, Month Year (, ), Fam (). a, b TBirthDay. , () .
- , : a:= b.
( ) , . (), :
a.Day:= 1;
a.Month:= 12;
a.Year:= 2011;
a.Fam:= 'Ivanov';
, -, :
Var
Mas: array [1..10] of TBirthDay;
....................
for I:= 1 to 10 do
Writeln(' ', I, ': =', Mas[I].Fam,
', =', Mas[I].Day, '.', Mas[I].Month, '.', Mas[I].Year);
, , , .
, . () .
7.5.2. Pascal
(Pascal, C++, Java ..), (Windows, Linux, Unix, Mac-OS ..), ( , , ..), , . , , : , , flash, fram, ( ) .. , . , , . (Windows, Linux ..) . . , (, ). , ( -). . , : , , , , .
|
|
( ) , ( ) .
, ( , , ) ( ). , ( Pascal ), , .
, , , . , *. .
Var
F: Text; { }
S: string [100];
Begin
Assign(F, 'C:\TEMP\MyFile.txt'); { }
Rewrite(F); { }
repeat { }
Write('vvedite stroku> '); { }
Readln(S); {, }
Writeln(F, S); { }
until S = '*'; { "*", }
Close(F); { }
end.
.
( F: Text). RECORD , . , , . . ( ), , , .. /. / . , (, ) .
, Pascal . , , , . , . , :
Var
F: file of TBirthDay; { }
I: Integer;
Begin
Assign(F, 'MyFile.bin');{ }
|
|
Rewrite(F); { }
for I:= 1 to ACount do { }
Write(F, Mas[I]); { }
Close(F); { }
end;
, Pascal , . Pascal ( ). , , , . , . / Read Write BlockRead BlockWrite. Pascal .
, , 7.1.
7.1
Assign() | |
Append() | . , |
Reset() | , /. , |
Rewrite() | . |
Write() | |
Writeln() | |
Read() | |
Readln() | |
Eof() | , |
Erase() | |
Close() |
7.6
, (. 7.3). , . , , , , .
program PhoneBook; { " "}
Const
AFileName = 'phones.spr'; { }
MaxRecordCount = 100; { }
Type
TFam = string [20]; { " "}
{ }
TPhoneRec = record
Fam: TFam; { }
Phone: string [15]; { }
Pol: Boolean; { TRUE-, FALSE-}
BirthYear: Word; { }
end;
{ - }
TPhoneTable = array [1..MaxRecordCount] of TPhoneRec;
{ }
procedure LoadFromFile(var ATable: TPhoneTable; var ACount: Integer);
Var
F: file of TPhoneRec; { }
Begin
Assign(F, AFileName); { }
{$I-} { /}
Reset(F); { }
{$I+} { "I" }
if IOResult = 0 then { }
begin { }
ACount:= 0; { }
while not Eof(F) do { ...}
Begin
Inc(ACount); { ACount }
Read(F, ATable[ACount]); { }
end;
Close(F); { }
Writeln('Spravochnik uspeshno zagruzhen iz faila: ', AFileName,
'. Kolichetvo zapisei: ', ACount);
end else { " !"}
Writeln('ERROR: Fail ne naiden!');
end;
{ }
procedure SaveToFile(const ATable: TPhoneTable; const ACount: Integer);
Var
F: file of TPhoneRec; { }
I: Integer;
Begin
Assign(F, AFileName); { }
Rewrite(F); { }
for I:= 1 to ACount do { }
Write(F, ATable[I]); { }
Close(F); { }
Writeln('Spravochnik uspeshno sohranen v fail: ', AFileName);
end;
{ }
procedure ShowRecord(const ATable: TPhoneTable; Num: Integer);
Var
ARec: TPhoneRec;
C: Char;
Begin
ARec:= ATable[Num];
if ARec.Pol then {if ARec.Pol = True}
|
|
C:= 'm'
Else
C:= 'f';
Writeln('No', Num, ': Fam=', ARec.Fam, ', Tel=',
ARec.Phone, ', Pol=', C, ', God rozhd=', ARec.BirthYear);
end;
{ }
procedure ShowAllRecords(const ATable: TPhoneTable;
const ACount: Integer);
Var
I: Integer;
Begin
Writeln('Spisok vseh zapisei:');
for I:= 1 to ACount do
ShowRecord(ATable, I);
end;
{ }
procedure AddNewRecord(var ATable: TPhoneTable; var ACount: Integer);
Var
ARec: TPhoneRec;
C: Char;
Begin
Write('Vvedite familiu: ');
Readln(ARec.Fam);
Write('Vvedite telefon: ');
Readln(ARec.Phone);
Write('Vvedite pol ("m" / "f"): ');
Readln(C);
if C = 'm' then
ARec.Pol:= True {}
else { if C = 'f' }
ARec.Pol:= False; {}
Write('Vvedite god rozhdenia: ');
Readln(ARec.BirthYear);
Inc(ACount); { 1}
ATable[ACount]:= ARec; { ARec ATable}
Write('Dobablena zapis: ');
ShowRecord(ATable, ACount); { }
end;
{ }
procedure FindRecord(const ATable: TPhoneTable; const ACount: Integer);
Var
I: Integer;
IsFind: Boolean;
Fam: TFam;
Begin
Write('Vvedite familiu: ');
Readln(Fam);
IsFind:= False; { }
for I:= 1 to ACount do
if ATable[I].Fam = Fam then
Begin
IsFind:= True; { " "}
Write('Zapis naidena: ');
ShowRecord(ATable, I);
Break; { }
end;
if not IsFind then { }
Writeln('Zapis ne naidena!');
end;
Var
MenuNum: Byte;
PhoneTable: TPhoneTable; {-}
PhoneCount: Integer; { }
Begin
PhoneCount:= 0; { }
Writeln('Telefonnaya kniga. Avtor: Ivanov I.I');
Repeat
Writeln('Vvedite cifru dlya vypolneniya deistviya:');
Writeln('1 - zagruzka spravochnika iz faila');
Writeln('2 - novaya zapis');
Writeln('3 - spisok vseh zapisei');
Writeln('4 - poisk zapisi po familii');
Writeln('5 - sohranenie spravochnika v fail');
Writeln('6 - vyhod iz programmy');
Write('> ');
Readln(MenuNum);
case MenuNum of
1: LoadFromFile(PhoneTable, PhoneCount);
2: AddNewRecord(PhoneTable, PhoneCount);
3: ShowAllRecords(PhoneTable, PhoneCount);
4: FindRecord(PhoneTable, PhoneCount);
5: SaveToFile(PhoneTable, PhoneCount);
end;
until MenuNum = 6;
end.
, , . ( 150 ), ( ).
7.7.
, | |||
. : , , (True-, False- ), | |||
. : , , (IMEI), | |||
-. : , (True-, False-), , , | |||
. : , , (), | |||
- . : , -, , | |||
. : , , , | |||
. : , , , (True-, False-) | |||
. : , (True-, False-), , | |||
. : , , | |||
. : , , , | |||
.: , , , |