русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Рядки (string)


Дата додавання: 2014-11-28; переглядів: 837.


1. Рядки та дії з ними. Дане типу рядок — це послідовність довільних символів (тобто елементів типу char). Сталі типу рядок записують за допомогою двох штрих-символів, які охоплюють текст. Рядок може міс­ти­ти від 0 до 255 символів. Наприклад, 'Україна', 'Львівська політех­ніка', '' – порожній рядок нульової довжини, ' ' – рядок, що містить один символ-пропуск.
Змінну типу рядок оголошують за допомогою слова string так:

var <змінна>: string[n];

де n –довжина рядка, n<256. Довжину рядка можна не зазначати.
Приклад.
const slovo=’University’;
var fraza1: string[45]; fraza2: string;
Над змінними типу рядок визначені операції з’єднання (+) та по­рів­­няння (<, <=, >, >=, =, <>). Порівняння двох рядків здійс­нюється зліва направо до перших різних символів, причому 'A'<'B', 'B'<'C' тощо. “Більшим” вважається символ, який розташований в алфавіті далі (він має більший номер у таблиці кодів комп’ютера ASCII, див. § 14). Числовий код символу дає функція ord, на­приклад, ord('B')=66, ord('A')=65. Зворотну дію виконує функція chr: chr(66) дає 'B'.
Приклад. Нехай t1='New', t2=' Year'. Тоді з'єднанням цих рядків буде s:=t1+t2 (s матиме значення 'New Year'). Тут s > t1.
Приклад. Вивести на екран малі літери латинського алфавіту та їхні коди можна так: for v:= 'a'to 'z'do writeln(v, ord(v):5).
2. Функції та процедури для дій з рядками. Над даними типу рядок визначені такі стандартні функції:

  length(<рядок>) — визначає кількість символів у рядку; copy(r, m, n) — дає n символів рядка r, починаючи з символу з номером m; concat(r1, r2, ..., rn) — з'єднує рядки r1, ..., rn в один рядок; pos(r1, r2) — визначає номер символу, з якого починається входження рядка r1 у рядок r2.

та процедури:

  insert(r1, <змінна>, n) — вставляє рядок r1 у рядок, заданий змінною, починаючи з позиції n; delete(<змінна>, m, n) — вилучає n символів з рядка, заданого змінною, починаючи з позиції m; str(<число>, <змінна>) — переводить числове дане в дане типу рядок;

де зазначена змінна посилає в процедуру вхідне дане типу рядок і отримує назад інший рядок – результат виконання процедури.
Приклад. Нехай змінна Lviv має значення 'Львівська політех­ніка'. Розглянемо приклади функцій та їхні значення:

  Функція length(Lviv) copy(Lviv, 15, 11) concat(Lviv,' – 2000') pos('т', Lviv)   Значення 21; техніка; Львівська політехніка – 2000; 15.

Наступні процедури нададуть змінній Lviv таких значень:

  Процедура insert('НУ ', Lviv, 1) delete(Lviv, 6, 16) str(2000, Lviv) val('1256', Lviv1, Ozn)   Значення змінної Lviv 'НУ Львівська політехніка' 'Львів' '2000' Lviv1=1256, Ozn=0

Є два способи опрацювання даних типу string. Перший — можна опра­цьовувати весь рядок як єдине ціле, застосовуючи до нього функції та процедури, другий — можна розглядати рядок як масив, складений з елементів-символів, і опрацьовувати його за правилами роботи з елементами масиву.
Приклад. Деякі значення змінним fraza1 та fraza2 з поперед­ньо­го прикла­ду можна надати, а потім вивести тексти на екран так:

  fraza1:=’Ви любите канікули?’; for i:=1 to 19 do read(fraza2[i]);{Вводимо текст з клавіатури} writeln(fraza1); writeln(fraza2).

Задача 1. Кодування інформації. Вилучити з фрази а пропуски, коми і крапки, інші символи продублю­вати. Вивести результат.

  program MyCode; var a, b, c : string; i : integer; begin write('Введіть текст: '); readln(a); b := ''; for i := 1 to Length(a) do begin c := Copy(a, i, 1); if (c <> ',') and (c <>'.') and (c <>' ' ) then b := b + c + c end; writeln(b); readln end.   {Вводимо будь-яку фразу} {Зверніть увагу на коментар унизу:} { або так: c := a[i]; }

Задача 2. Скласти програму, яка скрізь у заданому тексті my­text замінить деяке слово іншим словом такої ж довжини (word1 на word2).

  program FindAndChange; uses Crt; var mytext, word1,word2 : string; i,k : integer; begin clrscr; write('Введіть текст: '); readln(mytext); write('Введіть шукане слово: '); readln(word1); write('Введіть інше слово: '); readln(word2); k := length(word1); for i := 1 to length(mytext) - k do if copy(mytext, i, k) = word1 then begin delete(mytext, i, k); insert(word2, mytext, i) end; writeln(mytext); readln end.

Задача 3. Нехай задано рядок 'Я люблю інформатику'. Визна­чити довжи­ну рядка. Вивести на ек­ран дру­ге слово цього рядка.

  program Ryadok; uses Crt; const r1: string = 'Я люблю інформатику'; var i,k,m,n1,n2: integer; begin clrscr; m:=0; k:=length(r1); writeln('Довжина рядка k=', k); for i:=1 to k do if r1[i]=' ' then begin m:=m+1; if m=1 then n1:=i; if m=2 then n2:=i end; for i:=n1+1 to n2–1 do write(r1[i]); readln end.   {Визначаємо довжину рядка} {Переглядаємо всі символи рядка} {Шукаємо пропуск} {Визначаємо номер першого та другого пропусків} {Виводимо слово між двома пропусками}

Завдання 1. Розв’яжіть попередню задачу, використовуючи функцію pos для визначення позиції пропуска і процедуру delete для отри­мання другого слова.
Завдання 2. Деякий текст закодуйте кодом Цезаря, замінивши кожну букву на четверту за нею букву з алфавіту.
Завдання 3. Розв’яжіть задачі № 13а і 13б свого варіанта.


<== попередня лекція | наступна лекція ==>
Розгалуження | Множини


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн