Для учителей - Городской методический центр

advertisement
Алгоритм
История термина
Определение алгоритма
Формальные свойства алгоритма
Представления алгоритмов
Алгоритм на уроках в начальной школе
Кодирование
Цветной бульвар
Алгори́ тм — набор инструкций, описывающих порядок действий исполнителя
для достижения результата решения задачи за конечное число действий. В старой
трактовке вместо слова «порядок» использовалось слово «последовательность», но по
мере развития параллельности в работе компьютеров слово «последовательность» стали
заменять более общим словом «порядок». Это связано с тем, что работа каких-то
инструкций алгоритма может быть зависима от других инструкций или результатов их
работы. Таким образом, некоторые инструкции должны выполняться строго после
завершения работы инструкций, от которых они зависят. Независимые инструкции или
инструкции, ставшие независимыми из-за завершения работы инструкций, от которых они
зависят, могут выполняться в произвольном порядке, параллельно или одновременно,
если это позволяют используемые процессор и операционная система.
Ранее часто писали «алгорифм», сейчас такое написание используется редко, но,
тем не менее, имеет место.
Часто в качестве исполнителя выступает некоторый механизм (компьютер,
токарный станок, швейная машина), но понятие алгоритма необязательно относится к
компьютерным программам, так, например, чётко описанный рецепт приготовления
блюда также является алгоритмом, в таком случае исполнителем является человек.
Понятие алгоритма относится к первоначальным, основным, базисным понятиям
математики. Вычислительные процессы алгоритмического характера (арифметические
действия над целыми числами, нахождение наибольшего общего делителя двух чисел
и т. д.) известны человечеству с глубокой древности. Однако, в явном виде понятие
алгоритма сформировалось лишь в начале XX века.
Частичная формализация понятия алгоритма началась с попыток решения
проблемы разрешения, которую сформулировал Давид Гильберт в 1928 году. Следующие
этапы формализации были необходимы для определения эффективных вычислений или
«эффективного метода»; среди таких формализаций — рекурсивные функции Геделя —
Эрбрана — Клини 1930, 1934 и 1935 гг., λ-исчисление Алонзо Чёрча 1936 г.,
«Формулировка 1» Эмиля Поста 1936 года и машина Тьюринга. В методологии алгоритм
является базисным понятием и получает качественно новое понятие как оптимальности по
мере приближения к прогнозируемому абсолюту. В современном мире алгоритм в
формализованном выражении составляет основу образования на примерах, по подобию.
История термина
Страница из «Алгебры» аль-Хорезми — хорезмского математика, от имени
которого происходит слово алгоритм.
Современное формальное определение алгоритма было дано в 30—50-е годы XX
века в работах Тьюринга, Поста, Чёрча (тезис Чёрча — Тьюринга), Н. Винера,
А. А. Маркова.
Само слово «алгоритм» происходит от имени хорезмского учёного Абу Абдуллах
Мухаммеда ибн Муса аль-Хорезми (алгоритм — аль-Хорезми). Около 825 года он написал
сочинение, в котором впервые дал описание придуманной в Индии позиционной
десятичной системы счисления. К сожалению, персидский оригинал книги не сохранился.
Аль-Хорезми сформулировал правила вычислений в новой системе и, вероятно, впервые
использовал цифру 0 для обозначения пропущенной позиции в записи числа (её
индийское название арабы перевели как as-sifr или просто sifr, отсюда такие слова, как
«цифра» и «шифр»). Приблизительно в это же время индийские цифры начали применять
и другие арабские учёные. В первой половине XII века книга аль-Хорезми в латинском
переводе проникла в Европу. Переводчик, имя которого до нас не дошло, дал ей название
Algoritmi de numero Indorum («Алгоритмы о счёте индийском»). По-арабски же книга
именовалась Китаб аль-джебр валь-мукабала («Книга о сложении и вычитании»). Из
оригинального названия книги происходит слово Алгебра (алгебра — аль-джебр —
восполнение).
Таким образом, мы видим, что латинизированное имя среднеазиатского учёного
было вынесено в заглавие книги, и сегодня считается, что слово «алгоритм» попало в
европейские языки именно благодаря этому сочинению. Однако вопрос о его смысле
длительное время вызывал ожесточённые споры. На протяжении многих веков
происхождению слова давались самые разные объяснения.
Одни выводили algorism из греческих algiros (больной) и arithmos (число). Из
такого объяснения не очень ясно, почему числа именно «больные». Или же лингвистам
больными казались люди, имеющие несчастье заниматься вычислениями? Своё
объяснение предлагал и энциклопедический словарь Брокгауза и Ефрона. В нём алгорифм
(кстати, до революции использовалось написание алгориѳм, через фиту) производится «от
арабского слова Аль-Горетм, то есть корень». Разумеется, эти объяснения вряд ли можно
счесть убедительными.
Упомянутый выше перевод сочинения аль-Хорезми стал первой ласточкой, и в
течение нескольких следующих столетий появилось множество других трудов,
посвящённых всё тому же вопросу — обучению искусству счёта с помощью цифр. И все
они в названии имели слово algoritmi или algorismi.
Про аль-Хорезми позднейшие авторы ничего не знали, но поскольку первый
перевод книги начинается словами: «Dixit algorizmi: …» («Аль-Хорезми говорил: …»), всё
ещё связывали это слово с именем конкретного человека. Очень распространённой была
версия о греческом происхождении книги. В англо-норманнской рукописи XIII века,
написанной в стихах, читаем:
Алгоризм был придуман в Греции.
Это часть арифметики. Придуман он был мастером по имени Алгоризм, который
дал ему своё имя. И поскольку его звали Алгоризм,
Он назвал свою книгу «Алгоризм».
Около 1250 года английский астроном и математик Иоанн Сакробоско написал
труд по арифметике Algorismus vulgaris, на столетия ставший основным учебником по
вычислениям в десятичной позиционной системе счисления во многих европейских
университетах. Во введении Сакробоско назвал автором науки о счёте мудреца по имени
Алгус (Algus). А в популярной средневековой поэме «Роман о Розе» (1275—1280) Жана де
Мена «греческий философ Алгус» ставится в один ряд с Платоном, Аристотелем,
Евклидом и Птолемеем! Встречался также вариант написания имени Аргус (Argus). И
хотя, согласно древнегреческой мифологии, корабль «Арго» был построен Ясоном,
именно этому Арго приписывалось строительство корабля.
«Мастер Алгус» (или Аргус) стал в средневековой литературе олицетворением
счётного искусства. И в уже упоминавшейся «Романе о розе», и в известной итальянской
поэме «Цветок», написанной Дуранте, имеются фрагменты, в которых говорится, что даже
«mestre Argus» не сумеет подсчитать, сколько раз ссорятся и мирятся влюблённые.
Английский поэт Джефри Чосер в поэме «Книга герцогини» (1369 г.) пишет, что даже
«славный счётчик Аргус» (noble countour Argu) не сможет счесть чудовищ, явившихся в
кошмарных видениях герою.
Впрочем, греческая версия была не единственной. Мифический АлГор (Algor)
именовался то королём Кастилии (Rex quodam Castelliae), то индийским королём, то
арабским мудрецом (philosophus Algus nomine Arabicus), то египетским божеством.
Соответственно АлГорРитм — это ритм (порядок) бога Гора (АлГора).
Однако со временем такие объяснения всё менее занимали математиков, и слово
algorism (или algorismus), неизменно присутствовавшее в названиях математических
сочинений, обрело значение способа выполнения арифметических действий посредством
арабских цифр, то есть на бумаге, без использования абака. Именно в таком значении оно
вошло во многие европейские языки. Например, с пометкой «устар.» оно присутствует в
представительном словаре английского языка Webster’s New World Dictionary, изданном в
1957 г.
Алгоритм — это искусство счёта с помощью цифр, но поначалу слово «цифра»
относилось только к нулю. Знаменитый французский трувер Готье де Куанси (Gautier de
Coincy, 1177—1236) в одном из стихотворений использовал слова algorismus-cipher
(которые означали цифру 0) как метафору для характеристики абсолютно никчёмного
человека. Очевидно, понимание такого образа требовало соответствующей подготовки
слушателей, а это означает, что новая система счисления уже была им достаточно хорошо
известна.
Многие века абак был фактически единственным средством для практичных
вычислений, им пользовались и купцы, и менялы, и учёные. Достоинства вычислений на
счётной доске разъяснял в своих сочинениях такой выдающийся мыслитель, как Герберт
Аврилакский (938—1003), ставший в 999 г. папой римским под именем Сильвестра II.
Новое с огромным трудом пробивало себе дорогу, и в историю математики вошло
упорное противостояние лагерей алгорисмиков и абацистов (иногда называемых
гербекистами), которые пропагандировали использование для вычислений абака вместо
арабских цифр. Интересно, что известный французский математик Николя Шюке (Nicolas
Chuquet, 1445—1488) в реестр налогоплательщиков города Лиона был вписан как
алгорисмик (algoriste). Но прошло не одно столетие, прежде чем новый способ счёта
окончательно утвердился, столько времени потребовалось, чтобы выработать
общепризнанные обозначения, усовершенствовать и приспособить к записи на бумаге
методы вычислений. В Западной Европе учителей арифметики вплоть до XVII века
продолжали называть «магистрами абака», как, например, математика Никколо Тарталью
(1500—1557).
Итак, сочинения по искусству счёта назывались Алгоритмами. Из многих сотен
можно выделить и такие необычные, как написанный в стихах трактат Carmen de
Algorismo (латинское carmen и означает стихи) Александра де Вилла Деи (Alexander de
Villa Dei, ум. 1240) или учебник венского астронома и математика Георга Пурбаха (Georg
Peurbach, 1423—1461) Opus algorismi jocundissimi («Веселейшее сочинение по
алгоритму»).
Постепенно значение слова расширялось. Учёные начинали применять его не
только к сугубо вычислительным, но и к другим математическим процедурам. Например,
около 1360 г. французский философ Николай Орем (Nicolaus Oresme, 1323/25-1382)
написал математический трактат Algorismus proportionum («Вычисление пропорций»), в
котором впервые использовал степени с дробными показателями и фактически вплотную
подошёл к идее логарифмов. Когда же на смену абаку пришёл так называемый счёт на
линиях, многочисленные руководства по нему стали называть Algorithmus linealis, то есть
правила счёта на линиях.
Можно обратить внимание на то, что первоначальная форма algorismi спустя какоето время потеряла последнюю букву, и слово приобрело более удобное для европейского
произношения вид algorism. Позднее и оно, в свою очередь, подверглось искажению,
скорее всего, связанному со словом arithmetic.
В 1684 году Готфрид Лейбниц в сочинении Nova Methodvs pro maximis et minimis,
itemque tangentibus… впервые использовал слово «алгоритм» (Algorithmo) в ещё более
широком смысле: как систематический способ решения проблем дифференциального
исчисления.
В XVIII веке в одном из германских математических словарей, Vollstandiges
mathematisches Lexicon (изданном в Лейпциге в 1747 г.), термин algorithmus всё ещё
объясняется как понятие о четырёх арифметических операциях. Но такое значение не
было единственным, ведь терминология математической науки в те времена ещё только
формировалась. В частности, выражение algorithmus infinitesimalis применялось к
способам выполнения действий с бесконечно малыми величинами. Пользовался словом
алгоритм и Леонард Эйлер, одна из работ которого так и называется — «Использование
нового алгоритма для решения проблемы Пелля» (De usu novi algorithmi in problemate
Pelliano solvendo). Мы видим, что понимание Эйлером алгоритма как синонима способа
решения задачи уже очень близко к современному.
Однако потребовалось ещё почти два столетия, чтобы все старинные значения
слова вышли из употребления. Этот процесс можно проследить на примере
проникновения слова «алгоритм» в русский язык.
Историки датируют 1691 годом один из списков древнерусского учебника
арифметики, известного как «Счётная мудрость». Это сочинение известно во многих
вариантах (самые ранние из них почти на сто лет старше) и восходит к ещё более древним
рукописям XVI в. По ним можно проследить, как знание арабских цифр и правил
действий с ними постепенно распространялось на Руси. Полное название этого
учебника — «Сия книга, глаголемая по еллински и по гречески арифметика, а по немецки
алгоризма, а по русски цифирная счётная мудрость».
Таким образом, слово «алгоритм» понималось первыми русскими математиками
так же, как и в Западной Европе. Однако его не было ни в знаменитом словаре В. И. Даля,
ни спустя сто лет в «Толковом словаре русского языка» под редакцией Д. Н. Ушакова
(1935 г.). Зато слово «алгорифм» можно найти и в популярном дореволюционном
Энциклопедическом словаре братьев Гранат, и в первом издании Большой советской
энциклопедии (БСЭ), изданном в 1926 г. И там, и там оно трактуется одинаково: как
правило, по которому выполняется то или иное из четырёх арифметических действий в
десятичной системе счисления. Однако к началу XX в. для математиков слово «алгоритм»
уже означало любой арифметический или алгебраический процесс, выполняемый по
строго определённым правилам, и это объяснение также даётся в следующих изданиях
БСЭ.
Алгоритмы становились предметом всё более пристального внимания учёных, и
постепенно это понятие заняло одно из центральных мест в современной математике. Что
же касается людей, от математики далёких, то к началу сороковых годов это слово они
могли услышать разве что во время учёбы в школе, в сочетании «алгоритм Евклида».
Несмотря на это, алгоритм всё ещё воспринимался как термин сугубо специальный, что
подтверждается отсутствием соответствующих статей в менее объёмных изданиях. В
частности, его нет даже в десятитомной Малой советской энциклопедии (1957 г.), не
говоря уже об однотомных энциклопедических словарях. Но зато спустя десять лет, в
третьем издании Большой советской энциклопедии (1969 г.) алгоритм уже
характеризуется как одна из основных категорий математики, «не обладающих
формальным определением в терминах более простых понятий, и абстрагируемых
непосредственно из опыта». Как мы видим, отличие даже от трактовки первым изданием
БСЭ разительное! За сорок лет алгоритм превратился в одно из ключевых понятий
математики, и признанием этого стало включение слова уже не в энциклопедии, а в
словари. Например, оно присутствует в академическом «Словаре русского языка»
(1981 г.) именно как термин из области математики.
Одновременно с развитием понятия алгоритма постепенно происходила и его
экспансия из чистой математики в другие сферы. И начало ей положило появление
компьютеров, благодаря которому слово «алгоритм» вошло в 1985 г. во все школьные
учебники информатики и обрело новую жизнь. Вообще можно сказать, что его
сегодняшняя известность напрямую связана со степенью распространения компьютеров.
Например, в третьем томе «Детской энциклопедии» (1959 г.) о вычислительных машинах
говорится немало, но они ещё не стали чем-то привычным и воспринимаются скорее как
некий атрибут светлого, но достаточно далёкого будущего. Соответственно и алгоритмы
ни разу не упоминаются на её страницах. Но уже в начале 70-х гг. прошлого столетия,
когда компьютеры перестали быть экзотической диковинкой, слово «алгоритм»
стремительно входит в обиход. Это чутко фиксируют энциклопедические издания. В
«Энциклопедии кибернетики» (1974 г.) в статье «Алгоритм» он уже связывается с
реализацией на вычислительных машинах, а в «Советской военной энциклопедии»
(1976 г.) даже появляется отдельная статья «Алгоритм решения задачи на ЭВМ». За
последние полтора-два десятилетия компьютер стал неотъемлемым атрибутом нашей
жизни, компьютерная лексика становится всё более привычной. Слово «алгоритм» в наши
дни известно, вероятно, каждому. Оно уверенно шагнуло даже в разговорную речь, и
сегодня мы нередко встречаем в газетах и слышим в выступлениях политиков выражения
вроде «алгоритм поведения», «алгоритм успеха» или даже «алгоритм предательства».
Академик Н. Н. Моисеев назвал свою книгу «Алгоритмы развития», а известный врач
Н. М. Амосов — «Алгоритм здоровья» и «Алгоритмы разума». А это означает, что слово
живёт, обогащаясь всё новыми значениями и смысловыми оттенками.
Определения алгоритма
Формальное определение
Разнообразные теоретические проблемы математики и ускорение развития физики
и техники поставили на повестку дня точное определение понятия алгоритма.
Первые попытки уточнения понятия алгоритма и его исследования осуществляли в
первой половине XX века Алан Тьюринг, Эмиль Пост, Жак Эрбран, Курт Гедель,
А. А. Марков, Алонзо Чёрч. Было разработано несколько определений понятия алгоритма,
но впоследствии было выяснено, что все они определяют одно и то же понятие (см. Тезис
Чёрча — Тьюринга)
Машина Тьюринга
Схематическая иллюстрация работы машины Тьюринга.
Основная идея, лежащая в основе машины Тьюринга, очень
проста. Машина Тьюринга — это абстрактная машина (автомат),
работающая с лентой отдельных ячеек, в которых записаны
символы. Машина также имеет головку для записи и чтения
символов из ячеек, которая может двигаться вдоль ленты. На
каждом шагу машина считывает символ из ячейки, на которую
указывает головка, и, на основе считанного символа и внутреннего
состояния, делает следующий шаг. При этом, машина может
изменить свое состояние, записать другой символ в ячейку или
передвинуть головку на одну ячейку вправо или влево.
На основе исследования этих машин был выдвинут тезис Тьюринга (основная
гипотеза алгоритмов):
Некоторый алгоритм для нахождения значений функции, заданной в
некотором алфавите, существует тогда и только тогда, когда функция
исчисляется по Тьюрингу, то есть когда ее можно вычислить на машине
Тьюринга.
Этот тезис является аксиомой, постулатом, и не может быть доказан
математическими методами, поскольку алгоритм не является точным математическим
понятием.
Рекурсивные функции
С каждым алгоритмом можно сопоставить функцию, которую он вычисляет.
Однако возникает вопрос, можно ли произвольной функции сопоставить машину
Тьюринга, а если нет, то для каких функций существует алгоритм? Исследования этих
вопросов привели к созданию в 1930-х годах теории рекурсивных функций.
Класс вычислимых функций был записан в образ, напоминающий построение
некоторой аксиоматической теории на базе системы аксиом. Сначала были выбраны
простейшие функции, вычисление которых очевидно. Затем были сформулированы
правила (операторы) построения новых функций на основе уже существующих.
Необходимый класс функций состоит из всех функций, которые можно получить из
простейших применением операторов.
Подобно тезису Тьюринга в теории вычислимых функций была выдвинута
гипотеза, которая называется тезис Чёрча:
Числовая функция тогда и только тогда алгоритмически
исчисляется, когда она частично рекурсивна.
Доказательство того, что класс вычислимых функций совпадает с исчисляемыми
по Тьюрингу, происходит в два шага: сначала доказывают вычисление простейших
функций на машине Тьюринга, а затем — вычисление функций, полученных в результате
применения операторов.
Таким образом, неформально алгоритм можно определить как четкую систему
инструкций, определяющих дискретный детерминированный процесс, который ведет от
начальных данных (на входе) к искомому результату (на выходе), если он существует, за
конечное число шагов; если искомого результата не существует, алгоритм или никогда не
завершает работу, либо заходит в тупик.
Другие формализации
Для некоторых задач названные выше формализации могут затруднять поиск
решений и осуществление исследований. Для преодоления препятствий были разработаны
как модификации «классических» схем, так и созданы новые модели алгоритма. В
частности, можно назвать:

многоленточная и недетерминированная машины Тьюринга;

регистровая и РАМ машина — прототип современных компьютеров и
виртуальных машин;

конечные и клеточные автоматы
и другие.
Формальные свойства алгоритмов
Различные определения алгоритма в явной или неявной форме содержат
следующий ряд общих требований:

Дискретность — алгоритм должен представлять процесс решения задачи как
последовательное выполнение некоторых простых шагов. При этом для выполнения
каждого шага алгоритма требуется конечный отрезок времени, то есть преобразование
исходных данных в результат осуществляется во времени дискретно.

Детерминированность (определённость). В каждый момент времени
следующий шаг работы однозначно определяется состоянием системы. Таким образом,
алгоритм выдаёт один и тот же результат (ответ) для одних и тех же исходных данных. В
современной трактовке у разных реализаций одного и того же алгоритма должен быть
изоморфный граф. С другой стороны, существуют вероятностные алгоритмы, в которых
следующий шаг работы зависит от текущего состояния системы и генерируемого
случайного числа. Однако при включении метода генерации случайных чисел в список
«исходных данных», вероятностный алгоритм становится подвидом обычного.

Понятность — алгоритм должен включать только те команды, которые
доступны исполнителю и входят в его систему команд.

Завершаемость (конечность) — при корректно заданных исходных данных
алгоритм должен завершать работу и выдавать результат за конечное число шагов. С
другой стороны, вероятностный алгоритм может и никогда не выдать результат, но
вероятность этого равна 0.

Массовость (универсальность). Алгоритм должен быть применим к разным
наборам исходных данных.

Результативность — завершение алгоритма определёнными результатами.

Алгоритм содержит ошибки, если приводит к получению неправильных
результатов либо не даёт результатов вовсе.

Алгоритм не содержит ошибок, если он даёт правильные результаты для
любых допустимых исходных данных.
Виды алгоритмов
Особую роль выполняют прикладные алгоритмы, предназначенные для решения
определённых прикладных задач. Алгоритм считается правильным, если он отвечает
требованиям задачи (например, даёт физически правдоподобный результат). Алгоритм
(программа) содержит ошибки, если для некоторых исходных данных он даёт
неправильные результаты, сбои, отказы или не даёт никаких результатов вообще.
Последний тезис используется в олимпиадах по алгоритмическому программированию,
чтобы оценить составленные участниками программы.
Виды алгоритмов как логико-математических средств отражают указанные
компоненты человеческой деятельности и тенденции, а сами алгоритмы в зависимости от
цели, начальных условий задачи, путей ее решения, определения действий исполнителя
подразделяются следующим образом:
• Механические алгоритмы, или иначе детерминированные, жесткие
(например, алгоритм работы машины, двигателя и т. п.);
• Гибкие алгоритмы, например стохастические, то есть вероятностные и
эвристические. Механический алгоритм задает определенные действия, обозначая их в
единственной и достоверной последовательности, обеспечивая тем самым однозначный
требуемый или искомый результат, если выполняются те условия процесса, задачи, для
которых разработан алгоритм.
• Вероятностный (стохастический) алгоритм дает программу решения задачи
несколькими путями или способами, приводящими к вероятному достижению результата.
• Эвристический алгоритм (от греческого слова «эврика») — алгоритм,
использующий различные разумные соображения без строгих обоснований.
• Линейный алгоритм — набор команд (указаний), выполняемых
последовательно во времени друг за другом.
• Разветвляющийся алгоритм — алгоритм, содержащий хотя бы одно условие, в
результате проверки которого может осуществляться разделение на несколько
параллельных ветвей алгоритма.
• Циклический алгоритм — алгоритм, предусматривающий многократное
повторение одного и того же действия (одних и тех же операций) над новыми исходными
данными. К циклическим алгоритмам сводится большинство методов вычислений,
перебора вариантов. Цикл программы — последовательность команд (серия, тело цикла),
которая может выполняться многократно (для новых исходных данных) до
удовлетворения некоторого условия.
• Вспомогательный (подчиненный) алгоритм (процедура) — алгоритм, ранее
разработанный и целиком используемый при алгоритмизации конкретной задачи. В
некоторых случаях при наличии одинаковых последовательностей указаний (команд) для
различных данных с целью сокращения записи также выделяют вспомогательный
алгоритм. На всех этапах подготовки к алгоритмизации задачи широко используется
структурное представление алгоритма.
• Структурная блок-схема, граф-схема алгоритма — графическое изображение
алгоритма в виде схемы связанных между собой с помощью стрелок (линий перехода)
блоков — графических символов, каждый из которых соответствует одному шагу
алгоритма. Внутри блока дается описание соответствующего действия. Графическое
изображение алгоритма широко используется перед программированием задачи
вследствие его наглядности, так как зрительное восприятие обычно облегчает процесс
написания программы, ее корректировки при возможных ошибках, осмысливание
процесса обработки информации.
Можно встретить даже такое утверждение: "Внешне алгоритм представляет собой
схему — набор прямоугольников и других символов, внутри которых записывается, что
вычисляется, что вводится в машину и что выдается на печать и другие средства
отображения информации ".
Наличие исходных данных и некоторого результата
Алгоритм — это точно определённая инструкция, последовательно применяя
которую к исходным данным, можно получить решение задачи. Для каждого алгоритма
есть некоторое множество объектов, допустимых в качестве исходных данных. Например,
в алгоритме деления вещественных чисел делимое может быть любым, а делитель не
может быть равен нулю.
Алгоритм служит, как правило, для решения не одной конкретной задачи, а
некоторого класса задач. Так, алгоритм сложения применим к любой паре натуральных
чисел. В этом выражается его свойство массовости, то есть возможности применять
многократно один и тот же алгоритм для любой задачи одного класса.
Для разработки алгоритмов и программ используется алгоритмизация — процесс
систематического составления алгоритмов для решения поставленных прикладных задач.
Алгоритмизация считается обязательным этапом в процессе разработки программ и
решении задач на ЭВМ. Именно для прикладных алгоритмов и программ принципиально
важны детерминированность, результативность и массовость, а также правильность
результатов решения поставленных задач.
Алгоритм — это понятное и точное предписание, исполнительно совершить
последовательность действий, направленных на достижение цели.
Представление алгоритмов
Формы записи алгоритма:

словесная или вербальная (языковая, формульно-словесная);

псевдокод (формальные алгоритмические языки);

схематическая:
o
графическая (блок-схемы и ДРАКОН-схемы);
o
структурограммы (диаграммы Насси-Шнейдермана).
Обычно сначала (на уровне идеи) алгоритм описывается словами, но по мере
приближения к реализации он обретает всё более формальные очертания и формулировку
на языке, понятном исполнителю (например, машинный код).
Схе́ма — графическое представление определения, анализа или метода решения
задачи, в котором используются символы для отображения данных, потока, оборудования
и т. д.
Блок-схема — распространенный тип схем (графических моделей), описывающих
алгоритмы или процессы, в которых отдельные шаги изображаются в виде блоков
различной формы, соединенных между собой линиями, указывающими направление
последовательности.
Основные элементы схем алгоритма
Наименование
Обозначение Функция
Элемент отображает выход во внешнюю среду и
вход из внешней среды (наиболее частое применение
Блок начало-конец
− начало и конец программы). Внутри фигуры
(пуск-остановка)
записывается соответствующее действие.
Выполнение одной или нескольких операций,
обработка данных любого вида (изменение значения
данных, формы представления, расположения).
Блок действия
Внутри фигуры записывают непосредственно сами
операции, например, операцию присваивания: a =
10*b + c.
Отображает
решение
или
функцию
переключательного типа с одним входом и двумя или
более альтернативными выходами, из которых
только один может быть выбран после вычисления
условий, определенных внутри этого элемента. Вход
в элемент обозначается линией, входящей обычно в
верхнюю вершину элемента. Если выходов два или
три, то обычно каждый выход обозначается линией,
выходящей из оставшихся вершин (боковых и
Логический
блок
нижней). Если выходов больше трех, то их следует
(блок условия)
показывать одной линией, выходящей из вершины
(чаще
нижней)
элемента,
которая
затем
разветвляется.
Соответствующие
результаты
вычислений могут записываться рядом с линиями,
отображающими эти пути. Примеры решения: в
общем случае − сравнение (три выхода: >, <, =); в
программировании − условные операторы if (два
выхода: true, false) и case (множество выходов).
Символ
отображает
выполнение
процесса,
состоящего из одной или нескольких операций,
Предопределённый
который определен в другом месте программы (в
процесс
подпрограмме,
модуле).
Внутри
символа
записывается название процесса и передаваемые в
Данные
(ввод-вывод)
Граница цикла
Соединитель
Комментарий
него данные. Например, в программировании −
вызов процедуры или функции.
Преобразование данных в форму, пригодную для
обработки (ввод) или отображения результатов
обработки (вывод). Данный символ не определяет
носителя данных (для указания типа носителя
данных используются специфические символы).
Символ состоит из двух частей − соответственно,
начало и конец цикла − операции, выполняемые
внутри цикла, размещаются между ними. Условия
цикла и приращения записываются внутри символа
начала или конца цикла − в зависимости от типа
организации цикла. Часто для изображения на блоксхеме цикла вместо данного символа используют
символ условия, указывая в нём решение, а одну из
линий выхода замыкают выше в блок-схеме (перед
операциями цикла).
Символ отображает вход в часть схемы и выход из
другой части этой схемы. Используется для обрыва
линии и продолжения её в другом месте (для
избежания излишних пересечений или слишком
длинных линий, а также, если схема состоит из
нескольких
страниц).
Соответствующие
соединительные символы должны иметь одинаковое
(при том уникальное) обозначение.
Используется для более подробного описания шага,
процесса или группы процессов. Описание
помещается со стороны квадратной скобки и
охватывается ей по всей высоте. Пунктирная линия
идет к описываемому элементу, либо группе
элементов (при этом группа выделяется замкнутой
пунктирной линией). Также символ комментария
следует использовать в тех случаях, когда объём
текста, помещаемого внутри некоего символа
(например, символ процесса, символ данных и др.),
превышает размер самого этого символа.
Виды алгоритмов (уроки информатики в начальной школе)
Линейный
Составь блок-схему алгоритма для решения задачи.
Три поросёнка собирали желуди. Ниф-Ниф нашёл 3 жёлудя, Наф-Наф – 8 желудей,
а Нуф-Нуф – 5 желудей. Поросята, довольные своими находками, сложили все желуди в
корзинку и пошли домой. Но тут из-за кустов выскочил злой и голодный волк. Поросята
бросились врассыпную и выронили 4 жёлудя.
Сколько желудей удалось им съесть?
Выполни дома:
1. Составь блок-схему алгоритма для решения задачи.
Клоун Вася показывал фокусы: сначала из шляпы он достал 3 кроликов, потом 5
цветных платочков, затем 8 разноцветных шариков и, наконец, 4 попугаев.
Сколько предметов и живых существ пряталось в двойном дне шляпы?
2. Составь блок-схему алгоритма для решения задачи.
Мальвина и Пьеро писали друг другу стихи. В первом стихотворении Мальвины
было 8 слов, в ответном стихотворении Пьеро – 16. Во втором стихотворении Мальвины –
10 слов, а Пьеро постарался и сочинил поэму из 28 слов.
Сколько всего слов в произведениях героев?
3. Составь блок-схему алгоритма для решения задачи.
Винни-Пух проголодался и пошел в гости, чтобы подкрепиться. Сначала он зашел
к Пятачку и съел 2 горшочка меда. Потом он отправился к Кролику и скушал ещё 3
горшочка меда. После этого, блаженно улыбаясь, он пошел к Ослику Иа-Иа. Ослик
преложил ему 5 горшочков меда и 3 банки малины. Но Винни-Пух не смог этого съесть и
решил взять угощение с собой. По дороге домой он встретил пчел, которые, учуяв запах
меда и малины, с удовольствием набросились на Винни-Пуха. Пришлось с ними
поделиться: Вини отдал им 2 банки малины и 3 горшочка меда, побежал домой и там доел
все, что у него осталось.
Сколько всего меда и малины съел Винни-Пух?
4. Выполни алгоритм по его словесному описанию.
Возьми чистый альбомный лист. Возьми желтый карандаш. Нарисуй на листе
солнце. Положи на место желтый карандаш. Возьми синий карандаш. Нарисуй море.
Положи на место синий карандаш. Возьми зеленый карандаш. Нарисуй лодку. Покажи
рисунок маме.
5. Выполни алгоритм по его словесному описанию.
Возьми пылесос. Включи его. Пропылесось пол в комнате. Выключи пылесос.
Поставь его на место.
Разветвляющийся
Я зовусь ВЕТВЛЕНИЕ,
Милые друзья!
Зависит от условия
Вся судьба моя:
Если ты ответишь “ДА”,
Буду вычитать,
А иначе, а иначе –
Песни распевать.
Составь блок-схему алгоритма для решения задачи.
Красная Шапочка гуляла по лесу и собирала цветочки. Она сорвала 5
колокольчиков, 6 незабудок и 4 василька. Вдруг сзади кто-то захихикал. Красная Шапочка
оглянулась и увидела Серого Волка.
- Милая Красная Шапочка, поделись со мной цветами: если у тебя больше 7
цветочков, дай мне 5, а иначе подари хотя бы 3.
Сколько цветов осталось в букете у Красной Шапочки?
Выполни дома:
1. Составь блок-схему алгоритма для решения задачи.
Белоснежка и семь гномов нашли в Альпах 8 шоколадок. Потом они отправились в
Карпаты и там обнаружили ещё 4 шоколадки, а на Памире они нашли всего 2 шоколадки.
Но там им навстречу вышел Снежный человек и проворчал: “Если у вас 12 шоколадок,
отдайте мне половину, а иначе убирайтесь в свои Альпы!”
Сколько шоколадок осталось у Белоснежки и гномов?
2. Составь блок-схему алгоритма для решения задачи.
Малышу и Карлсону удалось стащить у Фрекен Бок 48 плюшек. Они сидели на
крыше и баловались плюшками: Карлсон съел 25, а Малыш – 14. Но тут появилось
Приведение и сказало: “Если у вас осталось больше 10 плюшек, отдайте мне 10, а иначе –
отдайте 5!”. Захохотав, Приведение взяло плюшки и исчезло.
Сколько плюшек доели испуганные Малыш и Карлсон?
3. Выполни алгоритм по его словесному описанию.
Нарисуй слона. Раскрась его. Рядом нарисуй маленького слоненка. Если на листе
осталось место, нарисуй крокодила, а иначе нарисуй маленькую бабочку на слоне.
4. Выполни алгоритм по его словесному описанию.
Перед сном умойся, почисть зубы. Если у тебя есть любимая игрушка, спой ей
колыбельную песню, а иначе посмотри любимый мультфильм. Потом ложись спать.
Циклический
Цикл с известным числом повторений
(арифметический)
Повторяю я команды
Много-много раз.
Приседаю, отжимаюсь,
Упаду сейчас!
Составь блок-схему алгоритма для решения задачи.
Ленивый кот Василий наблюдал за проворной мышкой: мышка выглянула из
норки, подбежала к столу и стащила 3 кусочка сыра, через 5 минут она сделала то же
самое, а ещё через 2 минуты повторила свой опыт.
Сколько кусочков сыра съест мышиная семья во время обеда?
Выполни дома:
1. Составь блок-схему алгоритма для решения задачи.
Есть у нашего Андрейки
6 монет по 2 копейки
На покупку сладкой плюшки.
Сколько денег у Андрюшки?
2. Составь блок-схему алгоритма для решения задачи.
Мышка зерна собирала,
По три зернышка таскала.
Принесла уж 9 раз.
Каков мышкин стал запас?
3. Выполни алгоритм по его словесному описанию.
Если у тебя есть комнатные цветы, сосчитай их. А потом налей в лейку воды и
полей первый цветок. Перейди к следующему цветку и полей его. Выполни выделенные
действия столько раз, сколько у тебя цветов.
4. Выполни алгоритм по его словесному описанию.
Рисуем абстрактную картину. Подготовь воду. Возьми 7 разноцветных красок, лист
бумаги и кисточку. Выбери цвет. Намочи кисточку. Проведи красивую линию этим
цветом. Выполни выделенные действия 7 раз, меняя цвет.
Цикл ПОКА
Пока я крепок и здоров,
Не вызываю докторов.
Составь блок-схему алгоритма для решения задачи.
По будням я просыпаюсь в 7 часов, умываюсь, завтракаю и иду в школу. В другие
дни я сплю до 9 часов, потом принимаю душ, завтракаю и занимаюсь любимыми делами.
Выполни дома:
1. Составь блок-схему алгоритма для решения задачи.
Крокодил Гена и Чебурашка строили детскую площадку. К ним подошла старуха
Шапокляк и спросила:
- Долго вы тут будете возиться?
- ПОКА светит солнце, - ответили они, - будем трудиться!
2. Составь блок-схему алгоритма для решения задачи.
Яша учится в музыкальной школе. Он не очень любит играть на пианино, но зато
обожает конструктор Лего. Мама, желая сделать из Яши музыканта, сказала:
- Пока ты получаешь пятерки, я буду покупать тебе по 2 конструктора за каждую
пятерку.
- Ура! – воскликнул Яша.
- Но как только перестанешь стараться, я заберу все игрушки и отдам их в детский
сад.
3. Выполни алгоритм по заданной блок-схеме:
Цикл ДО
Учу уроки ДО усталости,
У взрослых нет ни капли жалости!
Составь блок-схему алгоритма для решения задачи.
Вредный, невоспитанный мальчишка рвал цветы и дергал девочек за косички ДО
тех пор, пока мама не увела его домой.
Выполни дома:
1. Составь блок-схему алгоритма для решения задачи.
У Димы 5 кассет. Он покупал новые ДО тех пор, пока их количество не стало равно
20.
2. Составь блок-схему алгоритма для решения задачи.
Алёнка с папой пришли из леса и принесли много грибов. Удивленные Ваня, Рома
и Аллочка решили помочь подруге почистить грибы. Они чистили их ДО тех пор, пока
грибы не кончились.
3. Выполни алгоритм по заданной блок-схеме:
Кодирование информации
При передаче информации происходит кодирование информации, и мы должны
договориться о том, как понимать те или иные обозначения.
Человек выражает свои мысли словами. Они являются алфавитным
представлением информации. На уроках физики при рассмотрении какого-либо явления
мы используем формулы. В этом случае говорят о языке алгебры. Формула - это
математический код. Существует язык глухонемых, где символы - мимика и жесты; язык
музыки,
где
символы
ноты
и
т.д.
Основу любого языка составляет алфавит - конечный набор различных символов, из
которых
складывается
сообщение.
Одна и та же запись может нести разную смысловую нагрузку. Например, набор цифр
251299 может обозначать: массу объекта; длину объекта; расстояние между объектами;
номер телефона; дату 25 декабря 1999 года. Эти примеры говорят, что для представления
информации могут использоваться разные коды, и поэтому надо знать законы записи этих
кодов,
т.е.
уметь
кодировать.
Код - набор условных обозначений для представления информации. Кодирование процесс представления информации в виде кода. Кодирование сводится к использованию
совокупности символов по строго определенным правилам. При переходе улицы мы
встречаемся с кодированием информации в виде сигналов светофора. Водитель передает
сигнал с помощью гудка или миганием фар. Кодировать информацию можно устно,
письменно, жестами или сигналами любой другой природы. По мере развития техники
появились разные способы кодирования информации. Во второй половине XIX века
американский изобретатель Морзе изобрел удивительный код, который служит
человечеству
до
сих
пор.
В качестве источников информации может выступать человек, техническое устройство,
предметы, объекты живой и неживой природы. Получателей сообщения может быть
несколько
или
один.
В процессе обмена информацией мы совершаем две операции: кодирование и
декодирование. При кодировании происходит переход от исходной формы представления
информации в форму, удобную для хранения, передачи или обработки, а при
декодировании
в
обратном
направлении.
Кодирование информации в двоичном коде
Существуют разные способы кодирования и декодирования информации в
компьютере. Это зависит от вида информации: текст, число, графическое изображение
или звук. Для числа также важно, как оно будет использовано: в тексте, или в
вычислениях, или в процессе ввода-вывода. Вся информация кодируется в двоичной
системе счисления: с помощью цифр 0 и 1. Эти два символа называют двоичными
цифрами или битами. Такой способ кодирования технически просто организовать: 1 - есть
электрический сигнал, 0 - нет сигнала. Недостаток двоичного кодирования - длинные
коды. Но в технике легче иметь дело с большим числом простых однотипных элементов,
чем
с
небольшим
числом
сложных.
Кодирование текстовой информации
При нажатии клавиши клавиатуры сигнал посылается в компьютер в виде
двоичного числа, которое хранится в кодовой таблице. Кодовая таблица - это внутреннее
представление символов в компьютере. В качестве стандарта в мире принята таблица
ASCII (American Standart Code for Information Interchange - Американский стандартный
код для обмена информацией). Для хранения двоичного кода одного символа выделен 1
байт = 8бит. Так как 1 бит принимает значение 0 или 1, то с помощью одного байта можно
закодировать 28 = 256 различных символов, т.к. именно столько различных кодовых
комбинаций можно составить. Эти комбинации и составляют таблицу ASCII. Например,
буква S имеет код 01010011; при нажатии ее на клавиатуре происходит декодирование
двоичного кода и по нему строится изображение символа на экране монитора.
Стандарт ASCII определяет первые 128 символов: цифры, буквы латинского алфавита,
управляющие символы. Вторая половина кодовой таблицы не определена американским
стандартом и предназначена для национальных символов, псевдографических и
некоторых нематематических символов. В разных странах могут использоваться
различные варианты второй половины кодовой таблицы. Цифры кодируются по этому
стандарту при вводе-выводе и если они встречаются в тексте. Если они участвуют в
вычислениях, то осуществляется их преобразование в другой двоичный код.
Кодирование чисел.
В двоичной системе счисления для представления используются две цифры 0 и 1.
Действия с числами в двоичной системе счисления изучает наука двоичная арифметика.
Все основные законы арифметических действий для таких чисел также выполняются.
Для сравнения рассмотрим два варианта кодирования для числа 45. При использовании
числа в тексте каждая цифра кодируется 8 битами в соответствии с ASCII (т.е.
потребуется 2 байта): 4 - 01000011, 5 - 01010011. При использовании в вычислениях код
этого числа получается по специальным правилам перевода из десятичной системы
счисления в двоичную в виде 8-разрядного двоичного числа: 4510 = 001011012, что
потребует 1 байт.
Кодирование графической информации
Графический объект в компьютере может быть представлен как растровое или
векторное изображение. От этого зависит и способ кодирования. Растровое изображение
представляет собой совокупность точек различного цвета. Объем растрового изображения
равен произведению количества точек на информационный объем одной точки, который
зависит от количества возможных цветов. Для черно-белого изображения
информационный объем точки равен 1 биту, т.к. она может быть либо белой, либо черной,
что можно закодировать двумя цифрами 0 и 1. Рассмотрим, сколько потребуется бит для
изображения точки: 8 цветов - 3 бита (8 = 23); для 16 цветов - 4 бита (16 = 24); для 256
цветов - 8 битов (1 байт). Различные цвета получаются из трех основных - красного,
зеленого и синего. Векторное изображение представляет собой графический объект,
состоящий из элементарных отрезков и дуг. Положение этих элементарных объектов
определяется координатами точек и длиной радиуса. Для каждой линии указывается ее
тип (сплошная, пунктирная, штрих-пунктирная), толщина и цвет. Информация о
векторном изображении кодируется как обычная буквенно-цифровая и обрабатывается
специальными программами.
Кодирование звуковой информации
Звуковая информация может быть представлена последовательностью
элементарных звуков (фонем) и пауз между ними. Каждый звук кодируется и хранится в
памяти. Вывод звуков из компьютера осуществляется синтезатором речи, который
считывает из памяти хранящийся код звука. Гораздо сложнее преобразовать речь человека
в код, т.к. живая речь имеет большое разнообразие оттенков. Каждое произнесенное слово
должно сравнивать с предварительно занесенным в память компьютера эталоном, и при
их совпадении происходит его распознавание и запись.
Цветной бульвар
Цветно́й бульва́р (до середины XIX века Трубный бульвар) — бульвар в Центральном
административном округе города Москвы. Проходит от Трубной площади до Садового
кольца (Самотёчная площадь). Нумерация домов ведётся от Трубной площади.
Название середины XIX века, дано по существовавшему с 1851 года на этом месте
Цветочному рынку.
В 1789—1791 годах русло реки Неглинной, протекавшей по современному Цветному
бульвару, было превращено в канал, берега которого укрепили каменной кладкой. Разлив
реки в центральной части современного бульвара был превращён в бассейн. В 1819 году
река была убрана в подземную трубу, а бассейн уничтожен. К 1830-м годам на месте
бывшей речной поймы сформировался бульвар.
Первоначально бульвар назывался Трубным бульваром, однако после строительства в
1851 году в этом месте Цветочного рынка получил своё нынешнее название — Цветной
бульвар.
Постепенно бульвар был обстроен каменными домами и приобрёл славу излюбленного
места прогулок и увеселений горожан. К концу века из-за многочисленных питейных
заведений, открывшихся на бульваре, он приобрёл сомнительную славу места, где
собирается городское дно.
В 1880 году на Цветном бульваре был открыт Московский цирк, в 1937 году основан
Центральный рынок. В 1947 территория бульвара благоустроена, а в 1958 открыт
панорамный, позднее широкоформатный кинотеатр «Мир». В 1988 году была открыта
станция метро «Цветной бульвар». В 2007 году в начале Цветного бульвара на Трубной
площади открыта станция «Трубная».
Ещё одна глобальная реконструкция ждала бульвар в начале XXI века. На бульваре был
сооружён фонтан, проведено благоустройство, однако в то же время было вырублено
значительное количество старых деревьев, в связи с чем работы на бульваре подвергались
критике со стороны экологических организаций.
Несколько утратив популярность на рубеже веков, сегодня Цветной бульвар снова
многолюден, во многом из-за популярности бизнес-кварталов, располагающихся по обеим
сторонам бульвара. Однако это не мешает бульвару по-прежнему оставаться
излюбленным местом отдыха и прогулок для большого количества горожан.
Сквер посреди бульвара относится к числу объектов культурного наследия регионального
значения.
Примечательные здания и сооружения
По нечётной стороне

№ 1/25 — Доходный дом Э. И. Альбрехт (1899, архитектор В. В. Воейков).





№ 5, стр. 1-2 — Дом Московского общества гимнастов с гимнастическим залом
(1887, архитектор Б. В. Фрейденберг). Выявленный объект культурного наследия.
№ 9 — Доходный дом (1906, архитектор Н. Д. Струков).
№ 11 — Здание построено в 1881 году для демонстрации различных панорам. По
форме представляло собой глухой восьмигранник, который имел в диаметре около
40 метров. Затем здесь был манеж для верховой езды. В 1957 году здание было
перестроено в кинотеатр «Мир» (архитекторы В. Бутузов, Н. Стригалёва, Н.
Богданов).
№ 13 — Московский цирк Никулина на Цветном бульваре. Здание цирка построено
в 1880 году по проекту А. Е. Вебера. Вплоть до строительства в 1970 году нового
цирка на проспекте Вернадского цирк на Цветном был единственным цирком
Москвы. В 1989 году была проведена масштабная реконструкция (фактически от
исторического здания остался один фасад; В. Красильников, А. Агафонов, Н.
Кудряшов, инженер В. Мириманов). В 2000 году перед зданием цирка установлен
необычный памятник знаменитому клоуну Юрию Никулину по проекту скульптора
Ю. Рукавишникова — бронзовый кабриолет из фильма Кавказская пленница, из
задней дверцы которого прямо на тротуар выходит Никулин.
№ 15 — торговый центр «Цветной» (архитектор Ю. Э. Григорян). До него на этом
месте стояло здание Центрального рынка, построенное в 1959 году.
По чётной стороне







№ 2 — Многофункциональный комплекс «Легенда Цветного», в состав которого
входит 8-этажное здание бизнес-центра класса A+ и три жилые башни. Проект
комплекса, разработанный американским архитектурным бюро NBBJ, отмечен
премией «Urban Awards 2010» и вошёл в число топ-30 самых ярких архитектурных
проектов, реализованных в Москве за последние 10 лет в рамках выставки
«Архитектурная Москва. Комплексный подход» (Международная академия
архитектуры). В комплексе размещаются кафе корпоративного питания, рестораны
«высокой кухни», салон красоты, фитнес-центр, магазины, есть подземный
паркинг.
№ 16 — Здание гостиницы (1880, архитектор Я. Т. Махонин)
№ 22 — Двухэтажный особняк, в котором в 1878—1910 годах жил и работал поэт
В. Я. Брюсов. Объект культурного наследия регионального значения.
№ 22 (во дворе) — Доходный дом (1910, архитектор Б. М. Великовский)
№ 24 — Жилой дом (1857; начало XX в.)
№ 28 — Доходный дом (1874, архитектор П. С. Кампиони).
№ 30 — Типография «Литературной газеты» (1931, архитекторы М. А. Модоров,
Н. В. Лукин). Типичный образец советского конструктивистского стиля. Ныне
здание занимает издательство «Литературная Россия».
Памятник Клоуны
Адрес: Цветной бульвар, 13
Клоуны – так называется необычный памятник-фонтан, который находится
напротив здания цирка на Цветном бульваре в Москве. Открыт он был 14 июня 2002 года
мэром Москвы Юрием Лужковым. Автор скульптурной композиции – Зураб Церетели.
Чаша фонтана накрыта бронзовой решеткой, сквозь которую бьют струи воды. В
центре установлена бронзовая фигура клоуна на одноколесном велосипеде. В одной руке
клоун держит зонт, по которому стекают потоки "дождя", а в другой руке у него чемодан.
Чемодан раскрыт, и из него вываливается второй клоун. Который, видимо, должен был
предстать перед зрителями лишь на арене.
Рядом с фонтаном располагаются еще несколько интересных фигур. Один клоун
оседлал верхом другого, третий изображен готовящимся к кувырку, а четвертый сидит на
площади, будто бы наблюдая за тем, что делают его коллеги. Здесь же находятся
изготовленные из меди чемодан, шляпа, трость и башмак – неразлучные спутники клоуна.
Памятник посвящен памяти любимого всеми артисту Юрию Никулину.
Download