Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекцый для 1 курса-1 семестр.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
2.95 Mб
Скачать

Радкі сімвалаў

Аб’яўленне радковых пераменных:

VAR ідэнтыфікатар : STRING [max_даўж];

або

VAR ідэнтыфікатар : STRING;

Абмежаванні: 0 max_даўж 255. Калі пры вызначэнні апушчана даў­жы­ня радка, тады па змаўчанні яна складае 255. Паколькі даўжыня мо­жа быць рознай, значыць, STRING – гэта дынамічныя радкі.

Прывядзём розныя прыклады радкоў.

1. Першая форма запісу:

'Нумар п/п  ФІО  Пасада '

дзе  – сімвал вертыкальнай рыскі мае код #179 у альтэрнатыўнай ко­да­вай табліцы.

2. Другая форма запісу:

'Нумар п/п '#179' ФІО '#179' Пасада '#179

3. Радок #7#32#179#32#32#179 эквівалентны радку ^G' | |'

Тып STRING без даўжыні з’яўляецца базавым радковым тыпам, і ён су­мяш­ча­ль­ны з усімі вытворнымі радковымі тыпамі.

Пры спробе запісаць у пераменную радок даўжэй, чым аб’яўлена ў аз­на­чэн­ні, лішняя справа частка адсякаецца. Калі ў пераменную пі­шац­ца радок, карацейшы за аб’яўлены, запамінаецца яго бягучая даўжыня.

Радкі розных даўжынь сумяшчальныя паміж сабой у аператары на­дан­ня значэння і аперацыях параўнання.

Наданне значэння радкам

Прыклады надання значэння радковым пераменным.

VAR A : STRING[6];

{... значэнне A:}

A :='група 1'; { А:='група ' і даўжыня радка 6;

гэта не памылковая сітуацыя}

VAR A : STRING[10];

...

A :='група 1'; { А:='група 1' (і даўжыня 8)}

VAR A : STRING[2];

...

A :='група 1'; { А:='гр' (і даўжыня 2)}

Любы сімвал у радку можна атрымаць па яго нумары, напрыклад A[5].

Кожны радок заўсёды «ведае», колькі сімвалаў у ім атрымліваецца ў дадзе­ны момант, таму што сімвал S[0] утрымлівае код, які роўны ліку сім­ва­лаў у значэнні радка S. Гэта значыць, што даўжыня радка S заўсёды роў­на Ord(S[0]). Ёсць убудаваная функцыя length(S), якая вяртае бя­гу­чую даўжыню радка.

Вывад. Для вызначанай радковай пераменнай S даўжынёй N сім­ва­лаў адводзіцца N + 1 байтаў памяці, з якіх нулявы байт утрымлівае даў­жы­ню радка, а астатнія N байтаў адведзены для сімвалаў радка.

Прыклад.

VAR Myline : STRING[80];

BEGIN

Myline:='';

Writeln(Ord(Myline[0])); { 0}

Myline:='abcd';

Writeln(Ord(Myline[0])); { 4}

Myline[0]:=#2; {можна (Chr(2))}

Writeln(Myline); { аб}

END.

Заўвага. Першапачаткова радок утрымлівае «смецце», і заўсёды трэ­ба перад выкарыстаннем кожнага радка ініцыялізаваць радкі пустымі зна­чэн­ня­мі ці чым-небудзь яшчэ.

Радковыя выразы

Разгледзім аперацыі, працэдуры і функцыі, якія выкарыстоўваюцца для работы з радкамі.

1. Аперацыя сашчэплівання радкоў: + .

Ёсць убудаваная функцыя Concat(str1, str2, …, strn), якая выконвае сашчэпліванне радкоў str1, ..., strn.

Напрыклад, сашчапіць 4 радкі можна адным з двух наступных спо­са­баў:

'А..'+'Я'+' - '+'літары'  'А..Я - літары',

або

Concat('А..','Я',' - ','літары')  'А..Я - літары'.

2. Аперацыі адносін: >, =, <>, <, <=, >=.

Параўнанне радкоў адбываецца пасімвальна, пачынаючы ад першага сім­ва­ла ў радку. Радкі лічацца роўнымі, калі: 1) маюць аднолькавую даў­жы­ню; 2) пасімвальна эквівалентныя (параўноўваюцца коды). Калі пры па­сім­ва­ль­ным параўнанні выявіцца, што адзін сімвал большы за другі (яго код большы), тады радок, які яго ўтрымлівае, таксама лічыцца бо­ль­шым.

Прыклады.

'abcd' = 'abcd'  true

'abcd' <> 'abcde'  true

'abcd' > 'abcD'  true ('d'>'D')

'abcd' > 'abc'  true.