Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
bb:redbook:202 [2017/08/30 16:46] prospero78 [2. Пороговый отбор чисел] |
bb:redbook:202 [2017/08/30 17:08] prospero78 [Задание] |
||
---|---|---|---|
Строка 86: | Строка 86: | ||
В целом представленная процедура имеет общепринятое название в радиотехнике " | В целом представленная процедура имеет общепринятое название в радиотехнике " | ||
- | Также обратите внимание на то, что переменные '' | + | Также обратите внимание на то, что переменные '' |
Строка 94: | Строка 94: | ||
Часть символов ("#" | Часть символов ("#" | ||
<code oberon2> | <code oberon2> | ||
- | PROCEDURE | + | PROCEDURE |
CONST | CONST | ||
- | _p = " "; (* пауза в передаче сигнала *) | + | _п = " "; (* пауза в передаче сигнала *) |
_s = "#"; | _s = "#"; | ||
- | _m = " | + | _м = " |
BEGIN | BEGIN | ||
- | Log.String(' | + | мЛог.String(' |
- | FOR i := 0 TO _sig_max | + | FOR цИтер |
- | IF sig[i] = 0 THEN | + | IF мцСигнал[i] = 0 THEN |
- | Log.String(_p) | + | мЛог.String(_п) |
- | ELSIF | + | ELSIF |
- | Log.String(_s) | + | мЛог.String(_s) |
ELSE | ELSE | ||
- | Log.String(_m) | + | мЛог.String(_м) |
END; | END; | ||
END; | END; | ||
- | Log.Ln; Log.String(' | + | мЛог.Ln; мЛог.String(' |
- | END OutSig; | + | END Сигнал_Печать; |
</ | </ | ||
==== 2.5 Общий вид программы ==== | ==== 2.5 Общий вид программы ==== | ||
Для запуска всей программы нужно определить запускающую процедуру с признаком экспорта. Пусть она по традиции будет называться " | Для запуска всей программы нужно определить запускающую процедуру с признаком экспорта. Пусть она по традиции будет называться " | ||
+ | |||
+ | Привет9.odc | ||
+ | |||
<code oberon2> | <code oberon2> | ||
- | MODULE | + | MODULE |
(* это программа на языке | (* это программа на языке | ||
Компонетный Паскаль. Она показывает | Компонетный Паскаль. Она показывает | ||
как можно вводить данные и обрабатывать их*) | как можно вводить данные и обрабатывать их*) | ||
- | IMPORT In, Log, Math; | + | IMPORT |
+ | мЛог := Log, | ||
+ | Math; | ||
CONST | CONST | ||
- | _sig_max | + | _разм |
+ | |||
VAR | VAR | ||
- | p1: SHORTINT; | + | цШум_низ: SHORTINT; |
- | p2: SHORTINT; | + | цШум_верх: SHORTINT; |
- | sig: ARRAY _sig_max | + | мцСигнал: ARRAY _разм |
- | i: INTEGER; | + | цИтер: INTEGER; |
- | tmp: INTEGER; | + | цВрем: INTEGER; |
- | PROCEDURE | + | PROCEDURE |
BEGIN | BEGIN | ||
- | FOR i := 0 TO ( _sig_max | + | FOR цИтер |
- | sig[i] := 0 | + | мцСигнал[цИтер] := 0 |
END; | END; | ||
- | i := 0; | + | цИтер |
- | In.Open; | + | мВв.Open; |
- | WHILE (In.Done) & ( i < _sig_max | + | WHILE (мВв.Done) & (цИтер |
- | In.Int(tmp); | + | мВв.Int(цВрем); |
- | sig[i] := SHORT(tmp); | + | мцСигнал[цИтер] := SHORT(цВрем); |
- | INC(i) | + | INC(цИтер) |
END; | END; | ||
- | END GetSignal; | + | END Сигнал_Получ; |
- | PROCEDURE | + | PROCEDURE |
BEGIN | BEGIN | ||
- | p1 := 50; | + | цШум_низ |
- | p2 := 1000; | + | цШум_верх |
- | FOR i := 0 TO _sig_max | + | FOR цИтер |
- | IF sig[i] < p1 THEN | + | IF мцСигнал[цИтер] < цШум_низ |
- | sig[i] := 0 | + | мцСигнал[цИтер] := 0 |
- | ELSIF | + | ELSIF |
- | sig[i] := 600 | + | мцСигнал[цИтер] := 600 |
ELSE | ELSE | ||
- | sig[i] := 500 | + | мцСигнал[цИтер] := 500 |
END; | END; | ||
END; | END; | ||
- | END LimitSig; | + | END Сигнал_Ограничить; |
- | PROCEDURE | + | PROCEDURE |
CONST | CONST | ||
- | _p = " | + | _п = " |
_s = "#"; | _s = "#"; | ||
- | _m = " | + | _м = " |
BEGIN | BEGIN | ||
- | Log.String(' | + | мЛог.String(' |
- | FOR i := 0 TO _sig_max | + | FOR цИтер |
- | IF sig[i] = 0 THEN | + | IF мцСигнал[цИтер] = 0 THEN |
- | Log.String(_p) | + | мЛог.String(_п) |
- | ELSIF | + | ELSIF |
- | Log.String(_s) | + | мЛог.String(_s) |
ELSE | ELSE | ||
- | Log.String(_m) | + | мЛог.String(_м) |
END; | END; | ||
END; | END; | ||
- | Log.Ln; Log.String(' | + | мЛог.Ln; мЛог.String(' |
- | END OutSig; | + | END Сигнал_Печать; |
- | PROCEDURE | + | PROCEDURE |
VAR | VAR | ||
BEGIN | BEGIN | ||
- | GetSignal; | + | Сигнал_Получ; |
- | LimitSig; | + | Сигнал_Ограничить; |
- | OutSig | + | Сигнал_Печать |
- | END Start; | + | END Старт; |
BEGIN | BEGIN | ||
- | END TestHello9. | + | END КнигаПривет9. |
</ | </ | ||
- | В процедуре '' | + | В процедуре '' |
+ | Кроме того, обратите внимание, | ||
+ | И обратите внимание, | ||
==== 2.6 Исходные данные и результат ==== | ==== 2.6 Исходные данные и результат ==== | ||
Строка 209: | Строка 216: | ||
В результате компиляции и выполнения программы будет выведена следующая информация: | В результате компиляции и выполнения программы будет выведена следующая информация: | ||
- | < | + | |
- | компилируется "TestHello9" | + | компилируется "КнигаПривет9" |
- | старый модуль | + | старый модуль |
- | [Начало приёма] | + | [Начало приёма] |
- | ..# | + | ..# |
- | ........................................................................................................... | + | |
- | .......................................... | + | |
- | [Конец приёма] | + | [Конец приёма] |
- | </ | + | |
Обратите внимание на размер всей программы: | Обратите внимание на размер всей программы: | ||
Из выведенного сигнала видно, что была передана комбинация букв: "SOS SOS O". В первом случае сигнал был детектирован(выделен) точно. Во втором случае, | Из выведенного сигнала видно, что была передана комбинация букв: "SOS SOS O". В первом случае сигнал был детектирован(выделен) точно. Во втором случае, | ||
+ | |||
+ | ==== Задание ==== | ||
+ | * Сделайте так, чтобы литера " | ||
+ | * Доработайте так, чтобы вместо морзянки выводились литеры | ||
+ | * Попробуйте сделать с помощью типа '' |