Рядковий
тип даних у мові Pascal h2>
Познайомимося з
типом даних, який належить до структурованих. Це рядковий тип
даних (рядок). Рядок - це послідовність символів. Кожен символ
займає 1 байт пам'яті (код ASCII). Кількість символів у рядку називається її
завдовжки. Фраза може знаходитися в діапазоні від 0 до 255. Рядкові
величини можуть бути константами та змінними. Особливістю рядка в Turbo
Pascal є те, що з нею можна працювати як з масивом символів, з одного
боку, і як з єдиним об'єктом, - з іншого. За рахунок цього обробка рядків
достатньо гнучка і зручна. Строкова константа є послідовність
символів, укладена в апострофи. Наприклад: Це строкою константа ', '272'.
Строкова мінлива описується в розділі опису змінних наступним
так: p>
Var
: String []; p>
Наприклад: p>
Var Name: string [20]. p>
Параметр довжини
може і не вказуватися в описі. У такому випадку мається на увазі, що він дорівнює
максимальну величину - 255. Наприклад: Var slovo: string. P>
Строкова
мінлива займає в пам'яті на 1 байт більше, ніж вказана в описі довжина.
Справа в тому, що один (нульовий) байт містить значення поточної довжини рядка.
Якщо строковий змінної не присвоєно ніякого значення, то її поточна довжина
дорівнює нулю. У міру заповнення рядка символами її поточна довжина зростає, але
вона не повинна перевищувати максимальної за описом величини. p>
Символи всередині
рядка індексуються (нумеруються) від одиниці. Кожен окремий символ
ідентифікується ім'ям рядки з індексом, укладених у квадратні дужки.
Наприклад: N [5], S [i], slovo [k + l]. Індекс може бути позитивною константою, змінною, виразом
цілого типу. Значення індексу не повинно виходити за межі опису. P>
Тип string і
стандартний тип char сумісні. Рядки та символи можуть вживатися в одних і
тих же виразах. p>
рядкові
вираження будуються з рядкових констант, змінних, функцій і знаків операцій.
Над рядковими даними допустимі операції зчеплення та операції відношення. P>
Операція
зчеплення (конкатенації) (+) застосовується для з'єднання декількох рядків в один
результуючу рядок. Зв'язує можна як рядкові константи, так і
змінні. p>
Приклад: 'Мама'
+ 'Мила' + 'раму'. В результаті вийде рядок: "Мама мила раму". Довжина
результуючої рядки не повинна перевищувати 255. p>
Операції
відносини: =,, =,. Дозволяють призвести
порівняння двох рядків, в результаті чого виходить логічне значення (true
або false). Операція відносини має пріоритет нижчий, ніж операція
зчеплення. Порівняння рядків проводиться зліва направо до першого неспівпадаючі
символу, і той рядок вважається більше, в якій перший неспівпадаючі символ
має більший номер в таблиці символьної кодування. Якщо рядки мають різну
довжину, але в загальній частині символи збігаються, вважається, що більш короткий рядок
менше, ніж довша. Строки рівні, якщо вони повністю співпадають по довжині
і містять одні й ті ж символи. p>
Приклад: p>
Вираз p>
Результат p>
'True1''MOTHER' p>
True p>
'Мама'
'Мама' p>
True p>
'Cat' = 'Cat' p>
True p>
Функція Copy (S,
Pozition, N) виділяє з рядка S підрядок довжиною N символів, починаючи з
позиції Pozition. Тут N і Pozition - цілочисельні вирази. P>
Приклад: p>
Значення
S p>
Вираз p>
Результат p>
'Мама
мила раму ' p>
Copy (S, 6, 4) p>
'мила' p>
'Маша
їла кашу ' p>
Copy (S, 1, 8) p>
'Маша їла' p>
Функція
Concat (S1, S2, ..., SN) виконує зчеплення (конкатенацію) рядків S1, S2, ..., SN в
один рядок. p>
Приклад: p>
Вираз p>
Результат p>
Concat ( 'Маша
',' Їла ',' кашу ') p>
'Маша
їла кашу ' p>
Функція
Length (S) - визначає поточну довжину рядка S. Результат - значення цілого
типу. p>
Приклад: p>
Значення
S p>
Вираз p>
Результат p>
'test-5' p>
Length (S) p>
6 p>
'(A + B) * C' p>
Length (S) p>
7 p>
Функція Pos (S1,
S2) - виявляє перша поява в рядку S2 підрядка S1. Результат - ціле
число, яке дорівнює номеру позиції, де знаходиться перший символ рядка S1. Якщо в
S2 підрядка S1 не виявлено, то результат дорівнює 0. P>
Приклад: p>
Значення
S2 p>
Вираз p>
Результат p>
'abcdef' p>
Pos ( 'cd', S2) p>
3 p>
'abcdcdef' p>
Pos ( 'cd', S2) p>
3 p>
'abcdef' p>
Pos ( 'k', S2) p>
0 p>
Процедура
Delete (S, Poz, N) - видалення N символів з рядка S, починаючи з позиції Poz. P>
Приклад: p>
Початкове
значення S p>
Оператор p>
Кінцеве
значення S p>
'abcdefg' p>
Delete (S, 3, 2) p>
'abefg' p>
'abcdefg' p>
Delete (S, 2, 6) p>
'a' p>
У результаті
виконання процедури зменшується поточна довжина рядка в змінної S. p>
Процедура
Insert (S1, S2, Poz) - вставка рядка S1 в рядок S2, починаючи з позиції Poz. P>
Приклад: p>
Початкове
значення S2 p>
Оператор p>
Кінцеве
значення S2 p>
'ЕОМ РС' p>
Insert ( 'IBM-', S2, 5) p>
'ЕОМ IBM-PC' p>
'Рис. 2 ' p>
Insert ( 'N', S2, 6) p>
'Рис. N
2 ' p>
Контрольні
питання і завдання p>
Як можна
оголосити величину строкового типу? p>
До яких типів
даних відносяться строки? p>
Яка
максимально можлива довжина рядка? p>
З величиною
якого типу даних сумісний з привласнення окремий символ рядка? p>
Розкажіть про
операціях, які можна виконувати над рядковими величинами. p>
Розкажіть про
функціях, визначених для величин строкового типу. p>
Розкажіть про
процедурах, визначених для величин строкового типу. p>
Як
здійснюється доступ до окремого сііволу рядка? p>
Чому значення
відносини 'Мама''мама' одно TRUE? p>
Дан фрагмент
програми: p>
S: =''; p>
For I: = '0 'to '9' do S: = S + I; p>
Яке значення
пулучіт мінлива S після його виконання? p>
Дан фрагмент
програми. p>
Type String40 = String [40]; M = Array [1 .. 100] Of
String40; p>
Var A: M; I, J, Min, N: Byte; Vsp: String40; p>
Begin p>
Write ( 'N?
'); ReadLn (N); p>
For I: = 1
To N Do ReadLn (A [I ]); p>
For I: = 1
To N-1 Do p>
Begin Min
: = I; p>
For J
: = I + 1 To N Do If A [J]
Vsp
: = A [I]; A [I]: = A [Min]; A [Min]: = Vsp; p>
End; p>
WriteLn ( 'В:'); For I: = 1
To N Do WriteLn (A [I]) p>
End. p>
Точно і
однозначно сформулювати умову задачі, рішення яких наведені в даному
фрагменті. p>
Є
наступна мінлива p>
Var S:
Array [1 .. 100] Of String; p>
Яка з
звернень до J-му символу I-тої рядки (I-го елемента масиву S) буде
правильним? p>
1) S [I] [J]; 2)
S [I, J]; 3) S [J] [I]; 4) відповіді 1-2 правильні; 5) серед відповідей немає жодного
правильного. p>
Яка функція
(процедура) є аналогом операції зчеплення (+) при роботі з рядками? p>
Який буде
результат виконання операції зчеплення, якщо довжина результуючої рядка
перевищить значеніе255? p>
Список
літератури h2>
Для підготовки
даної роботи були використані матеріали з сайту http://www.comp-science.narod.ru/
p>