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

Содержимое удалено Содержимое добавлено
Строка 112:
 
<source lang="oberon2">
MODULE TestHello9;
(* это программа на языке
Компонетный Паскаль. Она показывает
как можно вводить данные и обрабатывать их*)
IMPORT Log, Math, In;
 
CONST
sig_max = 256;
VAR
p1 : SHORTINT;
p2 : SHORTINT;
sig : ARRAY sig_max OF SHORTINT;
i: INTEGER;
tmp : INTEGER;
 
PROCEDURE GetSignal;
BEGIN
FOR i:=0 TO (sig_max-1) DO
sig[i]:=0
END;
i:=0;
In.Open;
WHILE (In.Done) & (i<sig_max) DO
In.Int(tmp);
sig[i]:=SHORT(tmp);
INC(i)
END;
END GetSignal;
 
PROCEDURE LimitSig;
BEGIN
FOR i:=0 TO sig_max-1 DO
IF sig[i]<50 THEN
sig[i]:=0
ELSIF sig[i]>1000 THEN
sig[i]:=600
ELSE
sig[i]:=500
END;
END;
END LimitSig;
 
PROCEDURE OutSig;
CONST
p = "."; (* пауза в передаче сигнала *)
s = "#"; (* полезный сигнал *)
m = "^"; (* молния? *)
BEGIN
Log.String('[Начало приёма]'); Log.Ln;
FOR i:=0 TO sig_max-1 DO
IF sig[i]=0 THEN
Log.String(p)
ELSIF sig[i]=500 THEN
Log.String(s)
ELSE
Log.String(m)
END;
END;
Log.Ln; Log.String('[Конец приёма]');Log.Ln
END OutSig;
 
PROCEDURE Start*;
VAR
BEGIN
GetSignal;
LimitSig;
OutSig
END Start;
 
BEGIN
END TestHello9.
</source>
В процедуре "Start" определены последовательные вызовы для обработки цифрового сигнала. Код разбит на довольно мелкие процедуры ,что вполне позволяет оценить, что делает каждая из них даже без комментариев.
 
== Примечания ==