Інформаціїні технології Неділя, 19.05.2024, 20:09
Вітаю Вас Гість | RSS
Головна | Паскаль | Реєстрація | Вхід
» Меню сайту

» Форма входу

» Категорії розділу
Одновимірні масиви [1]
Двовимірні масиви [1]
Стрінговий тип [1]

Головна » Статті » Середній рівень » Стрінговий тип

Стрінговий тип

Теоретичні відомості



Літерний рядок являє
собою послідовність символів. Оскільки кожний окремий символ належить до типу
Char, літерний рядок, або стрінг (String) можна подати як сукупність, або масив
однорідних елементів типу Char. Стрінг може виступати в програмі як константа,
або як змінна. Константа-стрінг подається або за допомогою ідентифікатора в
розділі опису констант:  Const  name='Jack'; або безпосередньо записом у виді
послідовності символів обмежених апострофами: Writeln('Кінець програми');



         Кількість символів в літерному рядку (довжина рядка) лежить в межах 0-255.
Літерний рядок може використовуватися як змінна, яка попередньо повинна бути
описана. Формат опису стрінгової змінної в розділі опису змінних має вид:



Var



      ідентифікатор : String[ML];



де ідентифікаторімя
літерної змінної
, String – службове слово, ML – максимальна
довжина
(кількість символів) даного
літерного рядка
. Наявність ключового слова String без вказання розміру
означає максимальний розмір рядка (255 символів).



Приклад: Var



                       line : String [30];



Окрім безпосереднього опису стрінгової змінної в розділі
Var,
можна ввести спочатку стрінговий тип (літерний
рядок обмеженої довжини
) в розділі опису
типів
, а потім звертатися до цього типу у
розділі
Var.



Приклад: Тype



                       
ST = String [80]; Var  s1, s2, s3
: ST;



В даному випадку ST – це введений нами тип String
обмежений 80 символами;  величини
s1,  s2, s3 належать до цього типу. Тип
ST можна було б, подати в виді масиву Сhar: 
Type  ST = array [1..80] of Сhar;



Оскільки змінна стрінг являє собою послідовність
символів, Pascal надає можливість (так само як в масиві) звертатися до кожного
окремого символа в літерному рядку за форматом 
ідентифікатор [і],  де ідентифікатор
– ім’я стрінг-змінної,  і – індекс (номер
елемента в стрінгу), 0 < і < N, де N – довжина рядка.



Для визначення величини пам`яті в байтах, необхідної для
розміщення стрінга в ОЗП, до значення максимальної величини додається одиниця.
Додатковий байт розміщується на початку рядка (в елементі з індексом [0]). В
цьому елементі записується дійсна довжина 
літерного рядка, записаного в даний момент по вказаному імені.



Стрінгові вирази

Вирази, в яких операндами є стрінгові 
константи, змінні та функції, називаються стрінговими виразами.  Над стрінгами виконуються такі операції:



Присвоєння.



Приклад:



                  
Var St1 : String [6];



St1:='інститут';



Значення St1 обмежуються лише 6 символами і становить
'інстит.'



Об’єднання.



Приклад:



     St1:='Група ';
St2:='МІ';



St:=St1+St2;  
Write (st);



Результат: Група МІ



До окремих символів літерного рядка можна звертатися
за номером
(індексом) даного символа в рядку:



Приклад:



    St:='Група';
St[1]:='
Т'; 
Write (St);



Результат: Трупа.



Для обробки літерних рядків в Паскаль-системі є такі
стандартні функції:



Copy(St, Pos, N) – виділяє із
стрінга
St підрядок довжиною N символів,
починаючи з позиції Pos.



Приклад:  Write(Copy('трансформатор'; 6, 5)); друкує:
фoрма.



     Аналогом цієї
функції в Бейсіку є MID$(St,Pos,N);



Concat(St1, St2,...,StN) – виконує
об'єднання рядків St1,...,StN в тому порядку, в якому вони записані.



3.  Length(St)
обчислює справжню(в символах) величину
St.



     Аналогом цієї
функції в Бейсіку є функція Len(St).



Pos(St1, St2) – визначає номер позиції, з якої
St1 входить в St2. Якщо входження відсутнє – результат рівний нулю.



Приклад:
Pos('форма','трансформатор') => 6.



    Аналогом цієї
функції в Бейсіку є функція INSTR.



Крім стандартних функцій в Pascal для обробки стрінгових
величин використовують такі стандартні процедури:



1. Str(N,St) – перетворює числове значення N в
стрінг St.



    Аналогом цієї
процедури є в Бейсіку функція N=Str$(St).



Val(St,N,Cod) – перетворює стрінг St в величину
цілого, або дійсного типу і вміщує результат в N.  St не повинен містити пробілів на початку та
кінці. Cod – цілочисельна змінна, яка рівна 0, якщо перетворення пройшло
корректно, без помилок. В разі помилки в перетворенні, при наявності
нечислового символа в St, Cod містить номер позиції першого помилкового
символа. N при цьому невизначено.



Delete(St,Pos,N) – процедура вилучення
N символів рядка St, починаючи з позиції Pos. При Pos>255 виникає помилка.



Приклад:
St="аввгд"; Delete(St,4,2); Результат: "авве".



4. Insert(Str1,Str2,Pos) – вставка рядка Str1 в
рядок Str2, починаючи з позиції Pos.



Приклад:



    Var S1,S2 :
String[12];



    S1:=' МІ-';
S2:='
Група 31'; S3:=Inster(S1,S2,6)



    Результат:
'Група МІ-31',



5. UpCase(Ch)
функція, яка перетворює малу літеру Ch в велику. Параметр і результат мають
літерний тип. Функція обробляє літери лише латинського алфавіту.



Приклад:  Ch:='а'; 
B:=UpCase(Ch);  Результат: 'A'.



Серед множини операцiй над лiтерними рядками найбiльш поширеними є об'єднання, обчислення
довжини тексту, копіювання фрагмента тексту, пошук фрагмента тексту, вир
iзування
фрагмента з тексту.



Введемо такі позначення:



S
змінна типу
String
PASCAL
-програми;



Q
змінна типу
String
PASCAL
-програми (фрагмент тексту);



P
позиція літерної змінної;



N
кількість символів.



Операцiя
об'єдання, як вказувалось вище, позначаеться на PASCAL знаком "+",
наприклад:  S:=S+Q;



Деякі інші,
найбільш поширенні операції над літерними рядками, подані в наступній таблиці.



 



Категорія: Стрінговий тип | Додав: Cherry (17.04.2012)
Переглядів: 947 | Рейтинг: 0.0/0
Всього коментарів: 0
Додавати коментарі можуть лише зареєстровані користувачі.
[ Реєстрація | Вхід ]
» Друзі сайту

» Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0

» Пошук


Copyright MyCorp © 2024
Безкоштовний конструктор сайтів - uCoz