- •Программирование Алгоритмов с использованием строк на языке lazarus
- •Строковые типы
- •Строковые выражения
- •Стандартные подпрограммы для строк
- •Размещение компонентов на Форме
- •Создание процедур обработки событий
- •Текст модуля unstr
- •Interface
- •Implementation
- •Initialization
- •Программирование алгоритмов с использованием строк на языке lazarus
Строковые выражения
Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых переменных, констант, указателей функций и знаков операций.
Над строковыми данными допустимы: операция сцепления (конкатенации) и операции отношения.
Операция сцепления (+) применяется для объединения нескольких строк в одну результирующую строку, например:
St1 := 'а' + 'b'; // St1 содержит "ab"
St2 := St1 + ' с '; // St2 содержит "abc"
Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строковых операндов. Сравнение строк производится слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в кодовой таблице. Результат выполнения операций отношения над строковыми операндами имеет булевский тип, например:
Выражение Результат
‘abd’ > ‘abc’ true
‘PROGRAM’ < ‘program’ true
Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки считаются равными, если они полностью совпадают по длине и содержат одни и те же символы, например:
Выражение Результат
‘abcd’ < ‘abcdef’ true
‘Imtell’ = ‘Intell’ true
Стандартные подпрограммы для строк
В таблице 2 приведены основные стандартные процедуры и функции для работы со строками.
Таблица 2
Процедуры и функции для работы со строками
|
Подпрограммы |
Выполняемое действие |
|
Function AnsiCompareStr(const S1, S2: string): Integer; |
Сравнивает две строки S1 иS2 в кодировкеANSIс учётом регистра. Возвращает значение меньше 0, если S1 < S2, 0, если S1 = S2, и больше 0, если S1 > S2 |
|
Function AnsiCompareText(const S1, S2: string): Integer; |
Аналогична предыдущей функции AnsiCompareStr, но сравнение происходит без учёта регистра |
|
Function AnsiLowerCase(const S: String ): String; |
Возвращает исходную строку S, в которой все заглавные буквы заменены на строчные в соответствии с национальной кодировкой Windows (т. е. с учетом кириллицы) |
|
Function AnsiUpperCase(const S: String ): String; |
Возвращает исходную строку s, в которой все строчные буквы заменены на заглавные в соответствии с национальной кодировкой Windows |
|
Function Concat(Sl [, S2, ..., SN]: String ): String; |
Возвращает строку, представляющую собой сцепление строк-параметров S1, S2, ... , SN |
|
Function Copy(St: String; Index, Count: Integer): String; |
Копирует из строки St count символов, начиная с символа с номером Index |
|
Procedure Delete(St: String; Index, Count: Integer); |
Удаляет count символов из строки St, начиная с символа с номером index |
|
Procedure Insert(SubSt: String; var St: string; Index: Integer); |
Вставляет подстроку SubSt в строку St, начиная с символа с номером Index |
|
Function Length(St: String): Integer; |
Возвращает текущую длину строки St |
|
Function LowerCase(const S:String): String; |
Возвращает исходную строку S, в которой все латинские заглавные буквы заменены на строчные |
|
Function Pos(SubSt, St:String): Integer; |
Отыскивает в строке St первое вхождение подстроки SubSt и возвращает номер позиции, с которой она начинается. Если подстрока не найдена, возвращается ноль |
|
Procedure SetLength(St:String; NewLength: Integer); |
Устанавливает новую (меньшую) длинуNewLengthстрокиSt., еслиNewLengthбольше текущей длины строки, обращение кSetLengthигнорируется |
|
Function StringOfChar(Ch:Char; Count: Integer):String; |
Создает строку, состоящую из Count раз повторенного символа ch |
Окончание таблицы 2
|
Function Uppercase(const S:String): String; |
Возвращает исходную строку S, в которой все строчные латинские буквы заменены на заглавные |
|
Function Trim(const S: string): String; |
Удаляет из строки Sвсе начальные и завершающие пробелы и управляющие символы |
|
Function TrimLeft(const S: string): String; |
Удаляет из строки Sвсе пробелы и управляющие символы слева в строке |
|
Function TrimRight(const S: string): String; |
Удаляет из строки S все пробелы и управляющие символы справа в строке |
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
Порядковый номер студента по списку группы соответствует номеру варианта. По заданию требуется:
Определить порядок реализации вычислений.
Создать форму с необходимыми компонентами.
Записать программу модуля проекта.
Протестировать работу созданного приложения.
Написать отчет по лабораторной работе.
Пример выполнения работы
Задание. Создать Windows-приложение для подсчета количества слов в произвольной строке. Слова в строке разделяются любым количеством пробелов. Ввод строки заканчивать нажатием клавиши Enter. Работа приложения должна завершаться нажатием кнопки Close.
Один из возможных вариантов панели интерфейса создаваемого приложения показан на рис.1.
