Робота з рядками (length, delete, pos, copy) - алгоритмізація і програмування - реферати,
Комп'ютер може обробляти не тільки числову інформацію, а й символьну. Мова Delphi оперує з символьної інформацією, яка може бути представлена як окремими символами, так і рядками (по-Cледовательно символів).
Для зберігання і обробки символів використовуються змінні типу Ansichar і wideChar. Тип Ansichar являє собою набір ANSI-символів, з якому кожен символ кодується восьмирозрядним двійковим числом (байтом). Тип wideChar являє собою набір символів в кодуванні Unicode, в якій кожен символ кодується двома байтами.
Для забезпечення сумісності з попередніми версіями підтримується тип Char, еквівалентний AnsiChar.
Значенням змінної символьного типу може бути будь-який відображається символ:
буква українського або латинського алфавітів;
І спеціальний символ, наприклад, "новий рядок".
ім'я - ім'я змінної символьного типу;
char - ключове слово позначення символьного типу.
otv: char; ch: char;
Як і будь-яка змінна програми, змінна типу char може отримати значення в результаті виконання інструкції присвоювання. Якщо змінна типу char отримує значення в результаті виконання операції присвоювання, то праворуч від знака: = повинно стояти вираз типу char, наприклад, змінна типу char або символьний константа - символ, укладений в лапки.
В результаті виконання інструкцій c1: = '*';
змінна c1 отримує значення привласненням значення константи, а змінна с2 - привласненням значення змінної cl (передбачається, що змінні c1 і с2 є змінними символьного типу).
Змінну типу char можна порівняти з іншої змінної типу char або з символьної константою. Порівняння засноване на тому, що кожному символу поставлено у відповідність число (див. Додаток 2), причому символу 'про' відповідає число менше, ніж символу У, символу 'А' - менше, ніж 'в', символу V - менше, ніж а. Таким чином, можна записати:
Символам українського алфавіту відповідають числа більші, ніж символам латинського алфавіту, при цьому справедливо наступне:
У тексті програми замість символу можна вказати його код, поставивши перед числом оператор #. Наприклад, замість константи 'в' можна записати # 193. Такий спосіб запису, як правило, використовують для запису службових символів або символів, які під час набору програми можна ввести з клавіатури. Наприклад, часто використовуваний при запису повідомлень символ "новий рядок" записується так: # 13.
У програмах обробки символьної інформації часто використовують функції chr і Ord. Значним функції chr є символ, код якого зазначений у якості параметра. Наприклад, в результаті виконання інструкції c: = chr (32) змінної з буде присвоєно значення пробіл. Функція ord дозволяє визначити код символу, який передається їй як параметр. Наприклад, в результаті виконання інструкції k: = ord ( '*') змінна k буде містити число 42 - код символу *.
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
procedure FormActivate (Sender: TObject); private
st: = st + # 13; // перехід до нового рядка екрану
Форма додатка Таблиця символів містить тільки один компонент -поле мітки (Label1l). Для того щоб колонки таблиці мали однакову ширину, властивості Label1.Font.Name слід привласнити ім'я шрифту, у якого все символи мають однакову ширину, наприклад, courier New cyr.
Вид вікна програми під час роботи наведено на рис. 3.2.
Рядки можуть бути представлені такими типами: shortstring, Longstring і widestring. Розрізняються ці типи гранично допустимої довжиною рядка, способом виділення пам'яті для змінних і методом кодування символів.
Змінної типу shortstring пам'ять виділяється статично, т. Е. До початку виконання програми, і кількість символів такого рядка не може перевищувати 255. Змінним типу Longstring і widestring пам'ять виділяється динамічно - під час роботи програми, тому довжина таких рядків практично не обмежена.
Крім перерахованих вище типів можна застосовувати універсальний cтроковий тип String. Тип String еквівалентний типу Shortstring.
ім'я - ім'я змінної;
string - ключове слово позначення строкового типу;
довжина - константа цілого типу, яка задає максимально допустиму довжину рядка.
stroka: string [255]; stroka: string;
У тексті програми послідовність символів, що є рядком (строкової константою), полягає в одинарні лапки. Наприклад, щоб привласнити строкової змінної parol значення, потрібно записати:
parol: = 'Великий секрет';
Використовуючи операції =. = І про, змінну типу string можна порівняти з іншої змінної типу string або зі строковою константою. Рядки порівнюються посимвольний, починаючи з першого символу. Якщо все символи порівнюваних рядків однакові, то такі рядки вважаються рівними. Якщо в однакових позиціях рядків знаходяться різні символи, більшою вважається той рядок, у якій в цій позиції знаходиться символ з великим кодом. У табл. 3.1 наведені приклади порівняння рядків.
Крім операції порівняння, до строкових змінних і констант можна застосувати операцію складання, в результаті виконання якої виходить новий рядок. Наприклад, в результаті виконання інструкцій
f irst__name: = 'Іван';
змінна fui_name отримає значення 'Іван Іванов'.
У мові Delphi є кілька корисних при роботі з рядками функцій і процедур. Нижче наведено їх короткий опис і приклади використання.
Функція length повертає довжину рядка. У цій функції один параметр - вираз строкового типу. Значним функції length (ціле число) є кількість символів, з яких складається рядок.
Наприклад, в результаті виконання інструкцій
m: = length ( 'Невський проспект ");
значення змінних n і m дорівнюватиме 6 і 20.
Процедура delete дозволяє видалити частину рядка. У загальному вигляді звернення до цієї процедури виглядає так:
delete (Рядок, р, п)
Рядок - змінна або константа строкового типу;
р - номер символу, з якого починається видаляється подстрока;
п - довжина видаляється підрядка.
Наприклад, в результаті виконання інструкцій
значенням змінної s буде рядок 'місто Харків'.
Функція троянд дозволяє визначити положення підрядка в рядку. У загальному вигляді звернення до функції виглядає так:
де Підрядок - строкова константа або змінна, яку треба знайти в строковою константі або змінної рядок.
Наприклад, в результаті виконання інструкції
значення змінної р дорівнюватиме 7. Якщо в рядку немає шуканої підрядка, то значення функції троянд дорівнюватиме нулю.
Нижче приведена інструкція while, в результаті виконання якої видаляються початкові пробіли з рядка st.
while (pos ( '', st) = 1) and (length (st)> 0) do delete (st, 1,1);
Прогалини видаляє інструкція delete (st, i, i), яка виконується в циклі до тих пір, поки першим символом рядка є пробіл (в цьому випадку значення РОS ( '', st) дорівнює одиниці). Необхідність перевірки умови length (st)> 0 пояснюється можливістю того, що введений рядок складається тільки з прогалин.
Функція сміттю дозволяє виділити фрагмент рядка. У загальному вигляді звернення до функції сміттю виглядає так:
сміттю (Рядок, р, п) де:
рядок - вираз строкового типу, що містить рядок, фрагмент якої треба отримати;
р - номер першого символу, з якого починається виділяється підрядок;
n - довжина виділеної підрядка. Наприклад, в результаті виконання інструкцій
значенням змінної fam буде рядок "Іванов".