Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
125
Добавлен:
30.05.2015
Размер:
174.08 Кб
Скачать

5 Типы алгоритмов

1)Линейный алгоритм.Алгоритмическая конструкция, реализованная в виде последовательности действий, в которой каждое действие выполняется один раз.

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

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

Примеры алгоритмов, записанных в виде блок-схем, приведены в таблице 2.

Таблица 2

Линейный алгоритм

Циклический

Ветвящиеся алгоритмы

Подробнее рассмотрим ветвящиеся алгоритмы.

5.1 Алгоритмы ветвления

Условие для ветвящихся алгоритмов составляется в виде логического выражения – сравнения некоторых объектов между собой.

Существует шесть операций сравнения:

- равно (=);

- не равно (!=);

- меньше (<);

- больше (>);

- меньше или равно (<=);

- больше или равно (>=).

Часто используются составные условия. Для их обозначения используются две логические операции: И и ИЛИ, также инверсия НЕ.

Существует два частных случая ветвящихся алгоритмов:

- структура обход, когда одна из ветвей не содержит никакого действия;

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

Рассмотрим теперь циклические алгоритмы.

5.2 Циклические алгоритмы

Существует три вида циклических алгоритмов:

  1. Цикл с параметром (с заданным количеством повторений), в нем тело цикла выполняется заданное количество раз.

  2. Цикл с предусловием (цикл пока), в котором тело цикла выполняется до тех пор, пока выполняется условие.

  3. Цикл с пост условием (цикл до). Сначала выполняется тело цикла, а затем проверяется истинность условия. Если условие истина, выполнение цикла прекращается.

Примеры циклических алгоритмов, записанных в виде блок-схем, приведены в таблице 3.

Таблица 3

С параметрами

Цикл “До”

Цикл “Пока”

Далее перейдем к рассмотрению структур данных.

6 Структуры данных

Независимо от содержания и сложности любые данные в памяти ЭВМ представляются последовательностью двоичных разрядов, или битов, а их значениями являются соответствующие двоичные числа.

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

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

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

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

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

Рассмотрим классификацию структур данных.

Различаются ПРОСТЫЕ (базовые) структуры данных и СЛОЖНЫЕ (интегрированные).

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

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

Весьма важный признак структуры данных является ее изменчивость - изменение числа элементов и (или) связей между элементами структуры.

По признаку изменчивости различают структуры СТАТИЧЕСКИЕ, ПОЛУСТАТИЧЕСКИЕ, ДИНАМИЧЕСКИЕ.

В зависимости от отсутствия или наличия явно заданных связей между элементами данных следует различать НЕСВЯЗНЫЕ структуры (векторы, массивы, строки, стеки, очереди) и СВЯЗНЫЕ структуры (связные списки).

Важный признак структуры данных - характер упорядоченности ее элементов. По этому признаку структуры можно делить на ЛИНЕЙНЫЕ И НЕЛИНЕЙНЫЕ структуры.

В зависимости от характера взаимного расположения элементов в памяти линейные структуры можно разделить на структуры с ПОСЛЕДОВАТЕЛЬНЫМ распределением элементов в памяти (векторы, строки, массивы, стеки, очереди) и структуры с ПРОИЗВОЛЬНЫМ СВЯЗНЫМ распределением элементов в памяти (односвязные, двусвязные списки). Пример нелинейных структур - многосвязные списки, деревья, графы.

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

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

Информация по каждому типу однозначно определяет:

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

2) множество допустимых значений, которые может иметь тот или иной объект описываемого типа;

3) множество допустимых операций, которые применимы к объекту описываемого типа.

Простые структуры данных

Переменные

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

Переменная – есть именованный объект (ячейка памяти), которая может изменять свое значение.

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

Константы

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

Некоторые сложные структуры данных

Массивы

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

Количество элементов массива называют размерностью.

Примеры обозначения: a[10],b[1][4].

Стек

Стек – это линейный список, в котором все включения и исключения делаются в одном конце списка.

Стекможно представлять себе в виде трубы с одним запаянным концом, в которую можно добавлять элементы (и вынимать их). Говорят, что стек реализуетдисциплину обслуживания LIFO(Lastin--firstout, последним пришел - первым ушел).

Очередь

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

Очередьможно представлять себе в виде трубы с двумя концами, движение по которой возможно лишь в одном направлении -- от конца очереди к ее началу. Говорят, что очередь реализуетдисциплину обслуживания FIFO(Firstin--firstout, первым пришел -- первым ушел).

Дек

Дек – это линейный список, в котором все включения и исключения делаются на обоих концах.

Дек(doubleendedqueue, двусторонняя очередь) - симбиоз стека и очереди. Его можно представлять себе в виде трубы с двумя открытыми концами, с каждым из которых можно работать независимо.