Рядковий тип даних

02.01.2014 0 By svvas

1. Опис змінних та констант рядкового типу
Рядок — це послідовність символів кодової таблиці(тип string).. Кожен рядок складається
з певної кількості символів.
Довжина рядка(Length) — це кількість символів, з яких він складається.
Рядкові константи: ‘Урок’,
x
Turbo Pascal’, *?#?’, 423′, ‘2аЬс’, ‘computer’, ‘ІВМ’.
Найдовший рядок має255 символів, найкоротший— 0 (нульовий або порожній рядок) — ‘’.
Рядки можуть бути оголошені двома способами:
а)var ім’я_змінної:string;{Оголошено рядок довжиною255 символів}
б)var ім’я_змінної:string[ДовжинаРядка];{Рядок має вказану довжину}
Одержати доступ до певного символа рядка можна, вказавши його номер у квадратних
дужках після імені змінної(рядка).
Наприклад:
const slovo =’University’;
var frazal: string[45];
fraza2: string;
ЯкщоR= ‘Місяць травень’, тоR[1] = ‘М’; R[3] =’c’;
Якщо в описі рядка довжина не вказана, вона вважається рівною255.
2. Операції над змінними типу«рядок»
1. Операція з’єднання(додавання, зчеплення, конкатенації).
Об’єднує кілька рядкових величин в одну.
Наприклад, фрагмент програми:
tl: =’Київська’;
t2:=’Русь’;
s:=tl+t2;
writeln(s);
виведе на екран значення: Київська Русь.
2. Операції порівняння(<, <=, >=, >, =, <>).
Порівняння двох рядків здійснюється зліва направо до перших різних символів. Більшим
вважається символ, який розташований вASCII-таблиці далі(він має більший номер).
Числовий код символа визначає функціяord.
Наприклад, ord (‘В’) =66, ord (‘А’) =65. Очевидно, що‘А’ <‘ В’ , ‘В’ <‘ С’ і т. д.
Зворотну дію виконує функцціяchr.
Наприклад, chr (65) дає символ‘А’.
3. Функції та процедури для роботи з рядками
1 .Стандартні функції
1) length (<рядок>) — визначає кількість символів, що були записані в
рядок(так звана«реальна» довжина рядка);
2) copy (r, m, п)—копіює п символів рядка г, починаючи з символа з
номером т;
3) concat(rl, г2, …, тN) — з’єднує рядки r1, г2,…, rп в один рядок(працює
аналогічно знаку«+»);
4) pos (rl, r2) — визначає номер символа, з якого починається входження
підрядкаr1 у рядок г2.
2. Процедури
1) insert (rl, <ім’я рядка>, п) — вставляє підрядокr1 у рядок, заданий
змінною, починаючи з позиції п;
2) delete (<ім’я рядка>, m, n) — вилучає n символів із заданого рядка,
починаючи з позиції т;
3) str(<числова величина>, <ім’я рядка>) — переводить числове дане в
дане типу рядок;
4) val (r1, s1, s2) — перетворює у числове значення s1 вміст рядка r1.
Якщо це можливо, то змінна s2 отримує значення0, інакше— числове
значення номера першого недопустимого символа заданого рядка.
Приклади
Нехай змінна r має значення ‘Мала академія’.
Розглянемо приклади функцій для роботи з рядками та їхні значення.
Функція Значення
Length (r); 13
Copy (r, 6, 8); академія
Concat (r, ’наук’); Мала академія наук
Pos (‘л’, r); 3
Нехай змінна r має значення ‘Мала академія наук’.
Розглянемо приклади процедур для роботи з рядками та їхні значення.
Процедура Результат
Insert (‘Львівська обласна’, r, 1); ‘Львівська обласна Мала академія наук’
Delete (r, 1, 4); ‘академія наук’
Str (2008, r); ‘2008’
Val (‘1256’, s1, s2); s1=1256, s2=0
Val (‘академія’, s1, s2); s1=?, s2=1
4. Програми опрацювання рядкових величин
Задача1. Скласти програму, яка в заданому тексті всі російські букви«ы»
замінить українською«і».
Розв’язання
Перший спосіб
До символів тексту ми можемо звертатися як до елементів масиву, тому:
program nl;
uses crt;
var s:string;
і,m:integer;
begin
clrscr;
writeln(‘Уведіть текст’);
readln(s);
m:=length(s) ;
for i:=l to m do
begin
if s[i]=’ы’ then s[i]=’i’; { заміна символа}
end;
writeln(‘Замінений текст’, s);
readln;
end.
Зауваження. Значення типу string уводяться за допомогою процедури readln, а не
read; причому за один раз може бути введений лише один рядок.
Другий спосіб
Вилучення і вставлення фрагментів тексту здійснюють процедури
delete(<ім’я рядка>, m, n); та
insert(rl, <ім’я рядка>,n);, тому:
program n2;
uses crt;
var s:string;
і, m:integer;
begin
clrscr;
writeln(‘Уведіть текст’);
readln(s);
m:=length(s);
for i:=l to m do
begin
if s[i]=’ы’then
begin
delete(s, i, 1); {вилучає один символ э рядкаs, починаючи з
позиції, і}
insert(‘і’, s, і); {вставляє підрядок‘і’ у рядокs,
починаючи з позиції і}
end;
end;
writeln(‘Замінений текст’, s);
readln;
end.
Задача2. Отримати на комп’ютері із слова«інформатика» нові слова.
Наприклад, «форма», «мама», «формат», «рама».
Розв’язання
Нехай рядкову величину збережено в константній величині d.
Program N2;
Uses Crt;
Const d=’інформатика’;
Var a, b, c, k: string;
begin
clrscr;
writeln(d);
a:=copy(d,3,5); {форма}
writeln(a);
b:=copy(d,3,6); {формат}
writeln(b);
с:=сору(d,6,2)+сору(d,6,2) ; {мама}
writeln(c);
k:=copy(d,5,l)+copy(d,7,l)+copy(d,6,2); {рама}
writeln(k);
readln;
end.
Задача3. Скласти програму підрахунку сумарної кількості букв«м», «п», «у» в даному тексті.
Розв’язання
Нехай рядкову величину розмістимо в змінній t.
program N3;
uses crt;
var t:string;
i:integer; {лічильник циклу}
m:integer; {довжина рядка}
k:integer; {к-ть шуканих букв}
begin
clrscr;
writeln(‘Уведіть текст’);
readln(t);
m:=length(t);
k:=0;
for i:=l to m do
begin
if (t[i]=’м’) or (t[i]=’п’) or (t[i]=’y’)
then k:=k+l;
end;
writeln(k);
readln;
end.
Задача4. Скласти програму, яка викреслює з тексту всі букви«о».
Розв’язання
Нехай рядкову величину розмістимо в змінній r, а новий текст у змінну т.
program N4;
uses crt;
var r,m:string;
і,n:integer;
begin
clrscr;
writeln(‘Уведіть текст’);
readln(r);
n:=length(r);
m:=’’; {спочаткуm пустий рядок}
for і:=1 to n do
begin
if r[i]<>’o’ then m:=m+r[i];
end;
writeln (m) ;
readln;
end.

Comments

comments