Понятие алгоритма и его свойства.
Умение последовательно, четко и ясно излагать свои мысли необходимо каждому человеку. Владение приемами алгоритма позволяет решать и записывать решение многих задач
Алгоритм – это последовательность четко определенных предписаний для решения поставленной задачи за конечное число шагов.
Слово алгоритм произошло от имени великого математика 9 в. Мухаммеда Бен Муссы аль Харезми, который впервые сформулировал правило выполнения арифметических действий с использованием арабских цифр
С понятием алгоритма мы сталкиваемся в повседневной жизни. Человек никогда не совершает поступков, не продумав заранее как надо действовать, чтобы добиться желаемых результатов. Мозг человека постоянно занят поиском путей и целей составления алгоритма. Математические формулы позволяют записать алгоритм вычислений. Но для решения сложных математических, физических задач, имеющих сотни или 1000 различных значений необходимо использование компьютера. В этом случае алгоритм должен быть описан в виде специальной программы, на языке понятном компьютеру.
Свойства алгоритма:
- дискретность – каждый описанный процесс должен быть расчленен на отдельные элементарные части, т. е. алгоритм состоит из разделенных друг от друга предписаний, только выполнив требования одного предписания можно переходить к следующему. Два предписания одновременно не выполняются.
- определенность – каждое предписание алгоритма должно быть точно и однозначно определено, не допуская произвольного толкования
- результативность – при точном исполнении всех предписаний алгоритма, процесс должен прекращаться за конечное число шагов, при этом мы должны получить ответ на вопрос поставленной задачи или получить ответ на невозможность ее решения.
- массивность – алгоритм должен быть пригоден для решения целого класса задач данного типа. Например, алгоритм решения квадратного уравнения
- инвариантность – по отношению к исполнителю алгоритм должен быть неизменным при выполнении предписанных ему действий человека или машины.
15. Способы задания алгоритмов.
Способы задания алгоритма.
На практике наиболее распространены следующие способы задания алгоритмов:словесная (запись на естественном языке);графическая (изображения из графических символов);псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);программная (тексты на языках программирования). Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных.
Словесный способ.Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задаётся в произвольном изложении на естественном языке.Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи.
Графический способ.При графическом представлении алгоритм изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. Такое графическое представление называется схемой алгоритма, или блок-схемой. В блок-схеме каждому типу действий соответствует геометрическая фигура, представленная в виде блочного символа. В таблице приведены наиболее часто употребляемые символы.
Название | Блок-схема | Пояснение |
Пуск-останов | Начало, конец алгоритма, вход и выход в подпрограмму | |
Процесс | Вычислительное действие или последовательность действий | |
Решение | Проверка условий | |
Модификация | Начало цикла | |
Предопределённый процесс | Вычисления по подпрограмме | |
Ввод-вывод | Ввод-вывод в общем виде |
Блок «процесс» применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.Блок «модификация» используется для организации циклических конструкций. Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.Блок «предопределённый процесс» используется для указания обращении к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Псевдокод.Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов.
В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его проектирования. Однако в псевдокоде обычно имеются некоторые конструкции, присущие формальным языкам. В псевдокоде, так же, как и в формальных языках, есть служебные слова, смысл которых однозначно определён. Например, алгоритмы на алгоритмическом языке записываются с помощью служебных слов, представленных в таблице 1.7.
Таблица 1.7. Служебные слова алгоритмического языка.
алг(алгоритм) | сим (символьный) | дано | да | нет |
арг(аргумент) | лит (литерный) | надо | для | при |
рез(результат) | лог(логический) | если | от | до |
нач(начало) | таб (таблица) | то | знач | выбор |
кон(конец) | нц(начало цикла) | иначе | и | или |
цел (целый) | кц (конец цикла) | всё | ввод | вывод |
вещ (вещественный) | длин(длина) | пока | утв | не |
Общий вид алгоритма:
алгназвание алгоритма (аргументы и результаты)
даноусловия применимости алгоритма
надоцель выполнения алгоритма
начописание промежуточных величин
последовательность команд (тело алгоритма)
кон.Часть алгоритма от слова алгдо слова начназывается заголовком, а часть, заключённая между словами начи кон— телом алгоритма.
Программный способ записи алгоритмов.Алгоритм, предназначенный для исполнения на компьютере, должен быть записан на понятном ему языке. В этом случае язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке — программой.
Классификация алгоритмов.
Алгоритмы машинной графики можно разделить на два уровня : нижний и верхний. Группа алгоритмов нижнего уровня предназначена для реализации графических примитивов (линий, окружностей, заполнений и т.п.). Эти алгоритмы или подобные им воспроизведены в графических библиотеках языков высокого уровня (BGI в Турбо - Паскале) или реализованы аппаратно в графических процессорах рабочих станций (Silicon Graphics и др.). Среди алгоритмов нижнего уровня можно выделить следующие группы : Простейшие в смысле используемых математических методов и отличающиеся простотой реализации. Как правило, такие алгоритмы не являются наилучшими по объему выполняемых вычислений или требуемым ресурсам памяти. Поэтому можно выделить вторую группу алгоритмов, использующих более сложные математические предпосылки (но часто и эвристические) и отличающихся большей эффективностью. К третьей группе следует отнести алгоритмы, которые могут быть без больших затруднений реализованы аппаратно (допускающие распараллеливание, рекурсивные, реализуемые в простейших командах). В эту группу могут попасть и алгоритмы, представленные в первых двух группах. Наконец, к четвертой группе можно отнести алгоритмы со специальным назначением (например, для устранения лестничного эффекта). К алгоритмам верхнего уровня относятся в первую очередь алгоритмы удаления невидимых линий и поверхностей. Задача удаления невидимых линий и поверхностей продолжает оставаться центральной в машинной графике. От эффективности алгоритмов, позволяющих решить эту задачу, зависят качество и скорость построения трехмерного изображения. К задаче удаления невидимых линий и поверхностей примыкает задача построения (закрашивания) полутоновых (реалистических) изображений, т.е. учета явлений, связанных с количеством и характером источников света, учета свойств поверхности тела (прозрачность, преломление, отражение света).