Слайд 1 Слайд 2 Слайд 3 Слайд 4 Слайд 5 Слайд 6 Слайд 7 Слайд 8 Слайд 9 Слайд 10 Слайд 11 Слайд 12 Слайд 13 Слайд 14 Слайд 15 Слайд 16 Слайд 17 Слайд 18 Слайд 19 Слайд 20 Слайд 21 Слайд 22 Слайд 23 Слайд 24 Слайд 25 Слайд 26 Слайд 27 Слайд 28 Слайд 29 Слайд 30 Слайд 31 Слайд 32 Слайд 33 Слайд 34 Слайд 35 Слайд 36 Слайд 37 Слайд 38 Слайд 39 Слайд 40 Слайд 41 Слайд 42 Слайд 43 Слайд 44 Слайд 45 Слайд 46 Слайд 47 Слайд 48 Слайд 49 Слайд 50 Слайд 51 Слайд 52 Слайд 53 Слайд 54 Слайд 55 Слайд 56 Слайд 57 Слайд 58 Слайд 59 Слайд 60 Слайд 61 Слайд 62 Слайд 63 Слайд 64 Слайд 65 Слайд 66 Слайд 67 Слайд 68 Слайд 69 Слайд 70
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