Паскаль: обробка текстів, Детальна інформація

Паскаль: обробка текстів
Тип документу: Реферат
Сторінок: 17
Предмет: Комп`ютерні науки
Автор: Олексій
Розмір: 33.1
Скачувань: 1094
if isletter(ch) then

begin {створення рядка-лексеми}

getlex:=true; lex:=lex+ch; isl:=true;

while not eof(f) and isl do

begin

read(f,ch);

if isletter(ch) then lex:=lex+ch

else isl:=false

end;

{eof(f) or not isl}

end;

end;

Тіло складеного оператора, що задає створення рядка-лексеми й виконується після того, як умова isletter(ch) стає істинною, можна записати за допомогою оператора repeat-until:

getlex:=true; isl:=true;

repeat

lex:=lex+ch;

if not eof(f) then

begin

read(f,ch); isl:=isletter(ch);

end

else isl:=false

until (not isl);

У функції getlex локальна змінна ch зберігає останній прочитаний символ тексту. Функцію побудовано так, що за виконання її виклику читаються не тільки символи найближчого слова, а й символ, наступний за словом. Отже, після виконання виклику цей символ втрачається. Але, оскільки слова відокремлюються принаймні одним порожнім символом, можна на початку функції присвоїти пропуск змінній ch. Він замінює символ, втрачений за попереднього виклику.

Описана особливість функції getlex є скоріше її недоліком, ніж перевагою. Краще означити змінну ch як локальну в функції, але статичну, значення якої зберігалися б і після виконання виклику функції (див. підр. 8.6). В даному разі слід було б у функції getlex означити змінну ch як

const ch : char = ' '

та вилучити присвоювання ch:=' ' на початку тіла функції.

Написання програми з усіма означеннями та операторами залишаємо вправою.\xF0E7

Приклад 7. Текст із рядками необмеженої довжини містить слова в латинському алфавіті. Довжини слів не більше 255, вони відокремлюються пропусками в довільній кількості та з рядка на рядок не переносяться. Треба надрукувати слова тексту, що містять задане з клавіатури слово як підслово разом із номерами рядків, де вони розташовані.

Скористаємося алгоритмом і підпрограмами з попереднього прикладу, дещо їх змінивши. Влаштуємо в програмі "занудне" читання слова з клавіатури в змінну-рядок s1 із перевіркою, чи є воно непорожнім, і всі символи його – латинські літери. Цю перевірку повинна задавати функція isword.

Далі з тексту читаються слова в змінну-рядок s2 та за рівності їх із s1 друкуються разом із номером рядка тексту nlin. Це змінна програми з початковим значенням 1, яке збільшується за виконання вікликів функції getlex1.

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