Содержимое курса
Раздел 2. (21 час) Алгоритмы и программирование.
0/21
Информатика 8 класс

Урок №18

Формальное исполнение алгоритма.


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

Такое исполнение позволяет передать исполнение алгоритма автомату.


Шаг алгоритма – это каждое отдельное действие алгоритма.

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

Система команд исполнителя (СКИ) – это все команды, которые исполнитель умеет выполнять. Среда исполнителя – обстановка, в которой функционирует исполнитель.


Любой результат деятельности человека – последовательность выполнения совокупности действий. Вопрос лишь в том, насколько оптимально подобное решение задачи. Получается что, продумывая ход решения задачи, можно найти оптимальную последовательность действий. Это означает, что нужно не просто решить задачу, а решить её с минимальными затратами.

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

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

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

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

Исполнитель – объект или субъект, выполняющий инструкции, предписания алгоритма, программы, последовательности команд.

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

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

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

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

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

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

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

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

Мы записали словесный алгоритм с помощью действий.

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

Выполним алгоритм «Рисование фигуры» (один ученик выполняет у доски).

— Поставьте точку.

— Проведите 1 клетку вправо, 2 клетки вниз, 3 клетки вправо, 1 клетку вверх, 1 клетку вправо, 4 клетки вниз, 2 клетки влево, 1 клетку вверх, 1 клетку влево, 1 клетку вниз, 2 клетки влево, 2 клетки вверх, 2 клетки влево, 2 клетки вверх, 2 клетки вправо, 1 клетку вверх.

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

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

вправо

влево

вверх

вниз

— Запишите алгоритм таким способом.

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

Блок – геометрическая фигура для обозначения каких-либо команд при графическом описании алгоритма.

Каждый блок соответствует конечному этапу процесса. Внутри каждого блока даётся описание тех операций, которые необходимо выполнить. Рассмотрим каждый блок:

Блок начала и конца

Блок ввода-вывода данных

Функциональный блок

Блок условия

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

Рассмотрим сказанное на примере решения задачи.

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

Условия задачи: заданы скорость движения и время.

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

И немного теории

Формальное исполнение алгоритма, записанного на языке программирования

Поговорим о том, что такое трассировка программы. 

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

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

Например, необходимо определить, что будет напечатано на экране компьютера в результате выполнения программы, если s=12, k=4

s = int(input())
k = int(input())
if s > k and s % 2 == 0:
print(YES)
else:
print(NO)

Первые две строки программного кода позволяют определить значение переменных s и k как целые и присвоить им числа, введённые с клавиатуры. Затем в зависимости от истинности условия (используется полное ветвление) на экран монитора выводится либо сообщение YES, либо сообщение NO. Условие полного ветвления представлено в виде сложного логического высказывания, содержащего два простых высказывания, объединённых конъюнкцией.

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

s

k

s>k

s%2==0

s>k and s%2==0

результат

12

4

True

True

True

YES

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

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

Например, Петя провёл восемь запусков программы, при которых в качестве значений переменных s и k

вводились следующие пары чисел: (6, 8); (7, –1); (–16, –10); (25, 2); (10, –3); (–12, 2); (2, –2);  (5, –5). Сколько раз на экране было напечатано слово NO?

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

s

k

s>k

s%2==0

s>k and s%2==0

результат

6

8

False

True

False

NO

7

-1

True

False

False

NO

-16

-10

False

True

False

NO

25

2

True

False

False

NO

10

-3

True

True

True

YES

-12

2

False

True

False

NO

2

-2

True

True

True

YES

5

-5

True

False

False

NO

По таблице видно, что таких случаев было шесть.

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

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

  2. Помните о значениях простых логических высказываний (таблицы истинности).

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