Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л9_2012 строки и множ_а.doc
Скачиваний:
1
Добавлен:
24.11.2019
Размер:
79.36 Кб
Скачать

«У Т В Е Р Ж Д А Ю»

Заведующий кафедрой КС

Профессор Н.Е. Сапожников

« » 2012 г.

Л Е К Ц И Я № 9

по дисциплине «Программирование»

Тема: «Структурированные данные. Строки и множества»

План лекции:

  1. Строки.

  2. Множества.

  3. Составление программ с структурированными данными.

Литература:

  1. Беляева Т.А. и др. Алгоритмические языки программирования. Паскаль. – Севастополь: СНИЯЭиП, 2002 г.

  2. Фаронов В.В. - "DELPHI. Программирование на языке высокого уровня: Учебник для вузов" – СПб.: Питер, 2006. – 640 с.

  3. Фаронов О.В. - "Программирование на языке PASCAL 5.0".- М: Издательство МГУ, 1992.

  1. Строковый тип данных и операции над ними

Строка – это последовательность символов, количество которых колеблется от 0 до 255. Используется для обработки текстовой информации. Строка сравнима с одномерным массивом символов, но имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которое определяется при описании.

Строка имеет две разновидности длины:

  • Общую длину строки, которая характеризует размер памяти, выделяемый строке при описании;

  • Текущую длину строки (всегда меньшую или равную общей длине) которая показывает количество смысловых символов строки в каждый конкретный момент времени и указывается в нулевом элементе строки.

Для обработки текстов в Delphi используются следующие типы:

  • Короткая строка ShortString или String [N], где N<=255;

  • Длинная строка String или AnsiString;

  • Широкая строка WideString;

  • Заканчивающаяся нулем строка PChar.

Общим для этих типов является то, что каждая строка трактуется как одномерный массив символов, количество элементов в котором может меняться в работающей программе: для String [N] длина строки меняется от 0 до N, для String, WideString и PChar – от 0 до 2 Гбайт.

В Windows широко используются заканчивающиеся нулем строки, представляющие собой цепочки символов, ограниченные символом #0. Максимальная длина такой строки лимитируется только доступной памятью и может быть очень большой.

В 32-разрядных версиях Delphi введен новый тип String, сочетающий в себе удобства обоих типов. При работе с этим типом память выделяется по мере надобности (динамически) и ограничена имеющейся в распоряжении программы доступной памятью.

Для совместимости с компонентами, основывающимися на OLE-технологии (см. стр. 8), в 32-разрядных версиях Delphi введены также широкие строки, объявленные стандартным типом WideString. По своим свойствам они идентичны длинным строкам String, но отличаются от них тем, что для представления каждого символа используется не один, а два байта.

Формат:

Const <идентификатор> = ‘<Текст>’;

Var <список идентификаторов> : string[n];

Type <имя типа> = string[n];

где n – количество символов в строке (если не указываются, то 255 символов длина строки по умолчанию).

Пример:

Const C1=’Pascal’;

Var C2,C3,C4: string[20];

Type C=string[50];

Var a,b : C;

Задать значения строке можно двумя способами

  1. Оператором ввода – причем для строк применяется только Readln()

  2. Присвоением последовательности символов строковым переменным.

С правой стороны от оператора присваивания может находиться произвольное строковое выражение, а с левой имя строковой переменной. Если длина строки представлена выражением больше максимального размера переменной, то присваивание происходит слева направо, а избыточные символы опускаются.

Пример:

Readln(C2);

C3:=’Borland’+C2;

Произвольные пары строк могут сравниваться с помощью операторов отношений: =, <>, <, >, <=, >=.

Приоритет каждого оператора отношения ниже приоритета операции канкатинации (объединение строк – результатом, которой является строка, представляющая собой строку состоящую из всех символов первой строки и следующих за ними всех символов второй строки).

Две строки равны только тогда, когда они одинаковой длины и состоят из идентичных символов. Если они не равны, то отношение строк заменяется отношением весов первых двух соответствующих друг другу, но неравных символов. Если такая пара не найдена, а строки совпадают до последнего символа более короткой строки, то короткая строка рассматривается как меньшая.

Расширение совокупности строковых операций являются процедуры и функции работы со строками.

Функции и процедуры для работы со строками:

Copy(s1, pos, kol):string – функция копирует из строки S1 количество kol символов, начиная с символа с номером pos.

Concat(s1,s2,..,sn):string – функция возвращает строку, представляющую собой сцепление строк-параметров s1, s2, ... ,sn.

Insert(s1, s2, pos) – процедура вставляет подстроку s1 в строку s2 начиная с позиции pos.

Delete(s, pos, kol) – процедура удаляет количество символов kol из строки s, начиная с позиции pos.

Length(s):integer - функция возвращает текущую длину строки s.

Val(s, arg, cod) – процедура преобразует строку символов s, в целое или вещественное значение arg, определяемое типом переменной, при этом позицию непреобразованного символа возвращает переменная cod.

Pos(s, text): integer – функция отыскивает в строке text первое вхождение подстроки s и возвращает номер позиции, с которой она начинается. Если подстрока не найдена, возвращается нуль.

SetLength(s, NewLength) – процедура устанавливает новую (меньшую) длину NewLength строки s. Если NewLength больше текущей длины строки, обращение к SetLength игнорируется.

Str(i,s) – процедура преобразует число i с заданным форматом в строку s.