СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Май 17, 2011

Программирование в Gambas. Урок 4

Методические материалы
Автор: Владимир Черный

Еще один урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области.
Первый урок
Второй урок
Третий урок

Урок 4. Файлы.

Тип урока: Лабораторная работа. Полное учебное занятие.
Цель урока:

  1. Познакомиться со стандартными функциями по обработке строк.
  2. Приобрести навыки по созданию файлов двух типов: File и Stream.
  3. Научиться открывать файл для чтения и записи последовательных данных.

Ход работы.
В системе Gambas предусмотрены развитые средства по работе с директориями и файлами. Информацию о функциях по работе с файлами можно найти в справке Gambas, по команде: Справка → Компонент gb → File.
Рассмотрим некоторые:

1. Создать файл. Предварительно создадим в домашней директории каталог gambas/ и подкаталог lesson-4/ (урок-4), т. е. Полный путь будет таким:
/home/<user>/gambas/lesson-4/ или ~/gambas/lesson-4/

Справка: В системе Linux символ ‘~’ указывает на директорию пользователя.

DIM myFile AS File ‘Переменная файлового типа
DIM myDir AS String
DIM sLine AS String
myDir = "~/gambas/lesson-4/" ‘Задали путь к файлу
myFile = OPEN myDir & "example.txt" FOR CREATE ‘*
sLine = "Строка 1"
PRINT #myFile, sLine ‘Ввод строки
PRINT #myFile, "Строка 2"
CLOSE #myFile ‘Закрываем файл

Примечание. * — Метод CREATE создает файл, при наличии, перезаписывает!

2. Открыть файл.
2.1. Построчная запись данных в файл. Тип File.

DIM myFile AS File ‘Тип файл
DIM myDir AS String
DIM sLine AS String

myDir ="~/gambas/lesson-4/" ‘Путь

‘Проверка на наличие файла
IF IsDir(myDir & "example.txt") THEN ‘IsDir вернет True, если файл найден
    myFile = OPEN myDir & "example.txt" FOR OUTPUT ‘Файл открыт для записи
    sLine = "OUTPUT — выходной файл"
    PRINT #myFile, sLine ‘Запись 1-ой строки
    PRINT #myFile, "Строка-2" ‘Запись 2-ой строки
    CLOSE #myFile ‘Закрыли файл
ELSE
    Message.Error("Файл не найден!")
END IF

2.2. Построчное чтение данных из файла. Тип File.

DIM myFile AS File
DIM myDir AS String
DIM sLine1 AS String
DIM sLine2 AS String

myDir = "~/gambas/lesson-4/"
myFile = OPEN myDir & "example.txt" FOR INPUT

WHILE NOT Eof(myFile) ‘Пока не конец файла, повторять
    LINE INPUT #myFile, sLine1 ‘Чтение строки-1
    PRINT sLine1 ‘Печать значения в окно вывода
    LINE INPUT #myFile, sLine2 ‘Чтение строки-2
    PRINT sLine2
WEND ‘Конец цикла

CLOSE #myFile ‘Закрытие файла

Для работы со строками в Gambas используются стандартные функции:

Функция Действие Пример
Len(strLine) Число символов в строке Функция Len(«ABС») вернет значение 3
Left(strLine, 3) Вырезать три символа слева Left(«AltLinux», 3) получим «Alt»
Right(strLine,5) Вырезать пять символов справа Right(«AltLinux», 5) получим «Linux»
MID(strLine,3,6) Вырезать шесть символов начиная с третьего MID(«Информатика»,3,6) получим «формат»
ASC(«A») *Код символа 65(основание 10), или 41(16), 01000001(2)
CHR(65) Получим символ «A»

* — Для перевода чисел с одной системы счисления в другую используйте «Калькулятор» (gcalctool) → Вид: Программирование.

2.3. Создание и запись данных. Файловый тип Stream (поток).

DIM myFile AS stream
DIM myDir AS String
DIM sPi AS String

myDir = "~/gambas/lesson-4/"
myFile = OPEN myDir & "example.dat" FOR CREATE ‘Создали файл
myFile = OPEN myDir & "example.dat" FOR OUTPUT ‘Открыли для записи
sPi = "3.1416" ‘Число Пи

WRITE #myFile, sPi
WRITE #myfile, "5" ‘Радиус
CLOSE #myFile ‘Закрытие файла

2.4. Чтение данных.Тип Stream.

DIM myFile AS stream
DIM myDir AS String
DIM strDat AS String
DIM fltPi AS Float

DIM fltR AS Float
DIM Rezultat AS Float

myDir = "~/gambas/lesson-4/" ‘Путь
myFile = OPEN myDir & "example.dat" FOR INPUT ‘Открыли для чтения
WHILE NOT Eof(myFile) ‘Пока не конец файла, повторять
    READ #myFile, strDat ‘Читаем значение Pi
    fltPi = strDat ‘Присваиваем переменной действительного типа
    READ #myFile, strDat ‘Читаем радиус
    fltR = strDat
WEND ‘Конец цикла
CLOSE #myFile
Rezultat = 2 * fltPi * fltR ‘Длина окружности PRINT Rezultat

3. Задача. Компонентами файла являются целые числа в диапазоне от 1 до 10. Вывести все четные.
Дано: Input.dat
1 2 3 4 5 6 7 8 9 10
Результат:
2 4 6 8 10
Решение.

DIM myFile AS stream
DIM myDir AS String
DIM i AS Integer

myDir = "~/gambas/lesson-4/input.dat"
myFile = OPEN myDir FOR CREATE ‘Создали файл
myFile = OPEN myDir FOR OUTPUT ‘Открыли для записи

FOR i = 1 TO 10 STEP 1
    WRITE #myFile, i ‘Запись данных
NEXT
CLOSE #myFile ‘Закрытие файла

myFile = OPEN myDir FOR INPUT ‘Открыли для чтения
WHILE NOT Eof(myFile) ‘Пока не конец файла, повторять
    READ #myFile, i ‘Читаем значение
    IF i MOD 2=0 THEN PRINT i ‘Если остаток от деления на 2 = 0, то число четное
WEND ‘Конец цикла
CLOSE #myFile

4. Домашнее задание.
Изменить программу таким образом, чтобы найти все значения делящиеся на 3 и не делящиеся на 7 в диапазоне от 1 до 100. Результат записать в файл output.dat.

Оставьте комментарий