Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи паскаль.doc
Скачиваний:
0
Добавлен:
12.02.2020
Размер:
1.77 Mб
Скачать

Рядковий тип у турбо-паскалі

Рядковий тип є одним із розширень мови Паскаль, реалізованих в середовищі Turbo - Pascal. Рядковий тип випливає з поняття символьних масивів, але в рядковому типі може змінюватись довжина рядка.

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

Структура опису типу:

TYPE

<ім'я типу>=STRING [<довжина рядка>] ;

Приклад:

TYPE

ST = STRING[80];

VAP

TX : ST;

Зміна ТХ є рядком символів довжиною від нуля до 80 символів. Описати зміну рядкового типу можна і в розділі опису змінних:

VAR

ТХ : STRING[80]; S : STRING;

Максимальна довжина рядка може бути задана цілим числом або іменованою константою цілого типу, а може і не вказуватись. Якщо довжина не вказана, то максимальною довжиною є число 255.

Таким чином найважливішою відміною рядка від символьного масиву є те, що рядки можуть міняти свою довжину.

Хоч на перший погляд пам'ять під змінну рядкового типу виділяється динамічно, проте це не так. Точніше, пам'ять виділяється як і для масивів на етапі трансляції програми по максимальній довжині. Якщо максимальна довжина рядка 80 символів,то виділяється 81 байт. При цьому в 80-ти байтах записується рядок символів, а в нульовому байті довжина цієї строки:

Нехай описана зміна

VAR

SN : STRING[80];

BEGIN

ST: = 'ABCD',

В нульовий байт запишеться довжина рядка ST — 4, а в перший, другий, третій і четвертий байти символи A,B,C,D. Решта 76 байтів буде вільними. Над змінними рядкового типу можуть виконуватися операції.

1) конкатенації ( + ) ST = ST + 'LM'

В результаті виконання цієї операції рядок ST вже буде містити 6 символів:

'ABCDLM'.

2) порівняння: >, >=,<,< =, =, < >.

При виконанні операцій порівняння діють наступні правила:

  • коротший рядок завжди менший від довшого;

  • якщо довжина рядків однакова, то відбувається поелементне порівняння цих рядків з урахуванням лексикографічної впорядкованості значень стандартного символьного типу CHAR.

Значення рядкової змінної може бути присвоєно оператором присвоєння або прочитано з файлу чи з клавіатури. При цьому слід пам'ятати, якщо рядковій змінній присвоюється значення довше ніж максимальна довжина, проходить обрубування рядка до максимальної довжини:

Є два способи роботи із рядками символів:

  • Представити рядок у вигляді символьного масиву.

  • Працювати з рядком як з єдиним цілим за допомогою функцій і процедур.

Робота з символьним рядком, представленим масивом символів

(стандарт мови Паскаль)

На змінну рядкового типу переносяться всі властивості і правила роботи з символьними масивами.

1)Ввід і вивід рядка здійстнюється поелементно в циклі за допомогою процедур

READ і WRITE

2)Доступ до окремого елемента рядка здійснюється з використанням індекса, тобто ST[1], ST[I]. Приклад:

Робота з символьними рядками як з єдиним цілим

(середовище turbo pascal)

Ввід і вивід змінної рядкового типу здійснюється за допомогою процедур READLN і WRITELN без вказування індексу елемента.

READLN(ST); WRITELN(ST); Над змінними рядкового типу визначені такі стандартні функції:

LENGTH(<pndoK>) - визначає довжину рядка, тобто кількість символів у цьому рядку.

CONCAT(S1, S2,...,SN) - з'єднує рядки SI, S2, .. .SN в один рядок.

COPY(S, IND, К) - дає під строку, виділену із рядка S, довжиною К, починаючи з індекса IND;

POS(SP, S) - дає номер позиції, з якої починається підрядок SP в рядку S.

Стандартні процедури:

DELETE(S, IND, K) - вилучає К символів із рядка S, починаючи з починаючи з позиції IND.

INSERT(S1, S, IND) - вставляє S1 в рядок S, починаючи з позиції IND.

КОНТРОЛЬНІ ЗАПИТАННЯ.

  1. Як описуються символьні масиви?

  2. Що таке упакований символьний масив?

  3. Особливості опису рядка символів у мові Turbo-Pascal.

  4. Ввід і вивід елементів строкового типу.

  5. Які операції можна виконувати над змінними строкового типу?

  6. Що означає стандартна функція EOLN?

  7. Яка максимальна розмірність рядка символів описаних типом STRING?

  8. Для чого потрібно задавати довжину змінної рядкового типу?

  9. Як резервується пам'ять під змінну рядкового типу?

ЗАВДАННЯ

  1. Ознайомитись із типами даних, які вживаються у Паскалі і особливостями застосування змінних рядкового типу.

  2. Одержати індивідуальне завдання.

  3. Скласти блок-схему алгоритму і програму на Паскалі для реалізації поставленого завдання.

  4. Виконати обчислення по програмі.

ЗМІСТ ЗВІТУ

  1. Мета роботи.

  2. Короткий опис методів зображення алгоритмів обчислювальних процесів та їх програмування на алгоритмічній мові ПАСКАЛЬ.

  3. Індивідуальне завдання.

  4. Блок-схема алгоритму для обчислення по індивідуальному завданню.

  5. Текст програми.

  6. Аналіз результатів, висновки.