ПОНЯТНО О Visual Basic NET (том 3)




Пример «Сейсмодатчик»


Здесь мы рассмотрим пример работы с нетипизированными файлами.

Задание. Высоко в Гималаях расположена автоматическая сейсмостанция. Находящийся на ней сейсмодатчик измеряет колебания земной коры. Каждое измерение представляет собой целое число в диапазоне от 0 до 100, характеризующее амплитуду колебаний. Данные измерений передаются на компьютер, находящийся где-нибудь в Дели, и пишутся в файл. Время от времени (нерегулярно) в тот же файл записывается и точное время (в формате строки). Иногда до сейсмодатчика добирается Йети и бьет по нему лапой, тогда показания датчика превышают число 100. За лето 2005 года в файл было записано несколько миллионов чисел – результатов измерений и несколько тысяч моментов времени.

В конце лета ученых заинтересовали странные колебания, якобы зарегистрированные рядом сейсмостанций 28 августа. Причем многие утверждают, что никаких колебаний вообще не было. В связи с этим сейсмолог Бхагараджа решил срочно написать программу для работы с файлом данных от нашей гималайской станции, чтобы определить, были ли на ней 28 августа зарегистрированы какие-нибудь колебания, а если были, то распечатать все результаты измерений за эти сутки, включая и моменты времени.

Данные в файл писались последовательно. Это значит после нескольких сотен или тысяч чисел – результатов измерений попадается строка времени, затем опять идет цепочка чисел, затем снова время и так далее. Чтобы при считывании можно было отличить время от чисел, перед записью каждого момента времени записывался байт с числом 255 (пусть это и ненадежная «метка» (вспомним хотя бы Йети!), но для учебного примера сойдет). Поскольку время писалось нерегулярно, представить этот файл типизированным никак нельзя. Значит нужно работать с ним, как с нетипизированным.

Задача программиста: Считывать все байты из файла по порядку. Наткнувшись на байт с числом 255, проверять записанное время. Если это 28 августа, распечатывать байты и строки времени до тех пор, пока не наткнешься на 29 августа или более позднюю дату. Если число превышает 100, печатать сообщение «Это Йети!».  Если момента времени 28 августа в файле не было вообще и достигнут конец файла, выдать сообщение «Колебаний не было».




Содержание  Назад  Вперед