
- •Начало работы в среде разработчика FoxPro
- •Константы и переменные
- •Примеры
- •Примеры
- •Примеры
- •Комментарии
- •Процедуры и функции
- •Примеры:
- •Индексы массива
- •Примеры
- •Примеры
- •Примеры
- •2. Считывание информации из файла.
- •3. Перемещение по файлу
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Примеры
- •Задание
- •Примеры
- •Задание
- •Графические функции
- •Шрифтовые свойства
- •Метод line
- •Метод box
- •Метод Circle
- •Функции даты и времени
- •Use [файл | ?] [in рабочаяОбласть] [again] [alias Псевдоним] [exclusive | shared] [noupdate]
- •Добавление и изменение значений полей
- •Относительное перемещение:
- •Контрольные работы
Примеры
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.