Компонентный Паскаль/Отбор данных: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 17:
По хорошему, можно было бы и проанализировать, что получается. Но задача ''парсера'', как значительно более сложная пока рассматриваться не будет. Также пока не будем рассматривать вопросы алгоритмической оптимизации исполнения программы.
 
=== ВводОпределение структур данных ===
Для ввода данных воспользуемся Модулем "In". Будем считать (и на самом деле для ускорения ''цифровой обработки сигналов'' именно так и делается), что входные сигналы не превышают значение 0....+32 тыс.<ref name="диапазон">Если посмотреть на бытовые электросчётчики, то у них класс точности 1%. Для получения такого класса точности, необходимо чтобы измерительный прибор имел измерительный диапазон всего 0...+255, т. е. 1 байт. при этом динамический диапазон составит 48 дБ, а при измерительном диапазоне 0...32 тыс. точность составит 0,003%, что примерно в 300 раз лучше бытового счётчика. При этом динамический диапазон измеряемой величины будет примерно 90 дБ, что является очень хорошим показателем. Так что у нас -- превосходный приёмник ,) (между прочим качество компакт-диска не многим лучше -- 96 дБ)</ref>, т.е. имеют тип SHORTINT.
Вспомним, что для ввода целых чисел есть процедура "In.Int". Но мало того что, данные необходимо вводить, поток на ввод надо ещё открыть. Для этого служит процедура "In.Open". Как понять, что входные данные закончились? Переменная In.Done примет значение FALSE. Пожалуй, стоит напомнить, что для хранения данных нам потребуется массив, а для пороговых значений -- парочка переменных.
Строка 30:
i: INTEGER; (* счётчик чтения входного потока, чтобы не выйти за пределы массива *)
</source>
 
 
===Ввод данных===
 
После задания входных структур давайте введём данные:
Строка 51 ⟶ 54 :
После целочисленного цикла, переменная "i" опять получает присвоение, так как после целочисленного цикла она будет равна "255".
 
Цикл с условием на входе имеет сложное условие. Цикл будет повторяться до тех пор, пока есть данные на входе (In.Done), либо не закончится массив. Т.е. вовсе не факт, что массив будет использован полностью. И если дело будет обстоять именно так, то такой способ организации ввода данных не является оптимальным<ref name="цепочка">Для хранения данных, число которых заранее неизвестно используется структура, получившая название "связанный список", или проще "цепочка". У него тоже есть недостатки, но в ряде случаев может оказаться более удобным.</ref>. Любое условие, которое ограничивает (направляет) основную ветку выполнения программы называется "охраной", что в стане Паскаля широко применяется (см. комментарий при объявлении цикла с условием на входе). Кроме того, впервые встречается ключевое слово SHORT. Это встроенное средство КП позволяет привести тип INTEGER к типу SHORTINT. Порядок приведения чисел был рассмотрен ранее.
 
И по завершении процедуры ввода, выполняется закрытие входного потока. Итак, мы ввели данные с шумами, теперь их необходимо обработать.
 
== Примечания ==