Microclimate.su

IT Новости
4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Алгоритмы для школьников программирование

Алгоритмы для школьников программирование

Почти любой работодатель хочет увидеть на собеседовании хорошую алгоритмическую «базу». Но, какой должна быть эта «база»? Какие алгоритмы изучать?

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

1. Сложность алгоритмов. Вы должны знать O-нотацию и уметь сходу оценивать O-сложность алгоритма хотя бы для простых случаев.
2. Структуры данных! Не только простые структуры, типа массива, но и сложные: вы должны представлять себе, что происходит при добавлении элемента в красно-чёрное дерево (std::map из C++), и понимать, почему добавление в него быстрое.
3. Сортировки. Простые (надо знать и понимать недостатки и достоинства пузырьковой сортировки) и сложные (понимать хотя бы quicksort, и уметь на пальцах объяснить его идею).
4. Алгоритмы работы с деревьями: например, различные их обходы.
5. Поиск в графе: в ширину и в глубину, алгоритм Дейкстры и A*. Бинарный поиск в отсортированном массиве, конечно.
6. Математика! Матричные алгоритмы (детерминант, решение системы линейных уравнений не через детерминанты), преобразование между системами счисления (включая смешанные). Работа с рекуррентными последовательностями: вычисление степени и n-ого числа Фибоначчи за логарифмическое время. Мне ещё пригодились когда-то нахождение выпуклой оболочки и векторные трюки (типа расстояния между скрещивающимися прямыми через векторное произведение), но они нужны всё-таки реже.
7. Базы данных важны. Вы должны представлять себе, как выполняются JOIN’ы и какая «стоимость» материализации того или иного VIEW. Вы должны понимать, как строятся индексы, сколько они «стоят», и как они помогают. (В терминах O-нотации.)
8. Анализ игр может пригодится. Например, построение множества выигрышных позиций «с хвоста».

Структура и Интерпретация Компьютерных Программ. [EN + RU]

═════════════════════
Книга под названием «Структура и Интерпретация Компьютерных Программ» была выпущена в далёком 1979 году. Раньше по ней преподавали вводный курс в программирование среди студентов MIT.

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

Чем же примечательна эта книга? Да хотя бы отзывами на Amazon 🙂 Среди рецензентов есть такие личности как Peter Norvig и Paul Graham. К слову, сейчас у книги рейтинг 3.8 из 5, отчего некоторые известные личности недоумевают.

А если серьёзно, то это фундаментальный классический труд в области программирования (ничем не хуже небезызвестной книги The Art of Programming от Д. Кнута, которую никто не читал). Единственным непонятным моментом для меня является факт преподавания курса программирования для новичков по этой книге.

Представляю как можно напугать новоиспечённых студентов её содержимым. Интересно, есть ли в сети статистика по которой можно узнать много ли людей, посещавших этот «адский» курс, предпочли в дальнейшем поменять свой major 🙂 Если бы организаторы Code.org пропагандировали программирование по этой книге, получился бы знатный epic fail.

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

Программирование: введение в профессию. Тома 1-3 (+CD)
═══════════════════
Описание:
═══════════════════
Книга в 3-х томах «Программирование: введение в профессию», все части которого объединены использованием Unix-систем в качестве единой учебной операционной среды. Учебник ориентирован в основном на самостоятельное изучение программирования.
═══════════════════
Том 1: Азы программирования
═══════════════════
В первый том вошли сведения из истории вычислительной техники, обсуждение некоторых областей математики, непосредственно используемых программистами, принципы построения и функционирования вычислительных систем. Даются начальные навыки составления компьютерных программ на примере Free Pascal под ОС Unix. Материал ориентирован на изучение в будущем языка Си, так что, в частности, много внимания уделено работе с адресами и указателями, построению списков и других динамических структур данных.
═══════════════════
Том 2: Низкоуровневое программирование
═══════════════════
Во второй том вошли части, посвящённые программированию на уровне машинных команд (на языке ассемблера) и на языке Си. Текст предполагает испольозание аппаратной платформы i386, ассемблера NASM, компилятора gcc, отладчика gdb. В конце четвёртой части приведены сведения о системе автоматической сборки GNU Make, программе динамического анализа программ Valgrind, о системах контроля версий CVS и git.
═══════════════════
Том 3: Системы и сети
═══════════════════
В третьем томе рассматриваются системные вызовы для ввода-вывода, управление процессами, механизмы взаимодействия процессов, такие как сигналы и каналы, а также понятие терминала и связанные с ним явления, в том числе сеансы и группы процессов, виртуальные терминалы, управление дисциплиной линии. Даётся небольшой обзор протоколов, используемых в сети Интернет, рассмотрена подсистема сокетов и событийно-ориентированное построение серверных программ. Даются базовые сведения о библиотеке pthread. Также содержится ряд сведений о внутреннем устройстве операционной системы; в частности, рассматриваются различные модели виртуальной памяти, подсистема ввода-вывода и т.п.

Computational Techniques for Process Simulation and Analysis Using MATLAB® Niket S. Kaisare [2018]
═══════════════════
Описание:
═══════════════════
MATLAB® has become one of the prominent languages used in research and industry and often described as “the language of technical computing”. The focus of this book will be to highlight the use of MATLAB® in technical computing; or more specifically, in solving problems in Process Simulations. This book aims to bring a practical approach to expounding theories: both numerical aspects of stability and convergence, as well as linear and nonlinear analysis of systems.

The book is divided into three parts which are laid out with a “Process Analysis” viewpoint. First part covers system dynamics followed by solution of linear and nonlinear equations, including Differential Algebraic Equations (DAE) while the last part covers function approximation and optimization. Intended to be an advanced level textbook for numerical methods, simulation and analysis of process systems and computational programming lab, it covers following key points

ОБУЧЕНИЕ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЮ В НАЧАЛЬНОЙ ШКОЛЕ (2)

При пользовании «Инфоуроком» вам не нужно платить за интернет!

Минкомсвязь РФ: «Инфоурок» включен в перечень социально значимых ресурсов .

МАОУ гимназия №18

г. Нижний Тагил, Россия

ОБУЧЕНИЕ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЮ В НАЧАЛЬНОЙ ШКОЛЕ

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

Ключевые слова: информатика, программирование, начальная школа, Code .

Nizhny Tagil, Russia

TRAINING ALGORITHMS AND PROGRAMMING IN PRIMARY SCHOOL

The article considers topical issues of introducing new learning processes using interactive network technologies in the field of education. Features of the circle of Code.org for formation of algorithmic thinking of pupils of younger school age are revealed, experience among Code.org is presented.

Читать еще:  Программирование в компьютерных системах код специальности

Keywords: Informatics, programming, Primary School , Code .

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

Вопросы обучения детей основам программирования в научной и научно-методической литературе обсуждаются учеными, учителями и специалистами в области информационных технологий. Рассматривая программирование, как общение с компьютером на языке понятном ему, исследователи поддержали идею обучения детей программированию с раннего возраста. Однако, информатика сегодня в начальной школе разделена на технологический компонент, который изучается в рамках дисциплины «Технология», и теоретический компонент, вынесенный на уроки математики [3, 154]. Мы придерживаемся мнения, что информатика не должна ни сводиться к технологии, ни преподаваться как один из разделов математики. Это означает, что помимо информационных технологий, информационного моделирования и математических основ теории информации должно изучаться и программирование. Ввести курс «Информатики» можно при поддержке администрации школы за счет вариативной части стандартов второго поколения.

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

В 80-е годы прошлого века одни из основоположников теории искусственного интеллекта, создатели языка Logo Сеймур Пейперт и Алан Кей указывали, что средства, которые существенно меняют способы мышления, должны быть доступны ребенку как можно раньше [5].

С осенью 2014 года основы программирования начали изучать в школах Великобритании. Учащиеся начальных классов британских школ с помощью таких программных обеспечений, как MIT’s Scratch, Kodu, Logo учатся создавать простые программы по блокам, а в одиннадцать лет учащиеся должны иметь представление о базовых алгоритмических структурах и использовать их при создании учебных программ [2]. Финский проект Koodi 2016, учебные планы ряда таких стран, как Южная Корея, Эстония, Франция, Австралия также предполагают обучение детей основам программирования с начальных классов.

Следует отметить, что тенденцию раннего обучения программированию в школе поддерживают многочисленные ведущие компании в области информационных технологий, предоставляя доступные инструменты для программирования, но и также повсеместно поддерживают идею обучения программированию в школе. Огромное количество пользователей таких ресурсов, как MIT’s Scratch и AppInventor , Codecademy, Code.org и др. показывают растущий интерес современного общества людей к знанию и пониманию искусства программирования.

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

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

Можно выделить следующие особенности среды Code.org для формирования алгоритмического мышления учащихся младшего школьного возраста.

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

Другая особенность среды – двойное представление алгоритма – в виде блочного визуального языка и на языке javascript . Программирование исключает написание текста и производится простым перетаскиванием элементов из палитры. Чтобы программа заработала, достаточно написать несколько строчек кода, которые должны быть выполнены после нажатия на кнопку «выполнить». Наглядное отображение и интерактивное исполнение позволяет ученику видеть поэтапное выполнение алгоритма, дает возможность анализировать и корректировать алгоритм.

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

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

Рис. 1 Классы с указанием курса и количества учащихся

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

Рис. 2 Данные об учениках класса

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

На уроках во 2 классе рекомендуется использовать первый курс. Желательно выполнять предлагаемые задания в начале учебного года, когда учащиеся только начинают знакомиться с компьютером. Задания третьего этапа направлены на работу с мышкой и составление картинок (Рис. 3).

Рис. 3. Пример задания начального курса.

На следующих этапах дети знакомятся с составлением алгоритмов для различных персонажей (Рис. 43).

Рис 4. Пример задания 1 курса.

В 3 и 4 классе можно переходить ко 2 и 3 курсам. На данном этапе команды в виде стрелок заменяются на команды, написанные на русском языке (Рис. 5). Выполняя задания на данных курсах учащиеся изучают линейные алгоритмические структуры, структуры ветвления и циклические структуры. При освоении этих курсов в средней школе можно рассмотреть функции и процедуры.

Рис. 5. Пример выполнения линейного алгоритма.

Каждый курс состоит из нескольких этапов. Например, курс 2 состоит из 19 этапов. На каждом этапе задания можно условно разделить на 4 фазы формирования алгоритмического стиля мышления:

1. Введение алгоритма: актуализация знаний, открытие алгоритма учащимися, освоение основных шагов алгоритма (рис. 6).

Рис. 6. Знакомство с командами исполнителя.

2. Усвоение алгоритма: отработка отдельных операций, входящих в алгоритм и усвоение их последовательности (рис. 7).

Рис.7. Отработка операций

3. Применение алгоритма: отработка алгоритма в знакомой и незнакомой ситуациях.

Рис.8. Составление алгоритма в новой усложненной ситуации

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

Читать еще:  Интернет обучение программированию

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

Code . org – Учится в студии кода [Электронный ресурс]. URL:https://studio.code.org (дата обращения: 27.11.20157)

Computing in the national curriculum. A guide for primary teachers. [Электронный ресурс]. URL: https://www.tes.co.uk/teaching-resource/primary-computing-guide6436709?s_cid%2FNNCR_C0_newprim (дата обращения: 27.11.2017)

Дженжер В. О. Место программирования в курсе информатики начальной школы // Вестник ОГУ. 2010. №9 (115), стр. 154-159

Леонтьев А.Н., Проблемы развития психики, М., Изд-во МГУ, 1981 г., с.214-218

Пейперт С. Переворот в сознаний: Дети, компьютеры плодотворные идеи: Пер. с англ./под. ред. А.В. Беляевой, В.В. Леонаса. – М.: Педагогика, 1989. – 224с.

Федеральный государственный образовательный стандарт основного общего образования от 17.12.2010 г. № 1897. 50 с.

10 игр, которые научат ребёнка программированию

«Я думаю, что в будущем все, а не только программисты будут связаны с элементами программирования», — считает Марк Цукерберг. Поскольку в этом будущем придётся жить нашим детям, пора подготовить их к трудностям, то есть научить программировать.

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

Kodable

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

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

Code.org

На сайте Code.org, созданном некоммерческой организацией, международным движением «Час программирования», собрано несколько образовательных курсов для детей и взрослых. Возраст, с которого можно начинать, — четыре года. Одной игры, которая научит всему и сразу, там нет, зато есть пошаговое игровое обучение с персонажами различных мультфильмов. Переходя от уровня к уровню, можно учиться и создавать свои короткие программы.

Lightbot

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

Не факт, что ребёнок, играющий в Lightbot, вырастет гениальным разработчиком, но зато точно научится планировать действия и составлять простейшие алгоритмы. Это приложение тоже можно рекомендовать как одно из стартовых даже для дошкольников 4–6 лет. Разработчики предлагают и более сложную версию, которая подойдёт для детей старше девяти лет.

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

ПиктоМир

«ПиктоМир», разработанный НИИСИ РАН по заказу Российской академии наук, — наш ответ зарубежным аналогам. В НИИСИ РАН уже разработали систему «КуМир», в которой с программированием знакомятся старшие школьники, но игрового элемента в ней нет. «ПиктоМир», рассчитанный на дошкольников, получился увлекательным и очень доступным.

Робот раскрашивает поля, а ребёнок учится составлять алгоритмы. Все подсказки выполнены с помощью графики, поэтому «ПиктоМир» можно спокойно давать детям, не умеющим читать, начиная с пяти лет: заметно, что учёные постарались сделать действия понятными даже для малышей. Если родители не знают английского языка и ничего сами не понимают в программах, но очень хотят развивать логическое мышление у детей, «ПиктоМир» будет настоящим спасением. Мобильные версии доступны для iOS, Android и Windows Phone, но скачивать последние две придётся с сайта разработчика.

Robozzle

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

Cargo-Bot

Ещё одна простая для освоения игра, на начальных уровнях которой комфортно будут себя чувствовать дошкольники. Поскольку текста в ней мало, детям достаточно различать отдельные буквы, чтобы выполнить первые задания и переложить ящики за меньшее число ходов с места на место. Над сложными комбинациями даже взрослые смогут задуматься надолго. Среди других обучающих и развлекательных приложений Cargo-Bot выделяется очень приятной картинкой. Кстати, Cargo-Bot был полностью спрограммирован на iPad.

CodeMonkey

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

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

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

Scratch

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

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

Читать еще:  Худеем онлайн программа

СeeBot

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

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

CodeCombat

CodeCombat — это уже серьёзно, потому что в этой игре учат настоящий код и из победителя получится готовый программист. Вы выбираете язык программирования, на котором придётся писать команды для своего персонажа (игра предлагает Python, JavaScript, Lua или несколько экспериментальных вроде CoffeScript), и отправляетесь в путешествие за кристаллами.

Сажать за игру можно мальчишек и девчонок от восьми лет. Обучение и подсказки на русском языке, за $9,99 можно каждый месяц получать новые уровни для прохождения (первые 70 бесплатны). Игра может использоваться в школах, есть отдельные бонусы для учителей.

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

Алгоритмы в школьном курсе информатики

§ Происхождение понятия алгоритма

§ Способы записи алгоритма

Происхождение термина «алгоритм» связывают с именем великого узбекского математика и астронома аль-Хорезми (жившего в 9 веке). Он в своих трудах по арифметике и алгебре разработал правила выполнения четырёх арифметических операций над многозначными десятичными числами. Эти правила определяют последовательность действий, которые необходимо выполнить, чтобы получить сумму чисел, произведение и т. д. Первоначально только эти правила и назывались алгоритмами. В дальнейшем термин «алгоритм» стали использовать вообще для обозначения последовательности действий, приводящей к решению проблемы. К началу 20 века слово «алгоритм» означало «всякий арифметический или алгебраический процесс, который выполняется по строго определенным правилам», именно так оно объясняется в Большой советской энциклопедии (1926).
Понятие «алгоритм» возникло задолго до появления ЭВМ, но с развитием вычислительной техники его роль значительно возросла. В работах Поста (логик), Винера, Маркова (советский математик), слово «алгоритм» обрело новую жизнь.
Вот некоторые определения понятия «Алгоритм»:
«Алгоритм — это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность».(Дональд Эрвин Кнут).
«Алгоритм — это всякая система вычислений, выполняемых по строго определённым правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи». (А. Колмогоров).

«Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату». (А. Марков).
«Алгоритм — строго детерминированная последовательность действий, описывающая процесс преобразования объекта из начального состояния в конечное, записанная с помощью понятных исполнителю команд». (Н.Д. Угринович)

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

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

Пример 1. Алгоритм «Заварка чая»:

1. Вскипятить воду в чайнике.

2. Положить в пустую чайную чашку пакетик чая.

3. Залить чашку горячей водой.

4. Подождать 1 минуту.

5. Вытащить пакетик.

6. Положить в чашку 2 чайных ложки сахара.

7. Размешать сахар.

Пример 2. Алгоритм «Приготовь яичницу»:

1. Достать яйцо и масло.

2. Включить плиту.

3. Поставить сковороду на плиту.

4. Растопить на сковородке масло.

6. Разбить ножом яйцо над сковородкой.

7. Выбросить скорлупу в мусорное ведро.

8. Жарить яичницу 5 минут.

9. Выключить плиту.

Основными свойствами алгоритмов являются:
1. Универсальность (массовость) — применимость алгоритма к различным наборам исходных данных.
2. Дискретность — процесс решения задачи по алгоритму разбит на последовательно выполняемые шаги.

3. Однозначность (определенность, детерминированность) – последовательность команд алгоритма должна выполняться строго в определенной последовательности.
4. Результативность (конечность)— по завершении выполнения алгоритма обязательно получается конечный результат.
5. Понятность – алгоритм должен состоять из команд, понятных исполнителю, которые входят в его СКИ.

6. Точность (выполнимость)– каждая команда определяет однозначно действия исполнителя.

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

Среда (или обстановка)— это «место обитания» исполнителя. Например, для исполнителя Робота, из школьного учебника, среда — это бесконечное клеточное поле. Стены и закрашенные клетки тоже часть среды. А их расположение и положение самого Робота задают конкретное состояние среды.

Например, команда Робота «вверх» может быть выполнена, если выше Робота нет стены. Ее результат — смещение Робота на одну клетку вверх.

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

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

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

Главная особенность любого алгоритма — формальное исполнение, позволяющее выполнять заданные действия (команды) не только человеку, но и техническим устройствам (исполнителям). Таким образом,исполнителями алгоритмовмогут быть: человек, компьютер, принтер, робот-манипулятор, станок с числовым программным управлением, живая клетка, дрессированное животное, компьютерная программа, компьютерный вирус, «черепашка» в Логомирах (геометрический исполнитель) и т.д.Исполнитель вычислительных алгоритмов

называется вычислителем. Вычислитель может иметь дело с числами и переменными, обозначающими числа.

Задание:
установите соответствие между исполнителем, изображённым на картинке, и уровнем его формализации.

Укажите порядок следования всех 4 вариантов ответа:
— не понимает, но исполняет последовательность команд
— не понимает и не исполняет никаких команд
— понимает и исполняет команды
— понимает смысл текста, команд и исполняет команды

Способы записи алгоритмов
Для записи алгоритмов используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма. Выделяют следующие основные способы записи алгоритмов:

Ø вербальный (словесный), когда алгоритм описывается на человеческом языке;

Ø псевдокоды, когда алгоритм описывается с помощью набора символов;

Ø графический (язык блок-схем), когда алгоритм описывается с помощью набора графических изображений;

Ø программа, тексты на языках программирования.

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector