END IE-IF P < 126 THEN

'вычисление модуля при отрицательном порядке FOR I = 1 ТО 126 - P

С = С / 2 NEXT I END IF

IF S < 0 THEN С = -С 'коррекция знака числа PRINT С

'вывод дешифрованного значения на экран Если вы правильно воспроизведете весь текст, то значения в первой и второй строках должны совпасть (не обязательно буквально, но с точностью обеспечиваемой процедурой PRINT).

Числа типа DOUBLE кодируются аналогично. Для проверки кодирования чисел этого типа при желании вы можете написать программу аналогичную вышеприведенной но несколько больших размеров.

А теперь рассмотрим кодирование данных строкового типа фиксированной длины. Кодирование отдельных символов строки должно быть знакомо вам по занятиям предыдущей главы.

Нижеприведенная программа демонстрирует преобразование строки, состоящей из прописных букв латинского алфавита, в строку, состоящую из одноименных прописных букв. С этой целью код каждой из букв читается из ОЗУ, увеличивается на 32 и затем записывается в ОЗУ. В результате работы этой программы вы увидите на первой строке экрана строку АВС, а на второй — abc.

DIM mystr AS STRING*3 'определение типа строкового фиксированной длины

DEFLNG А 'определение типа длинного целого DEFINT В 'определение типа целого mystr = "АВС" 'присвоение значения переменной PRINT mystr 'вывод на экран исходного значения

'переменной Aseg = VARSEG(mystr) 'определение адреса сегмента Aoff = VARPTR(mystr) 'определение смещения DEF SEG = Aseg 'задание сегмента для чтения из

'ОЗУ и записи в ОЗУ В = PEEK(Aoff) + 32 'чтение и изменение кода 1-го символа POKE Aoff, В 'запись нового кода 1-го символа В = PEEK (Aoff +1) +32 'чтение и изменение кода 2-го

'символа POKE Aoff + 1, В 'запись нового кода 2-го символа В = PEEK (Aoff +2) +32 'чтение и изменение кода 3-го

'символа

POKE Aoff + 2, В 'запись нового кода 3-го символа PRINT mystr 'вывод на экран измененного 'значения переменной