Дайте развернутые ответы на вопросы: 1. Опишите задачи информатизации общества. 2. Объясните термин «компьютерный вирус». 3. Опишите структуру программного обеспечения современного компьютера.
1. В СОМ-технологии маршалинг используется для чего? Для передачи данных по значению между Com объектами 2. В СОМ-технологии информация место нахождении находится СОМ-сервера находится где?В реестре виндовс 3. Если приложение использует СОМ-сервер реализованный в виде DLL то это позволяет?Быстро подменять DLL на новую версию чтобы изменения быстро вступили в силу чтобы проверить как работает.Параллельную разрабтку разных компонент 4. Если приложение использует СОМ-сервер реализованный в виде EXE то это позволяет?каждому приложению не таскать с собой DLL , обращаться к нему по имени и к одному и томуже объекту из разных мест и разных сред.Использвать ООПшный шаблон-подход фабрику. 5. В СОМ-технологии для облегчения корректного взаимодействия многопоточного клиента и однопоточного сервера используют?Межпотоковую синхронизацию
{ Если мы попробуем кодировать точку нулем, тире - единицей, то получаем число в двоичной системе с максимальным числом разрядов, равным 4. К сожалению, в такой кодировке комбинации, начинающиеся с точки, будут неоднозначными, потому что будут начинаться с незначащих нулей. Для устранения неоднозначности можно добавить еще три бита слева, которые будут указывать количество точек в коде до первого тире (0-4), но лучше добавить 4 бита и использовать для кодирования полный байт. Тогда его первая шестнадцатиричная цифра даст число незначащих нулей (точек), а вторая - сам код. Исключение - символ 'э', который кодируется 5 символами. Для разделения слов введем еще символ пробела -...-
Конечно, можно было бы просто поместить коды в элементы массива и поиск нужного производить поэлементым сравнением, но принятая нами кодировка позволит получать номер элемента массива сразу. Иными словами, мы построили так называемую ХЭШ-ФУНКЦИЮ для доступа к таблице перекодировки. Это очень популярное решение, которое применяется достаточно часто в различных алгоритмах кодировки и поиска. Максимальный номер среди полученных нами = 64, минимальный - 1. Следовательно, нужно создать массив T[1..64] и поместить русские буквы в элементы с соответствующими индексами (а - в 17-й элемент, б - в 8-й и т.д.) Получив очередное слово - "символ" азбуки Морзе, например, '..-.', выполняем следующие шаги: 1) Если пять правых символов слова равны '..-..', искомый символ T[52]; 2) Если пять правых символов слова равны '-...-', искомый символ T[63]; 3) Подсчитываем k - количество точек в четырех правых символах слова a5a6a7a8, пока не встретим тире. Вычисляем значение k:=16*k; 4) Начиная с первого слева тире заменяем в символах слова точки нулями, тире - единицами; 5) Вычисляем сумму n=a5*8+a6*4+a7*2+a8 и увеличиваем на нее значение k. k:=k+n 6) Искомый символ равен T[k] Алгоритм кажется сложным, но его реализация в функции Hash проста. }
var ptr: integer;
function Hash(s: string): integer; {Возвращает номер элемента в таблице Т по коду Морзе из строки s} var i, k, n, m: integer; begin if s = '' then Result := 0 else if s = '..-..' then Result := 52 else if s = '-...-' then Result := 63 else begin i := 1; k := 0; while i <= length(s) do if s[i] = '.' then begin i := i + 1; k := k + 1 end else i := 5; n := 0; m := 1; for i := length(s) downto max(k, 1) do begin if s[i] = '-' then n := n + m; m := m * 2 end; Result := 16 * k + n end end;
function GetWord(s: string): string; {Возвращает очередное слово строки s, начиная поиск с позиции ptr По окончании поиска ptr устанавливается на следующий за пробелом символ или выходит за конец строки} var i: integer; c: string; begin c := ''; i := PosEx(' ', s, ptr); if i > 0 then begin Result := Copy(s, ptr, i - ptr); ptr := i + 1 end else begin Result := Copy(s, ptr, length(s) - ptr + 1); ptr := length(s) + 1 end; end;
var s: string; n: integer; T: array[1..64] of char;