Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_OP / T10.doc
Скачиваний:
90
Добавлен:
17.03.2016
Размер:
586.75 Кб
Скачать

ПЛАН

РЯДКИ 1

Поняття рядка в мовах програмування 1

Опис рядків 2

Введення-виведення рядків 3

Обробка рядків 4

Параметри-рядки 14

Масиви рядків 15

Обробка STL-рядків 20

Рядки Поняття рядка в мовах програмування

Один з різновидів одновимірних масивів — масив символів, або рядок, — посідає особливе місце у багатьох мовах програмування. І це не випадково, адже алгоритми перетворення рядків застосовуються для вирішення вкрай широкого кола задач: редагування та перекладу текстів, алгебраїчних перетворень формул, криптоаналізу, в інформаційно-пошукових системах, електронних словниках тощо. Рядки, як різновиди даних, призначені для введення, обробки і виведення символьної інформації.

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

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

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

Зокрема, у мові С не визначено вбудованого рядкового типу даних, але поняття “рядка”, як єдиної лінгвістичної конструкції, існує. Рядком в С вважається символьний масив, який завершується символом кінця рядка '\0' (NULL-символом). Такий підхід до реалізації рядків дає програмісту більше "важелів" керування порівняно з тими мовами, у яких використовується окремий рядковий тип даних.

В сучасних IDE, що підтримують мову С++, доступною для роботи є так звана стандартна бібліотека шаблонів STL (Standard Template Library), яка містить універсальні шаблонні класи і функції, які реалізують функціональність багатьох структур даних. Зокрема, в ній є клас string, що служить для організації роботи з рядками. Сам STL-рядок розглядається як контейнер для зберігання символів. Для використання класу string необхідно підключити заголовний файл <string>.

При розміщенні у пам'яті рядок, як різновид масиву, займає зв’язну область і зберігається як безперервна послідовність символів. Часто при компіляції програми для даних рядкового типу резервується ділянка пам'яті, розмір якої дещо більший за загальну довжину рядка (зазвичай, на 1 байт). Додатковий байт використовується для зберігання допоміжних даних, зокрема, значення поточної довжини рядка (у Pascal) або символа кінця рядка (у С/С++).

Опис рядків

Синтаксис опису змінної-рядка залежить від способу подання рядка, характерного для тієї чи іншої мови програмування. Якщо мова програмування має вбудований рядковий тип даних, то змінна-рядок оголошується з використанням відповідного ідентифікатора типу (наприклад, типу string у Pascal).

У С/С++ змінна-рядок, як масив символів, має наступний синтаксис оголошення:

char ім’я[загальна_довжина].

Оголошений масив символів повинен мати такий розмір, щоб мати змогу зберігати найдовший рядок, що оброблятиметься, та символ кінця рядка '\0'.

Як і у випадку масиву, ім’я рядка у С/С++ є покажчиком на нього (на його перший символ). Отже, рядок можна оголосити і як покажчик на тип char:

сhar *ім’я.

Наприклад,

char str[26]; // змінна-рядок

char *st. // покажчик на рядок

При зазначенні довжини рядка слід враховувати завершальний нуль-символ. Наприклад, у вищенаведеному рядку str можна зберігати не 26, а лише 25 символів.

Рядок, як масив символів, у С/С++ може як оголошуватися, так і визначатися. Ініціалізація рядка здійснюється під час його визначення за допомогою рядкових літералів або як перелік окремих символів. Наприклад,

char str1[]="ПРИВІТ"; // довжина рядка визначається автоматично

char str2[4]={‘а',‘b’,‘с',’\0’}; // '\0' заноситься явно

char *st = "Приклад \

довгого рядка";

char *st 1= "";

Рядок, визначений останнім (""), вважається порожнім або нульовим. Він складається тільки з '\0' (ознаки завершення рядка).

При визначенні рядків за допомогою літералів, програмісту не потрібно вручну додавати в кінець нуль-символ - компілятор робить це автоматично. Отже, рядок "ПРИВІТ" в пам'яті розміщується так:

Не слід плутати символьну константу з рядком, що містить один символ: 'Х' - це окремий символ (символьна константа), що займає 1 байт пам'яті; "Х" - це рядок (рядкова константа), що складається з одного символу (букви Х) та символу кінця рядка '\0' і займає 2 байти пам'яті.

STL-рядки (у С++) створюються і визначаються наступним чином:

string s1, s2; // створення рядків s1 і s2

string str1(“Hello”); // створення і ініціалізація рядка str1

string str2=“greetings”; // ще одне створення і ініціалізація рядка str2

Окрім рядка-змінної у програмах можна використовувати рядкові (текстові) константи, які не можуть змінювати своє значення в процесі роботи програми. Описуються вони використання ключового слова const. У С/С++ рядкову константу можна описати як через через ім’я, так і через покажчик на її перший символ. Оскільки ім’я рядка є покажчиком на його перший елемент, то наступні визначення будуть еквівалентними:

const char *str1="Рядок 1";

const char str2[]="Рядок 2";

Рядкові константи можна визначити і за допомогою директиви препроцесора #define, наприклад,

#define str "Приклад рядка" // ' \0' заноситься автоматично

Для використання цієї рядкової константи достатньо вказати її ім’я (str) у відповідному місці програми.

Соседние файлы в папке lektsii_OP