Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №7/2009


Материалы к уроку

ЛогоМиры и изучение кодирования текста и чисел

В статье представлены материалы базового курса информатики — практикум по теме “Двоичное кодирование информации”. В этом варианте курса информатики знакомство с алгоритмизацией и программированием проходит в среде ЛогоМиры. В седьмом классе учащиеся осваивают Лого-графику, описание и использование процедур (сначала без параметров, затем с параметрами), учатся структурировать программу, выделяя вспомогательные процедуры. В восьмом классе осваивают использование команды присваивания, организацию циклов, рекурсию. Конечно, на программирование отводится лишь часть учебного времени. Затем навыки программирования в среде ЛогоМиры можно использовать при изучении двоичного кодирования информации.

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

Версия среды — ЛогоМиры 2.0. Время — 6 уроков.

Лабораторная работа

Кодирование текста. Коды символов.
Таблицы кодировки

Выполняя предыдущие задания, вы выяснили, что каждый символ текста можно закодировать восемью двоичными разрядами (байтом). Но человеку тяжело воспринимать такой код — длинные последовательности нулей и единиц. Для облегчения используется следующий прием.

Двоичный код любого символа можно рассматривать как число, порядковый номер в таблице кодов. Можно перевести этот номер в привычную десятичную систему счисления. Например, буква “Z” имеет номер 90, а буква “z” — номер 122. Можно записать номер и в другой системе счисления, например, в шестнадцатеричной. Получится шестнадцатеричный код символа.

В таком виде коды текстовых символов выглядят, конечно, гораздо компактнее.

Символ

Двоичный код

Десятичный номер

Шестнадцатеричный номер

“Z”

01011010

90

5A

“z”

01111010

122

7A

В этой лабораторной работе вы самостоятельно получите полную таблицу кодов. В этом вам поможет среда ЛогоМиры, вам нужно будет написать программу на Лого. В среде ЛогоМиры можно узнать по символу его десятичный код и, наоборот, если известен десятичный код, выяснить, какой символ ему соответствует. То есть коды символов в среде ЛогоМиры представлены в десятичном виде.

В таблице ASCII первые 32 кода, с 0-го по 31-й, отведены под специальные управляющие символы. Например, символ конца абзаца, который мы получаем в тексте, нажимая на клавишу , имеет код 13. Самый первый текстовый символ, с кодом 32, — это пробел.

I. Получение десятичных кодов для всех символов

В среде ЛогоМиры есть функция ASCII возвращения кода указанного символа (от слов American Standart Code for Informational Interchange) и обратная функция CHAR возвращения символа по указанному коду (от слова character — символ).

Чтобы познакомиться с этими функциями, запустите ЛогоМиры, создайте на листе текстовое окно и напишите в поле команд:

PRINT ASCII "Z

В текстовом окне вы увидите десятичный код — 90.

Попробуйте обратную функцию, напишите в поле команд

PRINT CHAR 90

В текстовом окне вы должны увидеть букву Z.

Ваша цель при выполнении первой части лабораторной работы — получить и поместить в отчет десятичные коды для всех текстовых символов.

Порядок выполнения

1. Получите код первой буквы вашего имени. Выясните, какой символ соответствует коду 63.

2. Напишите программу, выводящую на экран все десятичные коды и соответствующие им символы.

Не забудьте, что код первого текстового символа — 32.

Подсказки по программированию на Лого (к пункту 2)

· Напишите программу для вывода на экран натуральных чисел от 32 до 255.

· Добавьте после вывода числа вывод соответствующего символа (PRINT CHAR :N).

· Затем измените программу так, чтобы все символы и их коды компактно умещались в текстовом окне (замените команды PRINT на команды INSERT).

· Добавьте пробелы (INSERT CHAR 32) и/или другие разделяющие знаки, чтобы удобнее было находить символы и их коды.

3. Откройте новый документ MS Word. На этот лист вы будете в дальнейшем помещать результаты выполнения заданий. К моменту завершения лабораторной работы этот документ должен превратиться в аккуратно оформленный отчет. К каждому пункту лабораторной работы помещайте формулировку задания (или заголовок), полученный вами результат и краткое описание того, как вы этот результат получили (промежуточные расчеты, текст программы и пр.).

Вставьте в отчет полученную последовательность пар — всех текстовых символов и их кодов.

4. Поместите в отчет таблицу. В ячейки первого столбца внесите буквы вашей фамилии. Во второй столбец впишите коды букв фамилии, вы их найдете в полученной вами последовательности пар символов и их кодов. Первая буква должна быть прописная, остальные — строчные.

В третьем столбце запишите двоичные коды букв — переведите десятичные числа в двоичную систему счисления. Не забудьте добавить, где надо, незначащие нули — двоичный код любого символа должен состоять из восьми бит.

В четвертом столбце запишите шестнадцатеричные коды букв (переведите номера букв в шестнадцатеричную систему).

II. Получение шестнадцатеричной кодовой таблицы для Windows

Полученный вами в первой части результат — последовательность (длинная строка) пар “символ–код”. Для кодирования (или раскодирования) значительно удобнее пользоваться таблицами. Вспомните, например, как указывают нужную клетку в игре “Морской бой” (таб­лица 10 ґ 10) или на шахматной доске (таблица 8 ґ 8).

Ваша задача во второй части лабораторной работы — получить упорядоченную таблицу символов, расположенных в строки по 16 символов в каждой строке.

Такая таблица даст вам возможность быстро, без расчетов узнавать шестнадцатеричный код любого текстового символа.

Порядок выполнения

1. Откройте ваш файл ЛогоМиров. Напишите процедуру, которая выводит “в строчку” 16 символов с пробелами между ними. Код первого символа — 80, второго — 81, третьего — 82 и т.д. Нужны только символы, без кодов!

2. Измените полученную процедуру так, чтобы она печатала строку из 16 символов, начиная с любого заданного номера (кода). Это должна быть процедура с параметром (кодом первого выводимого символа).

3. Напишите процедуру, которая выводит все символы по порядку строчками по 16 символов в каждой. Не забудьте, что код первого текстового символа — 32, а предыдущие коды, с 0-го по 31-й, заняты спецсимволами. Ваша процедура должна использовать процедуру из предыдущего задания в качестве вспомогательной.

Подсказки по программированию на Лого (к пункту 3)

Один из вариантов программы.

Сначала надо завести переменную (для кода) и присвоить ей начальное значение — 32. Пусть имя переменной — N.

Затем повторить 14 раз три следующих действия:

· вызов процедуры печатания строки с параметром N;

· перевод курсора;

· увеличение параметра на 16.

Команда для перевода курсора на следующую строку PR [] (напечатать пустую строчку).

Если среди полученных в текстовом окне символов вы не видите русских букв, то выделите весь текст, откройте меню Текст/Шрифт, в окне Набор символов выберите строчку Кириллица.

Если такой строчки нет, то в этом шрифте нет кириллических знаков и его надо поменять.

Совет: установите какой-нибудь моноширинный шрифт, например, “Courier” (в моноширинных гарнитурах изображения всех знаков имеют одну и ту же ширину).

Проверьте результат: первый символ в последней строке — буква “р”.

Не забывайте помещать программы в отчет!

4. Выделите ваши результаты, 14 строк по 16 символов в каждой (весь текст в текстовом окне), и скопируйте в отчет.

Примечание. Иногда при переносе текста через буфер обмена из среды ЛогоМиры в MS Word происходит сбой.
В этом случае используйте дополнительную “ступень”: перенесите сначала в Блокнот, а из него — уже в MS Word.

5. Теперь нужно поместить текстовые символы в таблицу, каждый символ — в отдельную ячейку. Как? Неужели переносить все символы по одному? Нет, MS Word умеет автоматически преобразовывать текст в таблицу (и наоборот) при необходимости. Иногда это бывает очень полезно.

Надо только корректно указать, по каким признакам отделять строку от строки, столбец от столбца.

Выделите перенесенные 14 строк и в меню Таблица выберите пункт Преобразовать в таблицу. В открывшемся диалоговом окне в поле выбора разделителя включите кнопку Другие, а в находящееся рядом окно внесите пробел. После этого MS Word будет считать пробел разделителем между ячейками (столбцами).

В таблице окажется одна лишняя ячейка (верхняя левая, там, где символ “пробел”) и два лишних столбца. Удалите их (пункт меню Таблица, команда Удалить...).

Проверьте полученную таблицу. В ней должно быть 16 столбцов, 14 строк. Первая строка должна начинаться с пробела, а последняя — с буквы “р” (русской).

6. Добавьте в таблицу строку и столбец и впишите шестнадцатеричные номера столбцов и строк.

Вы получили кодовую таблицу CP 1251. Проверьте ее по кодам букв “Z” и “z” (см. таблицу перед первым заданием).

7. Поместите в отчет таблицу из трех столбцов. В ячейки первого столбца занесите буквы своего имени (русские). Первая буква — прописная, остальные — строчные.

Определите по полученной кодовой таблице и запишите во второй столбец шестнадцатеричные коды букв.

Никакие вычисления теперь вам производить не приходится.

8. Содержимое любого файла — не только текстового, но и с графикой, звуком, числовыми данными, файлов-программ — это всегда длиннейшая цепочка нулей и единиц. Для человеческого восприятия двоичный код — очень неудобная форма записи. Поэтому в “компьютерном мире” широко используются два способа более пригодного для человека представления двоичного кода. Первый — перевод двоичного кода в шестнадцатеричный (HEX-код).

Полученный вами по таблице шестнадцатеричный код — это как бы сокращенная запись двоичного кода. Двоичный код можно быстро получить, записав каждую шестнадцатеричную цифру четырьмя двоичными. Запишите в ячейки третьего столбца двоичные коды букв.

Никаких вычислений, только подстановки. Быстрый перевод двоичного числа в шестнадцатеричное широко используется для компактной записи любого двоичного кода. Ведь запись получается в четыре раза короче!

III. Просмотр кодов в файловом менеджере Far

Иногда бывает нужно посмотреть содержимое файлов в кодах и даже вносить в код изменения. Для этого существуют специальные HEX-редакторы (то есть редакторы шестнадцатеричного кода). Такую возможность предоставляют и некоторые файловые менеджеры, например, Far.

Файловый менеджер — программа, с помощью которой осуществляется поиск файлов, операции с ними (копирование, перемещение, создание папок и др.), просмотр файлов и информации об их размере, формате, дате создания.

В этой части лабораторной работы вы проверите результаты, полученные в первой и второй частях.

Порядок выполнения

1. Откройте текстовый редактор Блокнот. Запишите вашу фамилию и имя так, как они записаны в таблицах. Запишите также ваше имя по-английски. Сохраните файл.

Подсчитайте, сколько символов в тексте и какой должен быть размер файла.

2. Запустите файловый менеджер Far, найдите сохраненный файл и включите режим просмотра.

Если увидите примерно такую картину, измените кодировку (нажмите клавишу F8.

Это режим просмотра содержимого файла, представленного в виде текстовых символов (нажмите для просмотра клавишу F3).

А теперь включите режим просмотра содержимого файла в шестнадцатеричных кодах (нажмите клавишу F4).

Сделайте снимок части экрана с кодом, поместите в отчет. Запишите, сколько байт вы видите на снимке. Сравните код с результатами в таблицах.

3. Расшифруйте двоичный код (слово):

010011010110010101101101011011110111001001111001

Запишите двоичный код слова шестнадцатеричными знаками. Расшифруйте по таблице.

Запишите расшифрованное вами слово в файл с помощью редактора Блокнот.

Просмотрите HEX-код файла в Far. Поместите снимок в отчет. Сравните с полученным вами кодом.

4. Найдите на доступных вам дисках три файла: графический (с изображением), звуковой и файл с программой (у него должно быть расширение EXE). Просмотрите HEX-коды файлов в Far. Поместите снимки первой строчки кода каждого файла в отчет. Под снимками напишите первые
4 байта каждого файла в двоичном коде.

Какой вывод вы можете сделать?

Пример оформленного отчета.

Отчет по лабораторной работе

Кодирование текста. Коды символов.
Таблицы кодировки

I. Получение десятичных кодов для всех символов

1. Код первой буквы моего имени (С) — 209. Коду 63 соответствует знак “?” (вопросительный знак).

2. Программа, выводящая на экран все десятичные коды и соответствующие им символы. Решение:

это коды

make "z 32

repeat 224 [insert :z insert

"- insert char :z

insert char 32 make "z :z + 1 ]

end

3. Результат выполнения программы — последовательность пар код–символ:

32- 33-! 34-» 35-# 36-$ 37-% 38-& 39-' 40-( 41-) 42-* 43-+ 44-, 45-- 46-. 47-/ 48-0 49-1 50-2 51-3 52-4 53-5 54-6 55-7 56-8 57-9 58-: 59-; 60-< 61-= 62-> 63-? 64-@ 65-A 66-B 67-C 68-D 69-E 70-F 71-G 72-H 73-I 74-J 75-K 76-L 77-M 78-N 79-O 80-P 81-Q 82-R 83-S 84-T 85-U 86-V 87-W 88-X 89-Y 90-Z 91-[ 92-\ 93-] 94-^ 95-_ 96-` 97-a 98-b 99-c 100-d 101-e 102-f 103-g 104-h 105-i 106-j 107-k 108-l 109-m 110-n 111-o 112-p 113-q 114-r 115-s 116-t 117-u 118-v 119-w 120-x 121-y 122-z 123-{ 124-| 125-} 126-~ 127-&127; 128-Ђ 129-Ѓ 130-‚ 131-ѓ 132-„ 133-… 134-† 135-‡ 136-€ 137-‰ 138-Љ 139-‹ 140-Њ 141-Ќ 142-Ћ 143-Џ 144-ђ 145-‘ 146-’ 147-“ 148-” 149-• 150-– 151-— 152- 153-™ 154-љ 155-› 156-њ 157-ќ 158-ћ 159-џ 160-  161-Ў 162-ў 163-Ј 164-¤ 165-Ґ 166-¦ 167-§ 168-Ё 169-© 170-Є 171-« 172-¬ 173- 174-® 175-Ї 176-° 177-± 178-І 179-і 180-ґ 181-µ 182-¶ 183-· 184-ё 185-№ 186-є 187-» 188-ј 189-Ѕ 190-ѕ 191-ї 192-А 193-Б 194-В 195-Г 196-Д 197-Е 198-Ж 199-З 200-И 201-Й 202-К 203-Л 204-М 205-Н 206-О 207-П 208-Р 209-С 210-Т 211-У 212-Ф 213-Х 214-Ц 215-Ч 216-Ш 217-Щ 218-Ъ 219-Ы 220-Ь 221-Э 222-Ю 223-Я 224-а 225-б 226-в 227-г 228-д 229-е 230-ж 231-з 232-и 233-й 234-к 235-л 236-м 237-н 238-о 239-п 240-р 241-с 242-т 243-у 244-ф 245-х 246-ц 247-ч 248-ш 249-щ 250-ъ 251-ы 252-ь 253-э 254-ю 255-я

4. Таблица с буквами и кодами моей фамилии.

Буква фамилии

Десятичный код

Двоичный код

Шестнадцатеричный код

Е

197

110001012

C516

р

240

111100002

F016

о

238

111011102

EE16

х

245

111101012

F516

и

232

111010002

E816

н

237

111011012

ED16

а

224

111000002

E016

Для перевода кодов я делала вычисления.

II. Получение шестнадцатеричной кодовой таблицы для Windows

1. Процедура, которая выводит “в строчку” 16 символов с пробелами между ними. Код первого символа — 80, второго — 81, третьего — 82 и т.д.

это стр

make "a 80

repeat 16[ insert char :a

insert char 32 make "a :a + 1 ]

end

2. Процедура, которая печатает строку из 16 символов, начиная с любого заданного номера (кода). Параметр — код первого выводимого символа.

это строчка :a

repeat 16[ insert char :a insert

char 32 make "a :a + 1 ]

end

3. Процедура, которая выводит все символы по порядку строчками по 16 символов в каждой:

это таблица

make "a 32

repeat 14[ строчка :a pr []

make "a :a + 16]

end

4. Результат выполнения программы — 14 строк по 16 символов в каждой. Текст, перенесенный из текстового окна ЛогоМиров:

5–6. Кодовая таблица (CP 1251):

7–8. Таблица с буквами и кодами моего имени.

Шестнадцатеричная таблица кодов позволяет быстро получить код символа без вычислений.

III. Просмотр кодов в файловом менеджере Far

1. В документе редактора Блокнот я создала текст:

Ерохина Соня Sonya

В тексте 18 символов (считая 2 пробела).

2. Открыла сохраненный файл в программе Far:

На снимке экрана 18 байт (столько, сколько символов в тексте). Коды совпадают с кодами в таблицах (кроме кодов 20 — это пробелы).

3. Расшифровка слова: 010011010110010101101101011011110111001001111001

0100

1101

0110

0101

0110

1101

0110

1111

0111

0010

0111

1001

4

D

6

5

6

D

6

F

7

2

7

9

Шестнадцатеричный код слова:

4D 65 6D 6F 72 79 (Memory)

Просмотр файла со словом:

Код совпадает с моим.

4. Просмотр файлов с изображением, звуком, программой.

Файл с изображением (Кофейня.bmp):

Первые 4 байта: 01000010 01001101 10100110 01100010

Файл со звуком (start.wav):

Первые 4 байта: 01010010 01001001 01000110 01000110

Файл с программой (explorer.exe):

Первые 4 байта: 01001101 01011010 10010000 00000000

Вывод: файлы с изображением, со звуком, с программой записаны двоичным кодом. Так же, как и файлы с текстом.

Ал. Ге. Юдина

TopList