Читання лексем виразу, Детальна інформація
Читання лексем виразу
Нехай змінна v зберігає результат обробки попередніх цифр, d – від'ємні степені числа 10 (спочатку v=0, d=1). Нехай num() позначає вираз ord()-ord('0'). Подамо обробку поточного символу tempc й змінювання значень cp таблицею 20.2. Відсутність присвоювань змінній cp у деяких клітинах табл. 20.2 означає, що її значення не змінюється.
За наведеною таблицею функція getcon записується з уживанням оператора case майже механічно:
function getcon : real;
type Tcp = ( ip, fp, out );
var v, d : real; cp : Tcp;
begin
v := 0; d := 1; cp := ip;
while cp <> out do
case cp of
ip : case tempc of
'0'..'9' : begin
v := v*10 + ord(tempc) - ord('0');
tempc := getc
end;
'.' : begin
cp := fp; tempc := getc
end
else cp := out
end;
fp : case tempc of
'0'..'9' : begin
d := d/10;
v := v + (ord(tempc) - ord('0'))*d;
tempc := getc
end
else cp := out
end
end; { оператора case cp of та циклу while}
getcon := v
end
За наведеною таблицею функція getcon записується з уживанням оператора case майже механічно:
function getcon : real;
type Tcp = ( ip, fp, out );
var v, d : real; cp : Tcp;
begin
v := 0; d := 1; cp := ip;
while cp <> out do
case cp of
ip : case tempc of
'0'..'9' : begin
v := v*10 + ord(tempc) - ord('0');
tempc := getc
end;
'.' : begin
cp := fp; tempc := getc
end
else cp := out
end;
fp : case tempc of
'0'..'9' : begin
d := d/10;
v := v + (ord(tempc) - ord('0'))*d;
tempc := getc
end
else cp := out
end
end; { оператора case cp of та циклу while}
getcon := v
end
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021