Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 9 Строки_Файлы

.pdf
Скачиваний:
9
Добавлен:
18.03.2015
Размер:
325.84 Кб
Скачать

Кафедра Изменение строк (удаление символов)

информатики

УГАТУ

Пример. Из строки 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