8b6b5950e7e01d45982fba7efee0e12a.ppt
- Количество слайдов: 66
Информатика, модуль 2 Направления подготовки: Государственное и муниципальное управление, Социально-культурный сервис Институт ИИБС, кафедра ИСПИ, ауд. 1448 Винтонива Наталья Ивановна Тема 10. Понятие алгоритма и его свойства. Блок-схема алгоритма
Содержание 1. Происхождение слова «алгоритм» 2. Понятие алгоритма и его свойства 3. Алгоритм применительно к вычислительной машине 4. Виды алгоритмов 5. Основные элементы блок-схем 6. Алгоритмические структуры 7. Языки программирования
Происхождение слова «алгоритм» • Происхождение самого термина «алгоритм» связано с математикой. • Слово "Алгоритм" происходит от algorithmi - латинского написания имени аль-Хорезми, под которым в средневековой Европе знали величайшего математика из Хорезма (город в современном Узбекистане) Мухаммеда бен Мусу, жившего в 783 -850 г. г.
Происхождение слова «алгоритм» • В своей книге "Об индийском счете" он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком.
Алгоритмом • называется точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных.
Алгоритм может быть предназначен • для выполнения его человеком или автоматическим устройством. Создание алгоритма, пусть даже самого простого, - процесс творческий. Он доступен исключительно живым существам, а долгое время считалось, что только человеку.
Формальный исполнитель • Другое дело - реализация уже имеющегося алгоритма. Ее можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять. • Такой субъект или объект принято называть формальным исполнителем. Примером формального исполнителя может служить стиральная машина-автомат, которая неукоснительно исполняет предписанные ей действия, даже если вы забыли положить в нее порошок.
Человек как формальный исполнитель • Человек тоже может выступать в роли формального исполнителя, но в первую очередь формальными исполнителями являются различные автоматические устройства, и компьютер в том числе. • Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя.
Допустимыми действиями • называются те действия, которые может совершать исполнитель.
Система команд • Совокупность допустимых действий образует систему команд исполнителя.
Свойства алгоритма • Дискретность (прерывность, раздельность) – алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов. • Каждое действие, предусмотренное алгоритмом, исполняется только после того, как закончилось исполнение предыдущего.
Свойства алгоритма • Определенность – каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
Свойства алгоритма • Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов. • Массовость – алгоритм решения задачи разрабатывается в общем виде, то есть, он должен быть применим для некоторого класса задач, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
Алгоритм • – это последовательность математических, логических или вместе взятых операций, отличающихся детерменированностью, массовостью, направленностью и приводящая к решению всех задач данного класса за конечное число шагов.
Такая трактовка понятия “алгоритм” является неполной и неточной • Во-первых, неверно связывать алгоритм с решением какой-либо задачи. Алгоритм вообще может не решать никакой задачи. • Во-вторых, понятие “массовость” относится не к алгоритмам как к таковым, а к математическим методам в целом.
Алгоритм применительно к вычислительной машине • – точное предписание, т. е. набор операций и правил их чередования, при помощи которого, начиная с некоторых исходных данных, можно решить любую задачу фиксированного типа.
Алгоритмы в зависимости от цели, начальных условий задачи, путей ее решения, определения действий исполнителя подразделяются следующим образом: • Механические алгоритмы, или иначе детерминированные, жесткие (например алгоритм работы машины, двигателя и т. п. ); • Гибкие алгоритмы, например стохастические, т. е. вероятностные и эвристические.
Механический алгоритм • задает определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм.
Вероятностный стохастический) алгоритм • (дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата.
Эвристический алгоритм (от греческого слова “эврика”) • – это такой алгоритм, в котором достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. • К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач.
Алгоритм можно описать разными способами: • словами, • на языке программирования, • а также с помощью блок-схем.
Графический способ описания алгоритма • На языке блок-схем каждый шаг алгоритма описывается с помощью соответствующей фигуры, а последовательность выполнения шагов определяется линиями-связями. Блок схемы читаются сверху вниз и слева направо.
Язык блок-схем прост (хотя существуют его расширенные варианты): • Прямоугольник – выполнение действия (например, c = a + b) • Ромб – проверка условия (например, a > b). Если условие выполняется, то алгоритм идет по линии «да» , если не выполняется – то по линии «нет» . • Скругленный прямоугольник – начало и конец алгоритма • Скошенный прямоугольник – ввод-вывод данных (например, получение значения переменной, вывод результата на экран монитора).
Алгоритмические структуры: • Следование. Предполагает последовательное выполнение команд сверху вниз. Если алгоритм состоит только из структур следования, то он является линейным. • Ветвление. Выполнение программы идет по одной из двух, нескольких или множества ветвей. Выбор ветви зависит от условия на входе ветвления и поступивших сюда данных.
Алгоритмические структуры: • Цикл. Предполагает возможность многократного повторения определенных действий. Количество повторений зависит от условия цикла. • Функция (подпрограмма). Команды, отделенные от основной программы, выполняются лишь в случае их вызова из основной программы (из любого ее места). Одна и та же функция может вызываться из основной программы сколь угодно раз.
Линейный алгоритм • Существует большое количество алгоритмов, в которых команды должны быть выполнены последовательно одна за другой. Такие последовательности команд будем называть сериями, а алгоритмы, состоящие из таких серий, - линейными.
Линейный алгоритм • Алгоритм, в котором команды выполняются последовательно одна за другой, называется линейным алгоритмом.
Блок-схема линейного алгоритма
Алгоритмическая структура "ветвление" • В отличие от линейных алгоритмов в алгоритмическую структуру ветвление входит условие. • В зависимости от выполнения или невыполнения условия реализуется одна или другая последовательность команд (серий).
Выделяют полную и неполную форму ветвления. Неполная форма имеет место, если по ветви "нет" не предусматривается реализация серии.
Алгоритмическая структура "цикл" • Циклические алгоритмические структуры бывают двух типов: – цикл со счетчиком, в котором тело цикла выполняется определенное количество раз; – цикл по условию, в котором тело цикла выполняется, пока истинно условие.
Цикл со счетчиком • Алгоритмическая структура цикл со счетчиком используется, если известно заранее, какое число повторений тела цикла необходимо выполнить. Цикл со счетчиком может быть зафиксирован с помощью блоксхемы.
Цикл с условием • Цикл с условием используется, когда заранее неизвестно, какое количество раз должно повториться тело цикла. В таких случаях количество повторений зависит от некоторого условия.
Цикл с условием • Цикл называется циклом с предусловием, если условие выхода из цикла стоит в начале, перед телом цикла. • Цикл с предусловием может ни разу не выполниться, если условие окажется ложным.
Алгоритмическая структура «цикл»
Основные понятия программирования • Программирование - это раздел информатики, изучающий методы и приемы составления программ для компьютеров. Кроме того, программирование - это подготовка задачи к решению ее на компьютере.
Программа • - это последовательность команд, понятных компьютеру. • Программа записывается в виде символов, к числу которых относятся латинские и русские буквы, цифры, знаки препинания и знаки операций.
Требования, предъявляемые к программе 1. Минимальные требования к компьютеру, на котором работает программа. 2. Ясность входных и выходных данных и простота программы. 3. Минимальное время создания программы и простота ее изменения. 4. Минимальное время работы программы, минимум занимаемой памяти и минимум использованных в программе операторов.
Свойства программ • • выполнимость, мобильность, правильность, эффективность.
Выполнимость • - возможность выполнения программы на данном типе компьютеров.
Мобильность • - возможность переноса программы на другой тип компьютеров.
Правильность программы • - правильность результатов, получаемых с помощью данной программы.
Эффективность • - минимум времени выполнения, минимум машинной памяти и других ресурсов компьютера.
Языки программирования • - языки для записи программ для компьютеров. • Это совокупность средств и правил представления алгоритма в виде, приемлемом для компьютера.
Типы языков программирования: • • • машинные, машинно-ориентированные, алгоритмические, логические, функциональные, учебные, инструментальные, диалоговые, графические и т. д.
Системы программирования • - это набор средств ввода, редактирования, трансляции и выполнения программ на ЭВМ.
Транслятор • - это комплекс программ, обеспечивающий перевод программы, написанной на символическом языке, в совокупность машинных команд.
Компилятор • - это транслятор, обеспечивающий перевод программы, написанной на алгоритмическом языке, в совокупность машинных команд без ее выполнения в компьютере.
Интерпретатор • - это транслятор, обеспечивающий перевод каждой конструкции алгоритмического языка в машинные команды и одновременное выполнение этой конструкции в компьютере. • Все системы (языки) программирования имеют свой транслятор, компилятор и интерпретатор.
Алгоритмический язык • - это формальный язык, предназначенный для записи алгоритмов.
Основные компоненты алгоритмического языка: • алфавит, • синтаксис, • семантика.
Алфавит • -это фиксированный для данного языка набор основных символов, т. е. "букв алфавита", из которых должен состоять любой текст на этом языке -- никакие другие символы в тексте не допускаются.
Синтаксис • -это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза. • Синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке.
Семантика • определяет смысловое значение предложений языка. • Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
Виды языков программирования: 1. Машинно-ориентированные языки (языки ассемблера). 2. Языки высокого уровня. 3. Командные языки баз данных.
Примеры языков программирования высокого уровня: • Фортран, Алгол, Бейсик (Basic), Паскаль (Pascal), Си++, Пролог, Лисп, Форт и др.
Универсальные и специализированные языки программирования Все популярные языки можно поделить на универсальные и специализированные. Универсальные языки используются для решения разных задач. Специализированные языки предназначены для решения задач одного, максимум нескольких, видов задач. (например, работы с базами данных, web-программирования или написание скриптов для администрирования операционных систем).
Виды специализированных языков: 1. Языки для работы с базами данных: а)Языки, входящие в состав промышленных клиент-серверных систем управления базами данных. (СУБД) (PL-SQL в СУБД Oracle, Transact-SQL в Microsoft SQL Server) б)Языки являющиеся частью других видов СУБД (Visual Fox. Pro, Microsoft Access, Paradox и т. п. )
Виды специализированных языков: • 2. Языки предназначенные для webпрограммирования. а) Языки, исполняющиеся на сервере, поддерживающего Web-сайт. (РНР, Perl, VBScript) б) Языки, исполняющиеся на браузере (программе просмотра) клиента Java. Script, JScript, VBScript
Виды специализированных языков 3. Языки для математических расчетов 4. Языки для автоматизации работы определенных программных продуктов. (VBA в Microsoft Office) 5. Специализированные языки других видов.
К универсальным языкам • можно отнести языки Visual C++, Visual C++. Net, Visual C#. Net, Visual J#. Net, Java, Delphi, Borland C#, Borland C++ Builder.
Самостоятельно рассмотреть вопрос: • История развития языков программирования
Самостоятельная работа № 2 1. Привести пример словесного описания алгоритма. 2. Перечислите свойства программы. 3. Дайте определение семантике языка программирования.
Использование материалов презентации Использование данной презентации, может осуществляться только при условии соблюдения требований законов РФ об авторском праве и интеллектуальной собственности, а также с учетом требований настоящего Заявления. Презентация является собственностью авторов. Разрешается распечатывать копию любой части презентации для личного некоммерческого использования, однако не допускается распечатывать какую-либо часть презентации с любой иной целью или по каким-либо причинам вносить изменения в любую часть презентации. Использование любой части презентации в другом произведении, как в печатной, электронной, так и иной форме, а также использование любой части презентации в другой презентации посредством ссылки или иным образом допускается только после получения письменного согласия авторов.


