Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Теоретичні відомості. Рядок - це послідовність довільних символів, які під час використання беруться в апострофи





Рядок - це послідовність довільних символів, які під час використання беруться в апострофи. В рядку може міститися від 0 до 255 символів. Опис рядкового типу складається з ключового слова string, за яким в квадратних дужках записано максимальну кількість символів, яку може мати змінна описуваного типу.

Наприклад,

Type line = string [80];

Var s: line;

T: string [15];

............

s:= 'Довільна послідовність символів'; t: = 'TURBO';

Символи рядка мають номери від 0 до 255, причому ASCII код символу з номером 0 дорівнює поточній довжині даного рядка. До окремого символу рядка можна звернутися за допомогою індексу, так само, як під час звертання до елемента масиву. Так, s[11] = 'о' –11-й символ рядка s, t[0] - нульовий символ рядка t, причому Ord(t[0])=5 - поточна довжина рядка t.

Операції над рядками. Над даними рядкового типу визначено операції додавання, відношення і оператор присвоєння.

Зчеплення двох чи більше рядків в один реалізується за допомогою операції додавання або конкатенації, яка позначається знаком '+'. Додаватися можуть рядки довільної довжини, але необхідно, щоб довжина рядка-результату не перевищувала 255.

Вираз Результат

'Turbo '+'Pascal '+'v.3.0' 'Turbo Pascal v.3.0'

'YAM'+' '+'AHA' 'YAMAHA'

В останньому прикладі пара апострофів, що йдуть підряд, зображає порожній символ. Він не відображається на екрані і не має порядкового номера.

Довільні два рядки можна порівнювати один з одним за допомогою операцій відношення (=, <>, <, >, <=, >=). Порівняння рядків відбувається зліва направо, до першого відмінного символу. Два рядки рівні, якщо вони мають однакову довжину і складаються з однакових символів, що йдуть в одному порядку. Меншим буде той рядок, в якому символ, що не збігається, має менший ординальний номер. Якщо рядки мають різну довжину, але в спільній частині збігаються, то меншим вважається коротший рядок. Результат операції відношення має логічний тип.

Вираз Результат

'ABCDE' > 'ABcde' False

'Turbo' >= 'Turbo' True

' ' < Char(0) True

'0123' <> '1023' True

'Pascal' = 'Pascal' True

Оператор присвоєння використовується для присвоєння рядковій змінній результату виразу, що має рядковий тип. Якщо справа від оператора присвоєння матимемо рядок, що містить більше символів ніж може містити змінна, що стоїть зліва, то зайві праві символи відкидаються. В операторі присвоєння допускається змішування символьного і рядкового типів. Якщо в даному випадку символьній величині присвоюється рядок, поточна довжина якого більша 1, то виникає помилка під час виконання виконання.

Наприклад,

Var s, t: string [12];

c: Char;

Begin

c:= 'T'; s:=c+'urbo'; t:= 'A';

s:=s+' Pascal v.3.0' { в результаті s рівна ' Turbo Pascal v.3.0')

c:=t; {допустимо, бо поточна довжина і - 1 символ}

c:=s {"недопустимо, бо поточна довжина s-12 символів}

end.

Стандартні підпрограми обробки рядків. Під час подальшого опису процедур і функцій під типом anystring розумітимемо будь-який рядковий тип.

Процедури. Delete(Var s:anystring; n,m:Integer)- вилучення m символів з рядка s, починаючи з n- го символу. Якщо n більше довжини рядка, то не відбувається ніяких дій. Якщо n+m більше довжини рядка, то вилучаються всі символи до кінця рядка. Значення n повинно лежати в межах 1..255.

Вираз Результат

s:= 'Turbo' Delete(s,2,3) 'To'

s:= 'Turbo' Delete(s,9,4) 'Turbo'

s:= 'Turbo' Delete(s,4,3 'Tur'

Insert(s:anystring; Var t:anystring; n:Integer)- вставлення рядка s в рядок t перед символом з номером n. Якщо n більше довжини рядка t, то відбувається конкатенація t i s. Якщо довжина результату перевищує максимальну довжину рядка t, то в t залишаються тільки ліві символи. Значення n повинно лежати в межах 1..255.

Нехай t має тип string [9].

Вираз Результат

t:= 'Tuo' Insert('rb',t,3) 'Turbo'

t:= 'Turbo' Insert('.COM',t,7) 'Turbo.COM'

t:= 'Turbo' Insert('INST.COM',t,7) 'TINST.COM'

Str(n:Integer{або Real}; Var s:anystring) -перетворення цілого або дійсного значення n у рядок s. Рядок s повинен мати достатню довжину. Після n може бути вказаний формат, як в операторі виведення Write. Якщо у форматі вказано кількість позицій, яка більша за довжину рядка s, то зайві праві символи будуть відкинуті.

У наступних прикладах змінна r має тип Real і значення 567.89, s має тип string [5], р має тип string [10].

Вираз Число Результат

Str(-100,s) -100 '-100'

Str(13:4,s) _ _13 ' 13'

Str(13:6,s) _ _ _13 ' 1'

Str(r:10,p) 5.6789E+02 '5.6789E+02'

Str(r:8,p) 5.68E+02 '5.68E+02'

Str(r:8:2,p) _ _ 567.89 ' 567.89'

Str(-r:12:2,p) _ _ _ _ _ -567.89 ' -567.'

Val(s:anystring; Var n:Integer{або Real}; c:Integer) – перетворення рядка s у число n. Рядок s повинен бути зображенням деякого числа і не повинен містити початкових і кінцевих пропусків. Якщо перетворення відбулось успішно, то с=0, в противному разі значення n не визначене, а змінна с дорівнює номеру першого помилкового символу в рядку s.

Вираз Результат

Val('1234',n,c) Для n довільного типу його значення 1234 i с=0.

Val('1234',n,c) c=3, n не визначене для n цілого типу;

с=0, n=12.34 для n дійсного типу.

Val('-149_',n,c) с=5, n не визначене для n довільного типу.

Функції. Concat(s1,s2,...,sn:anystring):anystring - конкатенація рядків s1,...,sn в один у вказаному порядку. Якщо довжина рядка-результату перевищить 255, то виникне помилка під час виконання.

Вираз Результат

Concat('Turbo', ' ','Pascal') 'Turbo Pascal'

Сору(s1,s2,...,sn:anystring; n,m:Integer):anystring - результатом є m символів з рядка s, починаючи з символу з номером n. Якщо n більше довжини рядка s, то результатом функції буде порожній символ. Якщо n+m більше довжини рядка s, то результатом функції будуть кінцеві символи, починаючи із символу з номером n. Значення n повинно лежати в межах 1..255.

Вираз Результат

Copy('Turbo Pascal',7,6) 'Pascal'

Copy('Turbo Pascal',14,3) ' '

Copy('Turbo Pascal',9,7) 'scal'

Copy(s,n,1) s[n], якщо

Length(s:anystring):Byte –результатом є поточна довжина рядка s тобто кількість в ньому символів.

Вираз Результат

Length('Turbo ') 6

Length(' ') 0

Pos(s,t:anystring):Byte – результатом є найменший номер символу, починаючи з якого рядок s входить в рядок t. якщо входження немає, то результатом буде 0.

Вираз Результат

Pos('rb', 'Turbo') 3

Pos('AB','BABBABBAB') 2

Pos(' Turbo','Pascal') 0

Методичні вказівки:

а) вивчити правила запису символьних даних (констант, змінних, масивів) та опис способу їх введення та виведення;

б) ознайомитися з основними стандартними процедурами та функціями, які дозволяють оброблювати символьні рядки. Звернути увагу на виклик підпрограм та на типи формальних параметрів;

в) розробити алгоритми розв`язання задач свого варіанта, записавши їх у вигляді блок-схем;

г) забезпечити в програмі виведення коментарів, відповідних різним можливим ситуаціям.

Контрольні запитання:

1. Задавання рядкового та символьного типу.

2. Операції з рядками та символами.

3. Стандартні процедури та функції для дій з рядками.

 

Date: 2015-12-12; view: 395; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию