Алгоритмика что это такое – Алгоритмика — Википедия

Алгоритмика — Википедия

Эта страница требует существенной переработки.

Возможно, её необходимо викифицировать, дополнить или переписать.
Пояснение причин и обсуждение — на странице Википедия:К улучшению/26 марта 2017.

Алгоритмика — раздел информатики, дисциплина, изучающая алгоритмы и их применение к решению задач.

Включает теорию алгоритмов, а также разработку, построение алгоритмов, теорию вычислительной сложности алгоритмов.

В Викисловаре есть статья «алгоритмика»
Это заготовка статьи о программировании. Вы можете помочь проекту, дополнив её.
В этой статье не хватает

ru.wikipedia.org

Значение слова АЛГОРИТМИКА. Что такое АЛГОРИТМИКА?

  • Алгоритмика — раздел информатики, дисциплина, изучающая алгоритмы и их применение к решению задач. Включает теорию алгоритмов, а также разработку, построение алгоритмов, теорию вычислительной сложности алгоритмов.

Источник: Википедия

Делаем Карту слов лучше вместе

Привет! Меня зовут Лампобот, я компьютерная программа, которая помогает делать Карту слов. Я отлично умею считать, но пока плохо понимаю, как устроен ваш мир. Помоги мне разобраться!

Спасибо! Я обязательно научусь отличать широко распространённые слова от узкоспециальных.

Насколько понятно и распространено слово конфетка (существительное):

Это слово знает
каждый ребёнок

Достаточно
распространено

Нечасто встретишь
в повседневной ситуации

Узкоспециальный
термин

Что это?
Впервые вижу

Другое
Не знаю

kartaslov.ru

Алгоритм — Википедия

Материал из Википедии — свободной энциклопедии

Алгори́тм (лат. al­go­rithmi — от арабского имени математика Аль-Хорезми

[1]) — конечная совокупность точно заданных правил решения произвольного класса задач или набор инструкций, описывающих порядок действий исполнителя для решения некоторой задачи. В старой трактовке вместо слова «порядок» использовалось слово «последовательность», но по мере развития параллельности в работе компьютеров слово «последовательность» стали заменять более общим словом «порядок». Независимые инструкции могут выполняться в произвольном порядке, параллельно, если это позволяют используемые исполнители.

Ранее в русском языке писали «алгорифм», сейчас такое написание используется редко, но, тем не менее, имеет место исключение (нормальный алгорифм Маркова).

Часто в качестве исполнителя выступает компьютер, но понятие алгоритма необязательно относится к компьютерным программам, так, например, чётко описанный рецепт приготовления блюда также является алгоритмом, в таком случае исполнителем является человек (а может быть и некоторый механизм, ткацкий станок, и пр.).

Можно выделить алгоритмы вычислительные (о них в основном идет далее речь), и управляющие. Вычислительные по сути преобразуют некоторые начальные данные в выходные, реализуя вычисление некоторой функции. Семантика управляющих алгоритмов существенным образом может отличаться и сводиться к выдаче необходимых управляющих воздействий либо в заданные моменты времени, либо в качестве реакции на внешние события (в этом случае, в отличие от вычислительного алгоритма, управляющий может оставаться корректным при бесконечном выполнении).

Понятие алгоритма относится к первоначальным, основным, базисным понятиям математики. Вычислительные процессы алгоритмического характера (арифметические действия над целыми числами, нахождение наибольшего общего делителя двух чисел и т. д.) известны человечеству с глубокой древности. Однако в явном виде понятие алгоритма сформировалось лишь в начале XX века.

Частичная формализация понятия алгоритма началась с попыток решения проблемы разрешения (нем. Entscheidungsproblem), которую сформулировал Давид Гильберт в 1928 году. Следующие этапы формализации были необходимы для определения эффективных вычислений[2] или «эффективного метода»[3]; среди таких формализаций — рекурсивные функции Геделя — Эрбрана — Клини 1930, 1934 и 1935 гг., λ-исчисление Алонзо Чёрча 1936 г., «Формулировка 1» Эмиля Поста 1936 года и машина Тьюринга.

ru.wikipedia.org

Дошкольная алгоритмика: ailev

Вчера началась и будет до 10 декабря 2011г. идти computer science education week (http://ailev.livejournal.com/965761.html). Я уже сегодня выполнил кусочек плана, написал про освоение современного моделирования данных с использованием ISO 15926 (http://dot15926.livejournal.com/27293.html). Завтра вечером -- участие в семинаре по дошкольной алгоритмике, и я сформулировал к этому семинару несколько тезисов:

1. Общественное неприятие дошкольной алгоритмики

Алгоритмика для маленьких детишков -- это фронтир, причем не только технологический, но и социологический. Я помню, что в 1985 году школьная алгоритмика воспринималась как что-то абсолютно нереальное, типа поворотов рек. Дело было даже не в отсутствии компьютеров (первый персональный компьютер IBM появился только в 1980 году, и в 1985 году речь шла только о каких-то восьмибитных машинах для средней школы, но и их не было. 16 бит появились только к концу восьмидесятых). Проблема была в отсутствии учителей, в отсутствии методик, в понимании полной неадекватности опускания в школу такой сложной исследовательской еще на тот момент дисциплины, как алгоритмика.

Все так и оказалось: толковые учителя школьной информатики (под которой часто скрывается не алгоритмика, а "библиотечная информатика") в массе отсутствуют до сих пор, исключения редки и их на все школы явно не хватает, вариантов учебников и курсов много -- а толку не очень.

Сегодня точно такой же холодный приём и профанация уготованы дошкольной алгоритмике/информатике. Отсутствие компьютеров сегодня мало кого волнует: все понимают, что если не сегодня, то через пару лет и железо и софт будут. А вот отсутствие надлежащих воспитателей в детских садиках (первые эксперименты показывают: вполне осмысленно начинать с шестилеток) и учителей начальной школы ничем не хуже, чем отсутствие надлежащих учителей средней школы в середине 80-х. Ну, и ровно такой же интеллектуальный ступор при обсуждении опускания такой сложной дисциплины, как алгоритмика из седьмого класса в подготовительный (даже не в первый).

Но есть еще специфика и младшего возраста. Так, моя тёща придерживается легенды, что "если дитенок в раннем возрасте вундеркинд -- то потом он непременно сдуется в очень посредственного человека". Я не далее как три дня назад предложил тёще эксперимент: она приводит пример хоть каких-нибудь конкретных вундеркиндов (с фамилиями), которые потом "сдувались в посредственность", а я взамен привожу на каждую такую фамилию пять фамилий вундеркиндов, которые вырастали далее академиками и нобелевскими лауреатами. Ибо мне в жизни больше встречались книжки типа "Я -- вундеркинд" Ноберта Винера, чем книжки про то, как очень талантливые дети вдруг становились посредственностями (хотя я понимаю, что про таких людей книжек не пишут).

Я думаю, что тёща является просто выразителем настроений огромного количества людей -- и само словосочетание "дошкольная алгоритмика" будет у всех этих людей вызывать рефлекс типа "не делайте из людей вундеркиндов, чтобы потом они были здоровенькими и успешненькими". Я даю гарантию, что пара миллионов тёщ (многие из которых работают в образовании) не отпустят своих деток на какие-то там занятия алгоритмикой в силу именно этой причины. Некоторые самые образованные из них приплетут при этом Пиаже (который говорил, что мозги дитенков полностью не созревают для сложной логической работы вплоть до 11 лет), а большинство даже этого не будут делать -- скажут "дайте малышу счастливое детство, не грузите его! Это даже для взрослых детей сложно! Не нужно из ребенка делать вундеркинда, сломается -- потом ведь не починишь!".

Я бы адресовал эту тему "не нужно делать из детей вундеркиндов" специально, все эти легенды нужно явно развеивать. Это требует какого-то чуть ли не "пиарного" ответа, преодолевающего эти предрассудки полезности позднего интеллектуального развития по сравнению с вредом раннего.

Мой пойнт тут в том, что сломаться-спиться может и взрослый талантливый человек, это не вопрос. Точно так же талантливый и сообразительный дитенка может и сам просачковать своё образовательное счастье, и подходящие педагоги могут ему помочь расслабиться и забыться -- и превратиться в серость. Лонгитюдных исследований, подтверждающих тупость и серость выросших деток, много и радостно занимающихся в раннем детстве математикой, логикой, информатикой, я не знаю. Но я точно знаю, что занятия по предмету "окружающий мир" (я видел несколько учебников -- все они одинаково ужасны), при которых первоклассник должен знать, что такое копытень, вполне могут приводить детей к тупости и серости.

Если писать нормальную программу исследований по "Дошкольной алгоритмике" (не говоря уже о всей информатике), то придется заниматься и этими вопросами просвещения взрослых -- равно как и многими другими. В дошкольной алгоритмике, как когда-то в школьной, диапазон непонятного простирается от психотехник до содержания предмета, от пиара и чуть ли не политтехнологий до экономики образования, от парадигм программирования до геймдева...

Я вводил бы два критерия успешности любого курса, и не только дошкольной алгоритмики:
А) пониженный возрастной/знаниевый ценз (красивым примером тут является ПиктоМир перед КуМиром, который делает именно это: алгоритмику тщательно очистили от всего ненужного, без утери главного -- и это стало доступно дошкольникам)
Б) сокращенное время подготовки по сравнению с "традиционным" (так, моделирование тай цзи цюаня Бориса Майера даёт где-то пятикратное ускорение по сравнению с традицией, а психонетика Олега Бахтиярова дает где-то от двух до пяти крат ускорение).

2. Способности

У меня про способности есть личная история: я слыхом не слыхивал о программировании, пока не поступил в университет. А потом на первом же занятии по программированию выяснилось, что мне практически не требуются разъяснения преподавателя, и первую в своей жизни программу (сразу с вложенными циклами -- подсчет молекулярных весов разных углеводородов) на перфокартах я подготовил сразу без ошибок. Мне всегда казалось странным, что другие студенты вообще с трудом могли писать эти вложенные циклы даже после нескольких занятий.

Но обычно важны не столько способности, но и как преодолеть их отсутствие: грамоте-то и арифметике учат всех, а не только способных!

Когда-то Белла Котик, изучавшая способности к иностранным языкам, сделала тест, в котором в разные уши одновременно говорились разные слова -- а мерялось их распознавание. Этот тест оказался удивительно прогностичным: он позволял по измеренной лево-правополушарной асимметрии давать рекомендации, кому как лучше учить иностранный язык, и эти рекомендации были удивительно действенны -- можно было сказать, что тест мерял способности для разных методов обучения.

Нам бы в случае программирования тоже что-то такое психофизиологическое найти.

Есть такая штука как "нейрокоррекция", которая заявляет о том, что набором специально подобранных упражнений можно развить те или иные нейромеханизмы (от концентрации внимания до речевых центров). Это очень похоже на то, что делала Белла Котик, только за прошедшие двадцать лет в мозгу от различения всего двух частей -- полушарий -- пришли к необходимости учитывать индивидуальные особенности развития многих разных частей мозга, а также связей между этими зонами.

Если бы удалось мэппировать способности программирования (определяемые диагностикой типа использованной Белой Котик, или используемые сейчас нейрокорректорами) на какие-то нейромеханизмы, то можно было бы думать о создании кастомизированного для каждого ученика наборе упражнений. Пока же эти упражнения в центрах нейрокоррекции делают главным образом для русского языка и арифметики (и, говорят, хорошо помогает). Не удивлюсь, если эти упражнения можно будет упаковать в форму какой-то компьютерной игры (возможно, с контроллерами от Wii или Kinect). И не удивлюсь, если будут существенные возрастные особенности как раз с точки зрения формирования этих механизмов (и в отличие от философствований Пиаже это можно будет как-то померять более аналитически и непосредственно).

Конечно, для этого нужно было бы понять, что делает программист "внутри головы" -- какова внутренняя кодировка понятий, удобная для каких-то мыслительных операций. Так, у хороших музыкантов музыка обычно "видится" в виде какой-то звуковысотной линии. А у кого не "видится" такой линией -- у них плохая память на мелодии. Ментальное пространство обычно довольно сложно организовано и мало кто занимается тем, как оно там устроено -- а ведь этому тоже можно учить! См., например, мой опыт отчуждения такого опыта: http://openmeta.livejournal.com/14954.html (опять же, пардон за много терминологии из другой предметной области).

Если не понимать, что именно даёт "талант" к той или иной деятельности (в нашем случае -- программированию, причем у самых маленьких деток), то мы переходим в деле дошкольной информатики "охоте и собирательству" талантов, что тоже хорошо, но только для спортивных достижений. А нам бы нужно переходить к осёдлому земледелию и выращиванию талантов на потоке -- чтобы уровень действительно талантов был бы вообще невообразимым.

Проблема только в том, что даже для такой крошечной исследовательской программы нужны специалисты самых разных профилей и кто-то типа системного инженера ("системного учёного", хи-хи) для удержания междисциплинарной целостности...

В принципе, есть в летаргическом сне сообщество openmeta -- там несколько сотен человек, из них много увлекающихся психологией, психопрактиками и нейронаукой программистов. Можно было бы развернуть какие-то исследования там, но труд по реанимации тамошней жизни мне представляется сейчас неподъемным.

3. Винегретное образование против последовательного.

Десакрализация знания о том, что вообще возможно в детском возрасте, является ключевой: если "возможно всё, это просто требует времени", тогда становится интересной идея об оптимальной последовательности загрузки знаний. Так, опять нужно будет поднимать вопрос о "параллельно учить всему" или учить сначала логике, затем алгоритмике, затем математике, затем физике -- и только потом переходить к болтологическим предметам типа окружающего мира и литературы. Ибо известно, что из физика литератора можно сделать, а наоборот уже нельзя. Почему это знание применяют только к взрослым людям, но не к детсадовским детям и начальным классам?!

Алгоритмика вполне могла бы быть сдвинута в предметах на максимально раннее обучение, и подана в концентрированном виде -- чтобы потом она могла быть утилизована дальше по жизненному циклу развивающегося сознания.

Если мы даём ребенку "сбалансированный комбикорм знаний и умений", то тогда 100 грамм алгоритмики ПиктоМира будем ему скармливать четыре детсадовских месяца, наряду со многими другими потенциально важными квазидисциплинами (замечу, квазидисциплинами отнюдь не так хорошо проработанными, как алгоритмика -- то есть даже не хорошо сформулированными дисциплинами, ибо не так непонятно, чему учим -- "работе с формами", "развитию речи" и т.д. -- если бы поняли бы, так разработали бы какой-то аналог ПиктоМира. 😉

Мы сначала (или наоборот -- потом) проходим за две недели весь ПиктоМир, а затем (или наоборот -- сначала) осваиваем какие-то другие дисциплины (понятия и связанные с ними ментальные операции), нужные или ненужные -- уже другой, дошкольно-образовательно-политический вопрос.

То, что при групповых задачах в детсадах и школах при любой ориентации на самых сильных общая скорость будет сильно поменьше -- это не вопрос. Но вот аргумент про необходимость растяжки занятий из-за санитарных норм (например, "можно заниматься за компьютером не более 10 минут в день -- сколько дней вам нужно, чтобы пройти ваш курс?") -- это огромный вопрос, и тут много легенд. Большинство санитарных норм для компьютеров были разработаны в те времена, когда мониторы были еще векторными. Я и сам очки ношу с тех самых давних пор. Нынешние мониторы уже по большей части -- такие же, как бумага. Если еще не в этом году, то года через два будут уже такие. Поэтому с ними можно работать не меньше, и не больше, чем любой бумагой. Так что давайте применим к работе с компьютером те же нормы, что и к работе с книжками. А ПиктоМир давать будем на планшете, или наоборот -- на большом экране современного телевизора, чтобы детки могли попрыгать вокруг, не фиксируя взгляд. Так что эти древние санитарные нормы нужно фтопку.

То же самое -- про "число занятий". Это почему занятия идут не каждый день, например? Почему 8 занятий растягиваются на 4 месяца, а не на две пятидневных недели?! Это мы опять возвращаемся к традиционному для многих образовательных дискуссий вопросу о том, давать ли детям винегрет из многих деятельностей и навыков на вход, или впихивать в них что-то по очереди (не забывая потом о "повторении -- матери учения" в составе каких-то сложных навыков. Так, при курсе алгоритмики КуМира для 7го класса по факту повторяются многие темы арифметики начальных классов, и даже материал пятого и шестого класса по математике. Хотел бы я понимать, как организовать деятельность, чтобы дошкольники не забыли свои навыки ПиктоМира -- и это не было бы связано только с переходом к изучению КуМира. Про КуМир ведь те же претензии: если я сейчас доучу дитенка курсу Кириенко, а затем брошу и переключусь на английский с литературой -- что останется от алгоритмики в мозгах буквально через полгода?! Но это и к "растянуто-винегретной" организации курса относится. Две недели ПиктоМира, четыре месяца -- это ведь неважно, проблемы будут похожие. Но я бы в любом случае предпочёл две недели, это мне кажется более адекватным и управляемым.

То есть я призываю временно выкинуть детсадовские и начальношкольные уроки физкультуры, русского языка и пения, чтобы они не мешали урокам алгоритмики, и тогда четыре месяца ужмутся в две недели занятий. Я хотел бы понять, что можно из этого было бы выкинуть перед ПиктоМиром, и что из этого можно было бы выкинуть (или как-то сократить) после ПиктоМира. Но при этом мне нужно будет продемонстрировать пользу знаний алгоритмики маленькими детьми.

Например, моя жена заметила, что после курса алгоритмики дитенка стал много внимательней к "не" в условиях задач -- ибо раньше была тенденция не замечать этого "не". Это означает, что какая-нибудь "логическая физкультура" в арифметических задачах может быть в условиях прохождения курса информатики выкинута, алгоритмика ее заменит с успехом.

То есть я прямо ставлю задачу успешности курса в сокращении общего времени, требуемого для загрузки в голову какого-то набора дисциплин, а не в растягивании этого времени. То есть я бы заставлял оппонентов доказывать, что мне нужно прервать или растянуть курс алгоритмики (которую я считаю кусочком философской логики -- то есть прямым обучением мышлению, рассуждениям, в неменьшей мере, чем математика) для того, чтобы впихнуть в голову дитенки что-то много более важное, чем алгоритмика прямо сейчас.

Но успешность курса (сокращение времени курса) порождает еще одну проблему: дитенки очень быстро вырастают из учебных сред, как и из любых других компьютерных игр. ПиктоМир мой дитенка проходил в вялом режиме с начала апреля по середину мая -- максимум полтора месяца (я уж не помню точно, сколько реально на это ушло дней, и сколько часов -- режим был вялый, я еще тогда не понимал, во что ввязался). Затем пошёл КуМир-робот, 16-и уровней Кириенко которого хватает примерно на полгода (если речь идет о третьекласснике. Если речь идет о первокласснике, то может и на год). Ну, и что делать дальше?!

А дальше у меня полный затык: у меня дитенка будет иметь к Новому Году где-то 8 месяцев учёбы суммарно ЛайтБота, ПиктоМира и КуМира -- и далее полное отсутствие методик, позволяющих что-то делать с младшеклассником дальше! То есть идеи есть (я хочу перевести его на программирование роботов NXT, причем не повторяя курс КуМира с "настоящим цифровым роботом", а заставляя делать хоть что-то сверх этого курса -- программировать датчики и т.д.. Идея же переходить на Питон и продолжать работу с арифметикой или строками не кажется мне для младшешкольников интересной: я неоднократно получал обратную связь от дитенки, что "невозможно ходить в музеи, в которых ничего не движется, невозможно играть в игры, в которых ничего не движется, невозможно решать задачи, в которых ничего не движется" -- робот ведь как раз хорош тем, что он движется!

Итого: мы имеем хороший старт и первых два шага, но полную неизвестность, что потом, а до средней школы еще как до Луны. То есть я бы признал ключевую роль ПиктоМира и ЛайтБота в самой возможности говорить о дошкольной алгоритмике, но тут же не стал бы зацикливаться только на полутора месяцах из долгого учебного пути. Обучение дошкольников и младшешкольников становится дорогой, идущей из хорошо утоптанного места практически в никуда: никакого стыка с уже имеющимися образовательными курсами по алгоритмике для младшего школьного возраста не наблюдается, равно как и стыка с любыми другими предметами. А прерывать занятия ой как неправильно! Я серьезно считаю, что информатика (философская логика) должна быть курсом не менее базовым, чем математика, и проходить тоже через всю школьную программу.

Я, кстати, высказывал идеи о "языковой лестнице" (http://ailev.livejournal.com/955671.html): на мой взгляд, в алгоритмике должно существовать три уровня языка -- ПиктоМир, Ершол и сразу какой-нибудь Питон (выходящий на Аналогового Робота с изобилием датчиков -- жаль, реализация питона для NXT довольно дохлая по сравнению со многими другими). А ведь есть еще и информатика в целом, куда алгоритмика входит каким-то кусочком...

Про моделирование данных, онтологию и т.д. я пока молчу: мне бы пока про алгоритмику договориться, а там уж разберемся и с Онтоланом.

То есть я бы озаботился какой-то целостной системой образования для малолеток, мне лично полутора месяцев счастья и восторгов от ПиктоМира мало, и даже КуМир при таком лихом старте оказывается в его нынешнем состоянии не слишком адекватным. Нужно думать дальше.

4. Педагогическая утилизация полученных в курсе алгоритмики знаний и умений.

Я бы переформулировал тезис конкурирующих за образовательное время оппонентов о важности "развития метапредметных навыков, составляющих основу "умения учиться": планировать и организовывать свою деятельность, выбирать наиболее эффективный способ, дробить сложные действия на простые" и т.д. по-другому. Например, сначала максимально быстро проходим ПиктоМир, затем пытаемся развить успех -- и получаем классическую цель курса алгоритмики: умение деток описывать не только свои прошлые или настоящие действия, но и будущие (см. "12 лекций Лебедева, Кушниренко", в которых это разжёвывается в самом начале: http://www.niisi.ru/kumir/books.htm). И уже на этой базе можно думать, как ускорить работу по планированию и организации своей деятельности (например, используя пятичастную модель психики, и существенно задействовав "экзокортекс" -- http://openmeta.livejournal.com/211234.html, то есть заставляя дитенка не играть из себя гроссмейстера, планируя свои действия "без доски", а используя какие-то внешние представления для этих действий и прямо аппелируя к опыту алгоритмики). Более того, и про "способ" уже будет терминология, и про "дробить сложные действия на простые" -- это ведь всё в ПиктоМире проходится, нужно только не забывать давать этому имена, чтобы потом иметь возможность обратиться к этому опыту дитенка дальше.

Конечно, для обобщения и переноса навыка нужно иметь несколько нотаций (исполнительных сред) -- поэтому сойдёт и листок бумажки, и бегание дитенков по клеточкам на полу, и ПиктоМир (а я использовал еще и ЛайтБот как альтернативную среду -- конечно, там было освоено всего штук шесть-семь задач, и еще буквально несколько задач ЛайтБота 2 -- но дитенка уловил "общий смысл такого типа задач", мне этого было достаточно).

Я бы считал, что нужно создать основу, научить мыслить на примере алгоритмики и робота -- а потом умение "учить учиться" как рефлексивное приложение основ алгоритмики к себе самому будет достижимо много проще, и представлять уже работу других групп, а не "дошкольной алгоритмики". Из "дошкольной алгоритмики" нужно будет только выдать надлежащие интерфейсы: инструкцию по педагогической утилизации полученных в курсе алгоритмики знаний и умений.

Традиционные цели научения дитенков "планировать и организовывать свою деятельность" могут быть уточнены как "писать планы" (планировать) и "воображать себя их исполнителем" (организовываться. Если организовывать -- то нагружать исполнительством каких-то планов других людей). Если детки не умеют писать планы, то они сумеют их набирать из плашек с картинками. Дайте им плашки с картинками возможных действий, и поместите их на поле, похожее на панель программирования ПиктоМира -- и крутость этого будет в том, что эти возможные действия будут касаться будущего, а не настоящего или прошлого. А затем предоставьте им возможность выполнить план. От индивидуальных планов можно потом перейти к набору индивидуальных планов для групповой деятельности, т.е. воспитывать навыки организовывания. Планы, зафиксированные не в речи, а "в экзокортексе" хороши тем, что в них можно искать ошибки, их оптимизировать, передавать другим исполнителям, делать по ним "разбор полётов" в плане получения опыта и т.д.. Повторюсь: для деток можно использовать формализм исполнителей для какой-то деятельности, и планы формулировать пиктограмками команд этих исполнителей -- ровно в стиле КуМира. Деятельность же -- любая по выбору.

Если материал усвоен, то перенос на другие контексты неминуем. Так, мой дитенка увидел видео робота-лего, выкладывающего домино плашка за плашкой -- и так до края стола. Он пялился в экран некоторое время, и вдруг говорит: "папа, смотри -- это ведь у робота "нц пока"!". Из моего консалтингового опыта я думаю, что сначала будет освоение программных конструктов, затем эти конструкты будут замечаться в предметах и явлениях окружающего мира, и только потом эти конструкты будут применены к себе. Это сознательное применение программ (в данном случае планов) к себе -- это и есть такой переход от ПиктоМира (и -- тем более -- КуМира) к организации собственной деятельности. Но это уже не алгоритмика, это уже педагогическая утилизация алгоритмики: и эту дисциплину "самопрограммирования" нужно строить (кстати, во многом по образцу нейролингвистического программирования: там ведь слово "программирование" неслучайно появилось. Другое дело, что НЛП -- особенно в новом коде -- пытается задействовать интерфейс "сознание-бессознательное", что совсем необязательно в том простейшем использовании навыков алгоритмики при планировании деятельности, каковое предлагаю я).

Это ведь очень важно: умение подчинить себя внешним правилам, выполнить какой-то алгоритм для какой-то предметной области. Объяснить это в разы легче, если у дитенков уже есть в голове понятие алгоритма. Понятие исполнителя тоже можно ввести, для этого у ПиктоМира просто должен быть не только мир Робота, но и пара-тройка других простых миров. А далее -- перенос на жизнь и планирование собственных и чужих действий.

Как всегда -- вопрос в выборе деятельностей (миров) и задач в них. Готовка пищи -- классика жанра для этого возраста. Можно сборка каких-нибудь моделей (но если модели не будут потом двигаться в конце -- это плохо). Можно расписание занятий (сама идея расписания -- это же план!). Можно что угодно.

5. Играбельность против учебности.

Все эти "удовольствия от действий" подробно обсуждаются в так называемой теории "сдвига мотива на цель" А.Леонтьева. На эту тему много разной литературы. Это подробно обсуждалось в эпоху дискуссий про edutainment и объективизацию характеристик "играбельности" в индустрии компьютерных игр. Я, кстати, группы задач в ПиктоМире называл не "игры" или "уроки", а "уровни" (как в компьютерных играх), а самую трудную последнюю задачу -- "боссом". В результате разница между прохождением какой-то трудной игры и занятиями программированием снималась как минимум терминологически, что явно способствовало. Это, конечно, не означает, что тут всё просто: даже в случае абсолютно неучебных компьютерных игр дитенка очень разборчив -- во что он играть будет, а во что не будет, какого босса побеждать будет (и три раза подряд потом повторять достижение), а какого не будет -- забросив тем самым и прохождение всей компьютерной игры.

"Сержантский метод" и КуМир, кстати, эту "играбельность" напрочь игнорирует -- а вот ПиктоМир, похоже, как-то учитывает.

Я вот разыскал тред 2005г. про Играбельность психопрактик -- http://openmeta.livejournal.com/169434.html (там, правда, совсем уже не про программирование и много очень специфичной для психопрактик терминологии, но в комментах много любопытных замечаний про собственно играбельность -- связь ее, например, со всякой ритмичностью).

Мысль о выносе обучения алгоритмике в том же ПиктоМире за пределы компьютера я пока даже не прорабатываю: Цифровой Настоящий Робот (тележка на полях типа тех, что используются в соревнованиях роботов -- только умеющая выполнять "цифровые команды". Аналоговый робот после команд "вперед", "разворот", "вперед" ведь не приходит в точку, откуда он выехал), Wii и Kinect позволяют вполне себе выйти из виртуальности в реальность, хотя не факт, что они улучшат время обучения -- но могут поднять ту самую играбельность.

Но вот на форуме у того же Долинского (http://dl.gsu.by/NForum/forum/list/16.dl) я подсмотрел, что детки могут воспринимать задачи абсолютно по-другому, если тупо поменять фон: то есть вместо "космодрома с зеленой краской" нарисовать "цветочное поле" и "срывать красные цветочки" тем же роботом. Другое дело, что это добавляет еще понятия (сорвать цветочек вместо закрасить клетку), но не меняет операционную модель -- и тут нужно найти баланс между необходимостью разнообразия и вынужденностью однообразия. Программно это просто загрузка вместо одних пикселей других пикселей, делается "на раз". И таких приёмов можно найти много.

Обращу внимание, что для "игрового ПиктоМира" прежде всего нужна работа хорошего дизайнера и лихие анимации (раз уж речь идет об iOS и планшетах) -- это как минимум, может выиграть мнение родителей, если не самих детей. См. дискуссию с родителями тут: http://ailev.livejournal.com/922715.html (апрель месяц, когда Анатолий Георгиевич Кушниренко показал мне ПиктоМир и посоветовал попробовать). Родители и сами дети игнорируют "учебность" (т.е. возможность чему-то научить, а не просто развлечь), но очень хорошо замечают "играбельность". Умные идеи насчет разделения на отдельно синтаксис и представление языка, отдельно концепты программирования (команды, последовательность, цикл-повторитель, условия), отдельно исполнителей с их предметной спецификой, сама удивительная возможность научить шестилеток программированию по факту оказываются незамеченными (ни один из моих знакомых программистов не обратил на эти идеи внимания -- для них ПиктоМир полностью был эквивалентен ЛайтБоту, который в плане содержания образования учит совсем не тому), но вот "по одёжке встречают" -- и привлечение какого-нибудь профессионала в одёжке/геймдеве было бы для проекта существенным.

ailev.livejournal.com

это процесс построения алгоритма решения задачи. Алгоритм и алгоритмизация в информатике

Алгоритмизация – это сложный научный, технический, математический термин, рассматриваемый разными науками и имеющий много значений, не совпадающих друг с другом.

Классический подход

Наиболее общее понятие алгоритмизации – это процесс формирования алгоритмов, программ. Предполагается систематический подход к составлению последовательности, позволяющей решить некоторую прикладную задачу. Если необходимо создать программу для компьютера, решить при помощи такого продукта четко определенную задачу, необходимо предварительно составить алгоритм этого решения – этот шаг считается обязательным.

Алгоритмизация – это детерминированный подход к решению задачи, что исключительно значимо для алгоритмов, программ прикладного класса. Одновременно результат должен быть массовым, эффективно рассчитывающим ответ. Правильно сформированный алгоритм – залог верного решения заранее сформулированного вопроса.

Возможные определения

Слово можно расшифровать не только описанным выше способом. В частности, в соответствии со словарными определениями, алгоритмизация – это этап работы над задачей, во время которого формулируют алгоритм, позволяющий решить проблему. Альтернативная трактовка – область информатики, посвященная методикам, способам создания алгоритмов. Кроме того, алгоритмизация рассматривает свойства алгоритмов. Иногда эту науку называют алгоритмикой.

В соответствии с иными понятиями алгоритмизация – описательный процесс, дающий представление об очередности действий, исполняемых для решения задачи. Другие издания формулируют суть алгоритма как точное описание заданного процесса и формулирование инструкций, в соответствии с которыми можно его исполнить. Создание алгоритма трудоемко и сложно, а алгоритмизация – техника, позволяющая сформулировать действительно эффективный, оптимизированный комплекс последовательных операций, реализуемых при помощи ЭВМ.

Процессы и этапы

Алгоритмизация – такая описательная работа, которая дает представление о происходящих внутри задачи процессах. Описывают их при применении математических символов. Это позволяет получить алгоритм, в котором заключены все элементарные акты задачи, присутствующие между ними связи, последовательности, причины и следствия. Сформированные в ходе алгоритмизации алгоритмы в общем случае разрабатываются именно для электронно-вычислительной техники.

Алгоритм и алгоритмизация – два очень важных понятия для любого, кто вынужден работать с поиском путей решения различных сложных задач. Формирование эффективной последовательности действий, которая отражала бы происходящие в реальности процессы, в большинстве случаев предполагает последовательное нахождение ответов на два вопроса:

  • Какие системы информационной обработки будут эффективными в конкретном случае?
  • Каковы математические методики функционирования применительны к крупным системам?

Особенности вопроса

Рассматривая методы информобработки, следует сперва создать алгоритм, который бы детально описывал, как система работает. Затем формируется последовательность действий, позволяющая определить оптимальные решения, а также алгоритмизируется управленческий процесс. В некоторых случаях требуется создание последовательности для выявления значений, характеризующих управление.

Задачи по алгоритмизации, рассматривающие второй вопрос, предполагают наличие большой системы. В ней можно одновременно проводить не только качественные, но и количественные исследования. Это позволяет оценивать ключевые особенности системы – надежность, результативность.

Как это работает?

Этапы алгоритмизации предполагают последовательное выделение элементарных актов. Каждый из них должен быть такого уровня, чтобы удалось описать его математическими функциями, применяя подходы алгебры логики. Пользу при построении алгоритма принесут также теории конечных автоматов, случайных процессов, массового обслуживания. При этом выявляются соотношения, которые описывают взаимные связи между элементарными актами. На основании таких данных формулируется система, которая и становится полноценным алгоритмом, применимым для дальнейшей работы.

Процедуры, операции, включенные в описание процесса через алгоритм, наиболее удобно фиксировать, применяя специальные языки программирования. Особенно актуально это, если процесс построения алгоритма необходим для последующего воплощения кода на электронно-вычислительной машине. Созданный человеком код затем обрабатывается транслятором и переводится в операционный язык, понятный для заданной машины. Нередко один шаг алгоритма – это несколько реализуемых машиной операций.

Кому и как?

О том, что такое алгоритм в информатике, могут рассказать программисты. Но эта наука в целом и техники программирования в частности – совершенно особенный вопрос, требующий отдельного рассмотрения. Что касается алгоритмизации применительно к прочим областям, то решением связанных с формированием последовательностей действий должен заниматься узкоспециализированный персонал – алгоритмисты. Последовательность действий включает в себя:

  • анализ исходных данных;
  • выявление самых значимых аспектов;
  • формализацию ключевых моментов;
  • представление данных символами;
  • формирование цельной последовательности операций.

Фактически алгоритмизация – сложный процесс, сам по себе в некоторой степени описываемый алгоритмом. Важная особенность – четкость, математичность, логичность подхода и результата.

Зачем это нужно?

Где можно встретить примеры алгоритмизации на практике? Иным может показаться, что это «наука в себе», не слишком применимая для чего-либо. На самом деле алгоритмизация – это эффективный метод автоматизации широчайшего спектра задач, рабочих процессов, в которых участвуют люди. Формирование программ, алгоритмов в первую очередь используется для упрощения вычислительных задач, которые раньше можно было решить только вручную. Несколько реже алгоритмизация позволяет создать последовательность действий управления машинами.

Алгоритмизация позволяет эффективно переформулировать исходный (зачастую довольно хаотичный) объем информации в алгоритмический вид, четкий, упорядоченный и структурированный. При этом выделяют все объекты, которые участвуют в операциях, идентифицируют их, определяют исполнителей и задают алгоритм последовательных действий. Важное условие – обязательная однозначность толкования любого этапа. После А всегда следует В, а не «может, В, а может, С, вы уж решите сами, как лучше». Это правило – основа алгоритмизации.

Информация и алгоритмы

Представленные в алгоритмической форме сведения – данные, продуцируемые алгоритмизацией. Для них невозможны многозначные интерпретации. Что такое алгоритм в информатике, математике, логике? Это такая последовательность, которую исполнитель может понять, имея перед собой только этот документ и никаких сторонних источников, условий, объяснений операциям. В алгоритме всегда указывается порядок действий. Без этой информации система не может считаться полноценной и применимой на практике.

Алгоритмизация и языки программирования были разработаны людьми, но не только лишь для себя. Исполнять готовый результат может и машина, причем не только высокопродуктивный и сложноорганизованный компьютер, но и более простое автоматизированное устройство. Применяются следующий типы последовательности операций:

  • линейные;
  • циклические;
  • ветвления;
  • смешанные.

А если поподробнее?

Если внимательно изучить основы алгоритмизации, можно найти подробное описание всех типов последовательностей действий. Разберем их детальнее.

Линейная предполагает наличие четкой последовательности по шагам: есть первая операция, вторая и так далее. Отклонения от схемы не допускаются, вариантов корректировки не предусмотрено.

Ветвление – возможность несколько корректировать последовательность. Для этого формулируются условия, решаемые в ходе предыдущих операций (одной или нескольких). Ветвление – это не переход к уже прошедшей ранее операции, а лишь выбор одного из путей продолжения последовательности.

Продолжая тему

Цикл практически идентичен ветвлению, но позволяет возвращаться к операции, уже пройденной в ходе исполнения алгоритма.

Наконец, в основах информатики рассматривается смешанный вариант последовательности алгоритмизованных действий. В таком будут участки линейные, циклические, ветвления – все возможные формы. Если программа, алгоритм являются сложными, можно с уверенностью говорить, что они принадлежат именно к такой форме, ее просто невозможно избежать. Причем сложность – понятие очень и очень растяжимое. То, что для обычного человека кажется элементарной задачей, при формулировании ее в виде алгоритма может превратиться длительную последовательность действий разного плана и характера. Задача алгоритмиста – учитывать все возможные состояния всех включенных в систему объектов.

Инструкции и алгоритмы

Фактически с алгоритмизацией, как и с основами информатики, мы сталкиваемся в повседневной жизни, просто привыкли к этому и не замечаем, не обращаем внимание. К примеру, технологические инструкции – это классический образец алгоритма.

Исполнительные инструкции обычно составляются применительно к разнообразным объектам – клапанам, агрегатам, вытяжкам, двигателям. В инструкции описываются физические операции – взять, поднять, закрыть. Когда речь идет о вычислительной машине, объекты в алгоритме будут математические, действия, соответственно, такие же. Алгоритм может быть посвящен формулам, таблицам, в которые скомпонованы значения, а действия бывают самыми разными – от простейших вычислений до довольно сложных для человека матричных табличных операций. Инструкция обычно содержит условие, соответствующее правилам логики. Если удалось достигнуть необходимого показателя – можно продолжать движение по алгоритму или завершить его, в противном случае придется пройти еще один цикл. Также алгоритмы в норме имеют «запасной выход» на случай внештатной ситуации. Применительно к человеческой повседневности можно найти аналог в виде «Сообщить руководству о неполадке».

Алгоритмизация: подход расширенный и специализированный

Некоторые считают, что алгоритмизация – это в первую очередь процесс переформатирования данных в более упорядоченный вид. Сперва исследуется исходная ситуация, анализируется сопровождающая ее информация, документация, особенности, пожелания. Одновременно с этим алгоритмизация – это вполне четкая и ограниченная по масштабу задача создания инструкций. Она имеет свои сложности и особенности.

Объект алгоритмизации

Принято говорить о таких объектах, которые могут совершать действия, а также тех, над которыми таковые производятся. Для каждого объекта характерно некоторое определенное состояние и возможность перехода между ними. Знание полного набора атрибутики позволяет создать корректный и точный алгоритм, который будет работать, не требуя дополнительных действий, за исключением уже вписанных в программу.

Ключевое условие, первое, которое проверяется применительно к объекту – присутствие его именно в таком состоянии, которое допускает исполнение предусмотренных алгоритмом функций. В случае если объект не прошел предварительную подготовку, он неисправен, не подходит (словом, любое препятствие), состояние становится неработоспособным, следовательно, действия, предписанные алгоритмом, не могут выполняться.

Алгоритмизация применительно к реальности

В повседневности алгоритмы применимы к самым разным реальным объектам – персоналу, оборудованию. Состояние его должно быть таким, чтобы возложенные в соответствии с программой операций функции исполнялись бы успешно, качественно, без сбоев. Учитывать это важно при формулировании инструкций. Так, если речь идет о каком-либо оборудовании, его нужно предварительно собрать, почистить, протестировать, только после этого ознакомить персонал с правилами использования и начать применять инструкцию в деле.

Применительно к машинному алгоритму ситуация сходная, разве что в качестве объекта будут выступать устройства, а сами шаги обычно должны быть более детальными, дабы аппарат смог правильно их интерпретировать и исполнить. При этом последовательность должна быть предельно четкой, иначе агрегат просто не сможет догадаться – ведь это не человек, обладающий волей, интуицией, способностью рассуждать на примере уже полученного опыта.

А что с обучением?

Важное понятие – алгоритмизация обучения. Оно предполагает составление такой последовательности действий, которая поможет научить целевой объект (машину или человека) исполнять заданные операции. В качестве начального этапа рассматривается состояние полного отсутствия знаний и представлений о целевом объекте. Алгоритм обучения должен содержать такую последовательность операций, которая позволит получить объекту представление о процессе, полезную информацию, применяемую дальше на практике. Формулирование сложных и эффективных алгоритмов обучения в последнее время стало особенной областью внимания передовых умов нашего мира в силу повышения интереса к искусственному интеллекту и обучаемости машин.

Алгоритм обучения начинается с рассмотрения простейших задач. Если предстоит работа с людьми, то даются поручения, которые позволяют освоить базовые понятия и процессы системы. Постепенно задачи усложняются, и в какой-то момент объекты алгоритма обучения могут не просто с легкостью решать поставленные перед ними задачи, но и учить других – особенно актуально это, конечно, применительно к людям.

fb.ru

понятие, свойства, структура и виды

Практически все в нашем мире подчиняется каким-то законам и правилам. Современная наука не стоит на месте, благодаря чему человечеству известна масса формул и алгоритмов, следуя которым, можно рассчитать и воссоздать множество действий и строений, созданных природой, и воплотить в жизнь идеи, придуманные человеком.

В этой статье мы разберем основные понятия алгоритма.

История появления алгоритмов

Алгоритм - понятие, появившиеся в XII веке. Само слово "алгоритм" происходит от латинской интерпретации имени известного математика среднего востока Мухаммеда аль Хорезми, который написал книгу "Об индийском счете". В этой книге описано, как правильно записывать натуральные числа, используя арабские цифры, и приведено описание алгоритма действий столбиком над такими числами.

В XII веке книга "Об индийском счете" была переведена на латинский язык, тогда-то и появилось данное определение.

Взаимодействие алгоритма с человеком и машиной

Создание алгоритма требует творческого подхода, поэтому новый список последовательных действий может создать только живое существо. А вот для исполнения уже существующих инструкций фантазию иметь не обязательно, с этим справится даже бездушная техника.

Отличным примером точного исполнения заданной инструкции является пустая микроволновая печь, которая продолжает работать, несмотря на отсутствие пищи внутри нее.

Субъект или объект, которому не обязательно вникать в суть алгоритма, называется формальным исполнителем. Человек тоже может стать формальным исполнителем, однако в случае нерентабельности того или иного действия мыслящий исполнитель может все сделать по-своему. Поэтому основными исполнителями являются компьютеры, микроволновые печи, телефоны и другая техника. Понятие алгоритма в информатике имеет самое важное значение. Каждый алгоритм составляется с расчетом на конкретного субъекта, с учетом допустимых действий. Те объекты к которым субъект может применить инструкции, составляют среду исполнителя.

Практически все в нашем мире подчиняется каким-то законам и правилам. Современная наука не стоит на месте, благодаря чему человечеству известна масса формул и алгоритмов, следуя которым, можно рассчитать и воссоздать множество действий и творений природы и воплотить в жизнь идеи, придуманные человеком. В этой статье мы разберем основные понятия алгоритма.

Что такое алгоритм?

Большинство действий, которые мы выполняем в течение своей жизни, требуют соблюдений ряда правил. От того, насколько верное представление имеет человек о том что, как и в какой последовательности он должен сделать, зависит качество и результат выполнения поставленных перед ним задач. С детства родители пытаются выработать в своем чаде алгоритм основных действий, например: проснуться, заправить постель, умыться и почистить зубы, сделать зарядку, позавтракать и т. д., список, который человек всю жизнь выполняет с утра тоже можно считать своеобразным алгоритмом.

Алгоритм - это понятие, обозначающее подборку инструкций, которые необходимо выполнять человеку для того, чтобы решить определенную задачу.

Вообще, алгоритм имеет множество определений, несколько ученых характеризуют его по-разному.

Если алгоритм, применяемый человеком ежедневно, у каждого свой, и может изменятся в зависимости от возраста и ситуаций, в которых оказывается исполнитель, то свод действий, которые нужно выполнить для решения математической задачи или для использования техники, един для всех и всегда остается неизменным.

Существует разное понятие алгоритма, виды алгоритмов тоже разнятся - к примеру, для человека, который преследует какую-либо цель, и для техники.

В наш век информационных технологий люди ежедневно выполняют свод инструкций, созданных до них другими людьми, ведь техника требует при использовании точного исполнения ряда действий. Поэтому основная задача преподавателей в школах - научить детей пользоваться алгоритмами, быстро схватывать и изменять уже существующие правила в соответствии со сложившейся ситуацией. Структура алгоритма является одним из тех понятий, которое изучается на уроке математики и информатики в каждой школе.

Основные свойства алгоритма

1. Дискретность (последовательность отдельных действий) - любой алгоритм должен представляться в виде ряда простых действий, каждое из которых должно начинаться после завершения предыдущего.

2. Определенность - каждое действие алгоритма должно быть настолько простым и понятным, чтобы у исполнителя не возникало вопросов и не оставалось свободы действий.

3. Результативность - описание алгоритма должно быть понятным и законченным, чтобы после выполнения всех инструкций задача достигала логичного конца.

4. Массовость - алгоритм должен быть применим к целому классу задач, решить которые можно, лишь поменяв в алгоритме цифры. Хотя есть мнение, что последний пункт относится не к алгоритмам, а ко всем математическим методам в целом.

Часто в школах, чтобы дать детям более понятное описание алгоритмов, учителя приводят в пример приготовление пищи по кулинарной книге, изготовление лекарства по рецепту или процесс мыловарения на основе мастер-класса. Однако, учитывая второе свойство алгоритма, в котором говорится о том, что каждый пункт алгоритма должен быть настолько понятным, чтобы его мог выполнить абсолютно любой человек и даже машина, можно прийти к выводу что любой процесс, требующий проявления хоть какой-то фантазии, алгоритмом назвать нельзя. А готовка и рукоделие требуют определенных навыков и хорошо развитого воображения.

Существуют разные типы алгоритмов, но есть три основных.

Цикличный алгоритм

В таком типе некоторые пункты повторяются по несколько раз. Список действий, которые необходимо повторить для достижения цели, называется телом алгоритма.

Итерация цикла — это выполнение всех пунктов, входящих в тело цикла.
Части цикла, которые постоянно выполняются определенное количество раз, называются циклом с фиксированным числом итераций.

Те части цикла, частота повторения которых зависит от ряда условий, называются неопределёнными.

Самый простой вид цикла — это фиксированный.

Существует два вида цикличных алгоритмов:

Линейные типы алгоритмов

Инструкции таких схем выполняются однократно в той последовательности, в которой они представлены. Например, линейным алгоритмом можно считать процесс заправки постели или чистки зубов. Также к этому типу относятся математические примеры, где присутствуют лишь действия сложения и вычитания.

Разветвляющийся алгоритм

В разветвляющимся типе есть несколько вариантов действий, какое из них будет применено, зависит от условия.

Пример. Вопрос: "Идет дождь?" Варианты ответов: "Да" или "Нет". Если "да" — откройте зонт, если "нет" — положите зонт в сумку.

Вспомогательный алгоритм

Вспомогательный алгоритм можно использовать в других алгоритмах, указав лишь его название.

Термины, встречающиеся в алгоритмах

Условие находится между словами "если" и "тогда".

Например: если вы знаете английский язык, тогда нажмите один. В этом предложении условием будет часть фразы «вы знаете английский язык».

Данные — сведения, которые несут определенную смысловую нагрузку и представлены в таком виде, чтобы их можно было передавать и использовать для данного алгоритма.

Алгоритмический процесс — решение задачи по алгоритму с применением определенных данных.

Структура алгоритма

Алгоритм может иметь различную структуру. Для того чтобы описать алгоритм, понятие которого зависит и от его строения, можно воспользоваться целым рядом различных способов, например: словесный, графический, с помощью специально разработанного алгоритмического языка.

Какой из способов будет использован, зависит от нескольких факторов: от сложности задачи, от того, насколько нужно детализировать процесс решения задачи и т. д.

Графический вариант построения алгоритма

Графический алгоритм — понятие, подразумевающие под собой разложение действий, которые нужно выполнить для решения определенной задачи, по определенным геометрическим фигурам.

Графические схемы изображаются не как попало. Для того чтобы их мог понять любой человек применяются чаще всего блок-схемы и структурограммы Насси-Шнейдермана.

Также блок-схемы изображаются в соответствии с ГОСТ-19701-90 и ГОСТ-19.003-80.
Графические фигуры, применяемые в алгоритме, делятся на:

  • Основные. Основные изображения применяются для обозначения операций, нужных для обработки данных при решении задачи.

  • Вспомогательные. Вспомогательные изображения нужны для обозначения отдельных, не самых важных, элементов решения задачи.

В графическом алгоритме геометрические фигуры, используемые для обозначения данных, называются блоками.

Все блоки идут в последовательности "сверху вниз" и "слева направо" — это правильное направление потока. При правильной последовательности линии, соединяющие между собой блоки, не показывают направление. В остальных случаях направление линий обозначается с помощью стрелок.

У правильной схемы алгоритма не должно быть больше одного выхода из обрабатывающих блоков и менее двух выходов из блоков, отвечающих за логические операции и проверку выполнения условий.

Как правильно построить алгоритм?

Структура алгоритма, как было сказано выше, должна строиться по ГОСТ, иначе она не будет понятна и доступна окружающим.

Общая методика по записи включает в себя следующие пункты:

Название, по которому будет понятно, какую задачу можно решить с помощью этой схемы.

У каждого алгоритма должны быть четко обозначены начало и конец.

У алгоритмов должны быть четко и ясно описаны все данные, как входные, так и выходные.

При составлении алгоритма следует отметить действия, которые позволят производить нужные для решения задачи действия над выбранными данными. Примерный вид алгоритма:

  • Имя схемы.
  • Данные.
  • Начало.
  • Команды.
  • Конец.

Правильное построение схемы существенно облегчит вычисление алгоритмов.

Геометрические фигуры, отвечающие за разные действия в алгоритме

Горизонтально расположенный овал - начало и конец (знак завершения).

Горизонтально расположенный прямоугольник — вычисление или другие действия (знак процесса).

Горизонтально расположенный параллелограмм — ввод или вывод (знак данных).

Горизонтально расположенный ромб — проверка условия (знак решения).

Вытянутый, горизонтально расположенный шестиугольник — модификация (знак подготовки).

Модели алгоритмов представлены ниже на рисунке.

Формульно-словестный вариант построения алгоритма.

Формульно-словестные алгоритмы записываются в произвольной форме, на профессиональном языке той области, к которой относится задача. Описание действий таким способом осуществляют с помощью слов и формул.

Понятие алгоритма в информатике

В компьютерной сфере все строится на алгоритмах. Без четких указаний, введенных в виде специального кода, не будет работать ни одна техника или программа. На уроках информатики ученикам стараются дать основные понятия алгоритмов, научить пользоваться ими и самостоятельно их создавать.

Создание и использование алгоритмов в информатике - процесс более творческий, чем, например, выполнение указаний к решению задачи в математике.

Существует также специальная программа «Алгоритм», которая помогает людям, несведущим в области программирования, создавать свои собственные программы. Такой ресурс сможет стать незаменимым помощником для тех, кто делает первые шаги в информатике и хочет создавать свои игры или любые другие программы.

С другой стороны, любая программа — алгоритм. Но если алгоритм несет в себе лишь действия, которые нужно выполнять, вставляя свои данные, то программа уже несет в себе готовые данные. Еще одно отличие — это то, что программа может быть запатентована и являться частной собственностью, а алгоритм нет. Алгоритм — понятие более обширное, нежели программа.

Вывод

В этой статье мы разобрали понятие алгоритма и его виды, узнали, как правильно записывать графические схемы.

fb.ru

Что такое алгоритм?

Понятие алгоритма такое же основополагающее для информатики, как и понятие информации. Именно поэтому важно в нем разобраться.

Название "алгоритм" произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), жившего в 783—850 гг. В своей книге "Об индийском счете" он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними "столбиком", знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.

Человек ежедневно встречается с необходимостью следовать тем или иным правилам, выполнять различные инструкции и указания. Например, переходя через дорогу на перекрестке без светофора надо сначала посмотреть направо. Если машин нет, то перейти полдороги, а если машины есть, ждать, пока они пройдут, затем перейти полдороги. После этого посмотреть налево и, если машин нет, то перейти дорогу до конца, а если машины есть, ждать, пока они пройдут, а затем перейти дорогу до конца.

В математике для решения типовых задач мы используем определенные правила, описывающие последовательности действий. Например, правила сложения дробных чисел, решения квадратных уравнений и т. д. Обычно любые инструкции и правила представляют собой последовательность действий, которые необходимо выполнить в определенном порядке. Для решения задачи надо знать, что дано, что следует получить и какие действия и в каком порядке следует для этого выполнить. Предписание, определяющее порядок выполнения действий над данными с целью получения искомых результатов, и есть алгоритм.

Алгоpитм — заранее заданное понятное и точное пpедписание возможному исполнителю совеpшить определенную последовательность действий для получения решения задачи за конечное число шагов.

Это — не определение в математическом смысле слова, а, скорее, описание интуитивного понятия алгоритма, раскрывающее его сущность.

Понятие алгоритма является не только одним из главных понятий математики, но одним из главных понятий современной науки. Более того, с наступлением эры информатики алгоритмы становятся одним из важнейших факторов цивилизации [56].

7.2. Что такое "Исполнитель алгоритма"?

Исполнитель алгоритма — это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.

Исполнителя хаpактеpизуют:

· сpеда;

· элементаpные действия;

· cистема команд;

· отказы.

Сpеда (или обстановка) — это "место обитания" исполнителя. Напpимеp, для исполнителя Pобота из школьного учебника [1] сpеда — это бесконечное клеточное поле. Стены и закpашенные клетки тоже часть сpеды. А их pасположение и положение самого Pобота задают конкpетное состояние среды.

Система команд. Каждый исполнитель может выполнять команды только из некотоpого стpого заданного списка — системы команд исполнителя. Для каждой команды должны быть заданы условия пpименимости (в каких состояниях сpеды может быть выполнена команда) и описаныpезультаты выполнения команды. Напpимеp, команда Pобота "ввеpх" может быть выполнена, если выше Pобота нет стены. Ее pезультат — смещение Pобота на одну клетку ввеpх.

После вызова команды исполнитель совеpшает соответствующее элементаpное действие.

Отказы исполнителя возникают, если команда вызывается пpи недопустимом для нее состоянии сpеды.

Обычно исполнитель ничего не знает о цели алгоpитма. Он выполняет все полученные команды, не задавая вопросов "почему" и "зачем".

В информатике универсальным исполнителем алгоритмов является компьютер.


Похожие статьи:

poznayka.org

Author: alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *