Как Петя Бейсиков Тоню Соображалкину программировать учил
- Автор: Бруно Мартузан
- Жанр: Околокомпьютерная литература / Детская образовательная литература / Basic, Visual Basic, VB Script, VBA и т.п.
- Дата выхода: 1987
Читать книгу "Как Петя Бейсиков Тоню Соображалкину программировать учил"
СПИСОК УЧЕНИКОВ НА ДИСКЕ
— Хотя и нельзя считать, что только программы, работающие с диском, самые серьезные, но уметь считывать данные с диска и записывать их туда-обратно очень важно, поэтому посмотрим еще и программу, которая работает с файлом, содержащим список учеников одного класса. Эта программа может создать первоначальный список учеников на диске, может в этот список добавлять сведения о новом ученике или же исключить ученика из списка. Список, хранящийся на диске, содержит фамилию, имя, отчество и дату рождения ученика. Программа, на мой взгляд, несложная, поэтому блок-схему рисовать не стану, давай смотреть текст.
10 REM ПРОГРАММА ДЛЯ РАБОТЫ С ФАЙЛОМ: СПИСОК УЧЕНИКОВ
20 REM F¤ — НАЗВАНИЕ ФАЙЛА, КОТОРОЕ САМА ПРОГРАММА
30 REM ФОРМИРУЕТ ИЗ НОМЕРОВ КЛАССА И ДИСКА
40 REM F И F1 — НОМЕРА ОТКРЫТЫХ ФАЙЛОВ
50 REM U¤ — ФАМИЛИЯ, I¤ — ИМЯ, U¤ — ОТЧЕСТВО
60 REM D¤ — ДАТА РОЖДЕНИЯ В ФОРМЕ: ДД.ММ.ГГ
70 REM R — УКАЗАТЕЛЬ ВЫБРАННОЙ РАБОТЫ
80 REM N — НОМЕРА ШКОЛЬНИКОВ
85
90 PRINT "НАЧИНАЕМ РАБОТУ СО СПИСКОМ УЧЕНИКОВ" PRINT
100 PRINT "НОМЕР ДИСКА, НА КОТОРОМ НАХОДИТСЯ ФАЙЛ"
110 INPUT D¤
120 PRINT "ВВЕДИТЕ КЛАСС/ НАПРИМЕР: 6А"
125 PRINT "БУКВА ОБЯЗАТЕЛЬНО LATINSKAJA I!! " INPUT К¤
130 PRINT F¤="DK"+D¤+":"+"FUCH"+K¤
135
190 PRINT " ВАШ ВЫБОР INPUT R
200 F=1 F1=2 REM НОМЕРА ФАЙЛОВ
205
210 ON R 60 TO 230,300,370,370,220
215
22 °CLOSE PRINT "РАБОТУ КОНЧАЮ" x STOP
225
230 OPEN F¤ FOR OUTPUT AS FILE F
240 PRINT PRINT "НАЧИНАЕТСЯ ВВОД; ЧТОБЫ ЕГО"
250 PRINT "КОНЧИТЬ/ ВВЕДИТЕ # ВМЕСТО ФАМИЛИИ"
260 GOSUB 1000 REM ВВОД СВЕДЕНИЙ О ШКОЛЬНИКЕ
270 IF U¤<>"#" THEN 260 REM КОНЧАТЬ ВВОД?
28 °CLOSE GO ТО 140 REM КОНЧАЕТ ВВОД
285
290 REM ПРОСМОТР ФАЙЛА 22222222222222222222222222222
300 OPEN F¤ FOR INPUT AS FILE F1
310 N=0 REM N ЭТО НОМЕР ШКОЛЬНИКА
320 GOSUB 2000 N=N+1 REM СЧИТЫВАЕТ СВЕДЕНИЯ
330 IF U¤="#" THEN 280 REM КОНЧАТЬ СЧИТЫВАНИЕ?
340 PRINT N;ТАВ(3);U¤;ТАВ (15);I¤;ТАВ(25);O¤;TAB(35);D¤
350 GO TO 320
355
360 REM ЗАНЕСТИ ИЛИ ВЫЧЕРКНУТЬ УЧЕНИКА 34343434343434
370 IF R=4 THEN 400
380 PRINT "ЗАНЕСТИ ПОСЛЕ КАКОГО НОМЕРА";
390 INPUT N GO TO 420
400 PRINT " КАКОЙ НОМЕР ВЫЧЕРКНУТЬ"; INPUT N
410 N=N-1
420 OPEN F¤ FOR INPUT AS FILE F1
430 OPEN "DK1:RABOT" FOR OUTPUT AS FILE F
440 FOR 1=1 TO N
450 GOSUB 2000 REM СЧИТЫВАЕТ СВЕДЕНИЯ
460 IF U¤<>"#" THEN 480
470 PRINT "НОМЕР СЛИШКОМ ВЕЛИК" GO TO 670
480 GOSUB 3000
490 NEXT I
500 IF R=3 THEN 540 REM УХОД НА ЗАПИСЬ
510 GOSUB 2000 REM СЧИТЫВАЕТ БЕЗ ЗАПИСИ
520 IF U¤="#" THEN 470
530 GO TO 550 REM ЕЩЕ СЧИТЫВАТЬ ОСТАТОК
540 GOSUB 1000 REM ВВОД НОВЕНЬКОГО
550 GOSUB 2000 REM СВЕДЕНИЯ О СЛЕДУЮЩЕМ
560 IF U¤="#" THEN 580
570 GOSUB 3000 GO TO 550
580 PRINT #F,U¤ CLOSE REM ВСЕ СЧИТАНО
585
590 REM С РАБОЧЕГО ФАЙЛА ПЕРЕПИСЫВАЕТ
600 OPEN F¤ FOR OUTPUT AS FILE F
610 OPEN "DK1:RABOT" FOR INPUT AS FILE F1
620 GOSUB 2000 REM СЧИТЫВАНИЕ С РАБОЧЕГО ФАЙЛА
630 IF U¤="#" THEN 660
640 GOSUB 3000 REM ЗАПИСЬ В НОВЫЙ ФАЙЛ
650 GO ТО 620
660 PRINT #F,U¤
67 °CLOSE KILL "DK1:RABOT" GO TO 140
675
680
1000 PRINT " ФАМИЛИЯ ШКОЛЬНИКА"; INPUT U¤
1010 IF U¤<>"#" THEN 1030
1020 PRINT #F, U¤ RETURN
1030 PRINT " ЕГО ИМЯ"; INPUT l¤
1040 PRINT " ОТЧЕСТВО"; INPUT O¤
1050 PRINT " ДЕНЬ РОЖДЕНИЯ"
1090 D¤=D3¤+"."+D2¤+". "+D1¤
1100 IF LEN(D¤)=8 THEN 1120
1110 PRINT " ДЕНЬ РОЖДЕНИЯ НЕПРАВИЛЬНЫЙ" GO TO 1050
1120 GOSUB 3000
1130 RETURN
1135
1140
2000 REM ПОДПРОГРАММА СЧИТЫВАНИЯ ДАННЫХ
2010 INPUT #F1,U¤
2020 IF U¤<>“#“ THEN 2040
2030 RETURN
2040 INPUT #F1,I¤, O¤,D¤
2050 RETURN
2055
2060
3000 REM ЗАПИСЬ ДАННЫХ НА ДИСК
3010 PRINT #F,U¤ PRINT #F,I¤
3020 PRINT #F, 0¤ PRINT #F, D¤
3030 RETURN
Сперва, наверное, надо пояснить, как в начале работы программа образует описание файла. Пользователь вводит номер устройства, на котором он поставил диск с файлами классов. Потом он должен ввести номер того класса, со списком учеников которого он хочет работать. Показываем ему и образец, как может выглядеть этот номер, — 6А, но если он введет его в виде А6 — дело хозяйское, главное, чтобы он всегда вводил одинаково. Потом в строке 130 образуется описание файла. Так как описания файлов могут состоять лишь из букв латинского алфавита, мы должны строго предупредить пользователя использовать только эти буквы.
— Что это такое — FUCH?
Файл находят по имени
— Только что об этом хотел говорить. Это сокращение слов «файлы учеников». По этим буквам можно будет в списках файлов уверенно определить, какие из них содержат сведения об учениках. Если пользователь укажет, что диск находится на первом устройстве, и речь идет о классе 581 А, то получится такое описание файла:
DK1:FUCH581A
— Ха-ха-ха! Класса 581 в школе быть не может!
— Ты же должна понимать, что программа не может иметь ни малейшего представления о классах. Только пользователь может придавать этому классу 581А какой-либо смысл, например: это 1а класс 58 средней школы.
Посмотрим дальше, как образуется список. Делается это в подпрограмме, начинающейся со строки 1000.
— Смешно. Вводишь фамилию и сразу сравниваешь с решеткой «#». У кого может быть такая фамилия?
— Этот знак, введенный вместо фамилии, означает конец ввода, или, что то же самое, конец списка учеников. Его мы тоже записываем на диск, чтобы потом, получив при считывании с диска такой знак вместо фамилии, знать, что файл на диске кончился. По этой причине всегда при вводе фамилии или считывании ее с диска мы сразу проверяем, не равна ли она символу «#». Ввод остальных данных попроще. Год рождения или, точнее, его последние две цифры. Месяц рождения. День. Потом эти данные собираем в таком виде, как они будут храниться на диске. Интересно, что эта подпрограмма сама вызывает другую подпрограмму для записи данных на диск. Это допускается.