Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

ЛАБОРАТОРНА РОБОТА № 5 Рядки в мові Pascal



 

Мета заняття. Дати поняття рядкових величин, вказівок та функцій опрацювання рядкових величин.

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

Рядок—це послідовність символів кодової таблиці комп'ютера (ASCII таблиця). При використанні у виразах рядок береться в одинарні лапки.

Кількість символів у рядку (довжина рядка) може динамічно змінюватися від 0 до 255. Для опису даних рядкового типу використовується ідентифікатор string, за яким вказується в квадратних дужках значення максимально допустимої довжини даного рядка. Якщо значення не вказується, то вважається, що довжина рядка складає 255 байт.

Змінну рядкового типу можна визначити безпосередньо в розділі опису змінних. Рядкові дані можуть використовуватися в програмі також у якості констант. Опис рядкового типу встановлює максимальну кількість символів, що може їх вмістити рядок.

Формат опису:

Var

«ідентифікатор, . . . > : string [<махсимальна довжина рядка>] ;

Приклад:

ST : string; {опис рядка довжиною 255 символів (відсутня довжина рядха в описі)}

ST1 : string[50]; {опис рядка довжиною 50 символів)

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

Операція зчеплення (+) застосовується для з'єднання кількох рядків в один результуючий рядок. Наприклад, 'П' +' Е' +' О' +' М' в 'ПЕОМ'

Довжина результуючого рядка не повинна перевищувати 255 символів.

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

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

Процедуридля роботи з рядками.

Delete(Str,Poz,N) — вилучення N символів рядка Str, починаючи з позиції Poz. Якщо Poz>255, виникає програмне переривання.

Insert(Strl,Str2,Poz)—вставка рядка Strl у Str2, починаючи з позиції Poz.

Str(Number,St) — перетворення числового значення величини Number і занесення результату в рядок St. Після Number може записуватися формат, аналогічний формату виведення. Якщо у форматі зазначена недостатня кількість розрядів, поле виведення розширюється до потрібної довжини.

Значення Number Вираз Результат
Str(Number:6,Str) '___1500'
4.8Е+03 Str(Number:10,Str) '_____4800'
Str(-Number:3,Str) '-76854'

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

Значення Str Вираз Результат
'1450' val(Str,Number,Cod) 1450 Cod=0
'14.2Е+02' val(Str,Number,Cod) 1420 Cod=0
'14.5А+01' val(Str,Number,Cod) ? Cod=5

Функції для роботи з рядками.

Lenght(St)— обчислює поточну реальну довжину в символах рядка St. Результат має цілий тип.

Copy(St,Poz,N)— копіює з St підрядок довжиною N символів, починаючи з позиції Poz. Якщо Poz > Lenght(St), то результатом буде пробіл; якщо Poz > 255, то виникне помилка при виконанні.

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

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

ЗАДАЧА № 1

Нехай дано деякий текст. Обчислити, скільки разів повторюється наперед заданий символ а.

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

Оскільки рядок фактично можна вважати масивом символьних величин, для його обробки необхідно організувати цикл від першого до останнього символу рядка (length(St)), що буде переглядати кожен елемент рядка та порівнювати його з шуканим символом. У випадку збігу елементів, що порівнюються, лічильник збільшується на одиницю.

Програма, що реалізує описаний алгоритм, має наступний вигляд:

Program Example_1;

Uses crt;

Var і,count:word;

{і — змінна циклу, count — кількість знайдених символів}

a:char; {a — шуканий символ}

St:string; {St — даний текст}

Begin

Clrscr;

Write('Введіть текст: ');

Readln(St);

Write('Введіть шуканий символ: ');

Readln(a);

Count:=0; (Початкове значення лічильника}

For i:=1 to length(St) do

If St[i] = a Then count:=count+l;

Writeln('Шуканих символів в тексті ',count);

Readkey; {Затримка зображення на екрані}

End.

ЗАДАЧА № 2

У даному тексті замінити всі символи «:» на символи «-» і навпаки.

Розв’язання. Для виконання заміни в тексті одного символу іншим слід знайдений символ (або групу символів) спочатку вилучити процедурою insert, а потім з тієї ж самої позиції вставити бажаний символ (або групу символів). Зверніть увагу на те, що команди розгалуження повинні бути обов'язково вкладеними, тому що якщо ми знайдемо символ «:»і виконаємо заміну, то на його місці з'явиться символ «-», який теж підлягає заміні (для символу «-» міркування будуть такими самими).

У результаті текст після закінчення роботи програми відтвориться у початковому вигляді. Програма має вигляд:

Program Example_2;

Uses crt;

Var і:word; {і - змінна циклу} St:string; {St - даний текст}

Begin

Clrscr;

Write('Введіть текст: ');

Readln(St);

For i:=1 to length(St) do

If St[i] = ':' Then

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.