Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Понятие структур данных и алгоритмов

Читайте также:
  1. A) структура рабочего стола
  2. B. учение о сложной структуре дефекта
  3. C. Ветвящихся алгоритмов
  4. Cохранение данных в двоичных файлах.
  5. CТРУКТУРЫ ДАННЫХ И АЛГОРИТМЫ
  6. D. Требования к структуре и оформлению курсовой работы.
  7. I . Понятие и признаки правовых норм.
  8. I Тема: Структурно-смысловые особенности описания
  9. I)Однофакторный дисперсионный анализ (выполняется с применением программы «Однофакторный дисперсионный анализ» надстройки «Анализ данных» пакета Microsoft Excel).
  10. I. Диагностика: понятие, цели, задачи, требования, параметры

Структуры данных и алгоритмы служат теми материалами, из ко-

торых строятся программы. Более того, сам компьютер состоит из

структур данных и алгоритмов. Встроенные структуры данных предс-

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

величины. Заложенные в конструкцию аппаратуры алгоритмы - это

воплощенные в электронных логических цепях жесткие правила, по

которым занесенные в память данные интерпретируются как команды,

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

лежит умение оперировать только с одним видом данных - с отдель-

ными битами, или двоичными цифрами. Работает же с этими данными

компьютер только в соответствии с неизменным набором алгоритмов,

которые определяются системой команд центрального процессора.

Задачи, которые решаются с помощью компьютера, редко выража-

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

текстов, символов и более сложных структур типа последовательнос-

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

для решения различных задач; фактически алгоритмов не меньше чем

вычислительных задач.

Для точного описания абстрактных структур данных и алгорит-

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

называемые языками программирования, когда смысл всякого предло-

жения определялся точно и однозначно. Среди средств, представляе-

мых почти всеми языками программирования, имеется возможность

ссылаться на элемент данных, пользуясь присвоенным ему именем,

или, иначе, идентификатором. Одни именованные величины являются

константами, которые сохраняют постоянное значение в той части

программы, где они определены, другие - переменными, которым с

помощью оператора в программе может быть присвоено любое новое

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

значение не определено.

Имя константы или переменной помогает программисту, но

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

текст программы в двоичный код, связывает каждый идентификатор с

определенным адресом памяти. Но для того чтобы компилятор смог

это выполнить, нужно сообщить о "типе" каждой именованной величи-

ны. Человек, решающий какую-нибудь задачу "вручную", обладает ин-

туитивной способностью быстро разобраться в типах данных и тех

операциях, которые для каждого типа справедливы. Так, например,

нельзя извлечь квадратный корень из слова или написать число с

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

распознавание, состоит в том, что слова, числа и другие обозначе-

ния выглядят по-разному. Однако для компьютера все типы данных

сводятся в конечном счете к последовательности битов, поэтому

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

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

натуральные и целые числа, вещественные (действительные) числа (в

виде приближенных десятичных дробей), литеры, строки и т.п.

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

переменной определяется компилятором по записи присваиваемого

значения; наличие десятичной точки, например, может служить приз-

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

программист явно задал тип каждой переменной и это дает одно важ-

ное преимущество. Хотя при выполнении программы значение перемен-

ной может многократно меняться, тип ее меняться не должен никог-

да; это значит, что компилятор может проверить операции, выполня-

емые над этой переменной, и убедиться в том, что все они согласу-

ются с описанием типа переменной. Такая проверка может быть про-

ведена путем анализа всего текста программы, и в этом случае она

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

В зависимости от предназначения языка программирования защи-

та типов, осуществляемая на этапе компиляции может быть более или

менее жесткой. Так, например, язык PASCAL, изначально являвшийся

прежде всего инструментом для иллюстрирования структур данных и

алгоритмов, сохраняет от своего первоначального назначения весьма

строгую защиту типов. PASCAL-компилятор в большинстве случаев

расценивает смешение в одном выражении данных разных типов или

применение к типу данных несвойственных ему операций как фаталь-

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

системного программирования, является языком с весьма слабой за-

щитой типов. C-компиляторы в таких случаях лишь выдают предупреж-

дения. Отсутствие жесткой защиты типов дает системному програм-

мисту, разрабатывающуему программу на языке C, дополнительные

возможности, но такой программист сам отвечает за свои действия.

Структура данных относится, по существу, к "пространствен-

ным" понятиям: ее можно свести к схеме организации информации в

памяти компьютера. Алгоритм же является соответствующим процедур-

ным элементом в структуре программы - он служит рецептом расчета.

Первые алгоритмы были придуманы для решения численных задач

типа умножения чисел, нахождения наибольшего общего делителя, вы-

числения тригонометрических функций и других. Сегодня в равной

степени важны и нечисленные алгоритмы; они разработаны для таких

задач, как, например, поиск в тексте заданного слова, планирова-

ние событий, сортировка данных в указанном порядке и т.п. Нечис-

ленные алгоритмы оперируют с данными, которые не обязательно яв-

ляются числами; более того, не нужны никакие глубокие математи-

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

однако, вовсе не следует, что в изучении таких алгоритмов матема-

тике нет места; напротив, точные, математические методы необходи-

мы при поиске наилучших решений нечисленных задач при доказатель-

стве правильности этих решений.

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

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

данных часто служит ключом к удачному программированию и может в

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

детали используемого алгоритма. Вряд ли когда-нибудь появится об-

щая теория выбора структур данных. Самое лучшее, что можно сде-

лать,- это разобраться во всех базовых "кирпичиках" и собранных

из них структурах. Способность приложить эти знания к конструиро-

ванию больших систем - это прежде всего дело инженерного мастерс-

тва и практики.

1.2. Информация и её представление в памяти

Начиная изучение структур данных, или информационных струк-

тур, необходимо ясно установить, что понимается под информацией,

как информация передается и как она физически размещается в памя-

ти вычислительной машины, с несколько упрощенной точки зрения для

того, чтобы изучающий информационные структуры мог понять, что

такое информация и какова ее физическая природа.




Дата добавления: 2014-12-18; просмотров: 104 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.009 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав