Лекция 1. Алгоритмы. Императивный подход. План 1.Содержательное понятие алгоритмаСодержательное понятие алгоритма 2.Императивный подходИмперативный подход.

Презентация:



Advertisements
Похожие презентации
Лекция 1. Алгоритмы.. 2 План 1. Содержательное понятие алгоритма Содержательное понятие алгоритма 2. Императивный подход Императивный подход 3. Исполнитель.
Advertisements

Алексеева Е.В., учитель информатики и ИКТ МОУ «Сланцевская СОШ 3» Алгоритмы. Алгоритмические языки Алексеева Е.В., учитель информатики и ИКТ МОУ «Сланцевская.
Алгоритм Что такое алгоритм Алгоритм точное и понятное предписание исполнителю совершить последовательность действий, направленных на решение поставленной.
Алгоритм - понятное и точное предписание совершить определенную последовательность действий, направленных на достижение указанной цели или решение поставленной.
Понятие алгоритма и его свойства. Этапы решения задачи с использованием компьютера 1. Постановка задачи; 2. Определение условий; 3. Построение модели.
Алгоритм Свойства алгоритмов. algorithmi Латинская форма написания имени выдающегося математика 19 века аль-Хорезми, который сформулировал правила выполнения.
Алгоритм – точное и понятное предписание исполнителю выполнить конечную последовательность команд, приводящих от исходных данных к результатам. Свойства.
АЛГОРИТМЫ Умение составлять алгоритмы просто необходимо, если человек хочет поручить обработку информации машине Алгоритм - определенная последовательность.
ОСНОВНЫЕ ПОНЯТИЯ АЛГОРИТМИЗАЦИИ ЛЕКЦИЯ 11. ОПРЕДЕЛЕНИЯ Алгоритм Алгоритм - это конечная последовательность команд (предписаний) исполнителю совершить конечную.
Этапы решения задач на компьютере.
9 класс Урок 2 Цели урока: образовательные – повторить и закрепить понятия алгоритма, исполнителя, свойства и способы описания алгоритмов, типы алгоритмических.
1 Тема 1.7. Алгоритмизация и программирование Информатика.
АЛГОРИТМЫАЛГОРИТМЫ Алгоритмы Понятие алгоритма Исполнители алгоритма Свойства алгоритма Способы записи алгоритма Основные алгоритмические структуры Основные.
«Алгоритм и его свойства» Подготовила: Кулуева А. гр. ИС-2-1 Степногорск, 2012.
Название "алгоритм" произошло от латинской формы имени величайшего среднеазиатского математика Мухамеда ибн Муса ал-Хорезми (Alhorithmi), жившего в.
Основы алгоритмизации Алгоритмы. Типы алгоритмов. Алгоритмы. Типы алгоритмов. Блок-схемы. Вопросы и задания. Вопросы и задания.
Алгоритм и его формальное исполнение. Типы алгоритмических структур. 9 класс.
Выполнила: Ученица 10 Б класса МБОУСОШ 22 Хрушкова Елена Учитель: Буткевич И. В. «Алгоритмы»«Алгоритмы»
Слово «алгоритм» происходит от имени великого среднеазиатского ученого 8–9 вв. Аль-Хорезми. Из математических работ Аль-Хорезми до нас дошли только две.
1.Алгоритм – это 1. Правила выполнения определённых действий 2. Ориентированный граф, указывающий порядок выполнения некоторого набора команд 3. Описание.
Транксрипт:

Лекция 1. Алгоритмы. Императивный подход

План 1. Содержательное понятие алгоритма Содержательное понятие алгоритма 2. Императивный подход Императивный подход 3. Исполнитель (алгоритмов) и его система команд Исполнитель (алгоритмов) и его система команд 4. Основные свойства алгоритмов Основные свойства алгоритмов 5. Формы представления алгоритмов Формы представления алгоритмов 6. Абстракция данных Абстракция данных 7. Структуры данных Структуры данных 8. Базовые управляющие структуры Базовые управляющие структуры 9. Парадигма процедурного программирования Парадигма процедурного программирования

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

Понятие алгоритма «Алгоритм это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи.» (А. Колмогоров) «Алгоритм это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату.» (А. Марков) «Алгоритм строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд.» (Угринович Николай Дмитриевич)

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

Алгоритм Алгоритм - это конечный набор инструкций по преобразованию информации (команд, операторов), выполнение которых приводит к результату. Каждая инструкция алгоритма содержит точное описание некоторого элементарного действия по преобразованию информации, а также (в явном или неявном виде) указание на инструкцию, которую необходимо выполнить следующей. С1С1 С2С2 С k-1 CkCk Вход Выход

Пример 1. Алгоритм сложения дробей Вход: A/B, C/D; 1. Вычислить Y = B*D; {Перейти к следующей команде} 2. Вычислить X1 = A*D; {Перейти к следующей команде} 3. Вычислить X2 = B*C; {Перейти к следующей команде} 4. Вычислить X = X1+X2; {Перейти к следующей команде} 5. Вычислить Z = НОД(X,Y); {Перейти к следующей команде} 6. Вычислить Е = X div Z; {Перейти к следующей команде} 7. Вычислить F = Y div Z; {Закончить работу}. Выход: E/F

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

Исполнителя хаpактеpизуют: среда; элементарные действия; система команд; отказы.

Исполнитель операций целочисленной арифметики сложение, вычитание, умножение, вычисление неполного частного (div) и остатка (mod), вычисление НОД и НОК запоминание результатов и умение переходить к следующей команде. X = НОД((A + B) div 100, (A * B - 7) mod 10)

Алгоритм деления отрезка пополам с помощью циркуля и линейки Вход: Отрезок AB; Построить окружность O1 с центром A и радиусом AB; Построить окружность O2 с центром B и радиусом AB; Найти точки С и D пересечения окружностей O1 и O2; Построить отрезок CD; Найти точку Е пересечения AB и CD. Выход: Точка Е - середина отрезка AB. В примере 2 Исполнитель обладает системой команд, с помощью которых можно решать геометрические задачи на построения с помощью циркуля и линейки.

Алгоритм решения приведенного квадратного уравнения x 2 + px + q = 0; Вход: Коэффициенты p и q уравнения x 2 + px + q = 0; Вычислить D = p 2 - 4q; Если D < 0 то (ответить Решений нет; Перейти к 1); Если D = 0 то (вычислить x = -p/2; Перейти к 1); Вычислить x1 = (-p+ (D))/2; Вычислить x2 = (-p- (D))/2); 1:Закончить работу. Выход Решений нет или корень x или корни x1, x2.

Алгоритм решения приведенного квадратного уравнения (объяснение) выбирающие, условные команды или ветвления. Если то ( ) Команды перехода Перейти к

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

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

Элементарность. Каждая команда из набора команд Исполнителя содержит указание выполнить некоторое элементарное (не детализируемое более подробно) действие, однозначно понимаемое и точно выполняемое Исполнителем. Пример Алгоритм Евклида вычисления наибольшего общего делителя целых положительных чисел A и B: НОД(A, B). Вход A, B; Вычислить U = A; Вычислить V = B; Пока U <> V выполнять Если U < V то Вычислить V = V - U иначе Вычислить U = U - V; Вычислить D = U. Выход: D - наибольший общий делитель A и B.

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

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

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

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

Структура данных состоит из трех основных компонент: Набор предметно-ориентированных операций для обработки специфических типов абстрактных объектов описываемой предметной области. Структура памяти, в которой хранятся данные, описывающие абстрактные объекты. Интерпретация (реализация) каждой из операций в терминах структуры памяти. Первая компонента определения – набор операций над абстрактными объектами – называется абстрактным типом данных (АТД). АТД определяет, что делает структура данных - какие операции она поддерживает, не раскрывая, как они выполняются. Вторая и третья компоненты вместе образуют реализацию структуры данных.

Пример. АТД Планиметрия. Примитивные типы объектов: точка, прямая, окружность. Примитивные операции: –Line: (точка, точка) прямая l = Line(A, B) определяет прямую l, проходящую через точки A, B –Circle: (точка, точка) окружность o = Circle(A, B) определяет окружность о с центром в т. А, проходящую через т. В. –CircleRad: (точка, точка, точка) окружность o = CircleRad(A, B, C) определяет окружность о с центром в т. А, построенную раствором циркуля c ножками, установленными в B, C. –IntersectLines(прямая, прямая) точка A = Intersect(l, m) определяет точку пересечения прямых l и m –IntersectCircles(окружность, окружность) (точка, точка) (A, B) = IntersectCircles(o, p) определяет пару точек A, B пересечения окружностей o и p. –IntersectLineCircle(прямая, окружность) (точка, точка) (A, B) = IntersectLineCircle(l, o) определяет пару точек A, B пересечения прямой l и окружности o.

Пример. АТД Планиметрия. Из примитивных типов объектов АТД Планиметрия можно теперь строить т.н. составные типы. Например тип треугольник можно определить как тройку точек (вершин) Треугольник = (точка, точка, точка) Из примитивных (основных) операций АТД можно определять производные операции. Например, операция ParralelLine: (точка, прямая) прямая, результатом которой является прямая, проходящая через данную точку и параллельная данной прямой. Использование АТД приводит к применению модульного подхода к алгоритмизации (программированию), т.е. практике разбиения алгоритма на отдельные модули (библиотеки) с хорошо отработанным интерфейсом.

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

Команды управления. Синтаксис Алгоритмы должны быть определены точно и недвусмысленно, форма их записи (нотации) должна быть определена с математической точностью. Синтаксические правила Совокупность синтаксических правил описания алгоритмов определяет формально–языковую среду – алгоритмический язык. Совокупность синтаксических правил, определяющих описание алгоритма, можно разбить на две группы: правила описания данных; правила описания операторов. Семантика Совокупность правил, определяющих выполнение алгоритма, можно также разбить на две группы: правила интерпретации данных; правила интерпретации операторов.

Алгоритм Евклида вычисления НОД двух натуральных чисел: Алгоритм Evclid; Начало Вход(a,b); u := a; v := b; Пока u <> v выполнить начало w := u - v; Если w > 0 то u := w иначе v := -w; конец; Выход(u) конец.

Приближенное (с заданной точностью Eps) решение уравнения f(x) = 0 методом деления отрезка пополам: Алгоритм EquationSol; Начало Вход(a, b, Eps); u := a; v := b; Пока u - v >= Eps выполнить начало w := (u + v)/2; Если f(u)*f(w) > 0 то u := w иначе v := w; конец; Выход(u) Конец.

Структура алгоритма: Начало ; Пока выполнить начало ; Если то иначе ; конец; Конец.

Структура алгоритма на языке блок схем: Ввод Инициализация Оператор Условие Оператор Условие

Базовые управляющие структуры: Основным достижением в теории программирования 60-х годов явилось осознание и теоретическое осмысление того факта, что существуют несколько основных структур управления, оперирование которыми приводит к созданию сколь угодно сложных по управлению алгоритмов

К основным структурам управления относятся: последовательное выполнение ветвление повторение фрагмент 1 фрагмент 2 Оператор 1 Оператор 2 условие True Условие Оператор True

Базовая структура "следование". Образуется последовательностью действий, следующих одно за другим: Школьный алгоритмический язык Язык блок-схем действие 1 действие действие n

Базовая структура "ветвление" Обеспечивает в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвление существует в четырех основных вариантах: еслито; еслитоиначе; выбор; выбориначе.

Примеры структуры ветвление

Базовая структура "цикл" обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла.

Примеры структуры цикл

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

Структура управление любого алгоритма может быть реализована в виде комбинации основных управляющих структур. Оператор перехода Перейти_к_ оператор Goto не включен ни в список основных, ни дополнительных управляющих операторов. Поэтому структурное программирование иногда называют программированием без Goto. Оператор Условие Основной результат

Ключевым аспектом семантического определения операторов управления является понятие условия. Как правило, в алгоритмических системах условия определяются в терминах АТД - т.н. логического типа. Логический тип имеет два значения – F и T, также функционально полный набор логических операций (and, or, xor, not, …) со стандартными интерпретациями алгебры высказываний (т.н. таблицы истинности логических связок). Семантика операторов управления

Каждый предметно-ориентированный АТД имеет, как правило, несколько операций логического типа. Например, АТД «натуральные числа» должен содержать операции логического типа (, >=, =, <>). Семантика оператора Если U то P иначе Q U = T Если U то P иначе Q =df= P U = F Если U то P иначе Q =df= Q Семантика операторов управления

Важную роль в семантическом описании управляющих операторов играет понятие неопределенности. Неопределенность возникает как следствие того, что некоторые операции АТД вообще говоря, частично определены. Так, операция A/B не определена при B = 0. Еще один источник неопределенности – бесконечно повторяющиеся циклы. Оператор Пока T выполнять P не определен, причем эта неопределенность не может быть раскрыта Не существует конструктивного способа (алгоритма), который по описанию цикла распознавал бы, завершится ли этот цикл, или нет. Семантика операторов управления

Полные семантические описания управляющих обязаны содержать правила учета неопределенностей. Для обозначения неопределенности введем специальный символ. Тогда семантика оператора Если U то P иначе Q дополняется равенством U = Если U то P иначе Q =df= Семантика операторов управления

Основная идея, методология (парадигма) обсуждаемого подхода к определению алгоритма может быть выражена «формулой» Н.Вирта: АТД + Структуры управления = Алгоритмы Алгоритмы + структуры данных = программы Парадигма процедурного программирования

Спасибо за внимание!