
- •Введение
- •Теория кодирования
- •Первая теорема Шеннона.
- •Принципы кодирования информации
- •Принципы обнаружения и исправления ошибок.
- •Принципы кодирования цифровой, символьной, графической информации
- •Представление числовой информации.
- •Представление символьных данных.
- •Представление графических данных.
- •Линейные структуры (списки данных, векторы данных)
- •Табличные структуры (таблицы данных, матрицы данных)
- •Список использованной литературы:
Представление символьных данных.
Текстовая информация представляет собой последовательность символов, поэтому для ее представления в виде двоичного кода достаточно иметь двоичный код каждого символа из используемого алфавита. В компьютерах для кодирования символов используются коды постоянной длины, т.е. код любого символа алфавита содержит одно и то же число битов. Используя различные коды из n бит, можно закодировать 2n символов. В частности, если код символа занимает 1 байт, алфавит может содержать не более 28=256 символов. Такого количества символов вполне достаточно для представления текстовой информации, включая прописные и строчные буквы русского и латинского алфавитов, цифры, математические символы и другие знаки.
Каждому символу соответствует свой двоичный код согласно кодовой таблице. Кодируются также служебные знаки, соответствующие клавишам клавиатуры, нажатием которых выполняются некоторые операции, например, конец строки (Enter), удаление последнего символа (Backspace).
В большинстве современных компьютеров используются кодовые таблицы, основанные на американском стандартном коде для обмена информацией ASCII (American Standart Code for Information Interchange). Коды от 0 до 127 являются интернациональными, причем коды от 0 до 31 соответствуют различным операциям, а остальные – символам латинского алфавита, знакам препинания и арифметических операций, другим знакам. Коды с 128 по 255 являются национальными, т.е. в различных национальных кодировках одному и тому же коду соответствуют , как правило, различные символы. К сожалению, в настоящее время существует несколько русскоязычных национальных кодировок (КОИ-8, СР-1251 ISO и др.), каждая из которых задается своей собственной кодовой таблицей.
В последнее время появился новый международный стандарт Unicode, согласно которому на хранение символа отводится не один, а два байта, поэтому с его помощью можно закодировать не 256, а 216=65536 различных символов. Начиная с 1997 г. эту кодировку поддерживают последние версии платформы Microsoft Windows&Office, а также программы-навигаторы Интернет и почтовые программы.
Представление графических данных.
При кодировании изображений используют два подхода: точечная графика и векторная графика. В точечной графике изображения строятся из большого числа отдельных точек (пикселей). Для каждого пикселя в числовой форме, т.е. в виде кода задаются координаты на экране и на бумаге, а также свойства: такие, как яркость и цвет. Недостаток такого кодирования – большой объем данных, плюс: можно кодировать любые произвольные изображения. В векторной графике изображения строятся из стандартных геометрических фигур. Для каждой фигуры в числовой форме задается ее тип, координаты и свойства: толщина линий, цвет, заливка. Плюс: маленький объем данных для кодирования. Минус: область применения ограничена геометрически правильными изображениями.
Линейные структуры (списки данных, векторы данных)
Линейные структуры — это хорошо знакомые нам списки. Список — это простейшая структура данных, отличающаяся тем, что адрес каждого элемента данных однозначно определяется его номером. Проставляя номера на отдельных страницах рассыпанной книги, мы создаем структуру списка. Обычный журнал посещаемости занятий, например, имеет структуру списка, поскольку все студенты группы зарегистрированы в нем под своими уникальными номерами. Мы называем номера уникальными потому, что в одной группе не могут быть зарегистрированы два студента с одним и тем же номером.
При создании любой структуры данных надо решить два вопроса: как разделять элементы данных между собой и как разыскивать нужные элементы. В журнале посещаемости, например, это решается так: каждый новый элемент списка заносится с новой строки, то есть разделителем является конец строки. Тогда нужный элемент можно разыскать по номеру строки.
N п/п Фамилия, Имя, Отчество
1 Аистов Александр Алексеевич
2 Бобров Борис Борисович
3 Воробьева Валентина Владиславовна
…………………………………………………
27 Сорокин Сергей Семенович
Разделителем может быть и какой-нибудь специальный символ. Нам хорошо известны разделители между словами — это пробелы. В русском и во многих европейских языках общепринятым разделителем предложений является точка. В рассмотренном нами классном журнале в качестве разделителя можно использовать любой символ, который не встречается в самих данных, например символ «*». Тогда наш список выглядел бы так:
Аистов Александр Алексеевич * Бобров Борис Борисович *
Воробьева Валентина Владиславовна * ... * Сорокин Сергей Семенович
В этом случае для розыска элемента с номером п надо просмотреть список начиная с самого начала и пересчитать встретившиеся разделители. Когда будет отсчитано п-1 разделителей, начнется нужный элемент. Он закончится, когда будет встречен следующий разделитель.
Еще проще можно действовать, если все элементы списка имеют равную длину. В этом случае разделители в списке вообще не нужны. Надо просмотреть список с самого начала и отсчитать n-1 элемент. Со следующего символа начнется нужный элемент. Поскольку его длина известна, то его конец определить нетрудно. Такие упрощенные списки, состоящие из элементов равной длины, называют векторами данных. Работать с ними особенно удобно.
Таким образом, линейные структуры данных (списки) — это упорядоченные структуры, в которых адрес элемента однозначно определяется его номером.