BASIC-256. Глава 16
Методические материалыАвтор: Владимир Черный
Продолжаем публиковать перевод книги Джеймса Рено. Эту главу перевел Владимир Черный.
Оглавление:
- Глава 1: Знакомство с BASIC-256 – cкажи «Привет»
- Глава 2: Рисуем основные фигуры
- Глава 3: Звуки и музыка
- Глава 4: Мыслить как программист
- Глава 5: Программа задает вам вопросы
- Глава 6: Сравнения, сравнения, сравнения
- Глава 7: Циклы и счетчики — повторяем снова и снова
- Глава 8: Графика на заказ — создание фигур своими руками
- Глава 9: Подпрограммы — повторное использование кода
- Глава 10: Управляем мышкой, перемещаем объекты
- Глава 11: Использование клавиатуры для управления программой
- Глава 12: Картинки, музыка и спрайты
- Глава 13 Массивы — коллекции данных
- Глава 14 Математика — развлечемся с числами
- Глава 15 Работаем со строками
Глава 16 Файлы. Сохраним информацию на будущее
Мы исследовали оперативную память компьютера с помощью переменных и массивов, но как сохранить данные надолго? Существует много разных способов долгосрочного хранения данных.
BASIC-256 поддерживает запись и чтение информации из файлов на вашем жестком диске. Этот процесс ввода и вывода информации часто обозначают I/O1.
Эта глава покажет как читать данные из файла и как их потом туда записывать для долгосрочного хранения.
Чтение строк из файла
В первой программе этой главы вы увидите много новых операторов и констант (постоянных) которые нужны для управления данными.
1 # readfile.kbs
2 input "имя файла>", fn$
3 if not exists(fn$) then
4 print fn$ + " не существует."
5 end
6 end if
7 #
8 n = 0
9 open fn$
10 while not eof
11 l$ = readline
12 n = n + 1
13 print n + " " + l$
14 end while
15 #
16 print "Файл " + fn$ + " содержит " + size + " байт."
17 close
Программа 90 Чтение строк из файла
имя файла>test_ru.txt
1 Настало время испытать
2 силу человеческой души!
3 - Томас Пейн
Файл test_ru.txt содержит 110 байт.
Пример вывода программы 90 Чтение строк из файла
exist(выражение)
Ищет на компьютере файл, имя которого определено переменной выражение. Имя диска2 и путь должны быть указаны, как часть имени файла. Если они опущены, происходит поиск по текущему рабочему каталогу. Возвращает true (истина или 1) если файл существует и false (ложь или 0) в противном случае. |
openвыражение open (выражение) open номер_файла, выражение open (номер_файла, выражение) Открывает указанный переменной выражение файл, задавая ему указанный номер_файла. Если файл не существует, создается новый файл так, что в него можно добавлять информацию (см. операторы write и writeln). Не забудьте выполнить команду close, когда ваша программа закончит работать с файлом. BASIC-256 может открыть одновременно не более восьми (8) файлов с номерами от 0 до 7. Если номер файла не указан, он открывается с номером нуль (0). |
eof eof () eof(номер_файла) Функция eof возвращает истину (true) если достигнут конец файла в процессе чтения и ложь (false) в если еще есть не прочтенные данные. Если номер_файла не указан используется значение нуль (0). |
readline readline () readline (номер_файла) Возвращает прочитанную из файла строку. Если достигнут конец файла [eof(номер_файла)=true], тогда функция возвращает пустую строку ("") Если номер_файла не указан используется значение нуль (0). |
size size () size(номер_файла) Возвращает длину файла в байтах. Если номер_файла не указан используется значение нуль (0). |
close close () close(номер_файла) Функция close закрывает ввод/вывод в файл и позволяет другому файлу использовать тот же номер. Если номер_файла не указан используется значение нуль (0). |
Запись строк в файл
В программе 90 мы видели, как читать информацию из файла. Следующие две программы демонстрируют различные варианты записи информации в файл. В программе 91 мы открываем файл для записи стирая всю имеющуюся там ранее информацию, а в программе 92 добавляем новые строчки в конец файла, сохраняя предыдущую информацию.
1 # resetwrite.kbs
2 open "resetwrite.dat"
3
4 print "введите пустую строку для завершения записи"
5
6 # стираем данные из файла (reset) и начинаем туда писать сначала
7 reset
8 repeat:
9 input ">", l$
10 if l$ <> "" then
11 writeline l$
12 goto repeat
13 end if
14
15 # переходим к началу файла и отображаем содержимое
16 seek 0
17 k = 0
18 while not eof()
19 k = k + 1
20 print k + " " + readline()
21 end while
22
23 close
24 end
Программа 91 Очищение файла и запись.
введите пустую строку для завершения записи
>Вот простая информация
>которую я записал в файл
>раз, два, три, четыре пять
>Я иду искать!
>
1 Вот простая информация
2 которую я записал в файл
3 раз, два, три, четыре пять
4 Я иду искать!
Пример вывода программы 91 Очищение файла и запись.
reset reset () reset номер_файла reset (номер_файла) Стирает все данные в открытом файле, и перемещает указатель файла на начало. Если номер_файла не указан, используется нулевой номер (0). |
seekвыражение seek(выражение) seek номер_файла, выражение seek(номер_файла, выражение) Перемещает указатель чтения или записи файла в указанную позицию. Для перемещения указателя в начало файла используйте значение нуль (0). Для перемещения указателя в конец файла используйте значение функции size(). Если номер_файла не указан, используется нулевой номер (0). |
writelineвыражение writeline(выражение) writeline номер_файла, выражение writeline (номер_файла, выражение) Записывает значение аргумента выражение в открытый файл и добавляет символ конца строки. Указатель файла перемещается в конец записи так, что следующая команда записи запишет данные непосредственно за этими. Если номер_файла не указан, используется нулевой номер (0). |
1 # appendwrite.kbs
2 open "appendwrite.dat"
3
4 print "введите пустую строку для завершения записи"
5
6 # перемещаем указатель файла в конец и добавляем записи
7 seek size
8 repeat:
9 input ">", l$
10 if l$ <> "" then
11 writeline l$
12 goto repeat
13 end if
14
15 # перемещаем указательк началу файла, чтобы вывести его содержимое
16 seek 0
17 k = 0
18 while not eof()
19 k = k + 1
20 print k + " " + readline()
21 end while
22
23 close
24 end
Программа 92 Дописываем строчки в файл
введите пустую строку для завершения записи
>sed sed sed
>vim vim vim
>
1 bar bar bar
2 foo foo foo
3 grap grap grap
4 sed sed sed
5 vim vim vim
Пример вывода программы 92 Дописываем строчки в файл
Функция read() и оператор write
В первых трех программах этой главы мы обсуждали функцию readline() и оператор writeline. Вот еще два других способа читать из файла и писать в файл: функция read() и оператор write.
read read () read (номер_файла) Читает следующее слово или число (токен) из файла. Токены отделяются друг от друга пробелом, табуляцией или символом конца строки. Множественные пробельные элементы воспринимаются как один. Если номер_файла не указан, используется нулевой номер (0). |
write выражение write (выражение) write номер_файла, выражение write (номер_файла, выражение) Записывает значение аргумента выражение в открытый файл и не добавляет символ конца строки. Если номер_файла не указан, используется нулевой номер (0). |
Эта программа использует простой текстовый файл имитируя телефонную записную книжку. |
1 # phonelist.kbs
2 # Добавляем номер телефона в список и показываем
3 filename$ = "phonelist.txt"
4
5 print "phonelist.kbs - Управление списком телефонов."
6 do
7 input "Добавить, Посмотреть, Закончить (a/l/q)?",action$
8 if left(lower(action$),1) = "a" then gosub addrecord
9 if left(lower(action$),1) = "l" then gosub listfile
10 until left(lower(action$),1) = "q"
11 end
12
13 listfile:
14 if exists(filename$) then
15 # отображаем список имен и телефонов из файла
16 open filename$
17 print "Файл имеет размер " + size + " байт"
18 while not eof
19 # читаем следующую строки из файла и печатаем ее
20 print readline
21 end while
22 close
23 else
24 print "В файле нет записей. Добавьте первую."
25 end if
26 return
27
28 addrecord:
29 input "Имя?", name$
30 input "Номер телефона?", phone$
31 open filename$
32 # ищем конец файла
33 seek size()
34 # мы достигли конца файла, - добавляем строку
35 writeline name$ + ", " + phone$
36 close
37 return
Программа 93 Большая программа — Телефонная книжка
phonelist.kbs - Управление списком телефонов.
Добавить, Посмотреть, Закончить (a/l/q)?l
Файл имеет размер 76 байт
Аня, 555-5555
Валя, 555-7777
Дима, 555-3333
Паша, 555-0987
Петя, 234-3445
Добавить, Посмотреть, Закончить (a/l/q)?a
Имя?Вася
Номер телефона?345-4556
Добавить, Посмотреть, Закончить (a/l/q)?l
Файл имеет размер 95 байт
Аня, 555-5555
Валя, 555-7777
Дима, 555-3333
Паша, 555-0987
Петя, 234-3445
Вася, 345-4556
Добавить, Посмотреть, Закончить (a/l/q)?q
Пример вывода программы 93 Большая программа — Телефонная книжка
—————————————————
1 I/O — от английских слов Input (ввод) и Output (вывод)
2Имя диска имеет смысл только на операционных системах WindowsTM (прим. редактора)
Где скачать BASIC-256:
Для дистрибутивов ALT Linux
- ветка 4.0 basic256-0.9.6-alt5.M40.1.i586.rpm
- ветка 4.1 basic256-0.9.6-alt5.M41.1.i586.rpm
- ветка p5 basic256-0.9.6-alt5.M50P.1.i586.rpm
- ветка 5.1 basic256-0.9.6-alt5.M51.1.i586.rpm
Windows версия
http://basic256.org (http://www.sourceforge.net/projects/kidbasic)
Как установить BASIC-256 в Linux
Для Альт Линукс: настроить репозиторий и обновить/установить пакет через synaptic или apt
Для rpm-based дистрибутивов: rpm -Uvh <имя_пакета>.rpm
Оставьте комментарий