Робота з символьною інформацією в Turbo Pascal 7
I. Основні відомості про символьні величини
За допомогою комп'ютера можна вирішувати різноманітні завдання обробки текстів: від складання платіжних відомостей до автоматичної верстки газет. Для того, щоб комп'ютер міг обробляти тексти, він має вміти оперувати не лише з числами, а й зі словами.
Ознайомимося з основними методами обробки тексту на комп'ютері.
Вважатимемо, що текст- це довільна послідовність символів деякого алфавіту.Алфавітом може бути будь-яка безліч символів, наприклад (0, 1,2, . ), (А, Б, В. ), (А, В, С. ).
Рядком символів, або символьною (рядковою, текстовою) константою, називатимемо послідовність символів, укладених в апострофах.
Рядок символів може складатися з одного або декількох символів, а також не містити жодного символу (порожній рядок або рядок нульової довжини). Максимальна довжина текстового рядка 255 символів.
Ми знаємо, що для обробки даних на комп'ютері того чи іншого типу використовуються змінні. Згадаймо, що тип змінної визначається типом даних, що вона представляє.
У Turbo Pascal 7.0 для роботи із символами використовуються два типи змінних:
- символьний тип даних;
- рядковий тип даних.
1. Символьний тип даних (Char).
Опис: ідентифікатор char, (var x: char).
Діапазон значень: значенням змінної цього типу може бути будь-який символ – це літери, цифри, розділові знаки та спеціальні символи. Кожному символу алфавіту відповідає індивідуальний код від 0 до 255.
У Turbo Pascal 7.0 значення змінних типу char задаються в апострофах: sh := '*'; а :='3'; summa :='G'.
2. Рядковий тип даних (string).
Як правило, одне ціле число або один символ займають у пам'яті ЕОМ два байти. У той же час для зображення символу достатньо одного байта. З метою збереження пам'яті машини під час використання символьних даних у мові Паскаль введено поняття рядка.Рядком називається послідовність символів певної довжини. Елементи рядка зберігаються по два в двох байтах пам'яті ЕОМ.
Змінні типуstring можуть бути оголошені таким чином:
var s1: string[30]; s2: string.
Число 30 означає максимальну кількість символів рядка s1.
II. Стандартні функції для роботи із символьними величинами
1.Операція складання символьних величин.
Операція додавання дозволяє будувати з двох символьних рядків третій, що складаються із символів першого, за яким йдуть символи другого. Позначається ця операція знаком "+".
Описуємо рядкові змінні.
var s1, s2, s3: string;
Значення рядка, що присвоюється, полягає в апострофи. Надамо першим двом наступні значення, а третя дорівнюватиме їх склеюванню:
Рядокs3має значення 'Тихіше води, нижче трави'.
2. Довжина рядка
Під довжиною рядка розуміється кількість введених символів, але вона може перевищувати максимально можливої довжини (в описової частини). Це значення можна визначити за допомогою функції, результат якої ціле число, що дорівнює кількості символів.
s1:='12345'; s2:= 'Семеро одного не чекають'; k1:=Length(s1); k2:=Length(s2).
В результаті значення цілих змінних дорівнюватимуть: kl=5, k2=21.
3. Копіювання
Значення змінної s1 = 'воз'. А на екрані буде виведенонаступні рядки: віз та 34.
4. Вилучення
У Turbo Pascal 7.0 для цього використовується процедураDelete(str, n,m), яка вирізає з рядкаstr m символів, починаючи зn -го. таким чином сам рядок змінюється.
Даний фрагмент програми:
s:='123456'; delete(s, 3, 2); writeln(s);
Після виконання цих операторів з рядка буде видалено два символи, починаючи з третього, тобто рядок буде таким:s = '1256'.
5. Заміна (Вставка)
У Turbo Pascal 7.0 це можна зробити, застосовуючи процедуру Insert(s1,s2,n) – вставка рядка s1 у рядок s2, починаючи зп -го символу, при цьому перший рядок залишається такою ж, як і була, а друга набуває нового значення.
В результаті виконання даної процедури рядок буде такийs2='123456'.
6. Числа та рядки
Треба зауважити, що число 25 і рядок 25 – це не те саме. Для роботи з числами та рядками Turbo Pascal 7.0 застосовуються дві процедури.
Str(n,s1) – переводить числове значення n у рядкове і надає результат рядку s1, причому можна перекладати як цілі числа, і речові.
n:=12; str(n,s1); - після виконання s1 = '12';
Існує зворотна операція, яка переводить рядкове значення в числове.
Функція val(s, n, k) – переводить рядкове значення в числове, якщо цей рядок дійсно є записом числа (цілого чи речового), то значення k=0, а n –це число, інакше k дорівнюватиме номеру символу , У якому зустрічається перше порушення запису числа n.
val('1234',n,k)п=1234, k=0;
7. Функції перетворення типів
Іноді у програмах виникає необхідність за кодом визначити символ і, навпаки, за символомвизначити його код. Для цього використовують функцію:CHR(x).
Ця функція повертає символ, який відповідає ASCII-коду числа x.
for i = 0 to 255 do writeln (i, '', chr (i));
Для визначення коду за символом використовують функціюORD.
Скласти програму, яка визначає за введеним з клавіатури символом його код.
Programm prim1; Var s: char; Begin Writeln('введіть символ з клавіатури'); Readln(s); Writeln('код символу ',s,'=',ord(s)); Readln; End.
У три символьні змінні F, I, O ввести своє прізвище, ім'я, по батькові. Сформувати з цих даних рядок S, який містить ваші прізвище та ініціали.
Визначити скільки цифр міститься у записі довільного натурального числа.
Program prim3; Var s: string; x, k: integer; Begin Writeln('введіть число'); Readln(x); Str(x, s); k:=length(s); Writeln('в числі ',k,' цифр'); Readln; End.
Змінні A та B містять рядки цифр. Знайти суму відповідних чисел.
Program prim4; Var A, B: string; S, x, y, n, k: integer; Begin Writeln('введіть перше число'); Readln(A); Writeln('введіть друге число'); Readln(B); Val(A, x, n); Val(B, y, k); S:=x+y; Writeln ( 'сума чисел дорівнює ', S); Readln; End.
Роздрукувати задане слово в одному рядку з розрядкою (пробіл після кожної літери).
Скласти програму підрахунку кількості входжень літери “а” у заданому тексті.
Визначити, яке із двох вихідних слів довше і наскільки.
Var s1, s2: string; L1, l2: integer; Begin Writeln('введіть перше слово'); Readln(s1); Writeln('введіть друге слово'); Readln(s2); l1:=length(s1); l2:=length(s2); if l1 & gt; writeln('перше слово довше другого на ',l2-l1,' символів'); Readln; End.
Використовувана література:
- Turbo Pascal. С. А. Немногін. - СПб: Видавництво "Пітер", 2000.
- Turbo Pascal: практикум / С. А. Немногін. - СПб: Видавництво "Пітер", 2001.
- Практикум з програмування / А. А. Чернов. - Волгоград: Вчитель, 2006.
- Додаток до журналу "Інформатика та освіта" № 1, 2001, № 3, 2001.