Алгоритмы и исполнители
Понятие алгоритма известно в математике давно. Термин происходит от имени великого ученого мусульманского мира - узбека, жителя города Хорезм Абу-Абдуллы-Мухаммеда ибн Мусы аль Маджуса аль Хорезми (787-850 гг.). Его труд "Китаб мухтасар аль джебр ва-л-мукабала" в XII веке был переведен на латынь и стал доступным для европейцев. В нем были изложены правила 4-х арифметических действий над числами в десятичной системе счисления и правила решения уравнений первой степени. Эти правила и были названы в Европе АЛГОРИТМАМИ.
Алгоритм - это понятное и точное предписание исполнителю выполнить конечную последовательность команд,приводящую от исходных данных к искомому результату.
Свойства алгоритмов:
1. понятность 2. однозначность 3. дискретность (пошаговость) 4. массовость (универсальность) 5. результативность 6. конечность 7. безошибочность
Очевидно, что предписание "Пойди туда, не знаю куда, принеси то, не знаю что" алгоритмом не является.
В качестве исполнителя алгоритмов в "докомпьютерную" эру подразумевался человек (в крайнем случае, животное - в цирке). Человек постоянно пользуется алгоритмами при решении задач, не задумываясь над этим, машинально (автоматически). Наглядными примерами алгоритмов являются различные инструкции, правила, рецепты. Открывая дверь ключом, никто не размышляет над тем, как это сделать. Но чтобы научить этому другого, придется составить алгоритм. Например, так:
1. Достать ключ. 2. Вставить ключ в замочную скважину. 3. Повернуть ключ против часовой стрелки на 2 оборота. 4. Вынуть ключ.
Способы представления алгоритма:
1. словесный; 2. табличный; 3. графический; 4. программа на алгоритмическом языке.
Программа - это алгоритм, записанный на языке исполнителя.
Четвёртый способ – единственный «понятный» компьютеру как автоматическому исполнителю. Первые три служат для понимания решения задачи самим человеком.
В любом алгоритмическом языке (языке программирования) можно выделить четыре основные конструкции (виды алгоритмов):
1. линейный алгоритм (образование последовательности из нескольких команд); 2. алгоритм ветвления (выбор одной или нескольких команд); 3. циклический алгоритм (повторение одной или нескольких команд с заданным количеством повторов или в зависимости от некоторого условия); 4. вспомогательный алгоритм (самостоятельный алгоритм, облегчающий реализацию модульного принципа составления программы).