69742

Символьні масиви. Рядковий тип

Домашняя работа

Информатика, кибернетика и программирование

Крім того, для рядкових масивів допустима операція конкатенації, яку позначають символом +. Вона полягає у формуванні нового символьного масиву, розмір якого дорівнює сумі розмірів масивів-операндів, а значення - це елементи масивів-операторів, розміщені послідовно.

Украинкский

2014-10-09

40 KB

0 чел.

Самостійне вивчення

Тема 4: Символьні масиви. Рядковий тип.

Окремо виділимо масиви, елементи яких є символьного типу (char). Такі одновимірні масиви, індексами яких є діапазон цілого типу, називають рядками. Наприклад:

var R: array [1..14] of char;

У Паскалі є деякі додаткові засоби роботи з такими масивами. По-перше, змінним такого типу можна присвоювати символьні сталі (тобто рядки символів):

R:='Рядок символів';

У цьому випадку довжина присвоюваного рядка повинна чітко збігатися з розмірністю відповідного символьного масиву.

Крім того, для рядкових масивів допустима операція конкатенації, яку позначають символом +. Вона полягає у формуванні нового символьного масиву, розмір якого дорівнює сумі розмірів масивів-операндів, а значення - це елементи масивів-операторів, розміщені послідовно. Наприклад:

var

s1: array [1..5] of char; s2: array [1..8] of char;

Тоді можна записати

s1:='Рядок'; s2:='символів'; writeln(s1+'   '+s2);

Буде виведене повідомлення: Рядок символів

Виведення для рядка не є обов'язково покомпонентне, дозволено задати й ім'я. Операцію конкатенації не можна використати в правій частині присвоєння, наприклад, s:=s1+s2. Для цього треба застосувати рядки змінної довжини.

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

знаків -, <>, <, <-, >, >=. Для цього використовують властивість упорядкованості рядків. Рядки порівнюють шляхом послідовного порівняння символів до першого незбігання. Незбіжні символи визначають упорядкованість рядків. Упорядкованість же символів визначена їхнім внутрішнім зображенням у комп'ютері, зокрема, для букв - це алфавітний порядок, для цифр - порядок за зростанням.

Для прикладу порівняємо дві змінні рядкового типу:

type

aa=array [1..10] of char;

var

x1, x2: aa;

b: boolean;

x1 :='програма 1';

х2:='прогноз 22;

b:=х1>х2;

У цьому випадку b буде мати значення true, оскільки 'р'>'н'. Стандартна процедура read не читає автоматично рядки, їх треба читати в циклі символ за символом.

Рядковий тип (string)

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

type

<ім'я>=string[<максимальний розмір>];

Наприклад:

type

Line=string[80];

var R: Line;

Тепер змінна R типу Line може набувати значення будь-якої послідовності символів (типу char) завдовжки від 0 до 80. Це значення може бути присвоєне або введенне. Наприклад:

R:='Гpyпa КТ-14'; або readln(R); (3 клавіатури вводять ГрупаКТ-14<Enter>).

Як і для символьних масивів, тут використовується операція конкатенації. Наприклад:

writeln(R+'складає іспит 20-го січня');

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

Під змінну рядкового типу відводиться N+1 байтів пам'яті, де N - максимальна довжина, зазначена в описі (рис 1).

Нульовим елементом є байт, що містить значення довжини поточного рядка, наступні k елементів - поточне значення рядка, і байти k+1..N- вільні.

 0 1 2          к    к+1 n-1      n

 Значення рядкової змінної Вільна частина

Довжина рядкової змінної

Рис. 1. Структура пам'яті для даних типу string.

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

Writeln (ord(R[0]))

З іншого боку, якщо спочатку присвоїти R[0]:=5;

то writeln(R) виведе "Група", тобто тільки п'ять елементів.

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

writeln(Length(R+'здає  іспит 20-го січня')); виведе число 33 - цілого типу.

Крім операції конкатенації, над змінними рядкового типу визначені операції порівняння, у разі використання яких діють такі правила:

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

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

Присвоєння змінній рядкового типу виразу з довжиною, більшою від максимально допустимої, зумовлює до обрізання рядка до максимальної довжини. Наприклад:

var

st: string [5];

st:='Програма';

writeln(st);

Буде виведене слово Прогр.

Доступ до окремих елементів рядкових типів такий самий, як і до елементів звичайних одновимірних масивів - за допомогою індексів у квадратних дужках. Наприклад: R[5];     st[2].

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

У Турбо Паскалі з рядковими типами використовують низку функцій:

1) concat([s1 ,s2,...,sn]: string): string - злиття довільної кількості рядків. Якщо довжина вислідного >255, то він буде обрізаний;

2) copy(s: string; Index: integer; Count: integer): string - повертає частину рядка 5 довжиною Count, починаючи від символу з номером Index;

3) delete(var s: string; Index, Count: intrger) - вилучає з рядка s частину цього рядка довжиною Count, починаючи з Index;

4)  Insert(Source: string; var s: string; Index: integer) — вставляє рядок Source в рядок s, починаючи з Index;

5)  Length(s: string): integer - повертає довжину рядка s;

6) Pos(Substr, s: string): byte - результатом цієї функції є номер позиції, з якої в рядку s розміщений рядок Substr.


 

А также другие работы, которые могут Вас заинтересовать

59503. Козацькі забави в літніх таборах 48.5 KB
  Ведуча: Ось подивіться це наші козаки. Ведуча: А зараз довгожданий момент козацька старшина виносить своє рішення. Ведуча: Ось тобі і козаки Цікаво а що потрібно робити щоб такими стати Ведучий: Потрібно мати велику силу а щоб її мати треба багато їсти.
59504. Така любов буває раз в ніколи... - конкурсна програма до Дня святого Валентина 50.5 KB
  Про кохання не говорять, про нього вже все сказано... Тож сьогодні будемо мовчки вдихати аромат закоханості, насолоджуватися захоплюючим видовищем, представленим на сцені, цікавими і веселими конкурсами, романтичною музикою.
59505. Виховний захід: Свято зустрічі весни 50.5 KB
  Мета. Дати поняття про свято Сорока Святих, актуалізувати знання учнів про обрядові пісні, хороводи. Актуалізувати знання про птахів, користь, яку вони приносять.
59506. Ой весела в нас пора, білосніжная зима (розвага для середньої групи дошкільного закладу) 34.5 KB
  Мета: за допомогою вправ та розвивальних ігор закріпити в дошкільнят навички виконання циклічних вправ: біг по колу один за одним, ходьби на носках і по обмеженій площі, стрибків з місця з просуванням уперед...
59507. Сценарій :“Сію, сію, посіваю...” (народні звичаї та обряди) 48.5 KB
  Урожай дорідний в полі і Христос роздається Рік новий йде новим кроком Всі вітаєм з Новим Роком Здоров’я міцного щастя багато чистої води з криниці в полі ярої пшениці Хліба солі на столі і погоди на душі €œСію вію посіваю. На щастя на здоров’я На Новий рік на нове літо...
59508. Сценарій. Останній дзвоник, святкова лінійка 60.5 KB
  Дорогі випускники! Вмийтеся ще раз у нашу шкільну родину, вслухайтеся востаннє в переспів дзвінка і збережіть у своїй пам’яті ці неповторні хвилини прощання зі школою.
59509. Сценарій: Екологічний “КВК” у дошкільному закладі 35.5 KB
  Хід заняття: Діти заходять в зал оформлений у вигляді лісу Вихователь: Доброго дня тобі Лісовичко а ми до тебе в гості прийшли. Лісовичок: В гості А хто вас кликав Я ще від минулих гостей не оговтався: насмітили все понищили звіряток моїх образили ні Закрита сюди дорога...
59510. Теренкур – ігрова програма 52.5 KB
  Карта маршрутів теренкуру вивішується на загальний огляд. Готуються до прийому дітей пункти теренкуру Кросвордист Астролябія Скаут Міфліказ Апачі Арічамі Посмішка Ноти Вигадувалки. Ведучий: Ласкаво просимо до нас на Теренкур...
59511. Виховний захід: Як Батьківщина й сонечко над нами, отак і мама на землі одна 68.5 KB
  Адже тільки мати була є і залишається для нас живим символом рідного дому рідної землі. Стоїть на землі мати вища й найсвятіша від усіх богинь. Стоїть мати і молиться за народ за своїх синів і дочок за нас з вами і перші слова її молитви...