Скачать 0.76 Mb.
|
Побитное кодирование информации Многие сложные вопросы кодирования информации легко понять, решая задачи. Как кодируются знаки письменности в таблице ASCII и почему любой текст можно представить в виде наборов из 0 и 1? Чем отличаются при кодировании прописные и строчные буквы? Зачем нужны логические операции, и какие задачи можно решить с их помощью? Каким образом зашифровать информацию? Как получить двоичный код целого числа самым коротким способом? Почему курсор мыши разный и как его изменить? В задачах, представленные ниже, можно концентрически рассмотреть при темы «Кодирование информации», «Строки», «Системы счисления», «Графика». Коды ASCII Задача 1. Распечатаем таблицу кодов ASCII, исключая управляющие символы с кодами 7-10 и 13. Например, в этой таблице шестнадцатеричный код символа 'N' - 4E, а 'я' - EF. Решение задачи program ascii; var i,j:integer; {параметры цикла} const stroka:string='0123456789ABCDEF'; {цифры шестнадцатеричной системы} begin write('':1); for i:=1 to length(stroka) do write(stroka[i]:3);{номера столбцов} for i:=0 to 15 do begin writeln; write (stroka[i+1]); {номера строк} for j:=0 to 15 do if (i*16+j<>10) and (i*16+j<>13) and (i*16+j<>9) and (i*16+j<>8) and (i*16+j<>7) {исключяем управляющие символы} then write(chr(i*16+j):3) else write(' ') end; end Задания для самостоятельной работы: 1. Закодировать свое имя в шестнадцатиричном и двоичном коде. 2. Определить двоичный код латинских букв 'D','d','E','e'. 3. Определить, в каком бите двоичного представления различаются заглавные и строчные буквы латинского алфавита. 4. Определить, в каких битах двоичного представления различаются буквы русского алфавита. Регистр латинских букв Преобразуем прописные латинские буквы в строчные и обратно путем инвертирования 6-го бита в ASCII-коде буквы. В данной программе применяется операция XOR, поэтому приведем таблицу истинности, из которой видно, что единицей бит инвертируется: (i XOR 1) = NOT (i), а двукратное преобразование бита единицей возвращает его в исходное значение. A B A XOR B (A XOR B) XOR B 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 1 Напомним что, 2^n=exp(n*ln(2)), а в двоичном представлении - одна единица и n нулей, например 32=2^5=100000. Биты в байте нумеруются справа налево от 0 до 7, например, двоичный код буквы N в таблице ASCII: 0 1 0 0 1 1 1 0 двоичный код буквы N 7 6 5 4 3 2 1 0 нумерация битов в байте Решение задачи program registr; var s:string; c:char; i,j:integer; {функция инвертирования n-го бита в байте ASCII-кода буквы} function caps(c:char;n:integer):char; begin caps:= chr(ord(c) xor round(exp(n*ln(2))) ); end; begin writeln('введите строку'); readln(s); for i:=1 to length(s) do {цикл замены регистра всех букв в строке} s[i]:=caps(s[i],5); writeln(s); end. Результат исполнения Question qUESTION Задание для самостоятельной работы: 5. Рассмотреть инвертирование 0-го бита в символах 'B' и 'C' таблицы ASCII. 6. Рассмотреть инвертирование 0-го бита в символах 'Ж' и 'З' таблицы ASCII. Шифрование В предыдущей задаче инвертировался один шестой бит, а здесь мы рассмотрим шифрование строки путем инвертирования k младших битов в ASCII-коде символа. Решение задачи program code_k; const k=4; var s:string; c:char; i,j:integer; {функция инвертирования n-го бита в байте ASCII-кода буквы} function caps(c:char;n:integer):char; begin caps:= chr(ord(c) xor round(exp(n*ln(2)))); end; begin writeln('введите строку'); readln(s); for j:=0 to k do {инвертирование j-го бита} begin for i:=1 to length(s) do {изменение каждого символа в строке} s[i]:=caps(s[i],j); writeln(s); end; for j:=k downto 0 do {инвертирование j-го бита} begin writeln(s); for i:=1 to length(s) do {изменение каждого символа в строке} s[i]:=caps(s[i],j); end; writeln(s); end. Результат исполнения введите строку Question { исходная строка } Ptdruhno { инвертируется 0-й бит } Rvfpwjlm { инвертируется 1-й бит } Vrbtsnhi { инвертируется 2-й бит } ^zj|{f`a { инвертируется 3-й бит } Njzlkvpq { инвертируется 4-й бит } Njzlkvpq { результат } ^zj|{f`a { инвертируется 4-й бит } Vrbtsnhi { инвертируется 3-й бит } Rvfpwjlm { инвертируется 2-й бит } Ptdruhno { инвертируется 1-й бит } Question { инвертируется 0-й бит } Операции сдвига Программа демонстрирует действие функции «SHL - сдвиг влево» на i позиций, что соответствует умножению на 2^i и «SHR - сдвиг вправо» на i позиций, что соответствует целочисленному делению на 2^i. Решение задачи program shr_shl; var i:byte; begin for i:=0 to 5 do writeln(i,34:3,34 shl i:5,34 shr i:5); end. Результат исполнения для числа 34 I 34 shl shr 0 34 34 34 1 34 68 17 2 34 136 8 3 34 272 4 4 34 544 2 5 34 1088 1 Задание для самостоятельной работы: 7. Составить программу, которая демонстрирует действия логических операций AND, OR, XOR, NOT над целыми числами. 8. Получить результат действия логических функций над целыми числами 17 и 16 в двоичном представлении и объяснить результат. Двоичное умножение В программе демонстрируется умножение десятичных чисел типа байт без применения операции умножения. Решение задачи program mult1; var b1,b2:byte; w1:word; i:integer; begin writeln('введите числа меньшие 256'); readln(b1,b2); w1:=0; for i:= 0 to 7 do if ((b2 and (1 shl i))<>0) then {провека i-го бита сомножителя на равенство единице} w1:=w1+(b1 shl i);{прибавляем к сумме множимое, увеличенное в 2^i раз} writeln(w1); end. Результат исполнения 45 2 90 Задание для самостоятельной работы: 9. Выполнить умножение столбиком для чисел 45 и 2 в двоичном представлении. Что проще: умножить 45 на 2 или 2 на 45? 10. Как перевести целое число в двоичное с помощью логических операций? Умножение столбиком Умножение десятичных чисел типа байт без применения операции умножения c демонстрацией двоичных кодов. Решение задачи program mult2; var b1,b2:byte; w1:word; i,j:integer; procedure binprint(b:word;d:byte);{вывод числа в двоичном формате} var i:integer; begin for i:=d-1 downto 0 do if (b and (1 shl i))<>0 then write('1') else write('0'); writeln; end; begin write('введите множимое b1=');readln(b1); write('введите множитель b2=');readln(b2); w1:=0; write('':8); binprint(b1,8); {вывод множимого в двоичном формате} write('':8); binprint(b2,8); {вывод множителя в двоичном формате} write('':8); writeln('--------'); {подведем черту для умножения столбиком} for i:= 0 to 7 do {цикл по каждому биту множителя} begin if ((b2 and (1 shl i))<>0) then begin w1:=w1+(b1 shl i); {формируем произведение} for j:=1 to 8-i do write(' '); binprint(b1,8); {очередное слагаемое, из которого составлено произведение} end; end; writeln('----------------'); binprint(w1,16); {результат в двоичном формате} writeln(w1); {результат в десятичном формате} end. Результат исполнения введите множимое b1=13 введите множитель b2=5 00001101 13 00000101 5 -------- 00001101 13*1=13 00001101 13*4=42 ---------------- 0000000001000001 65 "Мышь" Программа прорисовывает побитно закодированную пиктограмму с курсором мыши 16х16 пикселей и управляет его перемещением. В программе применяется модуль мыши, описанный ниже. Решение задачи program mouse; uses mouse_n,graph; {шестнадцатеричный код пиктограммы} const a:array [1..16]of word= (0,$0180,$018,$1A58,$2424,$2424,$1A58,$0240, $0420,$0420,$0810,$0810,$0810,$0660,$0188,$00f0); var b,x,y:word; i,j,grDriver,grMode,ErrCode: Integer; function point (x,y:integer):word; begin if getpixel(x,y)=0 then point:=1 { если цвет точки - черный то 1 } else point:=0; { иначе 0 } end; procedure draw_mice(x,y:word); { рисует по пикселам курсор мыши} begin { без следа } for i:=1 to 16 do for j:=1 to 16 do begin if (a[i]shr (j-1) and point(j+x,i+y))=1 then putpixel(j+x,i+y,5) else putpixel(j+x,i+y,0); end; end; begin grDriver := Detect; InitGraph(grDriver, grMode,''); ErrCode := GraphResult; if ErrCode = grOk then begin resetmouse(b); { инициализируем мышь } b:=0; x:=320; { центр экрана} y:=240; while b<>1 do { пока не нажата левая кнопка мыши } begin draw_mice(x,y); { нарисовать курсор мыши } delay(20); draw_mice(x,y); { стереть курсор мыши (нарисовать черным цветом)} mousestate(x,y,b); { возвращает состояние мыши } end; end else Writeln('Graphics error:', GraphErrorMsg(ErrCode)); end. Задание для самостоятельной работы: 11. Изменить цвет фона в программе. 12. Изменить программу так, чтобы мышь оставляла след. 13. Закодировать пиктограмму для курсора мыши. Модуль функций мыши В данном модуле запрограммированы две функции мыши, которые используются в предыдущей задаче . Решение задачи unit mouse_n; interface procedure mousestate(var x,y,b:word); {положение курсора на экране} procedure resetmouse(var result:word); {инициализация мыши} implementation procedure mousestate(var x,y,b:word); {x,y - координаты, b - состояние кнопок мыши} var x1,y1,b1:word; begin asm mov ax,3 {в регистр ax помещаем номер функции драйвера мыши} int 33h {передача управления драйверу мыши} mov x1,cx {получение координат и состояние мыши} mov y1,dx mov b1,bx end; x:=x1;y:=y1;b:=b1; end; procedure resetmouse(var result:word); var result1:word; begin asm xor ax,ax {обнуляем регистр ax} int 33h {передача управления драйверу мыши} mov Result1,ax {результат инициализации} end; result:=result1; end; end. Пиктограмма С помощью 0 и 1 нарисуем картинку 16х16 знаков и закодируем пиктограмму в шестнадцатеричном коде, каждой тетраде двоичных цифр ставя в соответствие шестнадцатеричную цифру. Решение задачи 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 $0000 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 $0180 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 $0180 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 $1A58 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 $2424 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 $2424 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 $1A58 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 $0420 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 $0420 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 $0810 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 $0810 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 $0810 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 $0660 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 $0188 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 $00F0 |
Правила использования сети Интернет Регламент работы учащихся, учителей... ... | Милаева Надежда Васильевна сборник учебных и элективных курсов по... Данный сборник адресован преподавателям математики, его материалы могут быть использованы не только в рамках учебного и элективного... | ||
«уфимский государственный колледж радиоэлектроники» проблемы качества образования сборник статей Сборник статей преподавателей Уфимского государственного колледжа радиоэлектроники №7 Под ред к т н зам директора по учебно-методической... | Программа по формированию навыков безопасного поведения на дорогах... Интернет в нашей жизни. Возможность и преимущества использования интернет-ресурсов. Пример использования интернет-ресурсов в моей... | ||
Отчет по курсу: «Интернет- коммуникации как один из новых инструментов... Интернет-коммуникации в работе педагога-психолога моу «Центр диагностики и консультирования» используются постоянно для работы в | Информация о технологии обучения и использовании мультимедийных материалов.... Информация о технологии обучения и использовании мультимедийных материалов. Перечень и описание предлагаемых курсов: проектирование... | ||
Интернет как развивающее пространство: роль и место педагога Кессова... На уроках стараюсь рассказывать и показывать учащимся то положительное, что может им дать Интернет, раскрыть возможности его применения... | Опубликованных статей, тезисов и др материалов | ||
Сборник статей и материалов, посвящённых традиционной культуре Новосибирского... Песни, люди, традиции (из серии «Традиционная культура Новосибирского Приобья»): Сборник статей и материалов / Под ред. Н. В. Леоновой.... | “Интернет-ресурсы на уроках английского яз В настоящее время перед всеми педагогами стоит задача научиться использовать Всемирную сеть в целях совершенствования содержания... | ||
Темы вашего учебного проекта Интернет дает возможность узнать много нового, общаться с людьми, находить новых друзей и многое другое. Но для того чтобы использовать... | Правила использования сети Интернет в огксу «Александровская ош» Сеть Интернет представляет собой глобальное объединение компьютерных сетей и информационных ресурсов, принадлежащих множеству различных... | ||
Сборник методических материалов IV интернет конференции по учебной работе Программа дисциплины «Пространственная экономика и территориальное развитие» для направления 080100. 68 «Экономика» для магистерской... | О безотметочном оценивании элективных курсов в гбоу сош №687 Минобразования России от 13. 11. 03г. №14-51-277/13-03 «Об элективных курсах в системе профильного обучения на старшей ступени общего... | ||
Программа по формированию навыков безопасного поведения на дорогах... Настоящее положение о порядке использования сети Интернет в образовательном учреждении определяет условия и порядок использования... | Департамент образования белгородской области Интернет, увеличение возможности знакомства детей и подростков с позитивным контентом в сети Интернет, в том числе, способствующим... |