Обчислення иразів у програмуванні, Детальна інформація

Обчислення иразів у програмуванні
Тип документу: Реферат
Сторінок: 18
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 32.5
Скачувань: 934
until not (tempc in Bcon);

if tempc = '.' then tempc := getc;

while tempc in Bcon do

begin

d := d/10; v := v + ( ord(tempc) - ord('0') )*d; tempc := getc

end;

{сталу прочитано; поточним є символ, наступний за її останнім}

getcon := v

end;

Запишемо функцію getcon у інший спосіб, який реально застосовується в побудові підпрограм лексичного аналізу в системах програмування. Обробка чергового символу залежить від того, чи є він цифрою в цілій або дробовій частині сталої, крапкою або символом після сталої.

Додамо змінну cp типу Tcp=(ip, fp, out), елементи якого позначають місця поточного символу tempc в цілій (ip) та дробовій (fp) частині або за межами сталої (out). Спочатку cp=ip. Залежність її наступного значення від попереднього та від поточного символу tc подамо таблицею, в якій стрілка ліворуч відмічає початкове значення ip (табл.20.1).

Нехай змінна 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;

The online video editor trusted by teams to make professional video in minutes