Решение проблем неправильной кодировкой веб-страницы. Практическое применение кодирования информации

Создание формы обратной связи

О проблемах с кодировкой файлов

При создании формы обратной связи частенько возникают проблемы с кодировкой файлов, из-за чего приходящее на E-mail письмо состоит из замечательных квадратиков, ромбиков и других "кракозяблов".

Рассмотрим это вопиющее недоразумение подробнее. Как известно, кодировка (charset) - это метод представления символов для их передачи. В конце концов, любая информация, циркулирующая в компьютере - это последовательность нулей и единиц. Кодировка символов состоит из нескольких байтов, обычно от 1 до 4. Кодировок существует множество, и браузер должен правильно определить, в какой из них написана открываемая страничка сайта.

В большинстве случаев современные браузеры успешно справляются с этой задачей самостоятельно. Однако для правильного определения кодировки принято в HTML-коде давать подсказку с помощью мета-тега, например,
или
.
.

Начинающие веб-дизайнеры иногда ошибочно считают, что достаточно вставить нужный мета-тег в начало страницы - и всё будет ОК! Это заблуждение. Как справедливо писал Козьма Прутков: "Если на клетке со слоном увидишь надпись "Буйвол" – не верь глазам своим." Необходимо не только написать, к примеру, charset=utf-8, но и проследить, что страница реально сделана в указанной кодировке .

Истинную кодировку страницы проще всего узнать, открыв её в любом браузере и выбрав в меню пункт Вид - Кодировка . Изменяя кодировки, определите, при какой из них страница отображается правильно - это и будет ваша реальная кодировка. Её и указывайте в мета-теге. Если вы хотите изменить кодировку, то для этого необходимо зайти в установки программы, с помощью которой вы создаете сайт, и задать требуемую кодировку. Например, в программе Adobe Dreamweaver для этого надо выбрать раздел меню Редактировать - Установки...- Создать документ - Кодировка по умолчанию . Обычно используют кодировки charset=utf-8 или charset=windows-1251 .

Замечание : мета-тег указания кодировки желательно размещать в самом начале HTML-кода сразу за тегом , чтобы браузер выбрал правильную кодировку уже перед выводом названия страницы (тег ...), которое показывается на синей полосе вверху окна браузера. В противном случае, вместо мы можем увидеть всё те же замечательные квадратики и ромбики.</p> </blockquote> <p>Абсолютно не нужные нам проблемы с кодировкой возникают и тогда, когда страничка сайта состоит из нескольких файлов, например, вставки фреймов, скриптов <b>JavaScript </b> и т.п. Необходимо следить, чтобы все эти части были созданы в одной кодировке. Кстати, именно для этого случая в почтовых программах, например, на mail.ru , обычно есть несколько кнопок ручного переключения кодировок, так как автоматически определить, в какой кодировке написано приходящее на почту письмо, иногда бывает затруднительно.</p> <p>Возвращаясь к нашей форме обратной связи , следует учесть, что данные о кодировке сообщения могут измениться при пересылке. Упрощенно, механизм доставки письма с формы на ваш E-mail выглядит следующим образом. Сначала письмо попадает на промежуточный почтовый ящик на сервере вашего хостинга, а уже с него посылается на указанный вами в РНР-файле адрес. Этот промежуточный ящик вы легко найдете, заглянув в панели управления вашего сайта в раздел <b>Почта </b>. Весь этот процесс происходит под управлением РНР-программы. Следовательно, в ней тоже полезно лишний раз указать правильную кодировку вашего файла.</p> <p>Для этого необходимо в РНР-файле (в нашей форме обратной связи это <b>mail.php </b>) добавить строку заголовков (<b>headers </b>), которая служит для определения в почтовой программе некоторых дополнительных параметров письма: тип документа <b>text/plain </b> (простой текст), адрес отправителя, кодировку и др. Для нашего случая добавим следующую строчку заголовков(<b>headers </b>)с указанием кодировки:<br> $to = "pupkin@rambler.ru "; //Здесь укажите свой адрес<br> $headers = "Content-type: text/plain; charset=utf-8";<br> $subject = "Сообщение с вашего сайта";<br> $message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";<br> $send = mail ($to, $subject, $message, $headers);</p> <p>Так же неплохо сообщить браузеру о правильной кодировке добавлением в РНР-страницу отправки формы обратной связи (см. "Создание формы обратной связи ") заголовка с мета-тегом<br> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />.</p> <p>Проблемы с кодировкой возникают и в том случае, если вы используете на странице скрипты для вывода какого-либо текста, например, бегущей строки, даты и т.п. Для изменения кодировки скрипта можно воспользоваться <b>Microsoft Word </b>. Для этого откройте документ, задайте нужную кодировку, если он выводится неверно (как это сделать, смотрите в "Справке Word"), а затем сохраните его следующим путем: <b>Файл - Сохранить как - Обычный текст - Сохранить </b>. В открывшемся окне вы можете задать необходимую кодировку, совпадающую с кодировкой вашей страницы.<br></p> <p>К сожалению, описанные простые приемы указания кодировки не всегда избавляют от ошибок при её определении. Иногда требуется серьезное хирургическое вмешательство в работу РНР-машины. Нужную информацию о таких операциях вы без труда, но при наличии желания, найдете в справочнике под названием "Интернет" - мышь вам в руки!</p> <p><i> 18.03.2011 г. </i></p> <ul> Ещё статьи по теме "Создание, оптимизация и раскрутка сайта": </ul> <p>Любые числа (в определенных пределах) в памяти компьютера кодируются числами двоичной системы счисления. Для этого существуют простые и понятные правила перевода. Однако на сегодняшний день компьютер используется куда шире, чем в роли исполнителя трудоемких вычислений. Например, в памяти ЭВМ хранятся текстовая и мультимедийная информация. Поэтому возникает первый вопрос:</p> <p><b>Как в памяти компьютера хранятся символы (буквы)? </b></p><p>Каждая буква принадлежит определенному алфавиту, в котором символы следуют друг за другом и, следовательно, могут быть пронумерованы последовательными целыми числами. <b>Каждой букве можно сопоставить целое положительное число и назвать его кодом символа. </b> Именно этот код будет храниться в памяти компьютера, а при выводе на экран или бумагу «преобразовываться» в соответствующий ему символ. Чтобы отличить представление чисел от представления символов в памяти компьютера, приходится также хранить информацию о том, какие именно данные закодированы в конкретной области памяти.</p><p>Соответствие букв определенного алфавита с числами-кодами формирует так называемую таблицу кодирования. Другими словами, каждый символ конкретного алфавита имеет свой числовой код в соответствии с определенной <b>таблицей кодирования </b>.</p><p>Однако алфавитов в мире очень много (английский, русский, китайский и др.). Поэтому следующий вопрос:</p> <p><b>Как закодировать все используемые на компьютере алфавиты? </b></p><p>Для ответа на этот вопрос пойдем историческим путем. </p><p>В 60-х годах XX века в американском национальном институте стандартизации (ANSI) была разработана таблица кодирования символов, которая впоследствии была использована во всех операционных системах. Эта таблица называется ASCII (American Standard Code for Information Interchange – американский стандартный код для обмена информацией). Чуть позже появилась расширенная версия ASCII. </p><p>В соответствие с таблицей кодирования ASCII для представления одного символа выделяется 1 байт (8 бит). Набор из 8 ячеек может принять 28 = 256 различных значений. Первые 128 значений (от 0 до 127) постоянны и формируют так называемую основную часть таблицы, куда входят десятичные цифры, буквы латинского алфавита (заглавные и строчные), знаки препинания (точка, запятая, скобки и др.), а также пробел и различные служебные символы (табуляция, перевод строки и др.). Значения от 128 до 255 формируют дополнительную часть таблицы, где принято кодировать символы национальных алфавитов.</p><p>Поскольку национальных алфавитов огромное множество, то расширенные ASCII-таблицы существуют во множестве вариантов. Даже для русского языка существуют несколько таблиц кодирования (распространены Windows-1251 и Koi8-r). Все это создает дополнительные трудности. Например, мы отправляем письмо, написанное в одной кодировке, а получатель пытается прочитать ее в другой. В результате видит кракозябры. Поэтому читающему требуется применить для текста другую таблицу кодирования.</p><p>Есть и другая проблема. В алфавитах некоторых языков слишком много символов и они не помещаются в отведенные им позиции с 128 до 255 однобайтовой кодировки.</p><p>Третья проблема - что делать, если в тексте используется несколько языков (например, русский, английский и французский)? Нельзя же использовать две таблицы сразу …</p><p>Чтобы решить эти проблемы одним разом была разработана кодировка Unicode.</p> <p><b>Стандарт кодирования символов Unicode </b></p><p>Для решения вышеизложенных проблем в начале 90-х был разработан стандарт кодирования символов, получивший название <b>Unicode </b>. Данный стандарт позволяет использовать в тексте почти любые языки и символы.</p><p>В Unicode для кодирования символов предоставляется 31 бит (4 байта за вычетом одного бита). Количество возможных комбинаций дает запредельное число: 231 = 2 147 483 684 (т.е. более двух миллиардов). Поэтому Unicode описывает алфавиты всех известных языков, даже «мертвых» и выдуманных, включает многие математические и иные специальные символы. Однако информационная емкость 31-битового Unicode все равно остается слишком большой. Поэтому чаще используется сокращенная 16-битовая версия (216 = 65 536 значений), где кодируются все современные алфавиты.</p><p>В Unicode первые 128 кодов совпадают с таблицей ASCII.</p> <p>Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали <span>создание таблиц в html </span> . В данной статье я бы хотел рассказать о проблеме, с которой вы обязательно столкнетесь (если ещё не столкнулись) в своей практике. А проблема эта связана с <b>кодировкой на сайте </b>. Нередко бывает такая ситуация: ты сидишь, что-то придумываешь, в итоге твои мысли выражаются в написанный код. Открываешь своё творение в браузере, а там написана полная ерунда, или как обычно данную ерунду называют — "кракозябры" . Тут очевидно одно, что <b>проблема с кодировкой на сайте </b>. Скорее всего у вас по умолчанию стоит кодировка <span>windows-1251 (кирилица) </span>, а браузер пытается открыть ваш файл в кодировке utf-8 . Кратко о том, что такое кодировка. Кодировка — это некая таблица, которая каждому символу ставит в соответствие какой-то машинный код. Соответственно наши русские буквы в одной кодировке имеют один код, в других — другой код. Друзья, используйте везде кодировку utf-8 и будет вам счастье. По-другому utf-8 называется Юникод .</p> <p>Давайте создадим тестовый документ в Notepad++ и запишем следующий код.</p><p> <html> <meta charset="utf-8"/> <head><title>Проблемы с кодировкой

Тестируем проблемы с кодировкой

В меню Notepad++ проверьте, чтобы наверху стояло "Кодировки" — "Кодировать в ANSI". Мы сейчас с вами искусственно создадим проблему с кодировкой. Попробуйте сейчас открыть данный файл в браузере. Мы увидим иероглифы. Дело здесь в том, что мы создали наш файл в кодировке ANSI (кирилица), а браузеру сообщили, что наш файл в кодировке utf-8 () .

Причины, по которым возникают проблемы с кодировкой на сайте :

1) Неправильное значение атрибута charset у мета-тега.

2) В меню Notepad++ проверьте, чтобы кодировка файла была utf-8. Это нужно сделать "Кодировки" — "Кодировать в UTF-8 (без BOM)". В интернете можно найти определение, что такое "BOM", но оно малопонятное. Как я понял, в начале документа, ставится неразрывный пробел с нулевой шириной. Он нам не нужен, поэтому всегда ставьте "без BOM".

3) Бывает такое, что первые два пункта выполнены, но на страницах сайта всё равно появляется ерунда. Здесь проблема может быть в настройках сервера,т.е. хостинг напрямую передаёт заголовки для наших файлов и выставляет кодировку по умолчанию. Давайте попробуем отучить его это делать. В корневой директории сайта должен быть файл .htaccess . С помощью этого файла можно вносить корректировки в работу хостинга. Если данного файла у вас нет, то его нужно создать. Удобно это сделать в редакторе Notepad++. В данном файле необходимо написать следующий код:

AddDefaultCharset UTF-8

Данной инструкцией мы говорим серверу, что у нас кодировка по умолчанию "utf-8". Если это не помогло, то нужно написать в этом же файле следующий код:

Charsetdisable on AddDefaultCharset Off

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

На сегодняшний день кодировка ASCII представляет собой стандартом представления первых 128-значений (включая цифры и знаки препинания) английского алфавита, представленных в определенном порядке.

Однако, даже 1 байт позволяет закодировать в 2 раза больше значений, то есть не 128, а целых 256 разных значений. Поэтому достаточно быстро на смену базовой ASCII стали появляться более расширенные варианты этой знаменитой и популярной по сей день кодировки, в которых кодировались также символы алфавитов и, соответственно, текста различных языков, в том числе и русского.

Расширения ASCII для России

На сегодняшний день для российских пользователей приоритетными являютсякодировка Windows1251 и кодировка юникод, а также UTF 8 , которые произошли от ASCII .

Собственно говоря, у кого-то может возникнуть весьма справедливый вопрос: «А зачем вообще нужны эти кодировки текстов?»
Стоит помнить, что компьютер - это всего-навсего машина, которая должна действовать четко по инструкциям. Чтобы было понятно, что нужно делать с каждым символом написанного, его представляют в виде набора векторных форм, каждый набор которых отправляет в нужное место, чтобы на экране появлялось то или иное обозначение.

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

Кодировка CP866 и KOI8-R широко применялись до появления графической операционной системы, завоевавшей популярность во всем мире, - Windows . Теперь самой популярной кодировкой, поддерживающей русский, стала Windows1251 .

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

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

Универсальные кодировки

Первой версией универсальной кодировки, разработанной в рамках консорциума Юникод, была кодировка UTF 32 . Для кодирования каждого символа использовалось 32 бита. Теперь была реализована возможность кодирования огромного количества знаков, но появилась другая проблема -большинству европейских стран такое число лишних символов было совершенно не нужно. Ведь документы получались очень тяжелыми. Поэтому на смену UTF 32 пришла UTF 16 , ставшая базовой для всех символов, используемых в нашей стране и не только.

Но все равно оставалось достаточно много недовольных. Например, те, кто общался только на английском языке, так как при переходе с ASCII на UTF 16 их документы все равно увеличивались в размерах, причем существенно, практически в 2 раза.
В результате появилась кодировка переменной длинны UTF 8 , что позволило не увеличивать вес текста.

Кракозябры и методы борьбы с ними

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

Если что-то было напечатано в UTF-8 , то никакого маркера в начале нет, так как сама возможность записи кода символа в обратном порядке в этой кодировке отсутствует.

Поэтому, следует сохранять все, что набрано в редакторе, без маркеров (BOM ), чтобы снизить вероятность появления кракозябров в документе.

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

Например, так

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

КУРСОВАЯ РАБОТА

КОДИРОВАНИЕ ИНФОРМАЦИИ В ЭВМ

1 Теоретическая часть

1.1 Основные понятия кодирования и декодирование

1.3 Кодирование символьной информации

1.7 Алгоритм Хаффмана

1.9 Помехоустойчивые коды

1.10 Теоремы Шеннона

2 Практическая часть

Программа на кодирование информации

Приложение

Заключение

Введение

Теория кодирования близка к древнейшему искусству тайнописи - криптографии. Над разработкой различных шифров трудились многие известные ученые: философ Ф. Бэкон, математики Д. Кардано, Д. Валлис. Одновременно с развитием методов шифровки развивались приемы расшифровки, или криптоанализа.

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

Грандиозные достижения человечества - письменность и арифметика - есть не что иное, как система кодирования речи и числовой информации. Информация никогда не появляется в чистом виде, она всегда как-то представлена, как-то закодирована.

Рассмотрим примеры кодирования, с которыми мы сталкиваемся в нашей жизни. На Руси, где леса гасили звук, для передачи срочных сообщений использовался дым костров. Многие африканские племена до сих пор используют специальные барабаны - тамтамы, обмениваясь сообщениями со скоростью звука. До сих пор на флоте используется семафорная азбука, когда каждой букве соответствует определенное положение рук сигнальщика, подчеркиваемое флажками. Но для того, чтобы сообщение было не только принято, но и понято, приходилось предварительно договариваться, что означают, например, два дыма, или последовательность из трех быстрых ударов, или разведенные в стороны руки.

Итак, кроме самого сообщения и способа его передачи, появился еще один компонент - преобразование информации или, по-научному выражаясь, кодирование . Без него никакой передачи информации не состоится.

Вообще-то, обычная разговорная и письменная речь - это тоже своего рода кодирование. И изучение иностранного языка мы фактически изучаем другие звуковые и буквенные коды знакомых с детства предметов и явлений.

Но вернемся к передаче срочных сообщений. По мере развития цивилизации, появлялись и новые возможности их пересылки.

Майкл Фарадей в 1831 году сделал открытие, буквально перевернувшее мир: он изобрел способ получения электрического тока. И чуть ли не сразу же электрический ток был использован для передачи сообщений.

На основе теоретических разработок английского ученого Шиллинга, американский изобретатель Сэмюэл Морзе создал и широко внедрил в практику телеграфные аппараты и линии связи. Морзе пришлось создавать язык, отчасти похожий на язык африканского барабанного телеграфа. И электрический ток, и барабан имеют весьма небогатый собственный язык. По барабану можно либо стучать, либо нет. Электрический ток или идет, или его нет. Поэтому и кодировка, предложенная Морзе использовала всего три своеобразные буквы: длинный сигнал (тире), короткий сигнал (точка), нет сигнала (пауза) - для разделения букв. Так, знаменитый сигнал SOS - (Save Our Souls - спасите наши души) кодируется так:

<точка>, <точка>, <точка> - S

<пауза>

<тире>, <тире>, <тире> - O

<пауза>

<точка>, <точка>, <точка> - S

Код Морзе полтора века служил человечеству. Его сигналы пробивались сквозь такие атмосферные помехи, которые глушили любую членораздельную речь. И лишь в последнее время, когда появились спутники связи, он практически не применяется. К сожалению, все ранние попытки сделать машину, понимающую код Морзе, оказались безуспешными. Предложенные варианты оказывались излишне громоздкими, ненадежными и дорогими. Конечно, техника начала века была еще не столь совершенна, как сейчас, но свою роль сыграло и то, что сам по себе код Морзе был весьма сложен для распознавания его автоматами.

В середине нашего века под руководством Алана Тьюринга под Лондоном появились компьютеры, обрабатывающие буквы и цифры, т.е. символьную информацию. Именно там в 1943 году был создан специализированный компьютер, расшифровывающий немецкие военные коды (машина называлась “Колосс”). Тысячи перехваченных за день неприятельских сообщений вводились в память “Колосса”, после чего в поисках соответствия машина перебирала сотни тысяч вариантов, расшифровывая самые сложные коды.

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

Объект: Информационные процессы

Предмет: Кодирование информации

Цель: Разработать программно - методический комплекс “Кодирование информации” декодирование кодирование информации

Задачи :

1. Выделить основные понятия теории кодирования

2. Уточнить способы представления информации в ЭВМ

3. Рассмотреть алгоритмы кодирования (алгоритм Хаффмана, Лемпеля - Зива, Хемминга)

4. Рассмотреть основные виды помехоустойчивых кодов

5. Разработать программно - методический комплекс по кодированию информации

1 Теоретическая часть

1.1 Основные понятия кодирования и декодирования

Рассмотрим ряд определений, использующихся в теории кодирования:

Код - правило, описывающее соответствие знаков (или их сочетаний) одного алфавита знакам (или их сочетаниям) другого алфавита.

Кодирование - перевод информации, представленной посредством первичного алфавита, в последовательность кодов.

Декодирование - операция, обратная кодированию, т.е. восстановление информации в первичном алфавите по полученной последовательности кодов.

Операции кодирования и декодирования называются обратимыми, если их последовательное применение обеспечивает возврат к исходной информации без каких-либо ее потерь.

Примером обратимого кодирования является представление знаков в телеграфном коде при передаче сообщений и восстановление их при приеме.

Примером необратимого кодирования является перевод текста с одного естественного языка на другой (обратный перевод побуквенно обычно не соответствует исходному тексту).

Основными задачами кодирования являются:

1. Обеспечение экономичности передачи информации посредством устранения избыточности

2. Обеспечение надежности (помехоустойчивости) передачи информации

3. Согласование скорости передачи информации с пропускной способностью канала

Соответствие между элементами дискретных сообщений и видом кодирования обеспечивается выбором:

1. Длительности сигналов

2. Длины кодового слова

3. Алфавита знаков и способа кодирования (побуквенного, блочного). Различают побуквенное и блочное кодирование. При побуквенном кодировании каждому знаку внешнего алфавита ставиться в соответствие кодовое слово из знаков внутреннего алфавита. При блочном кодировании слову из знаков внешнего алфавита ставиться в соответствие кодовое слово из знаков внутреннего алфавита.

Чтобы код был обратимым, необходимо:

1) чтобы разным символам входного алфавита А были сопоставлены разные кодовые комбинации;

2) чтобы никакая кодовая комбинация не составляла начальной части какой-нибудь другой кодовой комбинации.

Кодирование информации (иногда говорят -- шифровк а ) - это процесс формирования определенного представления информации. В более узком смысле под термином «кодирование» часто понимают переход от одной формы представления информации к другой, более удобной для хранения, передачи или обработки.

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

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

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

1.2 Способы кодирования информации в ЭВМ

Одна и та же информация может быть представлена (закодирована) в нескольких формах. Двоичное кодирование - один из распространенных способов представления информации. В вычислительных машинах, в роботах и станках с числовым программным управлением, как правило, вся информация, с которой имеет дело устройство, кодируется в виде слов двоичного алфавита. Двоичный алфавит состоит из двух цифр 0 и 1. Цифровые ЭВМ (персональные компьютеры относятся к классу цифровых) используют двоичное кодирование любой информации. В основном это объясняется тем, что построить техническое устройство, безошибочно различающее 2 разных состояния сигнала, технически оказалось проще, чем то, которое бы безошибочно различало 5 или 10 различных состояний.

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

Среди всего разнообразия информации, обрабатываемой на компьютере, значительную часть составляют числовая, текстовая, графическая и аудиоинформация. Познакомимся с некоторыми способами кодирования этих типов информации в ЭВМ.

1.3 Кодирование символьной (текстовой) информации

Основная операция, производимая над отдельными символами текста - сравнение символов.

Множество символов, используемых при записи текста, называется алфавитом. Количество символов в алфавите называется его мощностью.

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

В настоящее время, большая часть пользователей, при помощи компьютера обрабатывает текстовую информацию, которая состоит из символов: букв, цифр, знаков препинания и др. Подсчитаем, сколько всего символов и какое количество бит нам нужно: 10 цифр, 12 знаков препинания, 15 знаков арифметических действий, буквы русского и латинского алфавита, ВСЕГО: 155 символов, что соответствует 8 бит информации.

Суть кодирования заключается в том, что каждому символу ставят в соответствие двоичный код от 00000000 до 11111111 или соответствующий ему десятичный код от 0 до 255.

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

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

Наиболее популярные таблицы перекодировки: ДКОИ-8, ASCII, CP1251, Unicode, причем тексты, закодированные при помощи одной таблицы не будут правильно отображаться в другой, поэтому важно, чтобы при кодировании и декодировании одного и того же текста использовалась одна и та же таблица. (Базовая таблица кодировки ASCII приведена в таблице 1.1.). Не так давно был предложен новый стандарт символьного кодирования UNICODE , где каждый символ кодируется уже двумя байтами. Он позволяет свободно обмениваться сообщениями по Интернету на любом языке, не выясняя предварительно, понимает ли другой компьютер ваш родной алфавит.

В связи с изобилием систем кодирования текстовых данных, действующих в России, возникает задача межсистемного преобразования данных -- это одна из распространенных задач информатики.

Исторически сложилось, что в качестве длины кода для кодирования символов было выбрано 8 бит или 1 байт. Поэтому чаще всего одному символу текста, хранимому в компьютере, соответствует один байт памяти.

1.4 Кодирование числовой информации

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

Кодирован ие целых и действительных чисел

Целые числа кодируются двоичным кодом достаточно просто -- достаточно взять целое число и делить его пополам до тех пор, пока в остатке не образуется ноль или единица. Совокупность остатков от каждого деления, записанная справа налево вместе с последним остатком, и образует двоичный аналог десятичного числа.

Таким образом, 19 10 = 10011 2 .

Для кодирования целых чисел от 0 до 255 достаточно иметь 8 разрядов двоичного кода (8 бит). Шестнадцать бит позволяют закодировать целые числа от 0 до 65 535, а 24 бита -- уже более 16,5 миллионов разных значений.

Для кодирования действительных чисел используют 80 разрядное кодирование. При этом число предварительно преобразуется в нормализованную форму :

3,1415926 = 0,31415926 * 10 1

300 000 = 0,3 * 10 6

123 456 789 = 0,123456789 * 10 10

Первая часть числа называется мантиссой , а вторая -- характеристикой . Большую часть из 80 бит отводят для хранения мантиссы (вместе со знаком) и некоторое фиксированное количество разрядов отводят для хранения характеристики (тоже со знаком).

1.5 Кодирование графической информации

Важным этапом кодирования графического изображения является разбиение его на дискретные элементы (дискретизация).

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

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

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

Растровое изображение представляет собой совокупность точек (пикселей), полученных в результате дискретизации изображения в соответствии с матричным принципом. Объем растрового изображения определяется умножением количества пикселей (на информационный объем одной точки, который зависит от количества возможных цветов. Качество изображения определяется разрешающей способностью монитора. Чем она выше, то есть больше количество строк растра и точек в строке, тем выше качество изображения. В современных ПК в основном используют следующие разрешающие способности экрана: 640 на 480, 800 на 600, 1024 на 768 и 1280 на 1024 точки.

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

Качество изображения будет тем выше, чем "плотнее" расположены пиксели, то есть чем больше разрешающая способность устройства, и чем точнее закодирован цвет каждого из них. Для черно-белого изображения код цвета каждого пикселя задается одним битом: 1 - белый, 0 - черный.

Если рисунок цветной, то для каждой точки задается двоичный код ее цвета.

Цветовые модели .

1) Модель HSB характеризуется тремя компонентами: оттенок цвета(Hue), насыщенность цвета (Saturation) и яркость цвета (Brightness). Можно получить большое количество произвольных цветов, регулируя эти компоненты. Эту цветовую модель лучше применять в тех графических редакторах, в которых изображения создают сами, а не обрабатывают уже готовые. Значение цвета выбирается как вектор, выходящий из центра окружности. Направление вектора задается в угловых градусах и определяет цветовой оттенок. Насыщенность цвета определяется длиной вектора, а яркость цвета задается на отдельной оси, нулевая точка которой имеет черный цвет. Точка в центре соответствует белому (нейтральному) цвету, а точки по периметру - чистым цветам.

2) Принцип метода RGB заключается в следующем: известно, что любой цвет можно представить в виде комбинации трех цветов: красного (Red, R), зеленого (Green, G), синего (Blue, B). Другие цвета и их оттенки получаются за счет наличия или отсутствия этих составляющих. Данная цветовая модель является аддитивной, то есть любой цвет можно получить сочетание основных цветов в различных пропорциях. При наложении одного компонента основного цвета на другой яркость суммарного излучения увеличивается. Если совместить все три компоненты, то получим ахроматический серый цвет, при увеличении яркости которого происходит приближение к белому цвету.

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

а) полноцветный (True Color);

в) индексный.

При полноцветном режиме для кодирования яркости каждой из составляющих используют по 256 значений (восемь двоичных разрядов), то есть на кодирование цвета одного пикселя (в системе RGB) надо затратить 8*3=24 разряда. Это позволяет однозначно определять 16,5 млн цветов. Это довольно близко к чувствительности человеческого глаза. При кодировании с помощью системы CMYK для представления цветной графики надо иметь 8*4=32 двоичных разряда.

Режим High Color - это кодирование при помощи 16-разрядных двоичных чисел, то есть уменьшается количество двоичных разрядов при кодировании каждой точки. Но при этом значительно уменьшается диапазон кодируемых цветов.

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

Человеческий глаз воспринимает цветовую информацию в диапазоне волн примерно от 380 нм. (синий цвет) до 770 нм. (красный цвет), причём наименьшую чувствительность имеет в районе 520 нм. (зелёный цвет).

1.6 Кодирование звуковой информации

Мир наполнен самыми разнообразными звуками: тиканье часов и гул моторов, завывание ветра и шелест листьев, пение птиц и голоса людей. О том, как рождаются звуки и что они собой представляют люди начали догадываться очень давно. Еще древнегреческий философ и ученый - энциклопедист Аристотель, исходя из наблюдений, объяснял природу звука, полагая, что звучащее тело создает попеременное сжатие и разрежение воздуха.

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

Делается это, например, так - измеряется напряжение через равные промежутки времени и полученные значения записываются в память компьютера. Этот процесс называется дискретизацией (или оцифровкой), а устройство, выполняющее его - аналого-цифровым преобразователем (АЦП).

Чтобы воспроизвести закодированный таким образом звук, нужно сделать обратное преобразование (для этого служит цифро-аналоговый преобразователь - ЦАП), а затем сгладить получившийся ступенчатый сигнал.

Существует два основных способах записи звука:аналоговый и цифровой . Но для того чтобы записать звук на какой-нибудь носитель его нужно преобразовать в электрический сигнал. Это делается с помощью микрофона. Самые простые микрофоны имеют мембрану, которая колеблется под воздействием звуковых волн. К мембране присоединена катушка, перемещающаяся синхронно с мембраной в магнитном поле. В катушке возникает переменный электрический ток. Изменения напряжения тока точно отражают звуковые волны. Переменный электрический ток, который появляется на выходе микрофона, называется аналоговым сигналом. Применительно к электрическому сигналу «аналоговый» обозначает, что этот сигнал непрерывен по времени и амплитуде. Он точно отражает форму звуковой волны, которая распространяется в воздухе.

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

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

В начале 80-х годов появились компакт-диски. Они являются примером дискретного хранения звуковой информации, так как звуковая дорожка компакт - диска содержит участки с различной отражающей способностью. Теоретически эти цифровые диски могут служить вечно, если их не царапать, т.е. их преимуществами являются долговечность и неподверженность механическому старению. Другое преимущество заключается в том, что при цифровой перезаписи нет потери качества звука.

На мультимедийных звуковых картах можно найти аналоговые микрофонный предусилитель и микшер.

Цифро-аналоговое и аналого-цифровое преобразование звуковой информации.

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

Звуковые волны при помощи микрофона превращаются в аналоговый переменный электрический сигнал. Он проходит через звуковой тракт (см. рисунок 1) и попадает в аналого-цифровой преобразователь (АЦП) - устройство, которое переводит сигнал в цифровую форму.

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

Во время аналого-цифрового преобразования никакого физического преобразования не происходит. С электрического сигнала как бы снимается отпечаток или образец, являющийся цифровой моделью колебаний напряжения в аудиотракте. Если это изобразить в виде схемы, то эта модель представлена в виде последовательности столбиков, каждый из которых соответствует определенному числовому значению. Цифровой сигнал по своей природе дискретен - то есть прерывист, поэтому цифровая модель не совсем точно соответствует форме аналогового сигнала.

Семпл - это промежуток времени между двумя измерениями амплитуды аналогового сигнала. Дословно Sample переводится с английского как «образец». В мультимедийной и профессиональной звуковой терминологии это слово имеет несколько значений. Кроме промежутка времени семплом называют также любую последовательность цифровых данных, которые получили путем аналого-цифрового преобразования. Сам процесс преобразования называютсемплированием . В русском техническом языке называют его дискретизацией.

Вывод цифрового звука происходит при помощи цифро-аналогового преобразователя (ЦАП), который на основании поступающих цифровых данных в соответствующие моменты времени генерирует электрический сигнал необходимой амплитуды.

Параметры семплирования

Важными параметрами семплированияявляются частота и разрядность.

Частота - количество измерений амплитуды аналогового сигнала в секунду.

Если частота семплирования не будет более чем в два раза превышать частоту верхней границы звукового диапазона, то на высоких частотах будут происходить потери. Это объясняет то, что стандартная частота для звукового компакт-диска - это частота 44.1 кГц. Так как диапазон колебаний звуковых волн находится в пределах от 20 Гц до 20 кГц, то количество измерений сигнала в секунду должно быть больше, чем количество колебаний за тот же промежуток времени. Если же частота дискретизации значительно ниже частоты звуковой волны, то амплитуда сигнала успевает несколько раз измениться за время между измерениями, а это приводит к тому, что цифровой отпечаток несет хаотичный набор данных. При цифро-аналоговом преобразовании такой семпл не передает основной сигнал, а только выдает шум.

В новом формате компакт-дисков Audio DVD за одну секунду сигнал измеряется 96 000 раз, т.е. применяют частоту семплирования 96 кГц. Для экономии места на жестком диске в мультимедийных приложениях довольно часто применяют меньшие частоты: 11, 22, 32 кГц. Это приводит к уменьшению слышимого диапазона частот, а, значит, происходит сильное искажение того, что слышно.

Если в виде графика представить один и тот же звук высотой 1 кГц (нота до седьмой октавы фортепиано примерно соответствует этой частоте), но семплированный с разной частотой (нижняя часть синусоиды не показана на всех графиках), то будут видны различия. Одно деление на горизонтальной оси, которая показывает время, соответствует 10 семплам. Можно видеть, что на частоте 11 кГц примерно пять колебаний звуковой волны приходится на каждые 50 семплов, то есть один период синусоиды отображается всего при помощи 10 значений. Это довольно неточная передача. В то же время, если рассматривать частоту оцифровки 44 кГц, то на каждый период синусоиды приходится уже почти 50 семплов. Это позволяет получить сигнал хорошего качества.

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

Для кодирования значения амплитуды используют принцип двоичного кодирования. Звуковой сигнал должен быть представленным в виде последовательности электрических импульсов (двоичных нулей и единиц). Обычно используют 8, 16-битное или 20-битное представление значений амплитуды. При двоичном кодировании непрерывного звукового сигнала его заменяют последовательностью дискретных уровней сигнала. От частоты дискретизации (количества измерений уровня сигнала в единицу времени) зависит качество кодирования. С увеличением частоты дискретизации увеличивается точность двоичного представления информации. При частоте 8 кГц (количество измерений в секунду 8000) качество семплированного звукового сигнала соответствует качеству радиотрансляции, а при частоте 48 кГц (количество измерений в секунду 48000) - качеству звучания аудио- CD.

Если использовать 8-битное кодирование, то можно достичь точность изменения амплитуды аналогового сигнала до 1/256 от динамического диапазона цифрового устройства (28 = 256).

Если использовать 16-битное кодирование для представления значений амплитуды звукового сигнала, то точность измерения возрастет в 256 раз.

В современных преобразователях принято использовать 20-битное кодирование сигнала, что позволяет получать высококачественную оцифровку звука.

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

Описанный способ кодирования звуковой информации достаточно универсален, он позволяет представить любой звук и преобразовывать его самыми разными способами. Но бывают случаи, когда выгодней действовать по-иному.

Издавна используется довольно компактный способ представления музыки - нотная запись. В ней специальными символами указывается, какой высоты звук, на каком инструменте и как сыграть. Фактически, ее можно считать алгоритмом для музыканта, записанным на особом формальном языке. В 1983 ведущие производители компьютеров и музыкальных синтезаторов разработали стандарт, определивший такую систему кодов. Он получил название MIDI.

Конечно, такая система кодирования позволяет записать далеко не всякий звук, она годится только для инструментальной музыки. Но есть у нее и неоспоримые преимущества: чрезвычайно компактная запись, естественность для музыканта (практически любой MIDI-редактор позволяет работать с музыкой в виде обычных нот), легкость замены инструментов, изменения темпа и тональности мелодии.

Есть и другие, чисто компьютерные, форматы записи музыки. Среди них - формат MP3, позволяющий с очень большим качеством и степенью сжатия кодировать музыку, при этом вместо 18-20 музыкальных композиций на стандартном компакт-диске (CDROM) помещается около 200. Одна песня занимает, примерно, 3,5 Mb, что позволяет пользователям сети Интернет легко обмениваться музыкальными композициями.

Ухо человека воспринимает звук в диапазоне от 20 Гц до 20 КГц (1 Гц - 1 колебание в секунду).

1.7 Алгоритм Хаффмана

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

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

Можно представить, что все файлы - это тексты, написанные в алфавите, состоящем из 256 букв (так оно на самом деле и есть). Рассмотрим все множество файлов, размер которых не превышает n byte (где n произвольное число). И допустим, что существует некий алгоритм кодирования, который любой из этих файлов сжимает с "положительной" эффективностью. Тогда множество всех их архивов содержится во множестве всех файлов, размер которых меньше n byte. Согласно нашему предположению существует взаимно-однозначное соответствие между двумя конечными множествами, число элементов в которых не совпадает. Чего быть не может. Отсюда можно сделать довольно значимые выводы: 1) не существует архиватора, который бы одинаково хорошо паковал любые файлы, 2) для любого архиватора найдутся файлы, в результате сжатия которых будут получаться архивы в лучшем случае не меньшего размера, чем исходные файлы.

1.8 Алгоритм кодирования Лемпеля - Зива

Алгоритм Лемпеля -- Зива -- Ве м лча -- это универсальный алгоритм сжатия данных без потерь, созданный Абрахамом Лемпелем, Якобом Зивом и Терри Велчем. Он был опубликован Велчем в 1984 году, в качестве улучшенной реализации алгоритма LZ78 , опубликованного Лемпелем и Зивом в 1978 году. Алгоритм разработан так, чтобы его можно было быстро реализовать, но он не обязательно оптимален, поскольку он не проводит никакого анализа входных данных.

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

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

При кодировании :

1. Выбирается первый символ сообщения и заменяется на его код.

2. Выбираются следующие два символа и заменяются своими кодами. Одновременно этой комбинации двух символов присваивается свой код. Обычно это номер, равный числу уже использованных кодов. Так, если алфавит включает 8 символов, имеющих коды от 000 до 111, то первая двухсимвольная комбинация получит код 1000, следующая - код 1001 и т.д.

3. Выбираются из исходного текста очередные 2, 3,...N символов до тех пор, пока не образуется еще не встречавшаяся комбинация. Тогда этой комбинации присваивается очередной код, и поскольку совокупность А из первых N-1 символов уже встречалась, то она имеет свой код, который и записывается вместо этих N-1 символов. Каждый акт введения нового кода назовем шагом кодирования.

4. Процесс продолжается до исчерпания исходного текста.

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

1.9 Помехоустойчивые коды

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

Простейшими способами обнаружения ошибок являются контрольное суммирование, проверка на нечетность. Однако они недостаточно надежны, особенно при появлении пачек ошибок. Поэтому в качестве надежных обнаруживающих кодов применяют циклические коды . Примером корректирующего кода является код Хемминга.

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

Работа подавляющего числа современных систем связи основана на передаче сообщений в цифровом виде. Сбой при приеме любого элемента цифровых данных способен вызвать значительное искажение всего сообщения в целом, что, в свою очередь, может привести к полной потере информации, содержащейся в нем. Высокоэффективным средством решения данной проблемы является применение помехоустойчивого кодирования, основанного на введении искусственной избыточности в передаваемое сообщение. Отметим, что в современных информационных системах важнейшей задачей является обеспечение информационной безопасности, связанной с методами криптографии и кодирования, теоретические основы которой заложил Шеннон в своих трудах.

В 50-е-70-е годы было разработано большое количество алгебраических кодов с исправлением ошибок, среди которых наиболее востребованными стали коды Боуза-Чоудхури-Хоквингема (БЧХ), Рида-Соломона (РС), Рида-Малера, Адамара, Юстенсена, Гоппы, циклические коды, сверточные коды с разными алгоритмами декодирования (последовательное декодирование, алгоритм Витерби), арифметические коды.

Однако на практике применяется относительно небольшая группа алгебраических помехоустойчивых кодов: БЧХ, Рида-Соломона и сверхточные коды. Наиболее широко применяются циклические коды с обнаружением ошибок в стандартных протоколах HDLC, Х.25/2 (LAP-B, LAP-M). Коды Рида-Соломона с исправлением ошибок находят применение в каналах радиосвязи. В каналах спутниковой связи, характеризующихся независимым характером ошибок, широко применяются сверхточные коды.

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

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

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

Под помехой понимается любое воздействие, накладывающееся на полезный сигнал и затрудняющее его прием.

1.10 Теоремы Шеннона

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

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

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

Например, каждый фрагмент текста ("предложение") передается трижды, и верным считается та пара фрагментов, которая полностью совпала. Однако, большая избыточность приводит к большим временным затратам при передаче информации и требует большого объема памяти при ее хранении. Отсюда следует задача устранения избыточности, или эффективного кодирования. Впервые теоретическое исследование такого рода проблем предпринял К.Шеннон.

Первая теорема Шеннона о передаче информации, которая называется также основной теоремой о кодировании при отсутствии помех, формулируется следующим образом:

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

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

Эта теорема не дает конкретного метода построения кода, но указывает на пределы достижимого в области помехоустойчивого кодирования, стимулирует поиск новых путей решения этой проблемы.

2 Практическая часть

Программа на кодирование информации

Кодирование информации -- одна из базовых тем курса теоретических основ информатики, отражающая фундаментальную необходимость представления информации в какой-либо форме, -- т.е. кодировании информации. При этом слово «кодирование» понимается не в узком смысле -- кодирование как способ сделать сообщение непонятным для всех, кто не владеет ключом кода, а в широком -- как представление информации в виде сообщения на каком-либо языке.

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

По данной теме я разработала программу для учащихся 8-9 классов. Программа написана на языке программирования Delphi6 и называется «Кодирование флажковой азбуки».

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

На форме нанесены следующие компоненты :

· Компонент Список изображений (ImageList)

Этот компонент расположен на панели Win32. В нём производится работа с графическим изображением, он позволяет хранить наборы картинок фиксированного размера, причём обращаться к картинки (в нашей программе их 34) мы будем по номерам и осуществлять вывод изображений на экран;

· Компонент Область рисования (PaintBox)

Расположен на панели System. Используем для вывода графической информации (флажков).

· Текстовое поле (Edit)

Расположен на панели Standard. Поле, в которое будем вводить сообщение, для того чтобы его закодировать;

· Кнопка (Button)

Расположен на панели Standard. 1 кнопка “очистить” (можно очистить сообщение в текстовом поле и написать новое), 2 кнопка “кодировать” (кодирует сообщение, которое ввели в текстовое поле и выводит уже закодированное сообщение в PaintBox), 3 кнопка “таблица кодирования” (выводит таблицу в новой форме, на которой можно просмотреть, какой букве соответствует флажок);

· Метка (Label)

Расположен на панели Standard.Содержит информацию о том, что сообщение не должно быть более 27 символов;

· Панель (Panel)

На панели будет располагаться PaintBox, нужна для того, чтоб визуально можно было увидеть, куда будет выводиться сообщение.

Приложение

Код кодирования сообщения

procedure TForm1.Button1Click(Sender: TObject);

if Length(s)>27 then

ShowMessage("сообщение более 27 символов");

for i:= 1 to length(s) do

if (s[i]="а") or (s[i]="А") then

if (s[i]="б") or (s[i]="Б") then

if (s[i]="в") or (s[i]="В") then

if (s[i]="г") or (s[i]="Г") then

if (s[i]="д") or (s[i]="Д") then

if (s[i]="е")or (s[i]="Е") then

if (s[i]="ё")or (s[i]="Ё") then

if (s[i]="ж")or (s[i]="Ж") then

if (s[i]="з") or (s[i]="З") then

if (s[i]="и") or (s[i]="И") then

if (s[i]="й") or (s[i]="Й") then

if (s[i]="к") or (s[i]="К") then

if (s[i]="л") or (s[i]="Л") then

if (s[i]="м") or (s[i]="М") then

if (s[i]="н") or (s[i]="Н") then

if (s[i]="о") or (s[i]="О") then

if (s[i]="п") or (s[i]="П") then

if (s[i]="р") or (s[i]="Р") then

if (s[i]="с") or (s[i]="С") then

if (s[i]="т")or (s[i]="Т") then

if (s[i]="у") or (s[i]="У") then

if (s[i]="ф")or (s[i]="Ф") then

if (s[i]="х")or (s[i]="Х") then

if (s[i]="ц")or (s[i]="Ц") then

if (s[i]="ч") or (s[i]="Ч") then

if (s[i]="ш") or (s[i]="Ш") then

if (s[i]="щ")or (s[i]="Щ") then

if (s[i]="ъ")or (s[i]="Ъ") then

if (s[i]="ы")or (s[i]="Ы") then

if (s[i]="ь") or (s[i]="Ь") then

if (s[i]="э") or (s[i]="Э") then

if (s[i]="ю") or (s[i]="Ю") then

if (s[i]="я") or (s[i]="Я") then

if s[i]=" " then

ImageList1.Draw(PaintBox1.Canvas,35*i,5,k,true);

Очистка сообщения .

procedure TForm1.Button3Click(Sender: TObject);

Посмотреть таблицу кодирования .

procedure TForm1.Button2Click(Sender: TObject);

Заключение

За недолгое время компьютер из вычислительного устройства превратился в устройство для обработки многих видов информации: текстовой, графической, звуковой. С помощью компьютера информация упаковывается и шифруется, путешествует по различным каналам связи и может быть доставлена в любой уголок мира. Современный человек уже не представляет свою деятельность без применения компьютера. Как информация может быть представлена в компьютере, как она передается по каналам связи - ответы на все эти вопросы мы получаем после изучения темы "Кодирование информации". Сведения об информации, языках как способах представления информации, о кодировании информации без компьютера, о двоичном кодировании, о системах счисления, о кодировании информации в компьютере - все эти вопросы должны входить в содержание Федерального компонента образовательного стандарта школьного курса информатики.

Список использованных источников

1. Delphi 7. Учебный курс / С. И. Бобровский. - СПб.: Питер, 2003.

2. Задачник-практикум по информатике: Учеб. Пособие для сред. Шк. / Пол ред. И. Семакина, Е. Хеннера. М.: Лаборатория базовых знаний, 1999.

3. Информатика: Базовый курс для 7 - 9 кл. / И. Г. Семакин, Л.А. Залогова, С. В. Русаков, Л. В. Шестакова - М.: Лаборатория базовых знаний, 1998.

4. Информатика. 7 - 9 кл. Базовый курс. Учебник. / Под. ред. Проф. Н. В. Макаровой. - Спб.: Питер, 2002.

5. Информатика: Учеб.пособие для студ. Пед. Вузов / А. В. Могилёв, Н. И. Пак, Е. К. Хеннер; Под ред. Е. К. Хеннера. - 2-е издание, стер. - М.: Издательский центр «Академия».

6. Кушниренко А. Г., Лебедев Г. В., Сворень Р. А. Основы информатики и вычислительной техники: Учеб. Для 10 - 11 кл. сред. шк., - М.: Просвещение, 1996.

7. Основы теории информации и кодирования. Учебник / В.В. Крушный - М.,2005.

8. Трофимова М.В. Измерение количества информации // Информатика: Еженед. прил. к газ. «Первое сентября». №2. 2000.

9. Теория кодирования и теория информации. Учебник / Р. В.Хемминг - М.: Издат.: Радио и Связь, 1985.

10. URL: //sdo.uspi.ru/mathem&inform/lek8/lek_8.htm

11. URL: ru.wikipedia.org/wiki/Lempel-Ziv-Welch

Размещено на Allbest.ru

...

Подобные документы

    Представление информации в двоичной системе. Необходимость кодирования в программировании. Кодирование графической информации, чисел, текста, звука. Разница между кодированием и шифрованием. Двоичное кодирование символьной (текстовой) информации.

    реферат , добавлен 27.03.2010

    Представление числовой информации с помощью систем счисления. Кодирование символьной, текстовой, числовой и графической информации. Устройство жесткого диска; дисковод компакт-дисков CD-ROM. Использование главного меню Windows; языки программирования.

    контрольная работа , добавлен 16.03.2015

    Знакомство с идеей векторного способа представления изображений в цифровом виде. Разработка последовательности команд для кодирования графического объекта. Основные команды; двоичное кодирование графической информации, растровый и векторный варианты.

    презентация , добавлен 05.01.2012

    Технология обработки графической информации с помощью ПК, применение в научных и военных исследованиях: формы, кодирование информации, ее пространственная дискретизация. Создание и хранение графических объектов, средства обработки векторной графики.

    реферат , добавлен 28.11.2010

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

    контрольная работа , добавлен 22.04.2011

    Информация и информационные процессы в природе, обществе, технике. Информационная деятельность человека. Кодирование информации. Способы кодирования. Кодирование изображений. Информация в кибернетике. Свойства информации. Измерение количества информации.

    реферат , добавлен 18.11.2008

    Место темы "Кодирование информации" в школьном курсе информатики. Рекомендации по изучению "Кодирования информации" в школьном курсе информатики. Дидактический материал для изучения темы "Кодирование информации" и внеклассное мероприятие по информатике.

    курсовая работа , добавлен 17.06.2012

    Кодирование символьной и числовой информации. Основные системы счисления. Двоичная система счисления. Устройства вывода информации. Правила выполнения арифметических операций. Логические основы построения, функциональные узлы ЭВМ. Синтез логических схем.

    презентация , добавлен 08.11.2016

    Методы арифметического кодирования. Основные функции программ, реализующие алгоритмы кодирования по методам Хаффмана, Голомба, Фибоначчи и Элиаса. Разработка программно-аппаратных средств оптимального арифметического кодирования и их экономический расчет.

    дипломная работа , добавлен 26.05.2012

    Понятие информации и основные принципы ее кодирования, используемые методы и приемы, инструментарий и задачи. Специфические особенности процессов кодирования цифровой и текстовой, графической и звуковой информации. Логические основы работы компьютера.