РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ В СРЕДЕ ПРОГРАММИРОВАНИЯ GAMBAS
Раздел: Разработка методического обеспечения
Журнал: Формирование коммуникационной культуры и положительной мотивации в обучении
3 марта 2010 г.
Авторы: Буяковская Ирина Александровна
И. А. Буяковская
РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ В СРЕДЕ ПРОГРАММИРОВАНИЯ GAMBAS
Приступая к решению задач, предполагающих чтение исходных данных из файла и вывод результатов в файл, необходимо объявить файловую переменную в разделе описания переменных:
DIM F1, F2 AS File
Для доступа к конкретному файлу файловую переменную с помощью инструкции OPEN необходимо связать с этим файлом, например:
F1 = OPEN "file1" FOR INPUT (открытие файла file1 для чтения из папки проекта)
F2 = OPEN "/home/student/file2" FOR WRITE CREATE (создание нового файла file2 в домашней папке для записи результатов).
Исходный файл можно создавать в текстовом редакторе Kwrite (Прочие - служебные - редакторы). Создавать новые текстовые файлы необходимо в домашней папке, так как только она является доступной директорией. Файл, созданный программой, можно также просматривать в редакторе текста.
Используя цикл, производим построчное чтение из исходного файла, начиная с первой строки и до конца файла, например:
WHILE NOT Eof(F1)
LINE INPUT #F1, sLine
WEND (предварительно опишите sLine в разделе описания переменных как String).
После того как в цикле в переменную sLine считана строка, ее можно обрабатывать с помощью строковых функций:
Asc - возвращает ASCII-код символа строки.
Chr - возвращает символ по ASCII-коду.
InStr- производит поиск подстроки в строке и возвращает позицию (номер) первого символа.
LCase - преобразует символы строки в строчные.
Left - возвращает первый символ строки.
Len - возвращает длину строки.
LTrim - удаляет пробелы в начале строки.
Mid - возвращает часть строки.
Replace - заменяет в строке подстроку.
Right - возвращает последний символ строки
RInStr - производит поиск подстроки, начиная с конца строки.
RTrim - удаляет пробелы в конце строки
Space - возвращает строку, содержащую только пробелы исходной строки.
Subst - соединяет две строки.
Trim - удаляет пробелы в начале и конце строки.
UCase - преобразует символы строки в прописные.
После того как мы обработали строку sLine в соответствии с условием задачи и, например, сформировали новую - s для записи в новый файл (file2), первоначально организуем переход на следующую строку: s = s & Chr(10), а затем используя команду WRITE запишем полученный результат: WRITE #F2, s.
После окончания работы с текстовым файлом его закрывают с помощью команды Close.
Результат выполнения программы может быть записан не только в текстовый файл, но и выведен в объект Label или ListBox на форму:
ListBox1.add(s) или
Label1.text = Label1.text & s.
Приведем пример решения задачи
Условие: Дан текстовый файл. Определите в нем количество слов, в которых совпадает первая и последняя буквы.
На форме необходимо организовать две кнопки: решение и выхода. Оформить условие задачи в надпись и добавить еще две надписи для вывода как содержимого файла, так и результата расчета.
PUBLIC SUB Button2_Click()
DIM F1 AS File
DIM sLine, n AS String
DIM i, x AS Byte
' произведем связывание файловой переменной с физическим файлом ff1
F1 = OPEN "ff1" FOR INPUT
WHILE NOT Eof(F1)
' пока файл незакончен будем производить построчное считывание
LINE INPUT #F1, sLine
' для удобства, выведем считанную строку в объект label2
label2.text = label2.text & sLine & Chr(10)
i = 1
WHILE i < Len(sLine) + 1
' пока не конец строки будем перебирать пробелы (можно добавить и знаки пунктуации) и формировать слово в переменную n.
WHILE (Mid(sLine, i, 1) = " ") AND (i < Len(sLine) + 1)
i = i + 1
WEND
WHILE (Mid(sLine, i, 1) <> " ") AND (i < Len(sLine) + 1)
n = n & Mid(sLine, i, 1)
i = i + 1
WEND
' после выхода из цикла в переменную n мы выделили слово и теперь произведем анализ
IF (Left(n) = Right(n)) and (Len(n)>1) THEN x = x + 1
' мы проверили с помощью функций Left и Right первую и последнюю букву слова, а также его длину, чтобы она превышала 1 символ
n=""
WEND
WEND
Close #F1
label3.text = x
END