Все типы алгоритмов. Виды алгоритмов

Программирование - это записывание чего-то с использованием чужого малознакомого языка. С развитием этой области знания разработчики пошли еще дальше и научились записывать "что-то", даже не понимая, как оно звучит на русском языке. Новички учатся писать код сразу на C++ или php, используя множество библиотек, и толком даже не понимают, как то, что они создают, звучит на их родном языке. Алгоритмизация занимается разъяснением и доведением до понятного этого "что-то".

Алгоритмизация

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

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

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

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

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

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

  1. Выбрать способ решения.
  2. Изучить все детали выбранного способа.
  3. Объяснить первые два пункта будущему исполнителю на понятном ему языке.

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

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

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

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

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

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

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

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

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

Возможности компьютера

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

Под постоянными числами понимаются все числа: 3,15, 100, 105, их особенностью является неизменность в течение всей работы программы. Переменные величины меняют свое значение в ходе выполнения кода и обозначаются, как правило, буквами: x, y, max, min и т. д.

Текстовые переменные аналогично числовым бывают постоянными или переменными. В первом случае это просто текст: "хорошо", "a и b" и пр. Во втором - такое же символьное обозначение, как и числовых переменных: name, city и т. п. Отличие между ними заключается главным образом в выделяемой памяти компьютера под хранение такой переменной.

Операции, которые способен выполнять компьютер:

  1. Считывать данные с устройств ввода (клавиатура, мышь, файлы).
  2. Вычисление значений с использованием математические функции: сложение, вычитание, sin, cos, ln и т. д. - в каждом языке программирования свой набор встроенных функций.
  3. Вывод данных (на экран, на бумагу, в сетевой интерфейс).
  4. Переход между этапами выполнения программы.
  5. Сравнение двух величин (больше, меньше, равно).

Это основные операции, которые могут выполняться большинством языков программирования.

Способы описания алгоритмов

Словесный. Это самый простой способ. Его примером может служить кулинарный рецепт. Допускается использование простых математических формул.

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

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

Алг заработная плата (int ST, real ZP) арг ST рез ZP начало если ST

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

Виды алгоритмов

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

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

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

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

Принципы алгоритмизации

  1. Определить исходные данные.
  2. Выбрать способ решения.
  3. Разбить выбранные способ на шаги исходя из возможностей компьютера (языка программирования).
  4. Выполнить алгоритм в виде схемы, определив четкий порядок шагов.
  5. Вывод результатов вычислений.
  6. Обозначить переход к выходу схемы.

Отладка алгоритма

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

Главным инструментом для проверки точности алгоритма остается человеческий мозг. Конечно, допустимо использование других компьютерных инструментов для автоматизации проверки, но так или иначе подготовкой тестов и анализом результатов занимается человек. В таком случае возникает вопрос, а зачем нужен алгоритм, если человек выполняет все сам? Затем, что главная задача алгоритма - многократное решение определенного типа задач.

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

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

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

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

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


Приведем пример алгоритма для решения задачи о нахождении наибольшего среди трех чисел.


Циклический алгоритм

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

  1. Присваивание начального значения переменных. Без выполнения этого условия цикл, скорее всего, не сможет работать или будет совершать ошибки.
  2. Блок вычисления результатов. Это основное тело цикла.
  3. Проверка условия окончания циклического процесса. Если забыть указать условие, при котором следует завершить цикл, алгоритм будет выполняться бесконечно.
  4. Изменение переменных. Этот блок вступает в силу после проверки условия окончания, если оно было ложным. Если забыть про этот блок, то цикл будет вечно выполнять одно действие и никогда не завершится. Поэтому важно, чтобы переменные претерпевали какие-либо изменения на каждой итерации цикла.

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


Построим циклический алгоритм на примере нахождения факториала числа N.

Другие типы алгоритмов

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

  • Механические алгоритмы. Например, работа двигателя внутреннего сгорания или сборочного конвейера.
  • Вероятностные алгоритмы. Их работа основана на теории вероятности и математической статистике.
  • Эвристические алгоритмы. Используют практические соображения в своей работе, без строгого математического обоснования.
  • Генетические алгоритмы. Применяют биологические идеи в своей работе.

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

ПРОЦЕСС - выполнение операции или группы операций, в результате которых изменяются параметры входящей информации
УСЛОВИЕ - обозначает выбор направления работы алгоритма в зависимости от выполнения записанных внутри условий
ПРЕДОПРЕДЕЛЁННЫЙ ПРОЦЕСС - обозначает использование ранее созданных и отдельно описанных алгоритмов и программ
ВВОД - ВЫВОД ДАННЫХ - обозначает преобразование данных в форму, пригодную для обработки или регистрации
ДИСПЛЕЙ - обозначает ввод-вывод данных для устройства, позволяющего вносить изменения в процесс их обработки
ДОКУМЕНТ - обозначает ввод-вывод данных с использованием бумажного носителя
СОЕДИНИТЕЛЬ - показывает связь между прерванными линиями потока информации
ПУСК - ОСТАНОВ обозначает начало, конец или прерывание процесса обработки данных

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

Все алгоритмы по своей структуре делятся на три группы:

Линейные;

Разветвляющиеся;

Циклические.

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

Рис. 8. Блок-схема линейного алгоритма

Разветвляющийся алгоритм содержит, по крайней мере, одно условие. Для реализации разветвляющегося алгоритма используется типовая структура РАЗВЕТВЛЕНИЕ. Основой разветвляющегося алгоритма является логический элемент условия, изображаемый на схеме символом РОМБ. В логическом элементе производится проверка условия, которая даёт результат ДА или НЕТ. В зависимости от этого поток информации направляется по одному из двух выходных каналов логического элемента.


В таком алгоритме может быть два варианта:

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

2. Имеется ДВЕ ФОРМУЛЫ вычислений, и алгоритм работает по следующему логическому принципу: ЕСЛИ (условие) - ТО (формула 1), ИНАЧЕ (формула 2).

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

Рис.9. Блок-схемы разветвляющихся алгоритмов

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

Циклические алгоритмы делятся на два вида:

С известным числом повторений (циклов)

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

Рассмотрим оба вида алгоритмов.

Программирование - это записывание чего-то с использованием чужого малознакомого языка. С развитием этой области знания разработчики пошли еще дальше и научились записывать "что-то", даже не понимая, как оно звучит на русском языке. Новички учатся писать код сразу на C++ или php, используя множество библиотек, и толком даже не понимают, как то, что они создают, звучит на их родном языке. Алгоритмизация занимается разъяснением и доведением до понятного этого "что-то".

Алгоритмизация

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

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

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

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

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

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

  1. Выбрать способ решения.
  2. Изучить все детали выбранного способа.
  3. Объяснить первые два пункта будущему исполнителю на понятном ему языке.

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

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

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

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

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

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

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

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

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

Возможности компьютера

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

Под постоянными числами понимаются все числа: 3,15, 100, 10 5 , их особенностью является неизменность в течение всей работы программы. Переменные величины меняют свое значение в ходе выполнения кода и обозначаются, как правило, буквами: x, y, max, min и т. д.

Текстовые переменные аналогично числовым бывают постоянными или переменными. В первом случае это просто текст: "хорошо", "a и b" и пр. Во втором - такое же символьное обозначение, как и числовых переменных: name, city и т. п. Отличие между ними заключается главным образом в выделяемой памяти компьютера под хранение такой переменной.

Операции, которые способен выполнять компьютер:

  1. Считывать данные с устройств ввода (клавиатура, мышь, файлы).
  2. Вычисление значений с использованием математические функции: сложение, вычитание, sin, cos, ln и т. д. - в каждом языке программирования свой набор встроенных функций.
  3. Вывод данных (на экран, на бумагу, в сетевой интерфейс).
  4. Переход между этапами выполнения программы.
  5. Сравнение двух величин (больше, меньше, равно).

Это основные операции, которые могут выполняться большинством языков программирования.

Способы описания алгоритмов

Словесный. Это самый простой способ. Его примером может служить кулинарный рецепт. Допускается использование простых математических формул.

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

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

алг заработная плата (int ST, real ZP) арг ST рез ZP начало если ST < 5 то zp = 150 иначе если ST <= 15 то ZP = 180 иначе ZP = 180 + (ST - 15)*10 конец

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

Виды алгоритмов

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

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

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

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

Принципы алгоритмизации

  1. Определить исходные данные.
  2. Выбрать способ решения.
  3. Разбить выбранные способ на шаги исходя из возможностей компьютера (языка программирования).
  4. Выполнить алгоритм в виде схемы, определив четкий порядок шагов.
  5. Вывод результатов вычислений.
  6. Обозначить переход к выходу схемы.

Отладка алгоритма

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

Главным инструментом для проверки точности алгоритма остается человеческий мозг. Конечно, допустимо использование других компьютерных инструментов для автоматизации проверки, но так или иначе подготовкой тестов и анализом результатов занимается человек. В таком случае возникает вопрос, а зачем нужен алгоритм, если человек выполняет все сам? Затем, что главная задача алгоритма - многократное решение определенного типа задач.

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

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

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

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

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

Приведем пример алгоритма для решения задачи о нахождении наибольшего среди трех чисел.

Циклический алгоритм

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

  1. Присваивание начального значения переменных. Без выполнения этого условия цикл, скорее всего, не сможет работать или будет совершать ошибки.
  2. Блок вычисления результатов. Это основное тело цикла.
  3. Проверка условия окончания циклического процесса. Если забыть указать условие, при котором следует завершить цикл, алгоритм будет выполняться бесконечно.
  4. Изменение переменных. Этот блок вступает в силу после проверки условия окончания, если оно было ложным. Если забыть про этот блок, то цикл будет вечно выполнять одно действие и никогда не завершится. Поэтому важно, чтобы переменные претерпевали какие-либо изменения на каждой итерации цикла.

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

Построим циклический алгоритм на примере нахождения факториала числа N.

Другие типы алгоритмов

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

  • Механические алгоритмы. Например, работа двигателя внутреннего сгорания или сборочного конвейера.
  • Вероятностные алгоритмы. Их работа основана на теории вероятности и математической статистике.
  • Эвристические алгоритмы. Используют практические соображения в своей работе, без строгого математического обоснования.
  • Генетические алгоритмы. Применяют биологические идеи в своей работе.

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

Пример псевдокода:

алг Нахождение частного двух чисел начало вывод ("задайте делимое и делитель") ввод (делимое, делитель) если делитель ≠ 0 то частное = делимое / делитель вывод(частное) иначе вывод("нет решения") кон алг Нахождение частного двух чисел

В данном примере используется три переменные: делимое, делитель и частное. Делимое и делитель задаются исполнителем произвольными числами. Частное считается лишь в том случае, если делитель не равен нулю.

Графическая реализация алгоритма представляет собой блок-схему. Блок-схема состоит из блоков определенной формы, соединенных стрелками. Ответ при этом получает человек, который выполняет команды согласно блок-схеме. Более подробно о блок-схемах будет рассказано в Лекции 2.

Программная реализация алгоритма – это компьютерная программа, написанная на каком-либо алгоритмическом языке программирования, например: С++, Pascal, Basic и т.д. Программа состоит из команд определенного языка программирования. Отметим, что одна и та же блок-схема может быть реализована на разных языках программирования. Ответ при этом получает ЭВМ, а не человек. Более подробно о составлении программ на языке программирования С++ смотреть Лекцию 3.

Различают три основных вида алгоритмов:

  1. линейный алгоритм,
  2. разветвляющийся алгоритм,
  3. циклический алгоритм.

Линейный алгоритм – это алгоритм, в котором действия выполняются однократно и строго последовательно.

Самый простой пример реализации линейного алгоритма – путь из университета домой.

Словесный способ записи данного алгоритма:

  1. выйти из университета на остановку;
  2. подождать нужный автобус;
  3. сесть на нужный автобус;
  4. оплатить проезд;
  5. выйти на требуемой остановке;
  6. дойти до дома.

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

Разработала учитель информатики

ГУ «Средняя школа № 19 отдела образования

акимата горда Костаная»

Елеусизова Айнаш Досымхановна

Тема:

Цели:

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

Задачи:

1. Образовательные

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

    Познакомить учащихся с типами алгоритмов: линейным, разветвляющимся, циклическим;

    Научить представлению алгоритмов в виде блок-схем;

2. Развивающие

    Активизировать познавательную активность учащихся через мультимедийные средства обучения;

    Развивать образное, критическое, дивергентное мышление;

3. Воспитательные

    Повышение мотивации учащихся на уроке;

    Достижение сознательного уровня усвоения материала учащимися;

    Формирование чувства коллективизма и здорового соперничества;

    Формирование алгоритмического мышления.

Требования к знаниям и умениям:

    Знать типы алгоритмов;

    знать понятия: линейный, разветвляющийся, циклический алгоритмы;

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

Тип урока: комбинированный.

Технология: формирование коммуникативной компетенции;

Методы:

    частично-поисковый, практический.

    информационный (словесный);

    наглядно-иллюстративный;

Ход урока:

I .Организационный момент.

    Приветствие ребят.

Здравствуйте, ребята! Садитесь! Какое у вас настроение? Если хорошее -улыбнитесь всем! Если нет - посмотрите друг на друга и улыбнитесь! Начнем урок!

Я представила вам алгоритм в словесной форме. Посмотрите на доску. Этот же алгоритм изображен графически. Сегодня на уроке мы научимся с вами представлять типы алгоритмов с помощью блок – схем (страница флипчарта 1).

Эпиграфом к нашему уроку будут слова знаменитого французского ученого Гюстава Гийома “Дорогу осилит идущий, а информатику мыслящий”.

2. Объявление целей урока.

II . Актуализация знаний учащихся

Но прежде чем приступим к изучению нового материала. Мы должны вспомнить, что изучали на прошлом уроке.

1. Проверка домашнего задания.

Проверить кроссворды, решенные учениками дома.

Ответы:

    графический

    конечность

    информация

    исполнитель

    алгоритм

    программный

    компьютер

    инструмент

2. Работа с Activote (приложение 4) под музыкально-звуковое сопровождение (ссылка на звуковой файл).

“Повторение – мать учения” так говорили великие.

Учитель объясняет алгоритм решения тестовых заданий. Дети на местах работают с Activote .

III . Изучение нового материала.

1. Теоретическая часть.

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

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

Условные обозначения для блок-схем (страница флипчарта 5-6)

Начало или конец программы

- ввод данных

- действия

-условие решения программы

-вывод данных или текста

--цикл с параметром

-подпрограмма

Алгоритмы бывают трех типов: (страница флипчарта 7)

Линейный

Разветвляющийся

Циклический

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


Пример 1 (страница флипчарта 9). Сказка «Курочка Ряба»

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

выполнения некоторого условия совершается либо одна, либо другая последовательность действий (страница флипчарта 10)

Полная форма (страница флипчарта 11)

Неполная форма

Пример 2. (страница флипчарта 12-13)

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

Пример 3. (страница флипчарта 12-13)


“Купить мороженое” .


Циклический алгоритм- (страница флипчарта 14)


Пример 4. (страница флипчарта 15.) Алгоритм «Наполнение».

Начало

Конец

2. Первичное закрепление. Решение задач-тренингов (коллективно)

(страница флипчарта 16-17).

Учащиеся по очереди подходят и заполняют блок-схемы во флипчарте.

Тренинг-задача №1 (страница флипчарта 18). «Почисти ковер»

На интерактивной доске, с помощью указателя, перенести правильный порядок действий)

Тренинг-задача № 2 (страница флипчарта 19).

    Заполнить блок-схему пословицей «Болен - лечись, а здоров - берегись».

    Назови тип алгоритма.

Тренинг-задача № 3 (страница флипчарта 20).


Проверить, перетащив рисунок на свободное место.

    Физкультминутка (страница флипчарта 21).

Мы руками поведем -

Будто в море мы плывем.

Раз, два, три, четыре -

Вот мы к берегу приплыли,

Чтобы косточки размять,

Начнем наклоны выполнять -

Вправо, влево, вправо, влево.

Не забудем и присесть -

Раз, два, три, четыре,

Мы выполнили алгоритм, и достигли определенной цели: отдохнули, расслабились.

4. Выполнение практической работы. Работа по разноуровневым карточкам.

(страница флипчарта 22).

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

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

Дайте названия алгоритмам (страница флипчарта 23).

Заполнить таблицу двумя примерами на каждый тип алгоритма (страница флипчарта 24)..

Paint

Вариант 1.(страница флипчарта 25).

«Посадка саженца».

Вариант 2.(страница флипчарта 26).

IV . Домашнее задание (страница флипчарта 27).

1. Выучить конспект.

2. Нарисовать на А4 формате пример циклического алгоритма и блок – схему к сказке «Колобок».

V . Итог урока. (страница флипчарта 28).

На этом урок заканчивается. Наша цель достигнута. Мы повторили основные понятия алгоритма, познакомились типами алгоритмов, успешно применили знания на практике, вспомнили сказки, пословицы.

VI . Рефлексия. . (страница флипчарта 29).

–Что вам сегодня понравилось на уроке?
– Что вы запомнили?
– Что было интересного?

VII .Оценивание.

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

Приложение 2

Технологическая карта №1

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

Цели урока : Научимся составлятьклассификацию типов алгоритмов;

Научимся представлять алгоритмы в виде блок-схем.

1. Проверка домашнего задания.

Выполнение тестовых заданий по тестеру

2. Теоретическая часть

Условные обозначения для блок-схем:

Начало или конец программы

- ввод данных

- действия

-условие решения программы

-вывод данных или текста

--цикл с параметром

-подпрограмма

- стрелки – направление процесса

Алгоритмы бывают трех типов: -линейный

Разветвляющийся

Циклический

Линейные алгоритмы – алгоритм, в котором команды выполняются в порядке их записи, т. е. последовательно друг за другом. (страница флипчарта 8)

Пример 1 . Сказка «Курочка Ряба»

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

В словесном описании разветвляющегося алгоритма используются слова "если", "то", "иначе".

Полная форма : «если выполняется условие, то …, иначе …» . Действия предусмотрены и при выполнении условия, и при его невыполнении.

Неполная форма : «если выполняется условие, то …». Действия предусмотрены только при выполнении условия. При невыполнении условия.

Пример 2.

Если пошёл дождь, то откройте зонт, иначе – зонт положите в сумку (полная форма разветвляющегося алгоритма);

Если пошёл дождь, то откройте зонт (неполная форма разветвляющегося алгоритма).


Пример 3.

“Купить мороженое” .

Циклический алгоритм- алгоритм, в котором действия повторяются конечное число раз.

П
ример 4.
Алгоритм «Наполнение».

Начало

1. Пока ведро неполное, повторять:

2. Налить в ведро кружку воды.

Конец

3. Решение задач-тренингов (коллективная работа).

Тренинг-задача № 1.

Составить алгоритм «Почисти ковер».

Тренинг-задача № 2.

1.Назови тип алгоритма.

2. Заполни алгоритм.

Записать с помощью блок-схемы пословицу «Болен – лечись, а здоров – берегись».


Тренинг-задача № 3.

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

4. Физкультминутка.

Мы руками поведем -

Будто в море мы плывем.

Раз, два, три, четыре -

Вот мы к берегу приплыли,

Чтобы косточки размять,

Начнем наклоны выполнять -

Вправо, влево, вправо, влево.

Не забудем и присесть -

Раз, два, три, четыре,

На счет пять - за парты сесть.


Примеры

линейного алгоритма

Примеры

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

Примеры

циклического алгоритма


Составьте алгоритм в программе Paint , используя команды перемещения и копирования.

Вариант 1.(страница флипчарта 25).

«Посадка саженца».

Вариант 2.(страница флипчарта 26).

Эпизод из сказки «Гуси-лебеди».