РАБОТА С ТЕКСТОВЫМИ ФАЙЛАМИ В СРЕДЕ ПРОГРАММИРОВАНИЯ 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

PDF