Вы находитесь на странице: 1из 10

ЛЕКЦИЯ 1

Введение. Основные понятия


1. Предмет и цель дисциплины.
2. Данные.
3. Структура данных.
4. Классификация структур данных.
5. Понятия статических и динамических структур данных.
6. Преимущества и недостатки статических и динамических структур
данных.

1. Предмет и цель дисциплины.


Компьютер - это машина, которая обрабатывает информацию. Информация –
это данные, наделяемые определенным качественным содержанием (смыслом).
Изучение науки об ЭВМ предполагает изучение того, каким образом структуры
данных формируются внутри цифровой электронно-вычислительной машины
(ЦЭВМ), как обрабатываются и могут эффективно использоваться для
быстрого решения практических задач. Следовательно, для изучения учебной
дисциплины "Алгоритмы и структуры данных" студенту особенно важно понять
базовые, фундаментальные основы организации информации и алгоритмы
результативной работы с ней.
Так как вычислительная техника базируется на изучении информации –
структур данных, которым присваивается определенный смысл, то первый
возникающий вопрос заключается в том, что такое информация. В этом
контексте понятие "информация" в вычислительной технике сходно с понятием
"слова" и структур из слов, которые наполнены конкретным смыслом. Это как в
любом языке. Каждая буква алфавита любого языка в отдельности не несет в
себе никакого содержания (смысла), а вот структуры из букв алфавита – слова
уже наполнены глубоким смыслом. Из букв алфавита людьми по
общепринятым правилам конструируются простые и сложные структуры (слова
и предложения), наделяемые конкретным содержанием. Они и составляют
основу информационного общения людей и накопления знаний - "работающих"
на человека смысловых структур языка, позволяющих ему моделировать
реальные процессы развития природы и общества, а путем практической
проверки моделей познавать их, обеспечивая тем самым свою успешную
адаптации к непрерывным изменениям среды обитания.
Базовой единицей информации, т.е. ее единственной "буквой" является бит,
который может принимать два взаимоисключающих значения. Для
представления двух возможных состояний некоторого бита используются
двоичные цифры - нуль и единица. Если живое или неживое устройство может
находиться более чем в двух состояниях, то тот факт, что оно находится в
одном из этих состояний, уже требует нескольких битов информации.
Число битов, необходимых для кодирования символа (цифры или буквы) в
конкретной ЦЭВМ, в большинстве таблиц кодировки равно восьми, и такая
группа битов называется байтом.
Компьютерная память представляет собой совокупность битов, в любой момент
функционирования в ЦЭВМ каждый из битов памяти имеет значение 0 или 1
(сброшен или установлен). Состояние бита называется его значением или
содержимым.
Биты в памяти ЦЭВМ группируются в элементы большего размера, например в
байты. Несколько байтов объединяются в группы, называемые словами (как в
любом языке). Каждому байту назначается адрес (числовой код),
идентифицирующий конкретный элемент памяти среди множества аналогичных
элементов. Этот адрес называется ячейкой, а содержимое ячейки есть значение
битов, которые ее составляют.
Итак, мы видим, что бит как первичный элемент данных в ЦЭВМ не имеет сам
по себе конкретного смысла. Однако с некоторой конкретной битовой
комбинацией или структурой битов (элементарных элементов позиционной
двоичной системы счисления) может быть связано любое смысловое значение.
Именно интерпретация битовой комбинации придает ей заданный смысл, т.е.
делает ее информацией.
Метод интерпретации битовой информации часто называется типом данных. В
силу использования различных систем счисления (как правило, кратных
двоичной), разные ЦЭВМ имеет свой набор типов данных. Здесь важно
осознавать роль, выполняемую спецификацией типа в языках высокого уровня.
Именно посредством подобных объявлений программист указывает на то,
каким образом содержимое памяти ЭВМ интерпретируется программой как
разные классы данных. Эти объявления детерминируют объем памяти,
необходимый для размещения отдельных элементов и структур из них, способ
интерпретации их элементов и другие важные детали, необходимые для
разработки эффективных алгоритмов и программ компьютерной обработки
структур данных. Под компьютерной программой понимается алгоритм
обработки данных, представленный в понятной исполнителю форме, т.е.
ЦЭВМ. По существу объявления сообщают интерпретатору точное значение
используемых символов машинных операций.
В лекционном материале дисциплины "Алгоритмы и структуры данных" авторы
делают упор на освоение студентами теоретических основ построения базовых
алгоритмов, представленных в псевдокоде. Это позволит студентам не только
быстро освоить типовые структуры данных и эффективные алгоритмы их
компьютерной обработки, но создаст добротный фундамент для научного
просвещения их духа и реализации честолюбивых замыслов стать настоящими
профессионалами в области перспективного научно-прикладного направления –
информационные технологии (ИТ). Мы желаем им творческих успехов в этой
весьма трудной, но архи важной для них самостоятельной работе накопления
личного практического опыта успешной работы с алгоритмами обработки все
более усложняющихся и структур данных (знаний).

2. Данные.
Все программы работают с данными. Данные — это любые значения,
которые используются в работе программы: строки, числа, ссылки и
символы. Например: имя, возраст, количество денег на счету, здоровье
персонажа в игре и так далее. Даже отсутствие данных — это данные.
Все эти и другие значения хранятся в оперативной памяти. Для каждого
значения выделяется отдельная ячейка, и одновременно в ней может
находиться только что-то одно.

С точки зрения программиста данные — это часть программы,


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

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

Элемент отношений - это совокупность всех связей элемента с другими


элементами данных, рассматриваемой структуры.
S:=(D,R)
Где S - структура данных, D - данные и R - отношения.
Как бы сложна ни была структура данных, в конечном итоге она состоит из
простых данных (смотрите рисунки ниже).
Память машины состоит из миллионов триггеров, которые обрабатывают
поступающую информацию. Мы, занося информацию в компьютер,
представляем ее в каком-то виде, который на наш взгляд упорядочивает данные
и придает им смысл. Машина отводит поле для поступающей информации и
задает ей какой-то адрес. Таким образом получается, что мы обрабатываем
данные на логическом уровне, как бы абстрактно, а машина делает это на
физическом уровне.
Последовательность переходов от логической организации к физической
показана на рисунке ниже
4. Классификация структур данных

Структуры данных классифицируются:


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

5. Понятия статических и динамических структур данных.

Структура данных — это способ эффективного хранения и организации


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

Структуры данных могут быть двух типов:


1. Статическая структура данных
2. Динамическая структура данных

В статической структуре данных размер структуры фиксирован.


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

Пример статических структур данных: массив

В динамической структуре данных размер структуры не фиксирован и


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

В зависимости от постоянства во время работы программы


различают:

 1. статические (неизменяющиеся) структуры - переменные


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

6. Преимущества и недостатки статических и динамических структур


данных.

Статическая структура данных имеет фиксированный объем памяти,


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

В конкурентном программировании ограничения на ограничение памяти


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

Вам также может понравиться