Лекция 9 Строки_Файлы
.pdfКафедра Изменение строк (удаление символов)
информатики
УГАТУ
Пример. Из строки S получить новую |
i |
Mid(s,I,1) |
Mid(s,I+1,1) |
s1 |
|
строку S1, в которой между словами |
|
<>“" |
<>“" |
|
|
только один пробел. Подсчитать |
1 |
да |
|
‘Э’ |
|
количество удаленных пробелов. |
|
||||
2 |
да |
|
‘Эт’ |
||
‘Удаление начальных и конечных пробелов' |
|
||||
S = Trim(S) |
3 |
да |
|
‘Это’ |
|
S1 = "" |
|
||||
For i = 1 To Len(S) - 1 |
4 |
нет |
да |
‘Это ‘ |
|
'Цикл для поиска пробелов |
5 |
да |
|
‘Это п’ |
|
If Mid(S, i, 1) <> " " Then |
|
||||
|
|
|
|
||
S1 = S1 + Mid(S, i, 1) |
… |
… |
… |
‘Это пример’ |
|
'Переписывание символов, |
11 |
нет |
нет |
‘Это пример’ |
|
'отличных от пробелов в строку s1 |
|||||
Else |
12 |
нет |
нет |
‘Это пример’ |
|
'Запись в строку s1 одного пробела, |
13 |
нет |
да |
‘Это пример ’ |
|
если следующий за ним символ не пробел |
|||||
If Mid(S, i + 1, 1) <> " " Then S1 = S1 + " " |
14 |
да |
|
‘Это пример с’ |
|
End If |
… |
… |
… |
… |
|
Next i |
|||||
|
|
|
|
||
S1 = S1 + Mid(S, Len(S), 1) |
18 |
|
|
‘Это пример |
|
k:=Len(s) - Len(s1) |
|
‘Это пример строки’ строк’19-17=2 |
После Trim(s) – ‘Это-пример---строки‘ |
21 |
|
КафедраИзменение строк(удаление и замена символов)
информатики
УГАТУ
Пример. В строке S заменить все слова «всегда» на «часто».
|
Определяется какую часть текста заменить |
|||
… |
|
|
|
|
s$ = Text1.Text |
|
|
|
|
s = Replace(s, "Всегда", |
|
|
|
Чем заменить |
"Часто", 1) |
|
|
|
|
|
|
|
|
|
s = Replace(s, "всегда", |
|
|
|
|
|
|
Замена производится в строке s |
||
"часто", 1) |
|
|
|
|
|
|
|
|
|
Text2.Text = s… |
|
|
|
|
|
|
|
С позиции (n) производить замену |
|
|
|
|
|
|
|
|
|
|
|
Можно определить еще один (пятый) параметр, определяющий количество замен. В данном случае производится замена всех найденных слов «всегда».
22
11
Кафедра |
Вопрос |
информатики |
|
УГАТУ
Задан массив строк dim a: a (1 to 5) as string*3, состоящий из элементов a(1) = "10a", a(2) ="8a", a(3) ="11a", a(4) = "11б", a(5) ="9a"
После выполнения фрагмента программы
for I =1 to 4 for j = i + 1 to 5
if a( i ) > a( j ) then c = a( i )
a( i ) = a( j ) a( j )= c
endif next j next i
элемент а(4) равен
Сортировка Результат
исходного массива
a(1) = |
"10a" |
a(1) |
= "10a" |
a(2) = |
"8a" |
a(2) |
= "11a" |
a(3) = |
"11a" |
a(3) |
= "11б" |
a(4) = |
"11б" |
a(4) |
= "8a" |
a(5) = |
"9a" |
a(5) = "9a" |
Ответ: "8а"
23
Кафедра |
Вопрос |
УГАТУ |
|
информатики |
|
|
|
|
|
||
|
|
|
|
|
После выполнения фрагмента программы |
||
|
|
|
|
|
S = "abmsdkghmghh" : S1 = "a" |
"am" |
|
|
for I = 1 to len(S) \ 3 |
|
"amk" |
|
s1 = s1 + Mid(s, (I * 3), 1) |
||
|
|
||
|
next |
|
"amkm" |
переменная S1 примет значение |
"amkmh" |
|
Ответ: "amkmh"
24
12
Кафедра |
Файлы |
информатики |
|
УГАТУ
Файл – именованная область на диске.
Программа на ЯП работает с константами и переменными.
Как организовать работу с файлом в программе?
Необходимо использовать переменную специального файлового типа и связать ее с файлом на диске. Программа будет работать с этой переменной.
25
Кафедра |
Файлы |
информатики |
|
УГАТУ
При работе с файлами в программах решаются следующие задачи:
•создание файла на диске;
•открытие существующего файла;
•запись данных в файл;
•чтение данных из файла;
•дополнение данных в файл;
•закрытие файла;
•удаление файла с диска и др.
26
13
Кафедра |
Файловые типы |
информатики |
|
УГАТУ
По способу доступа к информации, записанной в файл, различают файлы прямого и последовательного доступа.
Вфайлах последовательного доступа доступ к элементам обеспечивается в такой же последовательности, в какой они записывались в файл. Как правило, это текстовые файлы.
Вфайлах прямого доступа доступ к элементам осуществляется по адресу элемента. Как правило, это файлы баз данных.
27
Кафедра |
Текстовые файлы |
УГАТУ |
информатики |
|
|
Структурной единицей текстовых файлов являются строки. Данные в них хранятся в виде цепочки ASCII кодов.
Доступ к каждой строке возможен лишь последовательно, начиная с первой.
Каждая строка завершается маркером конца строки Eoln
(End of line).
На практике такой маркер представляет собой последовательность из двух символов: перевод строки Сhr(10) и возврат каретки Сhr(13).
В конце всего файла ставится маркер конца файла – Eof
(End of file).
28
14
Кафедра |
Текстовые файлы |
УГАТУ |
информатики |
|
|
Формат описания файловой переменной для работы с текстовыми файлами
Open pathname For modeAs [#]FileNumber
где pathname – полное имя файла; mode – режим доступа к файлу
Append – открыть файл для добавления данных, Binary –открыть двоичный файл,
Input – открыть файл для чтения данных, Output – открыть файл для записи данных, Random - открыть файл прямого доступа
FileNumber – целочисленное выражение - идентификатор файла ( от 1 до 511 )
29
Кафедра |
Текстовые файлы |
информатики |
|
УГАТУ
По окончании работы с файлами их необходимо закрыть!
Синтаксис оператора закрытия файлов
Close [FileNumberList]
FileNumberList – список закрываемых файлов, перечисляемых через запятую.
! Если список файлов опущен, то закрываются все открытые файлы.
30
15
Кафедра |
Чтение данных |
УГАТУ |
информатики |
|
|
•Если файл открывается для чтения, то он должен существовать, иначе возникнет ошибка!
•Функция Input считывает из файла заданное количество
символов и обычно используется для чтения данных, записанных в файл оператором Print #
•Input(number, #filenumber)
•Оператор Input # используется, когда необходимо прочитать данные, имеющие структуру с разделителями (запятые). Такие файлы получаются при использовании оператора записи Write #
•Input #filenumber, varlist
•Оператор Line Input # используется для построчного чтения данных из последовательного файла, обычно записанного оператором Print #.
•Line Input #filenumber, varname
31
Кафедра |
Запись данных |
УГАТУ |
информатики |
|
|
•Данные в файл последовательного доступа записываются с
помощью операторов Print # и Write #
–Оператор Write# дополнительно автоматически вставляет в файл разделители
•Print #filenumber, [outputlist]
•Write #filenumber, [outputlist]
Запись |
Чтение |
Print # |
Input или Line Input # |
Write# |
Input # |
|
|
32
16
КафедраПримеры операторов работы с файлами
информатики
|
|
|
УГАТУ |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Dim pathfile As String |
|
|
|
|
|
||
|
Описание переменной файлового |
||||||
Private Sub Command1_Click() |
типа (текстовый файл) |
||||||
|
|
|
|
|
|||
pathfile = "C:\primer.txt” |
|
Полное имя файла |
|
|
|
||
Open pathfile For Output As #1 |
|
|
|
|
|
||
‘открытие файла на запись |
Открытие файла на запись |
|
|
||||
Print #1, " Проверка работы с |
|
|
|||||
|
Запись в файл текстовой строки |
|
|||||
файлами VB " |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
For i = 1 To 3 |
|
|
|
|
|||
|
Запись в файл значение переменной i |
|
|||||
Print #1, i |
|
|
|
|
|
|
|
Next |
|
|
Закрытие текстового файла |
||
Close #1 |
||
|
||
End Sub |
|
|
|
|
|
|
33 |
Кафедра |
Запись в файл |
УГАТУ |
информатики |
|
|
|
|
|
|
|
|
•Запись идет по строкам, при использовании в операторе Print «;» вывод происходит в одну строку
•Каждый раз при выполнении программы файл будет перезаписываться заново.
•Если необходимо добавлять записи в конец файла, нужно открыть его в режиме:
Open pathfile For Append As #1
34
17
Кафедра Чтение из текстового файла
информатики
УГАТУ
Open pathfile For Input As #1 |
|
|
Открытие файла на чтение |
|
|
|
|
|
|
|
|
|
|
|
Определение числа символов в |
|
|
len_str = FileLen(pathfile) |
|
|
файле |
|
|
|
|
|
|
||
strfile = Input(len_str, #1) |
|
считывание всех символов из файла в |
|
||
|
|
|
строку |
|
|
|
|
|
|
|
|
Text2.Text = strfile |
|
|
|
|
|
|
|
вывод строки в TextBox |
|
||
Close #1 |
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
Закрытие текстового файла |
|
|
|
|
|
|
|
|
|
|
35 |
|
Кафедра Чтение из текстового файла
информатики
|
|
|
УГАТУ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Open pathfile For Input As #1 |
|
|
Открытие файла на чтение |
|
|
|
|
||
Do While Not EOF(1) |
|
Организация цикла на чтение файла |
||
|
|
до конца |
||
|
|
|
||
Line Input #1, strfile |
Построчное чтение записей из файла в |
|||
|
||||
|
|
|
переменную |
Text2.Text = Text2.Text + strfile +
Chr(13) + Chr(10)
Loop |
формирование очередной строки в |
|
TextBox |
||
|
Close #1
Закрытие текстового файла
36
18
информатики |
Запись в текстовый файл |
Кафедра |
|
УГАТУ
Dim pathfile As String
Private Sub Command1_Click() pathfile = "C:\primer.txt“
Open pathfile For Output As #1 Write #1, "Проверка работы с
файлами " For i = 1 To 3
Write #1, "Строка", i Next
Close #1
End Sub
Определение имени файла
открытие файла на запись
Запись в файл
Закрытие текстового файла
37
Кафедра |
Чтение из файла |
УГАТУ |
информатики |
|
|
|
|
|
|
|
|
Private Sub Command2_Click()
Open pathfile For Input As #1
Do While Not EOF(1)
Input #1, strfile
Picture1.Print strfile
Loop
Close #1
End Sub
38
19
Кафедра Пример информатики
УГАТУ
Прочитать содержимое файла в текстовое поле. Заменить в каждой строке слова «размера» на слова «порядка» и записать в новый файл.
Private Sub Command1_Click()
Open "C:\Мои документы\Массивы.txt"For Input As #1 Open "C:\Мои документы\Result.txt" For Output As #2 Text1 = Input(LOF(1), 1)
s$ = Replace(Text1, "размера","порядка")
s1$ = StrReverse(s) ' перевернуть текст и вывести в поле
Print #2, s
Text2 = s1 Close End Sub
39
Кафедра
информатики
УГАТУ
40
20