Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЛТАЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ.docx
Скачиваний:
11
Добавлен:
06.08.2019
Размер:
163.01 Кб
Скачать

Примеры

1.

? len(str(35.67,10,4))

Результат: 10

2.

s1=str(35.67)

? len(s1)

Результат: 10

3.

? str(35.67)

Будет выдана строка длиной 10 символов: восемь пробелов и символы "3" и "6".

Результат:        36

4. Если мы хотим получить представление числа в виде строки с дробной частью, необходимо при вызове функции str() явно указать количество позиций под дробную часть.

Команда

? str(35.67,10,4)

даст текстовую строку общей длиной 10 символов, причем под дробную часть будет отведено 4 позиции.

Результат:   35.6700

4. Определение позиции подстроки в строке. Функции at(), rat()

Функция at(s1,s2,n1) определяет номер позиции подстроки s1 в строке s2 (n1 - номер вхождения подстроки).

Примеры

1.

? at('s','abcdefghijklmnoprstuxyz')

Результат:       18

2.

? at('е','Тестовая строка')

Результат: 2

3. Находим позицию второго вхождения символа 'с' в строку.

? at('с','Тестовая строка',2)

Результат: 10

4. Если искомого символа нет, функция at() возвращает 0:

? at('я','Тестовая строка',2)

Результат: 0

5. Определим позицию вхождения подстроки "строка" в строке "Это пробная тестовая строка для работы с функцией at"

S1 = "строка"

S2 = "Это пробная тестовая строка для работы с функцией at"

? at(s1,s2)

Результат: 22

6. Функция rat() действует аналогично функции at(), но начинает поиск с правого конца строки.

? rat('с','Тестовая строка',2)

Результат: 3

5. Преобразование строки в число. Функция val()

Функция val() является обратной функцией для функции str() - она преобразует текстовую строку в число.

Примеры

1. ? val("45.6")

Результат: 45.60

2. Функция val() заканчивает работу по преобразованию строки в число сразу как только встретится первый символ не являющийся цифрой или десятичным разделителем (по умолчанию десятичный разделитель - ".")

s1 = "45 рублей 60 коп."

? val(s1)

Результат: 45.00

3. Пробел также не является цифрой и завершает работу функции val()

s1 = "45 60 руб. 15 коп."

? val(s1)

Результат: 45.00

6. Извлечение подстроки. Функция substr()

Функция извлечения подстроки substr(s1, n1, n2) из строки s1 с позиции n1 длиной n2 символов.

Примеры

1.

? substr("Привет всем",7,5)

Результат: всем

2. Если третий параметр не указан, тогда извлекается подстрока до конца строки.

? substr("Пример строки для извлечения подстроки ",8)

Результат: строки для извлечения подстроки

7. Преобразование строк. Функции strtran() и stuff().

Функция преобразования (трансляции - перевода, перекодировки) строки strtran(s1,s2,s3,n1,n2)

s1 - какую строку преобразуем;

s2 - что ищем в основной строке;

s3 - на что заменяем;

n1 - с какого вхождения начинаем преобразование;

n2 - сколько вхождений преобразовываем/

Параметры n1, n2 можно опускать.

Примеры

1. Заменяем все символы "е" на "*".

? strtran("Привет всем","е","*")

Результат: Прив*т вс*м

2. Заменяем все символы "е" на "*" начиная с третей буквы "е".

? strtran("Приве-е-е-е-ет все-е-е-ем","е","*",3)

Результат: Приве-е-*-*-*т вс*-*-*-*м

3. Заменяем два символа "е" на "*" начиная с третей буквы "е".

? strtran("Приве-е-е-е-ет все-е-е-ем","е","*",3,2)

Результат: Приве-е-*-*-ет все-е-е-ем

Функция вставки и замены подстроки в строку stuff(s1,n1,n2,s2).

s1 - текущая обрабатываемая строка;

s2 - вставляемая строка;

n1 - номер символа, начиная с которого надо начать замену;

n2 - длина подстроки, которая удаляется из исходной строки символов и заменяется на s2.

Если n2 равно 0, то второе символьное выражение вставляется в указанное место, и ни один символ из s1 не удаляется.

Если s2 является пустой строкой, из s1 будет удалено указанное n2 число символов без добавления.

Примеры

1. Начиная со второй позиции в строку '*-*' подставляется строка "привет", при этом удаляется символ ('-').

? stuff('*-*',2,1,'привет')

Результат: *привет*

2.

? stuff('abc',2,1,"")

Результат: ac

3.

? stuff('abc',2,0,'123')

Результат: a123bc

8. Работа с ASCII кодами символов. Функции asc(), chr()

Функция asc() для определения ASCII - кода символа.

Примеры

1. Функция asc() возвращает ASCII-код русской буквы 'к'/

? asc('к')

Результат: 170

2. ASCII код латинской буквы 'k'/

? asc('k')

Результат: 107

Обратная к asc() функция - chr() возвращает по ASCII-коду символ.

Примеры

1.

? chr(170)

Результат:к

2.

? chr(107)

Результат:k

Задачи и упражнения для самостоятельного решения

Используя необходимые строковые функции, в строке "Первая тестовая строка для работы со строковыми функциями":

1.    Найти позицию, с которой начинается слово "строковыми".

2.    Найти позицию третьей буквы "о".

3.    Заменить слово "строковыми" на "текстовыми".

4.    Получить подстроку, содержащую четвертое слово.

5.    Вставить между третьим и четвертым словом символы конца строки.

Примеры процедур и функций

1. Создайте функцию подсчитывающую сколько раз в строке встречается данная буква.

Примеры

Создайте новый файл с именем test1.prg

function test1

parameters c,s

set talk off

* отключаем режим дублирования команд

n=1

do while at(c,s,n)>0

n=n+1

enddo

return n-1

Выполняем нашу функцию из командного окна:

? test1("т","Тестовая строка")

2

? test1("я","Тестовая строка")

1

2. Создайте процедуру, которая воспринимает строку - параметр и выводит ее по одному символу в столбик, причем рядом с каждым символом выводится его ASCII - код.

Примеры

Создайте новый файл с именем test2.prg.

procedure test2

parameters s

set talk off

* отключаем режим дублирования команд

n = len(s)

* определяем длину строки

* n - количество символов в строке

for i=1 to n

* начало цикла

* i - счетчик цикла, он пробегает значения

* от 1 до n

            c=substr(s,i,1)

* вырезаем из строки s один символ с позиции i

           

            ? c,asc(c)

* выводим на экран символ и его ASCII - код

endfor

*конец цикла

Теперь можно выполнить эту процедуру из

 командного окна при помощи команды:

do test2 with "Это тестовая строка"

Результат должен быть примерно таким:

Э  160

т  157

о  226

    32

т  226

е  165

с  225

т  226

о  174

в  162

а  160

я  239

    32

с  225

т  226

р  224

о  174

к  170

а  160

Задачи для самостоятельного решения

1.    Написать функцию для определения количества цифр в строке.

2.    Написать функцию определяющую количество букв алфавита (не учитывать пробелы, символы-разделители и цифры) встречающихся в строке.

3.    Написать функцию для удаления лишних пробелов  между словами в строке.

Работа с файлами на низком уровне

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

Далее мы рассмотрим следующие функции: fopen(), fclose(), fread(), fwrite(), feof(), fgets(), fputs(), fseek(), fcreate(), ferror(). При работе с файлами также часто используются и некоторые команды высокого уровня, такие как: close all, display status, set path …

Для  выполнения заданий Вам необходимо создать в своей рабочей директории текстовый файл с именем test.txt.