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

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