Информатика

Урок 4: Основы алгоритмизации

Основы алгоритмизации

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

Обложка урока взята с источника.

План урока:

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

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

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

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

 

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

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

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

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

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

Алгоритм – перечень команд, выполнение которых в определенном порядке позволит получить результат.

 

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

1 osnovy algoritmizacii

Если рекомендация обладает этими свойствами, она считается алгоритмом:

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

2 osnovy algoritmizacii
Посмотрите на еще один актуальный план действий (плакат отсюда), который тоже подходит под критерии, описанные выше:

Давайте рассмотрим простую инструкцию «Как сварить макароны»:

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

Является ли эта инструкция алгоритмом? Какими свойствами обладает?

  • Однозначны ли указания, поделены на элементарные шаги (дискретность)? Да.
  • Все этапы простые и понятные (детерминированность)? Да.
  • Можно ли по этой инструкции приготовить макароны-буковки и спагетти (массовость)? Да.
  • Число команд конечное (конечность)? Да.
  • Будет ли получен результат после выполнения алгоритма (результативность)? Да.

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

 

Величины в алгоритмизации

Чтобы описать процесс выполнения той или иной операции алгоритмически, нам понадобятся величины/объекты – то, чем будем оперировать, над чем выполнять какие-то действия.

3 osnovy algoritmizacii
Источник 

По названию понятно, какие величины бывают:

  • постоянные – остаются в начале и конце выполнения задачи неизменными (константы);
  • переменные – поддаются изменению во время исполнения команд.

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

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

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

4 osnovy algoritmizacii
Источник

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

Чтобы указать, какое значение присвоено в конкретный момент, указывается имя переменной и рядом в скобках индексы:

5 osnovy algoritmizacii
Источник 

 

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

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

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

Подробное описание перевода чисел (для новичков):

6 osnovy algoritmizacii
Источник

Перевод чисел для понимающего ученика:

7 osnovy algoritmizacii
Источник

Чтобы написать понятный для исполнителя порядок действий, нужно учитывать его основные характеристики:

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

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

 

Ошибки при работе исполнителей

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

8 osnovy algoritmizacii

Примеры ошибок и варианты их решения:

  • Задано разукрасить квадраты синим цветом, а круги – зеленым. Исполнитель – дальтоник, ему неизвестно, какой цвет красный, какой зеленый, его цветовое восприятие мира совершенно другое. Возможное решение – задавать не разукрашивание геометрических фигур, а штриховка, точками и черточками.
  • Исполнителю задано нарисовать фигуру размером в свой рост, подразумевая, что получится объект в 1,5-1,7 м. На выходе получено изображение высотой в 1 м. Причина простая – исполнитель низкий. Возможное решение – указать дополнительное условие перед выполнением задания.
  • Нужно посчитать, сколько будет весить каждый кусочек торта, если известно количество гостей и вес торта. На выходе будет ошибка, если никто не пришел, ведь тогда будет деление на «0». Возможное решение – поставить дополнительное условие на случай, если гостей не будет.

Исполнители бывают:

  • формальные – не изменяющие команды, не толкующие задания по-разному, четко выполняющие все, что прописано в алгоритме;
  • неформальные – которые могут истолковать команду по-своему, видоизменить ее по своему усмотрению, могут отказаться, если она не нравится.

9 osnovy algoritmizacii
Примеры исполнителей Источник 

Как понятно из определения, к формальным относятся машины, роботы, или реже – очень исполнительные люди.

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

Более детально об исполнителях можно прочесть в 9 уроке за 6 класс («Исполнители»).

 

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

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

Чтобы зафиксировать текст команд, используют такие способы:

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

10 osnovy algoritmizacii
Источник

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

11 osnovy algoritmizacii
Пример словесной записи Источник

Графическая (рисунками) форма:

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

 

Задача. Как разрезать квадратный торт, чтобы каждому из 7 гостей досталась кремовая фигурка? Важно, чтобы движений ножа было как можно меньше.

12 osnovy algoritmizacii

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

13 osnovy algoritmizacii
Табличная форма записи Источник

Образец алгоритма с использование слов и формул:

14 osnovy algoritmizacii

Сравнение форм записи алгоритмов:

15 osnovy algoritmizacii
Источник

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

 

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

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

Особенности блок-схем алгоритмов – это их компактность, информативность (наглядность) и удобство (читаемость).

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

Рисовать блок-схемы можно практических в любых офисных программах (Word, Paint), также существуют специализированные программы (Visio, Scratch).

16 osnovy algoritmizacii

Фигуры в блок-схемах бывают:

  • функциональные (входов и выходов по 1);
  • предикатные (вход 1, выходов 2);
  • объединяющие (как в предыдущем типе, но управление идет от первого из выходов).

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

17 osnovy algoritmizacii
 Источник

 

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

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

18 osnovy algoritmizacii
Источник

 

Алгоритм с ветвлением

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

19 osnovy algoritmizacii

 

Алгоритм с выбором

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

20 osnovy algoritmizacii

 

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

Если серия команд повторяется несколько раз, то это конструкция с циклом.

Выделяют 2 типа структур с циклами:

  • повторение команд выполняется определенное количество раз – цикл со счетчиком;
  • повторение команд производится столько, сколько будет выполняться условие – цикл по условию.

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

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

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

21 osnovy algoritmizacii

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

Некоторые программы пишутся для человека, другие – для робота, компьютеров.

Примеры алгоритмов разных типов:

22 osnovy algoritmizacii

 

Правила составление алгоритмов

Чтобы написать порядок выполнения для любой задачи, следует соблюдать логичные правила:

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

Если алгоритм пишется для ПК, перевести его на язык программирования.

 

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

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

Чтобы работать на сложном научном приборе, можно пойти двумя путями:

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

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

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

 

Упрощение сложных задач

23 osnovy algoritmizacii
 Источник

Так для того, чтобы исследовать кровь на современных анализаторах, не обязательно быть специалистом по гематологии, достаточно уметь пользоваться дозаторами, четко соблюдать инструкции. Так как реактивы кроме названий, имеют цифровое и даже цветовое обозначение, в памятке написано элементарно: «Взять 3 мл реактива №1 (желтая этикетка), поместить в чистую пробирку, добавить 1 мл реактива №2 (красная этикетка), перемешать, оставить на 30 секунд в темное место. После этого провести измерение на приборе, программа №10 (гемоглобин)». Прибор даже сам проведет пересчет полученного результата и автоматически распечатает данные. Конечно, без специалиста не обойтись, но он может контролировать работу такого лаборанта.

24 osnovy algoritmizacii
Источник

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

25 osnovy algoritmizacii
Источник

 

Алгоритмизация на различных типах работ

26 osnovy algoritmizacii
Источник

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

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

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

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

Кроссворд

27 osnovy algoritmizacii

Ответы:

Исполнитель.

Линейный.

Алгоритм.

Дискретность.

Массовость.

Определенность.

 

ВОПРОСЫ И ЗАДАНИЯ

Вопрос: 1
Выберите из списка алгоритмы:
1грамматические правила
2инструкция по охране труда
3порядок приема лекарств для лечения ОРВИ
4перечень реактивов в химической лаборатории
5исторические события в 18 веке
Ответить
23
Вопрос: 2
Для линейного алгоритма характерно:
1команды следует выполнять поочередно, одну за другой
2перед каждой командой идет условие
3одни и те же команды нужно повторять не один раз
4выполняемые команды зависят от того, будет ли выполнено условие
Ответить
1
Вопрос: 3
Способы представления алгоритмов:
1графический, словесный, формульный, на языке программирования
2табличный, текстовый, при помощи рисунков
3знаковый, табличный, символьный
Ответить
1
Вопрос: 4
Виды алгоритмов:
1круговой, прямоугольный, линейный
2линейный, разветвляющийся, циклический
3спиральный, ровный, зигзагообразный
Ответить
2
Вопрос: 5
Особенность формального исполнителя:
1не понимает того, что делает, исполняет «механически», но видоизменяет тело инструкции
2обдумывает каждый шаг, может менять алгоритм
3выполняет этапы алгоритма, не задумываясь над тем, что делает, может быть живым (человек) и неживым (робот)
Ответить
3
Допущено ошибок:
Оценка:
Подробнее
Ваши ответы:
1 вопрос:

Выберите из списка алгоритмы:
1) грамматические правила 2) инструкция по охране труда 3) порядок приема лекарств для лечения ОРВИ 4) перечень реактивов в химической лаборатории 5) исторические события в 18 веке
2 вопрос:

Для линейного алгоритма характерно:
1) команды следует выполнять поочередно, одну за другой 2) перед каждой командой идет условие 3) одни и те же команды нужно повторять не один раз 4) выполняемые команды зависят от того, будет ли выполнено условие
3 вопрос:

Способы представления алгоритмов:
1) графический, словесный, формульный, на языке программирования 2) табличный, текстовый, при помощи рисунков 3) знаковый, табличный, символьный
4 вопрос:

Виды алгоритмов:
1) круговой, прямоугольный, линейный 2) линейный, разветвляющийся, циклический 3) спиральный, ровный, зигзагообразный
5 вопрос:

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