Разложено
Разложено
Информатика · 8 класс · Исполнители и алгоритмы. Алгоритмические конструкции

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

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

Читать урок
Информатика
Информатика
Босова Л.Л., Босова А.Ю.
Просвещение, 2022 · 4-е издание, стереотипноес. 73–79
3 частей · 35 минлёгкийчитаешь как гость
Способы записи алгоритмов: блок-схемы, псевдокод, языки программирования | Информатика 8 класс20:01
О чём видео
20:01 · одним куском
  • Словами: описание и построчная запись
  • Рисунком: блок-схемы
  • Для компьютера: языки программирования и псевдокод

Полный сосуд на 12 литров, два пустых — на 8 и на 5. Надо отлить ровно половину. Ты, скорее всего, решишь это за пару минут перебором — а как записать решение так, чтобы его без единой ошибки выполнил тот, кто головой не думает вовсе: робот-исполнитель? И почему одну и ту же последовательность действий информатика умеет записывать четырьмя разными способами?

Вернёмся к нему в конце урока.
Связи урока
что нужно знать → урок → что откроет
После урока ты сможешь
  1. Различать четыре способа записи алгоритма (словесное описание, построчная запись, блок-схема, язык программирования) и объяснять сильные и слабые стороны каждого.

  2. Читать и составлять блок-схемы: знать назначение блоков начала/конца, данных, обработки, принятия решения и правило стрелок на линиях связи.

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


1
Часть 1 · 11 мин

Словами: описание и построчная запись

Самый простой способ — и почему он самый опасный

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

Теоретические исследования нашего соотечественника Андрея Андреевича Маркова (младшего) (1903—1979), выполненные в середине прошлого века, показали: в общем случае алгоритм состоит из предписаний двух видов.

Портрет пожилого мужчины в пиджаке и галстуке
Определение
Два вида предписаний

Функциональные операторы — предписания, направленные на непосредственное преобразование информации.

Логические операторы — предписания, определяющие дальнейшее направление действий.

Именно эти операторы положены в основу большинства способов записи алгоритмов.

Ассоциация
Как понять и запомнить: два вида операторов
Развилка дороги, где один путь ведёт прямо, а другой поворачивает в сторону

Представь дорогу с работами. Функциональный оператор — рабочий, который что-то делает: копает, кладёт асфальт, меняет данные. Логический оператор — светофор на развилке: сам ничего не делает, только решает, куда ехать дальше. Любой алгоритм собирается из «рабочих» и «светофоров».

Зацепки: ФУНКЦИОНАЛЬНЫЕ — выполняют функцию: непосредственно преобразуют информацию. ЛОГИЧЕСКИЕ — логика решает, куда направить дальнейшие действия.

Определение
Словесное описание

Словесное описание — запись алгоритма в виде набора предписаний на обычном разговорном языке.

У него минимум ограничений, и он наименее формализован. Но все разговорные языки обладают неоднозначностью: чтобы избежать двусмысленности, текст приходится делать очень подробным — и он становится объёмным и трудным для восприятия.

Ассоциация
Как понять и запомнить: словесное описание

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

Способ запомнить — правило самопроверки: словесное = свободное: минимум правил, максимум слов; если один и тот же текст можно понять двумя способами — это словесное описание, и его пора переводить в построчную запись.

Пример 1. Словесное описание алгоритма Евклида (НОД двух чисел)
  1. «Чтобы найти НОД двух чисел, составьте таблицу из двух столбцов и назовите столбцы XX и YY. Запишите первое из заданных чисел в столбец XX, а второе — в столбец YY

  2. «Если данные числа не равны, замените большее из них на результат вычитания из большего числа меньшего.»

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

  4. Проверим на 1212 и 1818: (12,18)(12,6)(6,6)(12, 18) \to (12, 6) \to (6, 6), НОД =6= 6. Работает — но попробуй по этому тексту понять, что делать, если числа равны с самого начала: придётся перечитывать.

Определение
Построчная запись

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

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

Ассоциация
Как понять и запомнить: построчная запись

Это рецепт, разрезанный на пронумерованные карточки: одна карточка — одно действие, и ты идёшь по номерам. Заблудиться труднее, чем в сплошном тексте, а «перейти к п. 8» — как закладка: прыгнул на нужную карточку.

Зацепка: ПО СТРОЧКАМ: каждое предписание с новой строки, шаги пронумерованы и выполняются по возрастанию номеров.

Пример 2. Построчная запись алгоритма Евклида — и её исполнение для X=12X = 12, Y=18Y = 18
    1. Обозначить первое из заданных чисел XX, второе обозначить YY. 2. Если X=YX = Y, то перейти к п. 8. 3. Если X>YX > Y, то перейти к п. 4, иначе перейти к п. 6. 4. Заменить XX на XYX - Y. 5. Перейти к п. 2. 6. Заменить YY на YXY - X. 7. Перейти к п. 2. 8. Считать XX искомым результатом.
  1. Исполняем: X=12X = 12, Y=18Y = 18. П. 2: не равны. П. 3: 12>1812 > 18? Нет — идём к п. 6: Y=1812=6Y = 18 - 12 = 6. П. 7 → п. 2.

  2. X=12X = 12, Y=6Y = 6: не равны; 12>612 > 6 — п. 4: X=126=6X = 12 - 6 = 6. П. 5 → п. 2.

  3. X=6X = 6, Y=6Y = 6: равны — п. 8. Результат 66. Каждый шаг однозначен: не надо думать, «что имелось в виду», надо только внимательно следить за номерами.

Исполняем построчную запись Евклида для X = 12, Y = 18
  1. Шаг 1. Проверка условий
  2. Шаг 2. Вычитание из Y
  3. Шаг 3. Вычитание из X
  4. Шаг 4. Равенство чисел
  5. Шаг 5. Результат
Неверно

Построчная запись — это просто словесное описание, разбитое на абзацы.

Верно

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

В построчной записи Евклида для X=5X = 5, Y=5Y = 5 какой пункт выполнится после п. 2?

показать

П. 8 — числа равны, результат 55. В словесном описании этот случай пришлось бы додумывать.

Проверь себя
мини-тест части 1 · 3 вопроса
Вопрос 1 из 3средний

Какое определение соответствует понятию «функциональные операторы»?

1 из 3

2
Часть 2 · 12 мин

Рисунком: блок-схемы

Самый наглядный способ — пока помещается на лист

Наилучшей наглядностью обладают графические способы записи, и самый распространённый из них — блок-схема. Вместо «перейти к п. 6» — просто линия, по которой скользит взгляд.

Определение
Блок-схема

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

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

Ассоциация
Как понять и запомнить: блок-схема
Несколько геометрических фигур соединены линиями в последовательную схему сверху вниз и слева направо

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

Зацепка: БЛОК-схема: предписания помещены в геометрические блоки, а линии связывают порядок шагов.

Набор геометрических фигур блок-схемы с буквенными обозначениями а, б, в, г, д
Условные обозначения блок-схем
БлокЧто внутриЛинии связи

Начало / конец (а)

выполнение всегда начинается с блока начала и заканчивается переходом на блок конца

из начала выходит одна линия; в конец входит одна

Данные (б)

величины, которые вводятся (исходные данные) или выводятся (результаты) в этом месте

одна входит, одна выходит

Обработка данных (в)

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

одна входит, одна выходит

Принятие решения (г)

проверяемое условие

одна входит, две выходят — у каждой подписан результат проверки

Комментарий (д)

пояснительные записи, делающие схему понятнее

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

Блок-схема алгоритма нахождения наибольшего общего делителя с текстовыми комментариями
Читаем блок-схему Евклида (рис. 2.3) для X=12X = 12, Y=18Y = 18
  1. Блок начала → блок данных: вводим X=12X = 12, Y=18Y = 18.

  2. Ромб «X=YX = Y?»: нет → идём по линии «нет» к ромбу «X>YX > Y?»: нет → блок обработки «Y=YXY = Y - X», получаем Y=6Y = 6. Линия возвращается вверх к первой проверке — она со стрелкой, потому что идёт снизу вверх.

  3. Второй круг: 12=612 = 6? нет; 12>612 > 6? да → «X=XYX = X - Y», X=6X = 6. Снова вверх.

  4. Третий круг: 6=66 = 6? да → блок данных выводит X=6X = 6 → блок конца. Тот же результат, что в построчной записи, но путь виден глазами.

Неверно

Из ромба (блока принятия решения) выходит одна линия, как из всех остальных блоков.

Верно

Две — по одной на каждый результат проверки условия, и около каждой подписано «да»/«нет». Одна выходящая линия — у блоков данных и обработки.

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

Линия на блок-схеме идёт снизу вверх. Нужна ли ей стрелка?

показать

Да: стандартные направления — слева направо и сверху вниз, они без стрелок; справа налево и снизу вверх — со стрелками.

Проверь себя
мини-тест части 2 · 3 вопроса
Вопрос 1 из 3средний

Какое свойство алгоритма подразумевает его разбиение на последовательность отдельных законченных шагов?

1 из 3

3
Часть 3 · 12 мин

Для компьютера: языки программирования и псевдокод

Алфавит, синтаксис, семантика — и алгоритм переливаний

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

Определение
Язык программирования и его три характеристики

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

Каждый язык характеризуется:

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

Это три уровня любого языка, и русского тоже. Алфавит — буквы, из которых всё складывается. Синтаксис — грамматика: «мама мыла раму» построено правильно, «раму мыла мама мыла» — нет. Семантика — смысл: фраза «зелёные идеи яростно спят» грамматически правильна, но ничего не значит. Компьютер проверяет сначала синтаксис (собрана ли конструкция по правилам), потом выполняет по семантике (что она значит).

Зацепки: СИНТАКСИС — порядок символов: из алфавита складываются правильные конструкции. СЕМАНТИКА — это смысл: она строго определяет смысл и употребление конструкций.

Языков программирования очень много. В 8–9 классах мы будем изучать Паскаль (Pascal), а желающие смогут попробовать силы на школьном (учебном) алгоритмическом языке — его также называют русским алгоритмическим языком или языком КуМир.

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

Школьный алгоритмический язык — учебный язык программирования, введённый академиком А. П. Ершовым в 1985 году для записи алгоритмов с использованием ограниченного набора служебных слов.

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

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

Правило
Общий вид программы на школьном алгоритмическом языке

алг <название алгоритма>

нач

<последовательность команд>

кон

Заголовок — что делаем; между нач и кон — команды по одной в строке.

Ассоциация
Как понять и запомнить: псевдокод

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

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

Пример 4. Алгоритм переливаний: из полного сосуда ёмкостью 1212 л отлить половину, пользуясь пустыми сосудами 88 л и 55 л
  1. алг переливания · нач · наполнить сосуд ёмкостью 88 л из сосуда ёмкостью 1212 л · наполнить сосуд ёмкостью 55 л из сосуда ёмкостью 88 л · вылить всё из сосуда ёмкостью 55 л в сосуд ёмкостью 1212 л · вылить всё из сосуда ёмкостью 88 л в сосуд ёмкостью 55 л · наполнить сосуд ёмкостью 88 л из сосуда ёмкостью 1212 л · долить из сосуда ёмкостью 88 л в сосуд ёмкостью 55 л · вылить всё из сосуда ёмкостью 55 л в сосуд ёмкостью 1212 л · кон

  2. Проследим состояние (сосуды 1212 / 88 / 55): старт 12/0/012/0/0 → наполнить 88: 4/8/04/8/0 → наполнить 55 из 88: 4/3/54/3/5 → вылить 55 в 1212: 9/3/09/3/0.

  3. → вылить 88 в 55: 9/0/39/0/3 → наполнить 88 из 1212: 1/8/31/8/3 → долить из 88 в 55 (входит 22 л): 1/6/51/6/5 → вылить 55 в 1212: 6/6/06/6/0.

  4. В 1212-литровом сосуде ровно 66 л — половина. Семь команд, каждая однозначна: такой алгоритм выполнит и исполнитель Водолей в КуМире.

Какой это способ записи?
Словесные способы (описание / построчная)
    Блок-схема
      Язык программирования / псевдокод
        Карточка 1 из 9
        Линия со стрелкой снизу вверх
        Четыре способа записи одного алгоритма
        СпособКому удобенПлюсМинус

        Словесное описание

        человеку, впервые узнающему идею

        минимум ограничений

        неоднозначность, объёмность

        Построчная запись

        человеку-исполнителю

        нумерация убирает неопределённости

        требует большого внимания

        Блок-схема

        человеку, которому нужно увидеть структуру

        наилучшая наглядность

        трудоёмко; большая схема теряет наглядность

        Язык программирования / псевдокод

        компьютеру (псевдокод — человеку)

        строгость, единая форма записи

        нужно знать алфавит, синтаксис и семантику

        Неверно

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

        Верно

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

        Программа не запустилась: «в строке 3 пропущена точка с запятой». Какой уровень языка нарушен — алфавит, синтаксис или семантика?

        показать

        Синтаксис: конструкция собрана не по правилам. Смысл (семантика) даже не проверялся.

        Проверь себя
        мини-тест части 3 · 3 вопроса
        Вопрос 1 из 3средний

        Что в языке программирования понимается под термином «семантика»?

        1 из 3

        Роботу нужна запись без единой двусмысленности — и информатика даёт для этого целую лестницу форм. Словесное описание проще всего для человека, но разговорный язык неоднозначен. Построчная запись убирает часть неопределённостей нумерацией шагов и переходами. Блок-схема показывает структуру глазами — блоки-действия, ромбы-условия, линии. А для исполнителя вроде Водолея или компьютера алгоритм записывают на языке программирования или на псевдокоде — с жёстким каркасом алг — нач — кон и по одной однозначной команде в строке. Так и записан алгоритм переливаний из примера 4: семь команд, состояние сосудов 12/0/04/8/04/3/59/3/09/0/31/8/31/6/56/6/012/0/0 \to 4/8/0 \to 4/3/5 \to 9/3/0 \to 9/0/3 \to 1/8/3 \to 1/6/5 \to 6/6/0, и в большом сосуде ровно половина. Способов записи много, потому что у алгоритма разные читатели — от первоклассника до процессора, — и у каждой формы свои достоинства и недостатки.

        Возвращаемся к вопросу урока
        Главное за минуту
        что нужно унести из урока
        • Основные способы записи алгоритмов: словесные (словесное описание и построчная запись), графические (блок-схема) и языки программирования; у каждого — свои плюсы и минусы.

        • Алгоритм состоит из функциональных операторов (преобразуют информацию) и логических (определяют направление действий) — А. А. Марков.

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

        • Блок-схема: начало/конец, данные, обработка (одна входящая и одна выходящая линия), принятие решения (две выходящие); линии вниз и вправо без стрелок, вверх и влево — со стрелками.

        • Язык программирования = алфавит + синтаксис + семантика; школьный алгоритмический язык (А. П. Ершов, 1985) со служебными словами алг, нач, кон; псевдокод — смесь русского и алгоритмического языка.

        Термины урока
        Словесное описание

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

        Построчная запись

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

        Блок-схема

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

        Язык программирования

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

        Псевдокод

        Способ записи алгоритмов — смесь естественного разговорного языка и школьного алгоритмического языка.

        Шпаргалка

        Способы записи: словесное описание (просто, но неоднозначно) → построчная запись (строки пронумерованы, исполнение по номерам) → блок-схема (наглядно, но громоздко) → язык программирования / псевдокод (строго, для компьютера).

        Операторы (Марков): функциональные — преобразуют информацию; логические — направляют.

        Блок-схема: начало/конец; данные (ввод/вывод); обработка (действие); принятие решения (ромб, условие, 2 выхода); комментарий. Линии вниз/вправо — без стрелок, вверх/влево — со стрелками.

        Язык программирования: алфавит (символы) + синтаксис (правила построения) + семантика (смысл).

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

        Переливания 12/8/512/8/5: 12/0/04/8/04/3/59/3/09/0/31/8/31/6/56/6/012/0/0 \to 4/8/0 \to 4/3/5 \to 9/3/0 \to 9/0/3 \to 1/8/3 \to 1/6/5 \to 6/6/0.

        Секретный факт

        Идея делить все команды алгоритма на «действия» и «развилки» принадлежит советскому математику А. А. Маркову (младшему): его исследования середины XX века показали, что двух видов предписаний хватает для любого алгоритма.

        Секретный факт

        Школьный алгоритмический язык — с русскими словами алг, нач, кон — придумал академик А. П. Ершов в 1985 году; он же добился, чтобы информатика появилась в школах нашей страны.

        Повторялка
        осталось ещё 60 · круг ≈ 15 мин
        Вопрос1/60

        Что такое функциональный оператор в записи алгоритма?

        нажми, чтобы перевернуть
        Ответ1/60

        Предписание, направленное на непосредственное преобразование информации.

        отметь: знал или нет
        выучено0%
        Задание экзамена здесь появится в старших классах — сначала формула, экзамен потом.
        Босс урока
        10 вопросов по всему уроку
        Босс: собери всё вместе
        итоговый тест урока
        Вопрос 1 из 10трудный

        Как называется предписание, направленное на непосредственное преобразование информации?

        1 из 10