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.


 

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

1857. МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ ЗАНОСА АВТОМОБИЛЯ 1.09 MB
  Анализ подходов к математическому и численному моделированию движения автомобиля. Постановка задачи. Оценка области применимости велосипедной модели. Математические модели движения автомобиля без потери сцепления колес с дорогой. Математическая модель переменной структуры для описания заноса автомобиля.
1858. МЕТОДИЧЕСКИЕ ОСНОВЫ ФОРМИРОВАНИЯ СИСТЕМЫ ЦЕНООБРАЗОВАНИЯ БАНКОВСКИХ УСЛУГ 1.26 MB
  Необходимость и специфика ценообразования в коммерческих банках. Банковская услуга как объект ценообразования в кредитных организациях. Анализ влияния внешних факторов на ценообразование в коммерческих банках. Стратегия банка как основа моделирования системы ценообразования банковских услуг.
1859. ПОДВЕСКА АВТОМОБИЛЯ, ТОРМОЗНАЯ СИСТЕМА АВТОМОБИЛЯ 1.25 MB
  Целью методических указаний является оказание помощи студентам при проведении лабораторных работ по разделам Подвеска автомобиля и Тормозная система автомобиля курса Автомобили. Излагаются основные теоретические сведения, порядок выполнения и требования к оформлению отчетов по проведению лабораторных работ.
1860. ФИНАНСОВАЯ ОЦЕНКА КАЧЕСТВА ДОВЕРИТЕЛЬНОГО УПРАВЛЕНИЯ АКТИВАМИ ПАЕВЫХ ИНВЕСТИЦИОННЫХ ФОНДОВ РОССИИ 1.25 MB
  Доверительное управление на рынке ценных бумаг как эффективная форма привлечения инвестиций. Формирование концептуального подхода к финансовой оценке качества доверительного управления активами отечественных паевых инвестиционных фондов. Характеристика экономической эффективности деятельности паевых инвестиционных фондов акций.
1861. Гражданский процесс 1020.82 KB
  Понятие, предмет и метод гражданского процессуального права. Гражданские процессуальные отношения и их субъекты. Подведомственность и подсудность гражданских дел. Процессуальные сроки. Судебные расходы. Судебные штрафы. Возбуждение гражданского дела в суде. Досудебная подготовка дела.
1862. Методика обучения иностранных студентов аудированию на материале языка специальности 1.25 MB
  Психолого-педагогические и лингвистические основы исследования процесса обучения аудированию. Определение уровня владения умениями и навыками в области аудирования перед началом занятий по экспериментальной программе. Содержание и структура экспериментальной программы. Принципы, положенные в основу экспериментального обучения. Анализ результатов экспериментального обучения.
1863. Гидравлика. Теоретические и практические сведения 1.25 MB
  Предмет гидравлики. Краткая история развития. Понятие реальной и идеальной жидкости. Вязкость. Физические свойства жидкости и газов. Уравнение неразрывности. Расход. Поток. Гидравлические элементы потока. Уравнение Бернулли. Основное уравнение установившегося равномерного движения. Режимы движения жидкости. Гидравлические сопротивления. Классификация трубопроводов. Понятие коротких и длинных трубопроводов. Параллельное и последовательное соединение трубопроводов. Расчет простых и сложных трубопроводов. Расчет сложных замкнутых трубопроводов.
1864. Конституционно-правовой статус Кабардино-Балкарской Республики как субъекта Российской Федерации 1.25 MB
  Становление и развитие национальной государственности Кабардино-Балкарской Республики. Конституционные основы организации государственной власти в Кабардино-Балкарской Республике. Президент и Правительство Кабардино-Балкарской Республики в системе исполнительной власти Кабардино-Балкарской Республики и Российской Федерации. Конституционно-правовые основы взаимоотношений КБР с субъектами Российской Федерации в Южном федеральном округе.
1865. АВТОМАТИЗИРОВАННАЯ СИСТЕМА СМЫСЛОВОЙ ОБРАБОТКИ ТЕКСТОВ ПРИ СОЗДАНИИ ЭЛЕКТРОННЫХ ФОНДОВ БИБЛИОТЕКИ 1.25 MB
  Автоматизированная система смысловой обработки текстов. Описание работы системы автоматизированного смыслового анализа текстов. Экспертные системы и система визуального эвристического анализа – сходства и отличия. Алгоритм отбора слов в естественно-тематический словарь. Система смысловой обработки текстов в современной библиотеке как перспективное направление развития ИРБИС.