Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
16
Добавлен:
10.12.2013
Размер:
8.74 Кб
Скачать
ѓ« ў  5. Љ®­Ґз­лҐ  ўв®¬ вл ў § ¤ з е ®Ўа Ў®вЄЁ ⥪бв®ў

5.1. ‘®бв ў­лҐ бЁ¬ў®«л, Є®¬¬Ґ­в аЁЁ Ё в.Ї.

5.1.1. ‚ ⥪б⥠ў®§ўҐ¤Ґ­ЁҐ ў б⥯Ґ­м ®Ў®§­ з «®бм ¤ўг¬п
Ё¤гйЁ¬Ё Ї®¤ап¤ §ўҐ§¤®зЄ ¬Ё. ђҐиҐ­® § ¬Ґ­Ёвм нв® ®Ў®§­ зҐ­ЁҐ ­ 
'^' (в Є зв®, Є ЇаЁ¬Ґаг, 'x**y' § ¬Ґ­Ёвбп ­  'x^y'). Љ Є нв®
Їа®йҐ ўбҐЈ® ᤥ« вм? €б室­л© ⥪бв а §аҐи Ґвбп зЁв вм бЁ¬ў®« § 
бЁ¬ў®«®¬, Ї®«гз ойЁ©бп ⥪бв вॡгҐвбп ЇҐз в вм бЁ¬ў®« §  бЁ¬ў®-
«®¬.

ђҐиҐ­ЁҐ. ‚ Є ¦¤л© ¬®¬Ґ­в Їа®Ја ¬¬  ­ е®¤Ёвбп ў ®¤­®¬ Ё§
¤ўге б®бв®п­Ё©: "®б­®ў­®Ґ" Ё "Ї®б«Ґ §ўҐ§¤®зЄЁ"

‘®бв®п­ЁҐ ЋзҐаҐ¤­®© Ќ®ў®Ґ „Ґ©бвўЁҐ
ўе®¤­®© бЁ¬ў®« б®бв®п­ЁҐ

®б­®ў­®Ґ * Ї®б«Ґ ­Ґв
®б­®ў­®Ґ x <> '*' ®б­®ў­®Ґ ЇҐз в вм x
Ї®б«Ґ * ®б­®ў­®Ґ ЇҐз в вм '^'
Ї®б«Ґ x <> '*' ®б­®ў­®Ґ ЇҐз в вм *, x

‡ ¬Ґз ­ЁҐ. ЏаЁ н⮬ '***' § ¬Ґ­Ёвбп ­  '^*' (­® ­Ґ ­  '*^'). ‚
гб«®ўЁЁ § ¤ зЁ ¬л ­Ґ ®Ј®ў аЁў «Ё ¤Ґв «Ґ©, Є Є нв® з бв® ¤Ґ« Ґвбп
- ЇаҐ¤Ї®« Ј Ґвбп, зв® Їа®Ја ¬¬  "¤®«¦­  ¤Ґ©бвў®ў вм а §г¬­®". ‚
¤ ­­®¬ б«гз Ґ, Ї®¦ «г©, б ¬л© Їа®бв®© бЇ®б®Ў ®Ўкпб­Ёвм, Є Є
Їа®Ја ¬¬  ¤Ґ©бвўгҐв - нв® ®ЇЁб вм ҐҐ б®бв®п­Ёп Ё ¤Ґ©бвўЁп ў ­Ёе.

5.1.2. Ќ ЇЁб вм Їа®Ја ¬¬г, г¤ « ойго Ё§ ⥪бв  Ї®¤б«®ў  ўЁ-
¤  'abc'.

5.1.3. ‚ Ї бЄ «Ґ Є®¬¬Ґ­в аЁЁ § Є«оз овбп ў дЁЈга­лҐ бЄ®ЎЄЁ:

begin {­ з «® жЁЄ« }
i:=i+1; {㢥«ЁзЁў Ґ¬ i ­  1}

Ќ ЇЁб вм Їа®Ја ¬¬г, Є®в®а п г¤ «п«  Ўл Є®¬¬Ґ­в аЁЁ Ё ўбв ў«п« 
Ўл ў¬Ґбв® ЁбЄ«о祭­®Ј® Є®¬¬Ґ­в аЁп Їа®ЎҐ« (зв®Ўл '1{®¤Ё­}2'
ЇаҐўа вЁ«®бм Ўл ­Ґ ў '12',   ў '1 2').

ђҐиҐ­ЁҐ. Џа®Ја ¬¬  Ё¬ҐҐв ¤ў  б®бв®п­Ёп: "®б­®ў­®Ґ" Ё "ў­гв-
аЁ Є®¬¬Ґ­в аЁп".

‘®бв®п­ЁҐ ЋзҐаҐ¤­®© Ќ®ў®Ґ „Ґ©бвўЁҐ
ўе®¤­®© бЁ¬ў®« б®бв®п­ЁҐ

®б­®ў­®Ґ { ў­гваЁ ­Ґв
®б­®ў­®Ґ x <> '{' ®б­®ў­®Ґ ЇҐз в вм x
ў­гваЁ } ®б­®ў­®Ґ ЇҐз в вм Їа®ЎҐ«
ў­гваЁ x <> '}' ў­гваЁ ­Ґв

‡ ¬Ґз ­ЁҐ. ќв  Їа®Ја ¬¬  ­Ґ ў®бЇаЁ­Ё¬ Ґв ў«®¦Ґ­­лҐ Є®¬¬Ґ­-
в аЁЁ: бва®Є  ўа®¤Ґ
'{{Є®¬¬Ґ­в аЁ© ў­гваЁ} Є®¬¬Ґ­в аЁп}'
ЇаҐўа вЁвбп ў
' Є®¬¬Ґ­в аЁп}'
(ў ­ з «Ґ бв®пв ¤ў  Їа®ЎҐ« ). ЋЎа Ў®вЄ  ў«®¦Ґ­­ле Є®¬¬Ґ­в аЁҐў
Є®­Ґз­л¬  ўв®¬ в®¬ ­Ґў®§¬®¦­  (­г¦­® "Ї®¬­Ёвм зЁб«® бЄ®Ў®Є" -  
Їа®Ё§ў®«м­®Ґ ­ вга «м­®Ґ зЁб«® ­Ґ Ї®¬Ґй Ґвбп ў Є®­Ґз­го Ї ¬пвм).

5.1.4. ‚ Ї бЄ «ҐўбЄЁе Їа®Ја ¬¬ е Ўлў ов в Є¦Ґ бва®ЄЁ, § Є-
«о祭­лҐ ў Є ўлзЄЁ. …б«Ё дЁЈга­ п бЄ®ЎЄ  бваҐз Ґвбп ў­гваЁ бва®-
ЄЁ, в® ®­  ­Ґ ®§­ з Ґв ­ з «  Ё«Ё Є®­ж  Є®¬¬Ґ­в аЁп. ‚ бў®о ®зҐ-
।м, Є ўлзЄ  ў Є®¬¬Ґ­в аЁЁ ­Ґ ®§­ з Ґв ­ з «  Ё«Ё Є®­ж  бва®ЄЁ.
Љ Є Ё§¬Ґ­Ёвм Їа®Ја ¬¬г, зв®Ўл нв® гзҐбвм?

“Є § ­ЁҐ. ‘®бв®п­Ё© Ўг¤Ґв ваЁ: ®б­®ў­®Ґ, ў­гваЁ Є®¬¬Ґ­в -
аЁп, ў­гваЁ бва®ЄЁ.

5.1.5. …йҐ ®¤­  ў®§¬®¦­®бвм ¬­®ЈЁе ॠ«Ё§ жЁ© Ї бЄ «п - нв®
Є®¬¬Ґ­в аЁЁ ўЁ¤ 

i:=i+1; (* here i is increased by 1 *)

ЇаЁ н⮬ § Єалў ой п бЄ®ЎЄ  ¤®«¦­  ᮮ⢥вбвў®ў вм ®вЄалў о襩
(в® Ґбвм { ... *) ­Ґ а §аҐи Ґвбп). Љ Є г¤ «пвм в ЄЁҐ Є®¬¬Ґ­в -
аЁЁ?

5.2. ‚ў®¤ зЁбҐ«

Џгбвм ¤ҐбпвЁз­ п § ЇЁбм зЁб«  Ї®¤ Ґвбп ­  ўе®¤ Їа®Ја ¬¬л
бЁ¬ў®« §  бЁ¬ў®«®¬. Њл е®вЁ¬ "Їа®зҐбвм" нв® зЁб«® (Ї®¬ҐбвЁвм ў
ЇҐаҐ¬Ґ­­го вЁЇ  real ҐЈ® §­ зҐ­ЁҐ). Ља®¬Ґ в®Ј®, ­ ¤® б®®ЎйЁвм ®Ў
®иЁЎЄҐ, Ґб«Ё зЁб«® § ЇЁб ­® ­ҐўҐа­®.

Ѓ®«ҐҐ Є®­ЄаҐв­®, ЇаҐ¤бв ўЁ¬ ᥡҐ в Єго бЁвг жЁо. Џ®б«Ґ¤®ў -
⥫쭮бвм бЁ¬ў®«®ў ­  ўе®¤Ґ ¤Ґ«Ёвбп ­  Їа®зЁв ­­го Ё ®бв ўигобп
з бвЁ. Њл ¬®¦Ґ¬ Ї®«м§®ў вмбп дг­ЄжЁҐ© Next:char, Є®в®а п ў®§ўа -
й Ґв ЇҐаўл© бЁ¬ў®« ®б⠢襩 з бвЁ,   в Є¦Ґ дг­ЄжЁҐ© Move, Є®в®-
а п ЇҐаў®¤Ёв § ЎЁа Ґв ЇҐаўл© бЁ¬ў®« Ё§ ®б⠢襩бп з бвЁ, ЇҐаҐў®-
¤п ҐЈ® ў Є вҐЈ®аЁо Їа®зЁв ­­ле.

---------------------|--------------------------
Їа®зЁв ­­ п з бвм | Next | ? | ? | ? |
---------------------|--------------------------


Ѓг¤Ґ¬ ­ §лў вм ¤ҐбпвЁз­®© § ЇЁбмо в Єго Ї®б«Ґ¤®ў вҐ«м­®бвм бЁ¬-
ў®«®ў:

<0 Ё«Ё Ў®«ҐҐ Їа®ЎҐ«®ў> <1 Ё«Ё Ў®«ҐҐ жЁда>

  в Є¦Ґ в Єго:

<0 Ё«Ё Ў®«ҐҐ Їа®ЎҐ«®ў> <1 Ё«Ё Ў®«ҐҐ жЁда>.<1 Ё«Ё Ў®«ҐҐ жЁда>

‡ ¬ҐвЁ¬, зв® б®Ј« б­® н⮬㠮ЇаҐ¤Ґ«Ґ­Ёо '1.', '.1', '1. 1',
'-1.1' ­Ґ пў«повбп ¤ҐбпвЁз­л¬Ё § ЇЁбп¬Ё. ‘д®а¬г«Ёа㥬 ⥯Ґам § -
¤ зг в®з­®:

5.2.1. Џа®зҐбвм Ё§ ўе®¤­®© бва®ЄЁ ¬ ЄбЁ¬ «м­го з бвм, Є®в®-
а п ¬®¦Ґв Ўлвм ­ з «®¬ ¤ҐбпвЁз­®© § ЇЁбЁ. ЋЇаҐ¤Ґ«Ёвм, пў«пҐвбп
«Ё нв  з бвм ¤ҐбпвЁз­®© § ЇЁбмо Ё«Ё ­Ґв.

ђҐиҐ­ЁҐ. ‡ ЇЁиҐ¬ Їа®Ја ¬¬г ­  Ї бЄ «Ґ (ЁбЇ®«м§гп "ЇҐаҐзЁб-
«Ё¬л© вЁЇ" ¤«п ­ Ј«п¤­®бвЁ § ЇЁбЁ: ЇҐаҐ¬Ґ­­ п state ¬®¦Ґв ЇаЁ­Ё-
¬ вм ®¤­® Ё§ §­ зҐ­Ё©, гЄ § ­­ле ў бЄ®ЎЄ е).

var state:
(Accept, Error, Initial, IntPart, DecPoint, FracPart);

state := Initial;
while (state <> Accept) or (state <> Error) do begin
| if state = Initial then begin
| | if Next = ' ' then begin
| | | state := Initial; Move;
| | end else if Digit(Next) then begin
| | | state := IntPart; {Ї®б«Ґ ­ з «  楫®© з бвЁ}
| | | Move;
| | end else begin
| | | state := Error;
| | end;
| end else if state = IntPart then begin
| | if Digit (Next) then begin
| | | state := IntPart; Move;
| | end else if Next = '.' then begin
| | | state := DecPoint; {Ї®б«Ґ ¤ҐбпвЁз­®© в®зЄЁ}
| | | Move;
| | end else begin
| | | state := Accept;
| | end;
| end else if state = DecPoint then begin
| | if Digit (Next) then begin
| | | state := FracPart; Move;
| | end else begin
| | | state := Error; {¤®«¦­  Ўлвм е®вм ®¤­  жЁда }
| | end;
| end else if state = FracPart then begin
| | if Digit (Next) then begin
| | | state := FracPart; Move;
| | end else begin
| | | state := Accept;
| | end;
| end else if
| | {в Є®Ј® Ўлвм ­Ґ ¬®¦Ґв}
| end;
end;

‡ ¬ҐвмвҐ, зв® ЇаЁбў Ёў ­Ёп state:=Accept Ё state:=Error ­Ґ б®Ї-
а®ў®¦¤ овбп б¤ўЁЈ®¬ (бЁ¬ў®«, Є®в®ал© ­Ґ ¬®¦Ґв Ўлвм з бвмо зЁб« ,
­Ґ § ЎЁа Ґвбп).

ЏаЁўҐ¤Ґ­­ п Їа®Ја ¬¬  ­Ґ § Ї®¬Ё­ Ґв §­ зҐ­ЁҐ Їа®зЁв ­­®Ј®
зЁб« .

5.2.2. ђҐиЁвм ЇаҐ¤л¤гйго § ¤ зг б ¤®Ї®«­ЁвҐ«м­л¬ вॡ®ў ­Ё-
Ґ¬: Ґб«Ё Їа®зЁв ­­л© Єгб®Є пў«пҐвбп ¤ҐбпвЁз­®© § ЇЁбмо, в® ў ЇҐ-
६Ґ­­го val:real б«Ґ¤гҐв Ї®¬ҐбвЁвм ҐҐ §­ зҐ­ЁҐ.

ђҐиҐ­ЁҐ. ЏаЁ з⥭ЁЁ ¤а®Ў­®© з бвЁ ЁбЇ®«м§гҐвбп ЇҐаҐ¬Ґ­­ п
step - ¬­®¦ЁвҐ«м ЇаЁ б«Ґ¤го饩 ¤ҐбпвЁз­®© жЁдаҐ.

state := Initial; val:= 0;
while (state <> Accept) or (state <> Error) do begin
| if state = Initial then begin
| | if Next = ' ' then begin
| | | state := Initial; Move;
| | end else if Digit(Next) then begin
| | | state := IntPart; {Ї®б«Ґ ­ з «  楫®© з бвЁ}
| | | val := DigitValue (Next);
| | | Move;
| | end else begin
| | | state := Error;
| | end;
| end else if state = IntPart then begin
| | if Digit (Next) then begin
| | | state := IntPart; val := 10*val + DigitVal(Next);
| | | Move;
| | end else if Next = '.' then begin
| | | state := DecPoint; {Ї®б«Ґ ¤ҐбпвЁз­®© в®зЄЁ}
| | | step := 0.1;
| | | Move;
| | end else begin
| | | state := Accept;
| | end;
| end else if state = DecPoint then begin
| | if Digit (Next) then begin
| | | state := FracPart;
| | | val := val + DigitVal(Next)*step; step := step/10;
| | | Move;
| | end else begin
| | | state := Error; {¤®«¦­  Ўлвм е®вм ®¤­  жЁда }
| | end;
| end else if state = FracPart then begin
| | if Digit (Next) then begin
| | | state := FracPart;
| | | val := val + DigitVal(Next)*step; step := step/10;
| | | Move;
| | end else begin
| | | state := Accept;
| | end;
| end else if
| | {в Є®Ј® Ўлвм ­Ґ ¬®¦Ґв}
| end;
end;

5.2.3. ’  ¦Ґ § ¤ з , Ґб«Ё ЇҐаҐ¤ зЁб«® ¬®¦Ґв бв®пвм §­ Є
"¬Ё­гб" Ё«Ё §­ Є "Ї«об" (  ¬®¦Ґв ­ЁзҐЈ® ­Ґ бв®пвм).

”®а¬ в зЁбҐ« ў нв®© § ¤ зҐ ®Ўлз­® Ё««обваЁагов в Є®© Є а-
вЁ­Є®©:

----- ---------
---| + |---->-| жЁда  |-------->--------------------->
| ----- | | --------- | | |
| ----- | | | | ----- --------- |
|-| - |--| |----<------| |-| . |->---| жЁда  |--|
| ----- | ----- | --------- |
| | |-----<-----|
|--->----|


5.2.4. ’  ¦Ґ § ¤ з , Ґб«Ё Є ⮬㠦Ґ Ї®б«Ґ зЁб«  ¬®¦Ґв бв®-
пвм Ї®Є § вҐ«м б⥯Ґ­Ё ¤ҐбпвЁ, Є Є ў 254E-4 (=0.0254) Ё«Ё ў
0.123E+9 (=123000000). Ќ аЁбг©вҐ ᮮ⢥вбвўгойго Є авЁ­Єг.

5.2.5. —в® ­ ¤® Ё§¬Ґ­Ёвм ў Їа®Ја ¬¬Ґ § ¤ зЁ 5.2.2, зв®Ўл
а §аҐиЁвм ЇгбвлҐ жҐ«го Ё ¤а®Ў­го з бвЁ (Є Є ў '1.', '.1' Ё«Ё ¤ -
¦Ґ '.' - Ї®б«Ґ¤­ҐҐ зЁб«® бзЁв Ґ¬ а ў­л¬ ­г«о)?

Њл ўҐа­Ґ¬бп Є Є®­Ґз­л¬  ўв®¬ в ¬ ў Ј« ўҐ 10 (‘а ў­Ґ­ЁҐ б
®Ўа §ж®¬).
Соседние файлы в папке Шень