Программа


DECLARE SUB Process (FileName AS STRING)
DECLARE SUB GetStud (FamilyName$, Year%, Sex$)
DECLARE SUB MakeFile (FileName AS STRING)

FileName$ = "STUD"     'Имя файла студентов

DEF FNQuestion$ (St$) 'Функция получения ответа на вопрос
  PRINT St$; " [Д/Н] ";   ' Вывод вопроса
  DO
    S$ = INKEY$ 'Чтение нажатия клавиши
  LOOP WHILE S$ <> "Д" AND S$ <> "д" AND S$ <> "Н" AND S$ <> "н"
                             ' Выход из цикла при получении коректного ответа
  IF S$ = "Д" OR S$ = "д" THEN            'Определение значения функции
                            FNQuestion$ = "YES"
                          ELSE
                            FNQuestion$ = "NO"
  END IF
  PRINT S$                ' Вывод ответа
END DEF

PRINT 'Пропуск строки
IF FNQuestion$("Создать файл STUD? ") = "YES" THEN CALL MakeFile(FileName$)
                                                            ' Создание файла
PRINT 'Пропуск строки
CALL Process(FileName$)  ' Обработка файла и вывод результатов
END

SUB GetStud (FamilyName$, Year%, Sex$) 'Процедура ввода данных студента
  INPUT "Фамилия ", FamilyName$       'Ввод фамилии
  INPUT "Год рождения ", Year%        'Ввод года рождения
  INPUT "Пол [М/Ж] ", Sex$            'Ввод пола
  WHILE Sex$ <> "М" AND Sex$ <> "м" AND Sex$ <> "Ж" AND Sex$ <> "ж"
  'Цикл повторного ввода пола при неверном вводе
    PRINT "Неверный ввод"; CHR$(7) 'Вывод сообщения об ошибке
    INPUT "Пол [М/Ж] ", Sex$       'Повторный ввод пола
  WEND
  'Переопределение строчных букв:
  IF Sex$ = "м" THEN Sex$ = "М"
  IF Sex$ = "ж" THEN Sex$ = "Ж"
END SUB

SUB MakeFile (FileName AS STRING) 'Процедура создания файла
  OPEN FileName FOR OUTPUT AS #1 'Открытие файла под запись
  PRINT 'Пропуск строки
  WHILE FNQuestion$("Создать запись?") = "YES" 'Цикл создания записей
    CALL GetStud(FamilyName$, Year%, Sex$) 'Ввод данных студента
    PRINT #1, FamilyName$, ",", Year%, Sex$    'Запись данных в файл
    PRINT 'Пропуск строки
  WEND
  CLOSE #1 'Закрытие файла
END SUB

SUB Process (FileName AS STRING) 'Процедура обработки файла
  SumAge% = 0 'Сброс суммарного возраста
  Meter% = 0  'Сброс счетчика студентов
  OPEN FileName FOR INPUT AS #1 'Открытие файла под чтение
  WHILE NOT EOF(1) 'Цикл просмотра файла
    INPUT #1, FamilyName$, Year%, Sex$ 'Чтение данных студента
    IF Sex$ = "М" THEN  'Обработка данных студента
                    PRINT FamilyName$, 1997 - Year% 'Печать фамилии и возраста студента
                    Meter% = Meter% + 1 'Набор количества студентов мужского пола
                    SumAge% = SumAge% + 1997 - Year% 'Набор суммарного возраста
    END IF
  WEND
  CLOSE #1 'Закрытие файла
  IF Meter% <> 0 THEN
                   PRINT "Средний возраст "; SumAge% / Meter%
                                                     'Вывод среднего возраста
                 ELSE
                   PRINT "Студентов мужского пола нет в файле "
  END IF
END SUB


Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию