Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

7.2 Работа со строковыми функциями и процедурами

В программах обработки текстов широко используются пользовательские строковые функции и процедуры. В этом разделе требуется разработать алгоритм и код для трех строковых функций, соответственно из разделов А), В) и С), и объединить их в пользовательскую библиотеку (модуль - UNIT MyString). Необходимо также создать программу - тест, в которой вызов на исполнение каждой из этих строковых функций реализован посредством выбора из меню.

Предлагаемые ниже строковые функции относятся к числу наиболее употребительных, и, весьма условно, разбиты на три равные группы.

A) Функции общего назначения

  1. Функция - AFTERATNUM(C1, C2: STRING; N1, N2: BYTE): STRING - возвращает хвост строки C1, в которой осуществляется поиск с позиции N2 подстроки C2 с номером вхождения N1. Возвращаются все символы строки C1 после указанного вхождения.

  2. Функция - ALLTRIM(C: STRING): STRING - возвращает строку, полученную из строки C путем удаления ведущих и промежуточных пробелов.

  3. Функция - BEFORATNUM(C1, C2: STRING; N1, N2: BYTE): STRING - возвращает начало строки C1, в которой осуществляется поиск с позиции N2 подстроки C2 с номером вхождения N1. Возвращаются все символы строки C1 до начала указанного вхождения.

  4. Функция - CHARLIST(C: STRING): STRING - возвращает список всех символов, которые встречаются в строке C в порядке их появления и только 1 раз.

  5. Функция - CHARONE(C1, C2: STRING): STRING - ищет повторяющиеся в строке C1 подряд символы и удаляет те из них, которые описаны в строке C2.

  6. Функция - CHARONLY(C1, C2: STRING): STRING - из строки C1 удаляет все символы, которых нет в строке C2.

  7. Функция - CHARREM(C1, C2: STRING): STRING - возвращает строку C1, из которой удалены все символы встречающиеся в строке C2.

  8. Функция - CHARSORT(C: STRING; N1, N2: BYTE; L: BOOLEAN): STRING - возвращает отсортированную строку C. N2 - номер позиции в C, с которой идет сортировка, а N1 - количество литер, которое необходимо сортировать. Сортировка по возрастанию L = TRUE, по убыванию L = FALSE.

  9. Функция - CHARSORTSS(C: STRING; N1, N2: BYTE; L: BOOLEAN): STRING - возвращает отсортированную строку C. C N2 - номер позиции в C, с которой идет сортировка, а N1 - количество литер, которое необходимо сортировать. Сортировка по возрастанию L = TRUE, по убыванию L = FALSE. При сортировке двойные символы исключить.

  10. Функция - IIF(L: BOOLEAN; C1, C2: STRING): STRING - если L = TRUE, то функция возвращает значение C1, если L имеет значение FALSE, то функция возвращает значение C2.

  11. Функция - LEFT(C: STRING; N: INTEGER): STRING - возвращает N левых символов в виде строки, если N > 0, и пустую строку при N ≤ 0.

  12. Функция - LOWER(C: STRING): STRING - возвращает все символы строки С в нижнем регистре.

  13. Функция - RAT(C1, C2: STRING): BYTE - возвращает номер позиции, с которой в строке C2 начинается последнее вхождение подстроки C1.

  14. Функция - REPLICATE(C: STRING; N: BYTE): STRING - возвращает строку C, повторенную N раз.

  15. Функция - RIGHT(C: STRING; N: INTEGER): STRING - возвращает N правых символов в виде строки, если N > 0, и пустую строку при N ≤ 0.

  16. Функция - SPACE(N: BYTE): STRING - возвращает строку из N пробелов.

  17. Функция - STUFF(C1, C2: STRING; N1, N2: BYTE): STRING - возвращает строку символов, которая получена из строки C1 путем удаления позиций с N1 количеством N2, и вставки на это место подстроки C2.

  18. Функция - SUBSTR(C: STRING; N1, N2: INTEGER): STRING - возвращает подстроку строки C с позиции N1 длиной N2. Если N1 < 0, то отсчет начальной позиции идет справа налево.

  19. Функция - UPPER(C: STRING): STRING - возвращает все символы строки С в верхнем регистре.

  20. Функция - VALPOS(C: STRING; N: BYTE): REAL - в текстовой строке C с позиции N выбирает число и преобразует его в вещественную форму. Если число выделить не удалось, то функция возвращает 0.

  21. Функция - STRCMP(C1, C2: STRING): INTEGER – сравнивает строки C1 и C2 и возвращает -1 (если C1 < C2), 0 (если C1 = C2) или 1(если C1 > C2).

  22. Функция - STRRCHR(C: STRING; CH: CHAR): INTEGER – возвращает номер позиции первого вхождения символа CH в строку C справа, если его нет, то функция возвращает 0.

  23. Функция - STRLCHR(C: STRING; CH: CHAR): INTEGER – возвращает номер позиции первого вхождения символа CH в строку C слева, если его нет, то функция возвращает 0.

  24. Функция - STRSPN(C1, C2 : STRING): INTEGER – возвращает номер позиции первого символа в строке C1, отсутствующего в строке C2, если такого символа нет, то функция возвращает 0.

  25. Функция - STRSPE(C1, C2 : STRING): INTEGER – возвращает номер позиции первого символа в строке C1, имеющегося в строке C2, если такого символа нет, то функция возвращает 0.

  26. Функция - WCSTOL(C: STRING, NUM:INTEGER): INTEGER - преобразует строку С в десятичное число с учетом системы счисления NUM.

  27. Функция - CENTER(C1: STRING; CH: CHAR; N: BYTE; L: BOOLEAN): STRING - формирует строку длиной N символов. В центре новой строки расположена строка C1, по краям дополненная символами CH, если L - TRUE. Если L - FALSE, то заполняется CH только левая сторона новой строки.

  28. Функция - CHOOSE(N: BYTE; C1: STRING): STRING возвращает значение из списка, выбранное на основании значения аргумента N. Если N равняется 1, возвращается первый элемент списка C1, если индекс равняется 2, возвращается второй элемент списка и т.п. Список C1 представляет собой строку текста, содержащего перечень альтернативных вариантов возвращаемых подстрок, разделенных запятыми.

  29. Функция - COUNTLEFT(C: STRING; CH: CHAR): BYTE - возвращает количество повторяющихся символов в начале строки C, если CH = ‘’. Если CH равна пробелу, то считается число пробелов.

  30. Функция - ISNOTALPHA(C: STRING): BOOLEAN - возвращает TRUE, если первый символ строки C – не буква латинского алфавита.

B) Функции кодирования и декодирования

  1. Функция - ADDASCII(C1: STRING; N1, N2: BYTE): STRING - возвращает строку, полученную из строки C1 путем прибавления величины N1 к ASCII коду символа этой строки с номером N2.

  2. Функция - NADDASCII(C1: STRING; N1, N2: BYTE): STRING - возвращает строку, полученную из строки C1 путем вычитания величины N1 из ASCII кода символа этой строки с номером N2.

  3. Функция - ASCIISUM(C: STRING): WORD - возвращает сумму кодов символов строки C.

  4. Функция - ASCIIAVG(C: STRING): WORD - возвращает среднее арифметическое кодов символов строки C.

  5. Функция - MAXASCII(C: STRING): WORD - возвращает максимальный из кодов символов строки C.

  6. Функция - MINASCII(C: STRING): WORD - возвращает минимальный из кодов символов строки C.

  7. Функция - CHARADD(C1, C2: STRING): STRING - кодирования строки C1 путем побайтного сложения по модулю 256 со строкой C2. Если строка C2 короче, чем строка C1, то по ее окончании все повторяется с первого символа C2.

  8. Функция - CHARAND(C1, C2: STRING): STRING - преобразования строки C1 путем побитной конъюнкции со строкой C2 (C1[i] and C2[i]).

  9. Функция - CHAREVEN(C: STRING): STRING - возвращает строку, содержащую только четные символы строки C.

  10. Функция - CHARMIRR(C: STRING): STRING - возвращает строку символов, в которой они стоят в обратном (зеркальном) порядке справа налево относительно строки C.

  11. Функция - CHARNOT(C: STRING): STRING - преобразования строки C путем побитной инверсии - not(С[i]).

  12. Функция - CHARODD(C: STRING): STRING - возвращает строку, содержащую только нечетные символы строки C.

  13. Функция - CHAROR(C1, C2: STRING): STRING - возвращает строку, которая получается из строки C1 путем ее побитной дизъюнкции со строкой C2.

  14. Функция - CHARAND(C1, C2: STRING): STRING - возвращает строку, которая получается из строки C1 путем ее побитной конъюнкции со строкой C2.

  15. Функция - CHARXOR(C1, C2: STRING): STRING - возвращает строку, которая получается из строки C1 путем ее обработки строкой C2 операцией XOR.

  16. Функция - EXPAND(C: STRING; CH: CHAR; N: BYTE): STRING - возвращает расширенную строку C путем вставки между соседними символами C литеры CH в количестве N - литер.

  17. Функция - JUSTLEFT(C1, C2: STRING): STRING - осуществляет циклическое передвижение подстроки C2 из начала строки C1 в ее конец. Если C2 = ‘’, то перемещаются все левые пробелы.

  18. Функция - JUSTRIGHT(C1, C2: STRING): STRING - осуществляет циклическое передвижение подстроки C2 из конца строки C1 в ее начало. Если C2 = ‘’, то перемещаются все правые пробелы.

  19. Функция - MEMOTRAN(C1: CHAR; C2: STRING): CHAR - возвращает строку, получаемую из длинной строки C1, в которой символы-пробелы замещаются символами строки C2.

  20. Функция - POSREPL(C1, C2: STRING; N: BYTE): STRING - осуществляет замену символов в строке C1 начиная с позиции N на символы строки C2.

  21. Функция - REMALL(C1: STRING; CH: CHAR): STRING - в строке C1 с первых и последних позиций удалить символа CH.

  22. Функция - REMLEFT(C1: STRING; CH: CHAR): STRING - в строке C1 с первых позиций удалить символы CH.

  23. Функция - REMRIGHT(C1: STRING; CH: CHAR): STRING - в строке C1 с последних позиций удалить символы CH.

  24. Процедура - STRSWAP(C1, C2: STRING): STRING - меняет значения двух строк C1 => С2, и наоборот C2 => С1.

  25. Функция - STRTRAN(C1, C2, C3: STRING; N1, N2: BYTE): STRING - возвращает строку, полученную из строки C1. В строке C1 символы, входящие в C2, заменяются соответствующими символами из строки C2. N1 - номер вхождения символа, с которого нужно делать замену. N2 - количество повторов замены.

  26. Функция - ISALPHA(C: STRING): BOOLEAN - возвращает TRUE, если первый символ строки C - буква латинского алфавита.

  27. Функция - PADLEFT(C: STRING; CH: CHAR; N: BYTE) : STRING - выравнивает строку C по размеру N. Если длина строки C меньше N, то она дополняется слева символами CH.

  28. Функция - PADRIGHT(C: STRING; CH: CHAR; N: BYTE): STRING - выравнивает строку C по размеру N. Если длина строки C меньше N, то она дополняется справа символами CH.

  29. Функция - COUNTLEFT(C: STRING; CH: CHAR): BYTE - возвращает количество повторяющихся символов в начале строки C, если CH = ‘’. Если CH равна пробелу, то считается число пробелов.

  30. Функция - COUNTRIGHT(C: STRING; CH: CHAR): BYTE - возвращает количество повторяющихся символов в конце строки C, если CH = ‘’. Если CH равна пробелу, то считается число пробелов.

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

  1. Функция - ATTOKEN(C1, C2: STRING; N: BYTE): STRING - поиск в строке C1 лексемы (слова) с номером N. Строка C2 представляет собой сцепку возможных разделителей лексем “ .,;:!?/()[]{}#&-+” и другие - по усмотрению программиста.

  2. Функция - CENTER(C1: STRING; CH: CHAR; N: BYTE; L: BOOLEAN): STRING - формирует строку длиной N символов. В центре новой строки расположена строка C1, по краям дополненная символами CH, если L - TRUE. Если L - FALSE, то заполняется CH только левая сторона новой строки.

  3. Функция - CHOOSE(N: BYTE; C1: STRING): STRING возвращает значение из списка, выбранное на основании значения аргумента N. Если N равняется 1, возвращается первый элемент списка C1, если индекс равняется 2, возвращается второй элемент списка и т.п. Список C1 представляет собой строку текста, содержащего перечень альтернативных вариантов возвращаемых подстрок, разделенных запятыми.

  4. Функция - ISLINE(ST: STRING): BOOLEAN - возвращает TRUE, если файл является текстовым и содержит строки, не превышающие 255 байт. Параметр ST представляет собой полный путь и имя исследуемого файла.

  5. Функция - ISLOWER(C: STRING): BOOLEAN - возвращает TRUE, если первый символ строки С является символом нижнего регистра.

  6. Функция - ISUPPER(C: STRING): BOOLEAN - возвращает TRUE, если первый символ строки С является символом верхнего регистра.

  7. Функция - LTRIM(C: STRING): STRING - возвращает строку, полученную из строки C путем удаления всех левых (ведущих) пробелов.

  8. Функция - MAXLINE(ST: STRING): WORD - возвращает максимальную длину строки в текстовом файле. Параметр ST представляет собой полный путь и имя текстового файла.

  9. Функция - MINLINE(ST: STRING): WORD - возвращает минимальную длину строки в текстовом файле. Параметр ST представляет собой полный путь и имя текстового файла.

  10. Функция - AVGLINE(ST: STRING): WORD - возвращает среднюю длину строки в текстовом файле. Параметр ST представляет собой полный путь и имя текстового файла.

  11. Функция - NUMLINE(ST: STRING): LONGINT - возвращает количество строк в текстовом файле. Параметр ST представляет собой полный путь и имя текстового файла.

  12. Функция - NUMTOKEN(C1, C2: STRING): BYTE - возвращает число лексем в строке C1. Строка C2 представляет собой список разделителей лексем.

  13. Функция - PADLEFT(C: STRING; CH: CHAR; N: BYTE) : STRING - выравнивает строку C по размеру N. Если длина строки C меньше N, то она дополняется слева символами CH.

  14. Функция - PADRIGHT(C: STRING; CH: CHAR; N: BYTE): STRING - выравнивает строку C по размеру N. Если длина строки C меньше N, то она дополняется справа символами CH.

  15. Функция - RECOUNT(F: TEXT): WORD - возвращает количество строк в текстовом файле F.

  16. Функция - RTRIM(C: STRING): STRING - возвращает строку, полученную из строки C путем удаления всех правых пробелов.

  17. Функция - TOKENLOWER(C1, C2: STRING; N: BYTE): STRING - возвращает C1 строку, где лексема с номером N начинается со строчной буквы. C2 - список разделителей лексем.

  18. Функция - TOKENUPPER(C1, C2: STRING; N: BYTE): STRING - возвращает C1 строку, где лексема с номером N начинается с прописной буквы. C2 - список разделителей лексем.

  19. Функция - TRIM(C: STRING): STRING - возвращает строку, полученную из строки C путем удаления всех правых и всех левых пробелов.

  20. Функция - COUNTWORD(F: TEXT): WORD - возвращает количество слов в текстовом файле F.

  21. Функция - COUNTLETTERS(F: TEXT): WORD - возвращает количество символов, отличных от пробелов, в текстовом файле F.

  22. Функция – COUNT4let(F: TEXT): WORD - возвращает количество слов из четырех букв в текстовом файле F.

  23. Функция - COUNTART(F: TEXT): WORD - возвращает количество артиклей (a, an, the) в текстовом файле F, содержащем английский текст.

  24. Функция – COUNTNlet(F: TEXT, N:INTEGER): WORD - возвращает количество слов из N букв в текстовом файле F.

  25. Функция - COUNTGL(F: TEXT): WORD - возвращает количество слов, начинающихся на гласную букву (a, e, i, o, y, u) в текстовом файле F, содержащем английский текст.

  26. Функция - COUNTSOGL(F: TEXT): WORD - возвращает количество слов, начинающихся на согласную букву в текстовом файле F, содержащем английский текст.

  27. Функция - COUNTWORD(F: TEXT; TEKWORD:STRING): WORD - возвращает количество вхождений введенного слова TEKWORD в текстовом файле F.

  28. Функция - COUNTSOGLEND(F: TEXT): WORD - возвращает количество слов, заканчивающихся на согласную букву в текстовом файле F, содержащем английский текст.

  29. Функция - COUNTGLEND(F: TEXT): WORD - возвращает количество слов, заканчивающихся на гласную букву (a, e, i, o, y, u) в текстовом файле F, содержащем английский текст.

  30. Функция - COUNTCHAR(F: TEXT; TEKCHAR:CHAR): WORD - возвращает количество вхождений введенного символва TEKCHAR в текстовом файле F.