ЗАДАНИЕ XXVI

Тема: Работа со строками
Цель: Краткое знакомство с инструментарием для работы со строками в среде Stratum Computer.

Перед началом работы необходимо:

владеть работой с клавиатурой и мышкой;
владеть основными приемами работы в системе Stratum.

 

Основные понятия

        Строки в среде Stratum 2000 - это данные типа String. Строки могут состоять из набора символов, количеством от 0 до 255. В среде Stratum строковые переменные описываются следующим образом: в заголовке описания переменных пишется слуэебное слово STRING, а за ним через запятую список переменных данного типа.

        Пример: STRING str1,str2

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

Операция Описание операции
+ Склейка строк
== Сравнение строк на равенство
!= Сравнение строк на неравенство
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно

        Функции над строками

Наименование функции Описание функции
Alltrim Удалить начальные и конечные пробелы в строке
Ansi_to_oem Преобразовать строку из кодирвки ANSI в OEM
Ascii Преобразовать символ в код
Chr Преобразовать код в символ
Change Заменить подстроку
Compare Сравнить две строки
Comparei Сравнить n-первых символов двух строк
Float Преобразовать строку в число
Left Выделить из строки подстроку слева
Length Определить длину строки
Lower Преобразовать символы строки в нижний регистр
Ltrim Удаление ведущих пробелов в строке
Oem_to_ansi Преобразовать строку из кодировки OEM в ANSI
Pos Определить позицию подстроки в строке
Replicate Размножить подстроку
String Преобразовать число в строку
Substr Выделить подстроку
Right Выделить подстроку справа
Rtrim Удалить конечные пробелы в строке
Upper Преобразовать символы в верхний регистр

 

Задание 1.

        Напишите имидж, осуществляющий переворот исходной строки.

        Создайте новый проект. Ввод и отображение строк будет осуществляться из стандартных библиотечных имиджей StringEdit. Для работы этих имиджей необходимо создать графическое пространство. Для этого используйте имидж LGSpace из библиотеки Unit. Свяжите имиджи StringEdit с LGSpace связями по переменым WindowName и HSpace. Для переворота строки создайте ещё один имидж и объявите в нём две строковые переменные:

                      STRING str1,str2

После этого свяжите первый имидж StringEdit связью с переменной str1. В str1 будет хранится исходная строка. Второй имидж StringEdit свяжите связью с переменной str2. В данной строке будет хранится перевёрнутая строка. Вот пример такой сборки проекта.

Пример схемы к заданию 1    

        Текс имиджа, осуществляющего переворот строки может выглядеть следующим образом.

STRING str1, str2
FLOAT local i,l

l := length(~str1) // получение длины исходной строки
i := ~l - 1 // - определение номера позиции последнего символа в строке
str2 := "" // - очистка результирующей строки
while (~i != -1) // цикл с конца строки до начала
str2 := ~str2 + substr(~str1,~i,1) // последовательное копирование симвовол из исходной строки в результат
i := ~i - 1
endwhile

Задание 2.

        Напишите имидж, осуществляющий перестановку двух слов местами.

         Для выполнения этог задания вам, как и в первом задании, придётся установить имиджи LGSpace, StringEdit и создать свой имидж, осуществляющий переворот строки. В имидже описать две строковые переменные str1 и str2, которые будут хранить исходную строку и результирующую. Для написания модели перестановки двух слов местами необходимо будет воспользоватся функцией Pos, которой нужно будет определить позицию пробела между двумя словами. Затем, функцией Substr вырезать из исходной строки второе слово (с позиции после позиции пробела) и сформировать новую строку, путём операции "+".

STRING str1, str2
FLOAT local l,p

p := Pos(~str1," ",1) //определение позиции пробела, разделяющего слова
if (~p>0) // если пробел существует, то слова меняем местами
str2 := "" //очищаем результирующую строку
str2 := Substr(~str1,~p+1,length(~str1)-~p-1)+" "+substr(~str1,0,~p) // меняем местами слова
endif

Дополнительное задание.

Попробуйте написать имидж, который переводит каждую чётную букву слова в верхний регистр, а каждую нечётную в нижний регистр.
Попробуйте написать имидж, который осуществляет перевод русскоязычных слов в транслитерацию, т.е. посимвольно заменить русские буквы на сооветствующие латинские или группу латинских, например ш=sh.