Файл: Практическая работа 16 Тема Программирование строк Цель Развитие навыков и умений использования обработки строковых переменных.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 05.12.2023
Просмотров: 16
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Практическая работа № 16
Тема : Программирование строк
Цель: 1. Развитие навыков и умений использования обработки строковых переменных
2. Развивать навыки применения языковых конструкций операторов Delphi
3.Углублять навыки работы в среде программирования Delphi.
4.Развивать навыки и приемы управления компонентами среды Delphi
Краткая теоретическая часть
Строка — это последовательность символов.
Для объявления строк используют следующие типы:
Shortstring длина от 1 до 255 символов
String(Ansistring) бесконечная, но ограничена размером 2Гб, в кодировке ANSI кода
WideString бесконечная, но ограничена размером 2Гб, в кодировке UniCode
Фрагмент таблицы символьной кодировки ASCII
Код | ACSII символ | | Код | ACSII символ | | Код | ACSII символ |
65 | A | | 128 | А | | 224 | р |
66 | B | | 129 | Б | | 225 | с |
67 | C | | 130 | В | | 226 | т |
68 | D | | 131 | Г | | 227 | у |
… | … | | … | … | | … | … |
88 | X | | 157 | Э | | 237 | э |
89 | Y | | 158 | Ю | | 238 | ю |
90 | Z | | 159 | Я | | 239 | я |
97 | a | | 160 | а | | 240 | Ё |
98 | b | | 161 | б | | 241 | ё |
99 | c | | 162 | в | | 255 | пробел |
100 | d | | 163 | г | | 48 | 0 |
… | …. | | … | … | | 49 | 1 |
120 | x | | 173 | н | | .. | … |
121 | y | | 174 | о | | 57 | 9 |
122 | z | | 175 | п | | 13 | |
Форматы кодирования символов
Существуют различные форматы кодирования символов. Отдельный символ строки может быть представлен в памяти одним байтом (стандарт Ansi), двумя байтам (стандарт Unicode) и даже четырьмя байтами (стандарт UCS-4 — Unicode). Строка “Wirth” (фамилия автора языка Pascal — прародителя языка Delphi) будет представлена в указанных форматах следующим образом (рисунок 1):
Рисунок 1. Форматы кодирования символов
Функции и процедуры для работы со строками
Стандартно подключаемый модуль System имеет набор процедур и функций, значительно облегчающих этот процесс. Все следующие процедуры и функции применимы и к коротким, и к длинным строкам.
-
Concat(S1, S2, ... , Sn): string — возвращает строку, полученную в результате сцепления строк S1, S2, ..., Sn. По своей работе функция Concat аналогична операции сцепления (+). -
Copy(S: string, Index, Count: Integer): string — выделяет из строки S подстроку длиной Count символов, начиная с позиции Index. -
Delete(var S: string, Index, Count: Integer) — удаляет Count символов из строки S, начиная с позиции Index. -
Insert(Source: string; var S: string, Index: Integer) — вставляет строку Source в строку S, начиная с позиции Index. -
Length(S: string): Integer — возвращает реальную длину строки S в символах. -
SetLength(var S: string; NewLength: Integer) — устанавливает для строки S новую длину NewLength.
-
Pos(Substr, S: string): Byte — обнаруживает первое появление подстроки Substr в строке S. Возвращает номер той позиции, где находится первый символ подстроки Substr. Если в S подстроки Substr не найдено, результат равен 0.
-
Str(X [: Width [: Decimals] ], var S: string) — преобразует числовое значение величины X в строку S. Необязательные параметры Width и Decimals являются целочисленными выражениями. Значение Width задает ширину поля результирующей строки. Значение Decimals используется с вещественными числами и задает количество символов в дробной части.
-
Val(S: string, var V; var Code: Integer) — преобразует строку S в величину целого или вещественного типа и помещает результат в переменную V. Если во время операции преобразования ошибки не обнаружено, значение переменной Code равно нулю; если ошибка обнаружена (строка содержит недопустимые символы), Code содержит номер позиции первого ошибочного символа, а значение V не определено.
Описанные процедуры и функции являются базовыми для всех остальных подпрограмм обработки строк из модуля SysUtils.
-
AnsiCompareStr(const S1, S2: string): Integer — сравнивает две строки, делая различие между заглавными и строчными буквами; учитывает местный язык. Возвращаемое значение меньше нуля, если S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2. -
AnsiCompareText(const S1, S2: string): Integer — сравнивает две строки, не делая различий между заглавными и строчными буквами; учитывает местный язык. Возвращаемое значение меньше нуля, если S1 < S2, равно нулю, если S1 = S2, и больше нуля, если S1 > S2. -
AnsiLowerCase(const S: string): string — преобразует заглавные буквы строки S к строчным буквам с учетом местного языка. -
AnsiSameStr(const S1, S2: string): Boolean — сравнивает строки, делая различие между строчными и заглавными буквами; учитывает местный язык. -
AnsiSameText(const S1, S2: string): Boolean — сравнивает строки, не делая различие между строчными и заглавными буквами; учитывает местный язык. -
AnsiUpperCase(const S: string): string — преобразует все строчные буквы в заглавные; учитывает местный язык. -
IsDelimiter(const Delimiters, S: string; Index: Integer): Boolean — проверяет, является ли символ S[Index] одним из символов строки Delimiters. Функция поддерживает работу с многобайтовой MBCS-кодировкой. -
LastDelimiter(const Delimiters, S: string): Integer — возвращает индекс последнего вхождения одного из символов строки Delimiters в строку S. -
LowerCase(const S: string): string — преобразует все заглавные буквы строки S к строчным; не учитывает местный язык (в преобразовании участвуют лишь символы в диапазоне от 'A' до 'Z'). -
SameText(const S1, S2: string): Boolean — сравнивает строки, не делая различие между строчными и заглавными буквами; учитывает местный язык. -
SetString(var S: string; Buffer: PChar; Len: Integer) — копирует строку с типом PChar в строку с типом string. Длина копируемой строки задается параметром Len. -
StringOfChar(Ch: Char; Count: Integer): string — возвращает строку, в которой повторяется один и тот же символ. Количество повторений задается параметром Count. -
Trim(const S: string): string — возвращает часть строки S без лидирующих и завершающих пробелов и управляющих символов. -
TrimLeft(const S: string): string — возвращает часть строки S без лидирующих пробелов и управляющих символов. -
TrimRight(const S: string): string — возвращает часть строки S без завершающих пробелов и управляющих символов. -
UpperCase(const S: string): string — преобразует все строчные буквы строки S в заглавные; не учитывает местный язык (в преобразовании участвуют лишь символы в диапазоне от 'a' до 'z'). -
WrapText(const Line: string; MaxCol: Integer = 45): string — разбивает текст Line на строки, вставляя символы переноса строки. Максимальная длина отдельной строки задается параметром MaxCol. -
WrapText(const Line, BreakStr: string; const BreakChars: TSysCharSet; MaxCol: Integer): string — более мощный аналог предыдущей функции — разбивает текст Line на строки, вставляя символы переноса строки.
Описанные процедуры и функции являются базовыми для всех остальных подпрограмм обработки строк из модуля StrUtils.
-
AnsiIndexStr – возвращает номер указанной строки в массиве строк (регистр символов учитывается) -
AnsiIndexText – возвращает номер указанной строки в массиве строк (регистр символов не учитывается) -
AnsiReplaseStr заменяет все вхождения указанной подстроки другой подстрокой (регистр символов учитывается) -
AnsiReplaseText заменяет все вхождения указанной подстроки другой подстрокой (регистр символов не учитывается) -
DupeString возвращает строку, состоящую из указанной подстроки, повторенной заданное количество раз -
LeftStr - возвращает подстроку заданной длины, расположенную в начале строки -
MidStr возвращает подстроку заданной длины, начиная с указанной позиции в строке; -
ReverseString –возвращает перевернутую строку -
RightStr возвращает подстроку заданной длины, расположенную в конце строки -
StuffString вставляет подстроку в заданную позицию строки , заменяя соответствующие символы;
Подпрограммы для работы с порядковыми величинами
Chr(X) Возвращает символ, порядковый номер которого равен X.
Dec(X, [N]) Уменьшает целую переменную X на 1 или на заданное число N.
Inc(X, [N]) Увеличивает целую переменную X на 1 или на заданное число N.
Ord(X) Возвращает порядковый номер аргумента X в своем диапазоне значений.
Pred(X) Возвращает значение, предшествующее значению аргумента X в своем диапазоне.
Succ(X) Возвращает значение, следующее за значением аргумента X в своем диапазоне.
Примеры:
-
Выражение
Результат
Chr(65)
'A'
Odd(3)
True
Ord('A')
65
Pred('B')
'A'
Succ('A')
'B'
Задание
Разработать интерфейс и программу, которая преобразует исходный текст в заданный в соответствии с заданием варианта. Для ввода и вывода текста можно использовать компонент Memo или Edit
Вариант 1
Дано предложение. Найти количество слов, начинающихся с указанной буквы.
Вариант 2
Дано предложение. Преобразовать ее, удалив каждый символ «*».
Вариант 3
Дано предложение. Подсчитать количество букв k в последнем ее слове.
Вариант 4
Дано предложение . В строке между словами вставить вместо пробела запятую и пробел.
Вариант 5
Дано предложение . Определить, сколько раз в строке встречается заданное слово.
Вариант 6
Дано предложение. Преобразовать строку, удалив в ней повторяющиеся пробелы, то есть сделать так, чтобы в результате в строке между словами было не более одного пробела
Вариант 7
Дано предложение. Найти количество гласных букв в последнем слове. Вывести последнее слово
Вариант 8
Дано предложение. Найти в строке число слов, длина которых равна указанному пользователем числу символов.
Вариант 9
Дано предложение. Вывести на экран длины всех слов строки.
Вариант 10
Дано предложение. Определить средне-арифметическую длину слов строки.
Содержание отчета
-
Тема -
Цель -
Код программы (без формы)
Контрольные вопросы
-
Типы строковых переменных. Их отличия и сходства. -
Основные функции для работы со строками. -
Основные процедуры для работы со строками. -
Какие модули можно подключать для расширения функций обработки строк. Где происходит подключение. -
Как происходит кодирование символов. Какие виды кодов существуют. Как определить код символа, и наоборот, по коду определить символ.