Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Перерахований та обмежений типи




Begin

Рядковий тип

End.

Begin

for ch:=#32 to #255 do write(ord(ch),'—>',ch,' ');

readln;

У цій програмі як лічильник циклу була використана символьна змінна, це дозволяється, оскільки цикл for може використовувати як лічильник змінні будь-якого типу, значення яких зберігаються у виді цілих чисел.

З використанням кодів працюють ще дві функції, значення яких символьні:

1. succ (від succeedent — наступний), вона видає символ з наступним кодом.

2. pred (від predecessor — попередник), видає символ з попереднім кодом.

Якщо спробувати в програмі одержати succ(#255) чи pred(#0), то виникне помилка. Користаючись цими функціями можна переписати попередню програму і по-іншому:

...

ch:=#32;

while ch<>#255 do begin

write(ord(ch),'—>',ch,' ');

ch:=succ(ch);

end;

...

 

Порівняння символів. Також як і числа, символи можна порівнювати на =, <>, <, >, <=, >=. У цьому випадку Паскаль порівнює не самі символи, а їхні коди. Таблиця ASCII складена таким чином, що коди букв (латинських і більшості національних) зростають при русі за алфавітом, а коди цифр розташовані один за одним: ord(‘0’)=48, ord(‘1’)=49,... ord(‘9’)=57. Порівняння символів можна використовувати скрізь, де вимагаються логічні вирази: в операторі if, у циклах і т.п.

Для збереження рядків (тобто послідовностей із символів) у Турбо-Паскалі мається тип string. Значеннями рядкових змінних можуть бути послідовності різної довжини (від нуля і більше, довжині 0 відповідає порожній рядок). Оголосити рядкову змінну можна двома способами: або var s: string; (максимальна довжина рядка — 255 символів), або var s: string[n]; (максимальна довжина — n символів, n — константа чи конкретне число).

Для того щоб записати значення в рядкову змінну використовуються ті ж прийоми, що і при роботі із символами. У випадку присвоювання конкретного рядка, це рядок повинний записуватися в апострофах (s:='Hello, world!'). Приведемо найпростіший приклад з рядками: програма запитує ім'я в користувача, а потім вітає його:

program Hello;

var s: string;

write('Як Вас кличуть: ');

readln(s);

write('Привіт, ',s,'!');

readln;

end.

 

Збереження рядків. У пам'яті комп'ютера рядок зберігається у виді послідовності із символьних змінних, у них немає індивідуальних імен, але є номера, що починаються з 1). Перед першим символом рядка мається ще і нульовий, у якому зберігається символ з кодом, рівним довжині рядка. Нам абсолютно байдуже, які символи зберігаються в байтах, що знаходяться за межами кінця рядка. Розглянемо приклад. Нехай рядок s оголошений як string[9], тоді після присвоювання s:=’Привіт’; вона буде зберігається в наступному виді:

Номер байта                    
Уміст #6 ‘П’ ‘р' ‘и' ‘в' ‘е' ‘т' ‘ю' ‘s’ ‘%’

Для того щоб у програмі одержати доступ до n-го символу рядка використовується запис s[n]. Якщо поміняти значення s[0] то це відіб'ється на довжині рядка. У наступному прикладі з рядка 'Привіт' ми зробимо 'Привіт!': s[0]:=#7; s[7]:='!';.

Порівняння рядків. Рядки порівнюються послідовно, по символах. Порівнюються перші символи рядків, якщо вони рівні — то другі, і т.д. Якщо на якомусь етапі з'явилося розходження в символах, то меншим буде той рядок, у якого менший символ. Якщо рядки не розрізнялися, а потім один з них закінчився, то він і вважається меншим. Приклади: 'ананас'<'кокос', 'свиня'>'свинина', ''<'A', 'hell'<'hello'.

Склеювання (конкатенація) рядків. До рядків можна застосовувати операцію «+», при цьому результатом буде рядок, що складається з послідовно записаних «складових». Приклад: після дії s:= 'abc'+'def'+'ghi'; перемінна s буде містити ‘abcdefghi’.

Процедури і функції для роботи з рядками. Найбільше часто уживається функція length(s: string): integer (після двокрапки записаний тип значення, що повертається функцією, у нашому випадку — ціле число). Ця функція повертає довжину рядка s.

Інші процедури і функції приведені в таблиці:

Чи процедура функція Призначення Приклад
функція Copy(s: string; start: integer; len: integer): string Повертає вирізку зі строкової змінної s, починаючи із символу з номером start, довжина якої len s:=’Безглуздий’; s1:=Copy(s,4,4); {у s1 стане ‘користь’}
функція Pos(s1: string; s: string): byte Шукає підрядок s1 у рядку s. Якщо знаходить, то повертає номер символу, з якого починається перше входження s1 у s; якщо s1 не входить у s, то функція повертає 0 n:=pos(‘міністр’, ‘адміністратор’); {=3} n:=pos(‘abc’, ‘stuvwxyz’); {=0}
процедура Insert(s1: string; s: string; start: integer) Вставляє рядок s1 у рядкову змінну s починаючи із символу з номером start. S:=‘кот’; insert(‘мпо’,s,3); {у s стане ‘компот’}
процедура Delete(s: string; start: integer; len: integer) Видаляє зі рядкової змінної s фрагмент, що починається із символу з номером start і довжиною len s:= ‘трикутник’; delete(s,4,6); {у s залишиться ‘три’}




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 416; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.