1: Алгоритмы Кафедра ИТУС ТУ Исаева Г. Н.
2: Понятие алгоритма Под алгоритмом понимают постоянное и точное предписание (указание) исполнителю совершить определенную последовательность действий, направленных на достижение указанной цели или решение поставленной задачи
3: История алгоритма Слово алгоритм происходит от algorithmi – латинской формы написания имени великого математика IX в. Аль Хорезми, который сформулировал правила выполнения арифметических действий. В дальнейшем это понятие стали использовать для обозначения последовательности действий, приводящих к решению поставленной задачи.
4: Исполнитель алгоритма - это абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнять действия, предписываемые алгоритмом. Исполнитель алгоритма - это абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнять действия, предписываемые алгоритмом.
5: Характеристики исполнителя среда; элементарные действия; система команд; отказы.
6: Характеристики исполнителя Среда (или обстановка) - это «место обитания» исполнителя. Каждый исполнитель может выполнять команды только из некоторого строго заданного списка - системы команд исполнителя.
7: Характеристики исполнителя После вызова команды исполнитель совершает соответствующее элементарное действие. Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.
8: Способы записи алгоритмов словесный, (недостаток–многословность, возможна неоднозначность–«он встретил ее на поле с цветами») графический (блок-схемы) на псевдокоде с помощью языка программирования (программа)
9: Свойства алгоритма Дискретность. Последовательное выполнение простых шагов Определенность. Каждое правило алгоритма должно быть четким, однозначным. Результативность. Алгоритм должен приводить к решению за конечное число шагов. Массовость. Применим для некоторого класса задач, различающихся лишь исходными данными. Правильность. Алгоритм правильный, если его выполнение дает правильные результаты решения поставленной задачи.
10: Графический способ записи алгоритма
11: В информатике универсальным исполнителем алгоритмов является компьютер. В информатике универсальным исполнителем алгоритмов является компьютер.
12: Этапы решения задач на ЭВМ Постановка задачи; Построение модели (математическая формализация); Построение алгоритма; Составление программы на языке программирования; Отладка и тестирование программы; Анализ полученных результатов
13: Этапы решения задач на ЭВМ Технологическая цепочка решения задачи на ЭВМ предусматривает возможность возвратов на предыдущие этапы после анализа полученных результатов
14: Базовые алгоритмические структуры Алгоритмы можно представить как некоторые структуры , состоящие из отдельных базовых (основных) элементов: Следование Ветвление Цикл
15: РАЗВЕТВЛЯЮЩИЯСЯ ПРОГРАММЫ
16: Блок-схема решения задачи
17: УСЛОВНЫЙ ОПЕРАТОР Условный оператор служит для ветвлений в программе и имеет следующий синтаксис: if then else . Здесь if, then, else ключевые слова (перев. с англ. если, то, иначе соответственно); логическое выражение типа сравнения (например, ab, c
18: Фрагменты схем алгоритмов
19: Данные и типы данных Данные — это любая информация, представленная в формализованном виде и пригодная для обработки алгоритмом. Данные делятся на переменные и константы. Переменные — это такие данные, значения которых могут изменяться в процессе выполнения алгоритма. Константы — это данные, значения которых не меняются в процессе выполнения алгоритма. Каждая переменная и константа должна иметь свое уникальное имя. Имена переменных и констант задаются идентификаторами. Идентификатор (по определению) представляет собой последовательность букв и цифр.
20: Тип данных это множество допустимых значений, которые может принимать тот или иной объект, а также множество допустимых операций, которые применимы к нему
21: Тип данных Тип данных определяет: внутреннее представление данных в памяти компьютера; объем памяти, выделяемый под данные; множество (диапазон) значений, которые могут принимать величины этого типа; операции и функции, которые можно применять к данным этого типа.
22: Классификация типов данных
23: Типы данных Си
24: Mножества В Турбо-Паскале множества – это набоpы однотипных объектов, каким-либо обpазом связанных дpуг с дpугом. Хаpактеp связей между объектами подpазумевается пpогpаммистом. Максимальное количество объектов в множестве – 256. Определение множества производится в два этапа. Сначала определяется базовый для него тип, а затем с помощью оборота set of – само множество.
25: type type digch0. . 9; digitch set of digch; dig 0. . 9; digit set of dig; sport(football,hockey,tennis,rugby); hobbyset of sport; var s1,s2,s3:digitch; s4,s5,s6:digit; hobby1:hobby;
26: begin begin s1:1,2,3; s2:3,2,1; s3:2,3; s4:0. . 3,6; s5:4,4; s6:3. . 9; hobby1:football,hockey,tennis,rugby; if tennis in hobby1 then writeln(Теннис!); end
27: Файлы Под файлом понимается именованная область внешней памяти или логическое устройство – потенциальный источник или приемник информации Любой сколько-нибудь развитый язык программирования должен содержать средства для организации хранения информации на внешних запоминающих устройствах и доступа к этой информации
28: Характерные особенности ФАЙЛОВ 1) у файла есть имя, это дает возможность работать с несколькими файлами одновременно; 2) содержит компоненты одного типа (типом может быть любой тип, кроме файлового); 3) длина вновь создаваемого файла никак не ограничена при объявлении и ограничивается лишь емкостью внешних устройств памяти.
29: Классификация файлов В зависимости от способа описания можно выделить: текстовые (text) файлы компонентные (двоичные или типизированные )(file of) бестиповой (нетипизированные) (file). Вид файла определяет способ хранения информации в файле.
30: Обращение к файлу производится через файловую переменную: type имя file of тип ; имя text; имя file; где имя – имя файлового типа или файловой переменной (правильный идентификатор); file, of, text – ключевые слова тип – любой тип языка Турбо-Паскаль, кроме файлового.
31: Последовательный доступ Текстовый файл является файлом последовательного доступа, и его можно представить как набор строк произвольной длины. Последовательный файл отличается от файлов с другой организацией тем, что чтение (или запись) из файла (в файл) ведутся байт за байтом от начала к концу.
32: Прямой доступ Типизированные файлы содержат компоненты строго постоянной длины, что дает возможность организовать прямой доступ к каждому компоненту. Для этой цели служит встроенная процедура seek: seek(,) Здесь – выражение типа longint, указывающее номер компонента.
33: Организация ввода-вывода при прямом доступе Файловая переменная должна быть объявлена предложением file of и связана с именем файла процедурой assing. Файл необходимо открыть процедурой rewrite или reset. Для чтения и записи в типизированный файл используются известные процедуры read и write.
34: Массивы
35: Массивы Алгоритм сортировки пузырьком сводится к повторению проходов по элементам сортируемого массива. Проход по элементам массива выполняет внутренний цикл. За каждый проход сравниваются два соседних элемента, и если порядок неверный элементы меняются местами. Внешний цикл будет работать до тех пор, пока массив не будет отсортирован.
37: Указатели Ссылочный тип данных является средством организации и обработки сложных изменяющихся структур данных. Этот тип данных предназначен для обеспечения возможности указания на данные других типов и называется указателем (ссылкой).
38: Ссылочный тип данных
39: Статические переменные Статические переменные представляют собой переменные, которые объявляются в некоторых процедурах или блоках. Такие переменные формируются автоматически при передаче управления процедуре и уничтожаются при выходе из нее. Время существования таких переменных соответствует времени выполнения данной процедуры.
40: Динамические переменные Образование динамической переменной, содержащей непосредственно ссылочное значение, осуществляется в результате выполнения специальной процедуры n e w ( p ) . Процедура new(p) обеспечивает: 1) размещение переменной динамического типа То в памяти; 2) присваивание переменной р ссылки на размещенную переменную.
41: Динамические переменные
42: Классификация структур данных 1. По характеру взаимосвязи элементов структуры (с точки зрения порядка их размещ ения/выборки) виды структур можно разделить на линейные и нелинейные. 2. По характеру информации, представляемой структурой ( с точки зрения однородности и «элементарности» типов данных), — на однородные структуры, где все элементы имеют один тип данных, и неоднородные (композиционные), где элементы относятся к разным типам данных.
43: Линейные структуры Последовательные файлы Стеки Очереди Массивы Последовательность так же, как и массив, представляет собой совокупность однотипных элементов. Однако число элементов до размещения неизвестно.
44: Стек
45: Очередь
46: Нелинейные структуры Списки Деревья Графы Порядок следования (и, соответственно, выборки) элементов таких структур может не соответствовать порядку расположения элементов в памяти.
47: Списки В зависимости от способа построения списка и предполагаемых путей доступа к элементам различают следующие виды списков: однонаправленные; двунаправленные; циклические.
48: Однонаправленный список
49: Однонаправленные списки предусматривают жесткий порядок перебора элементов — только в одном направлении, от первого к последнему.
50: Двунаправленный список представляет собой цепочку элементов, в которой каждый элемент содержит ссылку не только на следующий, но и на предыдущий. Для таких списков нужна дополнительная переменная — указатель на последний элемент списка.
51: Двунаправленный список
52: Циклические списки В циклических или кольцевых списках порядок следования элементов зацикливается следующим образом: в однонаправленном кольцевом списке последний элемент ссылается на первый как на следующий, а в двунаправленном кольцевом списке последний ссылается на первый как на следующий, а первый — на последний как на предыдущий.
53: Циклические списки
54: Деревья Дерево представляет собой иерархию элементов, называемых узлами. На самом верхнем уровне иерархии имеется только один узел — корень. Каждый узел, кроме корня, связан с одним узлом на более высоком уровне, называемым исходным узлом для данного узла. Каждый элемент имеет только один исходный.
55: Деревья Каждый элемент может быть связан с одним или несколькими элементами на более низком уровне, которые называются порожденными. Элементы, расположенные в конце ветви, т. е. не имеющие порожденных, называются листьями.
56: Деревья Высота дерева определяется количеством уровней, на которых располагаются его узлы В соответствии со структурой заполнения деревья подразделяются на : сбалансированные; несбалансированные.
57: Деревья
58: Деревья
59: Двоичные деревья — это древовидная структура, в которой допускается не более двух ветвей для одного узла. Любые связи в дереве с любым количеством ветвей можно представить в виде двоичных древовидных структур.
60: Двоичные деревья Если дерево организовано таким образом, что для каждого узла все ключи его левого поддерева меньше ключа этого узла, а все ключи его правого поддерева — больше, оно называется деревом поиска
61: ДВОИЧНОЕ ДЕРЕВО
62: Двоичные деревья Дерево является рекурсивной структурой данных, поскольку каждое поддерево также является деревом. Действия с такими структурами нагляднее всего описываются с помощью рекурсивных алгоритмов
63: Двоичные деревья function wayaround ( дерево ) wayaround ( левое поддерево ) посещение корня wayaround ( правое поддерево ) Можно обходить дерево и в другом порядке, например, сначала корень, потом поддеревья.
64: Двоичные деревья Если дерево организовано таким образом, что для каждого узла все ключи его левого поддерева меньше ключа этого узла, а все ключи его правого поддерева — больше, оно называется деревом поиска
65: Формирование дерева из массива целых чисел include struct Node int d; Node left; Node right; ; Node f i r s t (int d); / / Формирование первого элемента дерева Node searchinsert(Node root, int d); // Поиск с включением void printtree(Node root, int l);
66: Графовые структуры Графовая структура представляет собой наиболее общий (произвольный) случай размещения и связей отдельных элементов в памяти. Списковые структуры и деревья – это частные случаи графа
67: Графовые структуры Один из способов представления графовых структур в памяти ЭВМ— представление графа в виде совокупности узлов и дуг. Дуги при этом представляют собой однотипные структуры, состоящие из двух частей: данные и пара указателей, соответственно, на левый и правый узлы.
68: Графовые структуры Один из способов представления графовых структур в памяти ЭВМ— представление графа в виде совокупности узлов и дуг. Дуги при этом представляют собой однотипные структуры, состоящие из двух частей: данные и пара указателей, соответственно, на левый и правый узлы.
69: Граф для схемы сетевого провода
70: Алгоритмы сортировки https://www. intuit. ru/studies/courses/648/504/lecture/11466 https://prog-cpp. ru/algorithm-sort/ https://ppt-online. org/95398 https://ppt4web. ru/informatika/metody-sortirovki-dannykh. html