Алгоритм.pptx
- Количество слайдов: 36
Дискретность Понятность Определённость Результативность Массовость Программа Исполнитель HT C++ ML P SIC ascal BA свойства Алгоритм ви ды Линейные я мы ени р фо тавл с ед пр Языки программирования Словесная Разветвляющийся Программная Циклические Графическая
Основным в процессе разработки программ является разработка алгоритма. Алгоритмизация: 1. этап решения задачи, состоящей в нахождении по формулировке задачи алгоритма ее решения. 2. раздел информатики, изучающий методы, приемы построения алгоритмов и их свойства (иногда также называют алгоритмикой). Алгоритм – система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных в желаемый результат за конечное число шагов
Исполнитель – некий объект или субъект, для управления которым составлен алгоритм. Человек далеко не единственный возможный исполнитель алгоритмов. Все живые существа и даже отдельные клетки исполняют различные алгоритмы. Способны на это и созданные человеком устройства – роботы-манипуляторы и станки с программным управлением. Но прежде чем составлять алгоритм решения задачи, нужно узнать, какие действия предполагаемый исполнитель способен выполнить. Упрощенно исполнителя можно представить себе как некоторое устройство управления, соединенное с набором манипуляторов. Устройство управления понимает алгоритмы и организует их выполнение, командуя соответствующими манипуляторами. А манипуляторы производят действия, выполняя команды управляющего устройства.
Свойства алгоритмов Алгоритм должен быть составлен таким образом, чтобы исполнитель, в расчёте на которого он создан, мог однозначно и точно следовать командам алгоритма и эффективно получать определенный результат. Это накладывает на записи алгоритмов ряд обязательных требований. Сформулируем эти требования в виде перечня свойств, которым должны удовлетворять алгоритмы, адресуемые заданному исполнителю.
Свойства алгоритмов Определённость Массовость Понятность Результативность Свойства алгоритмов Дискретность
Свойства алгоритмов Дискретность: Одно из первых требований, которое предъявляется к алгоритму, состоит в том, что описываемый процесс должен быть разбит на последовательность отдельных шагов. Возникающая в результате такого разбиения запись представляет собой упорядоченную совокупность чётко разделённых друг от друга предписаний (команд, операторов), образующих прерывную (или, как говорят, дискретную) структуру алгоритма. Только выполнив требования одного предписания, можно приступить к выполнению следующего. Дискретная структура алгоритмической записи может, например, подчёркиваться сквозной нумерацией отдельных команд алгоритма, хотя это требование не является обязательным.
Свойства алгоритмов Понятность: Используемые на практике алгоритмы составляются с ориентацией на определённого исполнителя. Чтобы составить для него алгоритм, нужно знать какие команды это исполнитель может понять и исполнить, а какие - не может. Мы знаем, что у каждого исполнителя имеется своя система команд. Очевидно, составляя запись алгоритма для определённого исполнителя, можно использовать лишь те команды, которые имеются в его системе команд исполнителя.
Свойства алгоритмов Определённость или детерминированность: Будучи понятным, алгоритм не должен содержать предписаний, смысл которых может восприниматься неоднозначно, то есть одна и та же команда, будучи понятна разным исполнителем, после исполнения каждым из них должна давать одинаковый результат. Запись алгоритма должна быть настолько чёткой, полной и продуманной в деталях, чтобы у исполнителя не могло возникнуть потребности, в принятии решений, не предусмотренных составителем алгоритма. Говоря иначе, алгоритм не должен оставлять места для произвола исполнителя. Кроме того, в алгоритмах недопустимы также ситуации, когда после выполнения очередной команды алгоритма исполнителю неясно, какая из команд алгоритма должна выполняться на следующем шаге.
Свойства алгоритмов Обязательное требование алгоритмам - результативность. к Смысл этого требования состоит в том, что при точном исполнении всех предписаний алгоритма процесс должен прекратиться за конечное число шагов и при этом должен получиться определённый результат. Вывод о том, что решения не существует - тоже результат.
Свойства алгоритмов Наиболее распространены алгоритмы, обеспечивающие решение не одной конкретной задачи, а некоторого класса задач данного типа. Это свойство алгоритма называют массовостью. В простейшем случае массовость обеспечивает возможность использования различных исходных данных из некоторой области, которая называется областью применимости алгоритма.
Формы представления алгоритма Графическая Словесная Программная Формы представления алгоритмов
Формы представления алгоритма Словесно-формульный способ. При словесно-формульном способе алгоритм записывается в виде текста или формул по пунктам, определяющим последовательность действий. Например, необходимо найти значение следующего выражения: у = 2 а – (х+6). 1. Ввести значения а и х. 2. Сложить х и 6. 3. Умножить a на 2. 4. Вычесть из 2 а сумму (х+6). 5. Вывести у как результат вычисления выражения. Например: Алгоритм ПОГОДА Начало определить температуру воздуха если температура ниже 0, то надеть шубу, иначе надеть куртку Конец.
Формы представления алгоритма Для более наглядного представления алгоритма используется графическая форма. Графическая форма - изображение алгоритма в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Такое графическое представление называется схемой алгоритма или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т. п. ) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. .
Функциональные элементы блок схемы Обозначение символа Пояснение Начало, конец алгоритма. Вход и выход в подпрограмму Ввод и вывод данных Вычисление действия или последовательности действия да нет Проверка условия Циклический процесс
Формы представления алгоритма При записи алгоритма в словесной и в графической форме допускается определенный произвол при изображении команд. Вместе с тем такая запись точна на столько, что позволяет человеку понять суть дела и исполнить алгоритм. Однако на практике в качестве исполнителей алгоритмов используются специальные автоматы – компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на понятном ему языке. Такой язык принято называть языком программирования, а форму представления алгоритма - программной. Например: program E 3; uses crt; var t: real; begin clrscr; writeln(‘введите температуру воздуха t=’); readln(t); if t < 0 then writeln(‘одеть шубу’) else writeln(‘одеть куртку’); end.
Виды алгоритмов Эвристические Вероятностные Линейные Гибкие Механические Разветвляющиеся Виды алгоритмов Циклические
Виды алгоритмов как логико-математических средств отражают указанные компоненты человеческой деятельности и тенденции, а сами алгоритмы в зависимости от цели, начальных условий задачи, путей ее решения, определения действий исполнителя подразделяются следующим образом: Механические алгоритмы, или иначе детерминированные, жесткие (например, алгоритм работы машины, двигателя и т. п. ); Механический алгоритм задает определенные действия, обозначая их в единственной и достоверной последовательности, обеспечивая тем самым однозначный требуемый или искомый результат, если выполняются те условия процесса, задачи, для которых разработан алгоритм.
Виды алгоритмов Гибкие алгоритмы, например стохастические, т. е. вероятностные и эвристические. Вероятностный (стохастический) алгоритм дает программу решения задачи несколькими путями или способами, приводящими к вероятному достижению результата. Эвристический алгоритм (от греческого слова "эврика") - это такой алгоритм, в котором достижение конечного результата программы действий однозначно не предопределено, так же как не обозначена вся последовательность действий, не выявлены все действия исполнителя. К эвристическим алгоритмам относят, например, инструкции и предписания. В этих алгоритмах используются универсальные логические процедуры и способы принятия решений, основанные на аналогиях, ассоциациях и прошлом опыте решения схожих задач.
Виды алгоритмов Линейный алгоритм - набор команд (указаний), выполняемых последовательно во времени друг за другом Разветвляющийся алгоритм - алгоритм, содержащий хотя бы одно условие, в результате проверки которого ЭВМ обеспечивает переход на один из двух возможных шагов Циклический алгоритм – алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы - последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторого условия. Вспомогательный (подчиненный) алгоритм (процедура) - алгоритм, ранее разработанный и целиком используемый при алгоритмизации конкретной задачи. В некоторых случаях при наличии одинаковых последовательностей указаний (команд) для различных данных с целью сокращения записи также выделяют вспомогательный алгоритм.
Линейный алгоритм. Пример Алгоритм кипячения воды Если выполнить все действия по очереди (по линии), то поставленная задача кипячения воды будет выполнена. Поэтому данный вид алгоритма и называется «линейный» Взять чайник Наполнить чайник водой Зажечь огонь Поставить чайник на огонь Дождаться процесса кипения Убрать чайник с огня
Разветвляющийся алгоритм. Пример Алгоритм решения задачи: взять ли на улицу зонт? Данный вид алгоритма отличается от линейного наличием блока условия, истинность или ложность которого предопределяет дальнейший путь решения поставленной задачи … Выглянуть в окно нет Не брать зонт На улице идет дождь да Взять с собой зонт
Циклический алгоритм. Пример Алгоритм решения задачи: подняться по лестнице Линейный алгоритм, который содержит повторяющиеся действия, можно преобразовать в алгоритм, содержащий цикл(повторение) однотипных действий. Поставить левую ногу на первую ступеньку Поставить правую ногу на следующую ступеньку Поставить левую ногу на следующую ступеньку Поставить правую ногу на последнюю ступеньку
Основы программирования Программа — это детальное и законченное описание алгоритма средствами языка программирования. Исполнителем программы является компьютер. Для выполнения компьютером программа должна быть представлена в машинном коде — последовательности чисел, понимаемых процессором. Написать программу в машинных кодах вручную достаточно сложно. Поэтому сегодня практически все программы создаются с помощью языков программирования, которые по своим синтаксису и семантике приближены к естественному человеческому языку. Исполнитель программы Это снижает трудоемкость программирования. Однако, текст программы, записанный с помощью языка программирования, должен быть преобразован в машинный код. Эта операция выполняется автоматически с помощью специальной служебной программы, называемой транслятором.
Основы программирования Трансляторы Компиляторы Интерпретатор переводит в машинный код и выполняет очередной оператор (команду) программы. Если команда повторяется, то интерпретатор рассматривает ее как встреченную впервые. Компилятор переводит в машинный код исходный текст программы целиком. Поэтому достоинство компиляторов — быстродействие и автономность получаемых программ. Достоинство интерпретаторов — их компактность, возможность остановить в любой момент выполнение программы, выполнить различные преобразования данных и продолжить работу программы. Примерами служебных программ — интерпретаторов являются GW Basic, Лого, школьный алгоритмический язык, многие языки программирования баз данных. Компиляторами являются Turbo Pascal, С++, Delphi и т. д. .
Основы программирования При решении различных задач с помощью компьютера бывает необходимо вычислить логарифм или модуль числа, синус угла и т. д. Вычисления часто употребляемых функций осуществляются посредством подпрограмм, называемых стандартными функциями, которые заранее запрограммированы и встроены в транслятор языка. В этом приложении можно ознакомиться с стандартными функциями алгоритмического языка. Правила и примеры записи арифметических выражений можно просмотреть в приложении «Арифметические выражения в алгоритмических языках» . Правила и примеры логических выражений можно просмотреть в приложении «Запись логических выражений» .
Языки программирования C++ BASIC HT ML Pas cal Языки программирования – это искусственные языки записи алгоритмов для исполнения их на ЭВМ. Программирование (кодирование) - составление программы по заданному алгоритму. Современное состояние языков программирования можно представить в виде следующей классификации: -Процедурные (императивные); -Операционные; -Структурные; -Объектно - ориентированные; -Объектные; -Визуальные; -Декларативные; -Функциональные; -Логические.
Языки программирования Одним из первых процедурных языков программирования высокого уровня стал Фортран, созданный в начале 50 -х гг. в США фирмой IBM. BASIC В середине 60 -х гг. был создан специализированный язык программирования, который состоял из простых английских слов. Новый язык назвали универсальным символическим кодом для начинающих (Beginners All-purpose Symbolic /instruction Code) или сокращенно BASIC (Бейсик). 1964 г. считают годом рождения этого языка. Он получил самое широкое распространение при работе на персональных компьютерах в режиме интерактивного диалога. Популярность Бейсика объясняется как простотой его освоения, так и наличием достаточно мощных универсальных средств, пригодных для решения научных, технических иэкономических задач, а также задач бытового характера, игровых и т. д.
Языки программирования Pascal Паскаль (Pascal) является одним из наиболее популярных процедурных языков программирования, особенно для персональных компьютеров. Созданный как учебный язык программирования в 1968 -1971 гг. Н. Виртом, он был назван в честь французского математика и философа Блеза Паскаля. Задачей Н. Вирта было создание языка, базирующегося на простом синтаксисе и небольшом количестве базовых конструкций, переводимого в машинный код простым компилятором. В основе языковой концепции Паскаля лежит системный подход, предполагающий переход от общей задачи к частным (более простым и меньшим по объему).
Языки программирования C++ Язык программирования С (Си) был разработан в лаборатории Bell для реализации операционной системы UNIX в начале 70 -х гг. и не рассматривался как массовый. По набору управляющих конструкций и структур данных С имеет возможности, присущие высокоуровневым языкам, и вместе с тем он располагает средствами прямого обращения к функциональным узлам компьютера. Синтаксис языка С позволяет создавать лаконичный программный код. Язык С популярен и широко используется профессиональными программистами. Язык C++ был разработан в начале 80 -х гг. в лаборатории Bell. Была создана компактная компилирующая система, в основе которой лежал язык С,
Языки программирования HT ML HTML (Hyper Text Markup Language) - универсальный язык разметки гипертекста, используемый для подготовки Webдокументов для сети Internet. Язык представляет собой набор элементарных команд форматирования текста, добавления графических объектов (рисунков), задания шрифтов и цвета, организации ссылок и таблиц. В соответствии с командами HTML браузер отображает содержимое документа, команды языка не отображаются. В основе языка HTML лежит механизм гипертекстовых ссылок, обеспечивающий связь одного документа с другим. В HTML текст кодируется в ASCII и поэтому может быть создан и отредактирован в любом текстовом редакторе. Все Web-страницы написаны на HTML или используют его расширение.
Блок самоконтроля Ответьте на вопросы: 1. Что такое алгоритм? 2. Назовите основные свойства алгоритмов. 3. В чем смысл свойства алгоритма «понятность» ? 4. Назовите основные виды алгоритмов. 5. Что такое программа? 6. Что понимают под исполнителем? 7. Что представляет собой машинный код? 8. Что такое транслятор? Перечислите типы трансляторов. 9. Как работает интерпретатор? В чем его достоинства? 10. Какие компоненты необходимы для создания программ? Каково назначение каждого из этих компонентов? 11. Что называется интегрированной системой программирования? 12. Чем характеризуются системы визуального программирования? 13. Каковы основные системы программирования? 14. Каковы способы записи алгоритмов? 15. Перечислите основные алгоритмические структуры и опишите их.
Блок самоконтроля Решите задачи: 1. Цепочка из трех бусин формируется по следующему правилу: На первом месте в цепочке стоит одна из бусин А, Б, В. На втором – одна из бусин Б, В, Г. На третьем месте – одна из бусин А, В, Г, не стоящая в цепочке на первом или втором месте. Какая из следующих цепочек создана по этому правилу: 1) АГБ 2) ВАГ 3) БГГ 4) ББГ 2. Цепочки символов (строки) создаются по следующему правилу. Первая строка состоит из одного символа, это цифра 1. Каждая из следующих цепочек создается так. Сначала записывается порядковый номер данной строки, далее дважды записывается вся цепочка цифр из предыдущей строки. Первые 4 строки, созданные по этому правилу, выглядят следующим образом: 1 211 3211211 43211211 Сколько раз в общей сложности встречается в 9 -й строке цифра 1?
Блок самоконтроля Решите задачу: 3. Определите значения переменных x и y после выполнения фрагмента алгоритма. x: =5; y: =10; нет y <= 10? да x <= y? нет x: =x-5; y: =y+5; да x: =x+1; y: =y-1;
Блок самоконтроля Решите задачу: 4. Имеется фрагмент алгоритма, записанный на алгоритмическом языке: m : = 10 b : = Извлечь(а, m) нц для k от 4 до 5 с : = Извлечь(а, k) b : = Склеить(b, с) кц нц для k от 1 до 3 с : = Извлечь(а, k) b : = Склеить(b, с) кц Здесь переменные a, b и с - строкового типа; переменные n, m, k – целые. В алгоритме используются следующие функции: Извлечь(х, i) – возвращает i-й символ слева в строке х. Имеет строковый тип. Склеить(х, у) – возвращает строку, в которой записаны подряд сначала все символы строки х, а затем все символы строки у. Имеет строковый тип. Значения строк записываются в кавычках (одинарных), например x='школа'. Какое значение примет переменная b после выполнения этого фрагмента алгоритма, если переменная а имела значение 'ИНФОРМАТИКА'?
Блок самоконтроля Решите задачи: 5. Имеется фрагмент блок-схемы алгоритма. Этой блок-схеме соответствует словесное описание… да нет y>0 А: =0 В: =0 С: =0 1. Если Y больше нуля, то обнулить А, иначе обнулить В и обнулить С. 2. Если Y больше нуля, то обнулить А и обнулить В и обнулить С. 3. Если Y больше нуля, то обнулить А. Обнулить В. Обнулить С. 4. Если Y больше нуля, то обнулить А и обнулить В. Обнулить С.
Блок самоконтроля Решите задачи: 6. Имеется фрагмент блок-схемы алгоритма. Перед выполнением были введены значения А=13, В=21 и С=11. В результате выполнения алгоритма значение переменной М будет равно… 1 2 да 3 да М: =А 6 нет А> В да нет С> А 5 М: =12 М: =С 9 4 нет В