Алгоритмы и исполнители.

advertisement
1. Бездумные исполнители.
Начнем с приятного. Давайте вспомним забавный диалог из мультфильма «Вовочка
в тридевятом царстве»:
-Эй, Двое – из – Ларца, Одинаковы – с – лица!!!
-Мы здесь!
-Замесить и нарубить! …Эй, да вы что?!!
-А что?
-Наоборот!!!
Бедный Вовка! Ничего приятного не получилось, одни неприятности! А все дело в том, что
школьников в его время не учили информатике и он не распознал в лихих удальцах из
ларца особый класс созданий, Бездумными Исполнителями.(БИ).
Но не торопитесь сетовать вместе с Вовкой на их редкостную тупость. Так ли они плохи?
Все Вовкины приказанья были выполнены быстро и четко. Разве нет?
Конечно, рубилось тесто, а месились дрова, но никто и не просил сделать наоборот.
Вернее, слово «наоборот» было произнесено, но к чему оно относилось? Стоит ли
упрекать Двоих-из-Ларца за то, что они, получив не совсем понятную команду,
шустренько кинулись ее выполнять?
Подумаем, какими должны быть команды, чтобы БИ нас не разочаровал. Правильными?
Но что это означает? Правильная команда - понятная команда?
Значит, для БИ правильной командой будет та, которою он понял и умеет исполнить. Во
избежание недоразумений следовало бы поинтересоваться у БИ, как он понимает
каждою команду. Собственно говоря, мы это делаем, когда, например, внимательно
читаем инструкцию к новому магнитофону, разбираясь, как он реагирует на различные
кнопочки. Совокупность всех команд, которые может выполнить конкретный БИ,
называется системой команд этого исполнителя.
How to good tea
1.
2.
3.
4.
5.
Bring fresh water to the boil.
Warm tea-pot by rinsing out with hot
water.
Put one teaspoonful of tea pet cup
into the tea-pot and pour immediately
the boiling water into the tea.
Stir the tea after 3-5 minutes.
Add sugar to taste.
Как приготовить хороший чай
1.
2.
3.
4.
5.
Вскипятите свежую воду.
Ополосните заварочный чайник
крутым кипятком.
Положите чай в заварочный чайник
из расчета одну чайную ложку на
чашку и сразу же залейте кипятком
Через 3-5 минут размешайте.
Добавьте сахар по вкусу.
Левая программа, очевидно, написана для Джонни-из-за-Океана. Правая – для его русского Друга Вани. Ясно, что
каждый из них будет выполнять одни и те же действия, и по – этому, наблюдая за их работой, мы не сможем отличить
одного от другого. Поэтому, когда говорят о самой последовательности действий для достижения какой – либо цели, то
используют термин алгоритм, а не программа. Итак, Алгоритм – это последовательность действий, допустимых для
исполнителя, а программа – алгоритм, записанный на языке конкретного БИ. Как правило алгоритмы пишутся для
человека. Поэтому мы будем записывать алгоритмы на русском языке. При этом каждый из вас может применять какие –
либо сокращения слов и вообще заменять одни слова другими. Важно то, чтобы за этими словами стояли действия,
допустимые для данного вам исполнителя. После напряженных раздумий пора отдохнуть и попить чайку. Например тот,
что приготовили Джонни и Ваня. К нашему изумлению, чаёк оказался разным: от Ваниного чая язык прилипает к губам, а
чай Джонни почти не сладкий. Почему один и тот же алгоритм в разном исполнении привел к столь различным
результатам?
Очевидно, все дело в последнем действии: добавлении сахара по вкусу. Это, конечно, допустимое действие для
каждого исполнителя, просто у каждого свой вкус. А нам урок: ОДИН И ТОТ ЖЕ АЛГОРИТМ, ПРЕТВОРЯЕМЫЙ В ЖИЗНЬ
РАЗЛИЧНЫМИ ИСПОЛНИТЕЛЯМИ, МОЖЕТ ДАВАТЬ РАЗЛИЧНЫЕ РЕЗУЛЬТАТЫ.
Сей час мода на всякую всячину. В домах появились домовые (называемые
по – модному «полтергейст»), в реках – водяные, а в лесах – лешие…
Почему бы не завестись кому – нибудь в вашем компьютере?
На самом деле там уже живет много БИ. Те же электронная таблица,
графический редактор или информационно – поисковая система. Давайте
познакомимся еще с одним. На первый взгляд он вам покажется совсем
простым. Но с его помощью мы предложим вам немало увлекательных
головоломок.
Этого БИ зовут Паркетчик. Игровое поле Паркетчика – лист бумаги в
клетку. На нем Паркетчик выкладывает квадратные паркетные плитки
двух цветов: красного и зеленого. Каждая клетка имеет свой адрес, чтобы
Паркетчик знал где ему предстоит выполнить работу. На экране
компьютера вы видите игровое поле как бы с верху, поэтому мы будем
говорить о горизонтальных и вертикальных рядах клеток.
Клетка, стоящая k-м столбце и m- й строке, имеет адрес (k, m).
Обычно номер столбца называют абсциссой, а номер строки –
ординатой.
Чтобы выложить тот или иной орнамент, Паркетчик может переходить
с любой клетки на соседнюю. Иными словами, для Паркетчика допустимы
следующие четыре действия: шаг вверх, шаг вниз, шаг вправо, шаг
влево. Осталось сообщить, что в начале игры Паркетчик всегда находится
в левом нижнем углу, то есть в клетке (1. 1).
Жизнь весьма разнообразна, и никто не может абсолютно все
предусмотреть. А цели все же хочется достичь. Вот и юный
программист Петя Торопыжкин, собираясь в школу, составил
следующую программу:
Вскочить с постели; надеть рубашку; надеть пиджак; надеть правый
ботинок; посмотреть на часы; если вскочил на несколько минут раньше,
то лечь подремать, в противном случае надеть брюки; надеть левый
носок; сходить умыться; если портфель не собран, то собрать, в
противном случае позавтракать; надеть правый носок; надеть галстук и
пиджак; надеть левый ботинок; если холодно, то снять ботинки; надеть
валенки; надеть пальто; надеть куртку; надеть шапку; выбежать из
дома; вернуться назад; взять портфель; выбежать из дома; забежать за
Вовкой; если он дома и еще завтракает, то позавтракать вместе с ним и
бежать в месте с ним до школы. Например, разберемся с такой
командой:
Если холодно, то снять ботинки.
На первый взгляд, команда как команда. Конечно, выглядит немного
диковато, но вполне выполнимо. Однако если мы выйдем из роли БИ и
немного подумаем, то заметим, что она требует либо двух действий,
либо одного действия. А именно: вначале надо проверить условие —
холодно или нет, а уж затем, в зависимости от результата проверки,
выполнить или не выполнить следующее действие.
Команды, которые содержат условие, называются условными командами или условными операторами.
Дело в том, что программисты (те, кто пишет программы для БИ;) объявили слова «команда» и
«оператор» синонимами, и мы тоже будем к этому привыкать.
Очень часто в случае выполнения какого-либо условия приходится исполнять не один, а несколько
операторов. Вот, например, какую замечательную программу написал для вас писатель Григорий
Остер:
Возьми густой вишневый сок
И белый мамин плащ.
Лей аккуратно сок на плащ —
Появится пятно.
Теперь, чтоб не было пятна
На мамином плаще,
Плащ надо сунуть целиком
В густой вишневый сок.
Возьми вишневый мамин плащ
И кружку с молоком.
Лей аккуратно молоко —
Появится пятно.
Теперь, чтоб не было пятна
На мамином плаще,
Плащ надо сунуть целиком
В кастрюлю молока.
Возьми густой вишневый сок
И белый мамин плащ...
Неоспоримы поэтические достоинства этого шедевра. Однако ни один программист такого бы не написал
В настоящее время существует несколько универсальных приемов кодирования информации. Одним из
самых важных, играющих ключевую роль в информатике и компьютерной технике способов является
кодирование с помощью двух символов: «О» и «1» («точки» и «тире» и т. п.).
О его универсальности можно судить хотя бы по тому, что с его помощью можно кодировать рисунки. Для
этого на рисунок накладывают клетчатую сетку, а затем те клетки, в которые попал рисунок,
обозначают «1», а все остальные — «О» В результате получается код рисунка, который можно
передавать по каналам связи, записывать в память компьютера и т. д.
Человек в своей практике общения использует много, различных
языков. Прежде всего, это языки устной и письменной формы.
Возникновение целого ряда языков было продиктовано
необходимостью привлечения технических средств для передачи
информации.
Примером такого языка является азбука Морзе, изобретенная для
передачи телеграфных сообщений. В ней каждый символ обычного
алфавита кодируется набором точек и тире (что соответствует
передаче коротких и длинных электромагнитных импульсов). Так
русская буква «А» кодируется сочетанием «• —», буква «С» —
сочетанием «--------» и т. д.
Появление очередного символа в сообщении увеличивает количество
получаемой информации. Поэтому количество информации в
сообщении естественно взять равным длине этого сообщения как
слова, записанного в некотором алфавите.
Тут возникает одна тонкость, которую необходимо иметь в виду. Вот
сообщение, записанное в русском алфавите: мама. Оно имеет длину 4
символа и, значит, содержит 4 единицы информации. Поэтому длина
того же сообщения в двоичном алфавите будет больше.
Для передачи информации человек использует много разных
языков.
Выбор языка зависит как от целей передачи информации, так и от
средств, с помощью которых информация передаётся.
В технических средствах передачи информации обычно
используется язык, алфавит которого состоит из двух символов.
Рассматривая автоматизированные процессы передачи и
накопления информации, можно отвлечься от ее смысловой
интерпретации. В этом случае количество информации в
текстовом сообщении естественно считать равным длине этого
сообщения.
Чтобы стандартизировать измерение количества информации,
договорились за единицу количества информации принять
сообщение, состоящее из одного символа двухсимвольного
алфавита. Использование для измерения количества
информации алфавитов с другим числом символов можно
уподобить переходу к более крупным единицам измерения.
Для измерения количества информации обычно используют
следующие единицы: 1 бит, 1 байт, 1 килобайт, 1 мегабайт и 1
гигабайт.
...Как-то особенно тихо вдруг стало, На небе солнце сквозь тучу играло. Тучка была
небольшая на нем, А разразилась жестоким дождем!
Если спросить, о чем идет речь в этого фрагмента текста, каждый ответит — о погоде. Но
каким бы ни было описание погоды, это все равно не сама погода. И в своей
деятельности - художественной, научной, практической — человек всегда создает некий
«слепок» того объекта, процесса или явления, с которым ему приходится иметь дело.
Это может быть натурная копия — картина или скульптура, макет глобус, муляжи, модели
кристаллических решеток и т. п. является соответствующей натурной моделью.
Такие модели позволяют сконцентрировать внимание на самом существенном в изучаемых
объектах, процессах и явлениях. В этом главное назначение моделей вообще.
Легко, однако, увидеть, что человек далеко не всегда в процессе моделирования доводит до
создания натурной модели. Причин здесь много: создание натурной модели может
оказаться слишком дорогостоящим, или опасным мероприятием работая с этой моделью.
К счастью, для успешной работы человеку, как правило, достаточно располагать
необходимой информацией о предмете своей деятельности. В этом случае говорят, что
человек создает информационную модель объекта, процесса или явления.
Информационные модели обычно представляют собой запись информации с помощью
подходящего языка. Строгие правила построения моделей сформулировать невозможно.
Однако человечество накопило богатый опыт в этой сфере деятельности. Можно без
преувеличения сказать, что все образование (и школьное, и высшее) — это изучение тех
или иных моделей, а также приемов их использования. Так, например, в школьном курсе
физики рассматривают составленные модели изучаемых явлений или процессов. Если
вас просят решить физическую задачу, то вы начинаете, как правило, с поиска
подходящего уравнения, то есть с подбора модели, которая отвечает требованиям вашей
задачи. Вы уже заранее предполагаете, что модель нужно искать в виде уравнения. Как
же возникают модели в человеческой деятельности? Замена реального объекта
(процесса или явления) его копией. Никакая модель не эквивалентна самому объекту
(процессу или явлению). Но при решении конкретной задачи, когда нас интересует
сравнительно немного свойств изучаемого объекта (процесса или явления), построение
модели оказывается намного легче. Нередко человеку достаточно в своей деятельности
иметь не натурную, а любую модель.
Но вот модель задачи построена. Можно бы и результаты получить. Того, кто будет получать
результаты из исходных данных, используя построенную модель, договоримся называть
исполнителем (не обязательно бездумным). Разумеется, модель должна учитывать
возможности исполнителя. Скажем, первоклассника, не умеющего пользоваться схемой
транспортных маршрутов, не стоит в одиночку отпускать в путешествие по незнакомому
городу, вооружив его только этой схемой.
Иными словами, приступая к созданию модели, нужно сразу сориентироваться на
исполнителя, которому предстоит с ней работать. А значит, высказывая предположения,
на которых будет основываться построение модели, не обойтись без информации о
возможностях исполнителя. Исчерпывающую информацию об исполнителе предоставляет
нам список его допустимых действий.
В курсе информатики главное внимание уделяется решению задач с помощью тех
исполнителей, которые «живут» в ЭВМ.
Модель задачи, составленную в расчете на исполнителя, имитированного на ЭВМ, будем
называть компьютерной моделью. Это означает, что исходные данные, результаты и
связи между исходными данными и результатами представлены в виде, «понятном»
компьютерному исполнителю.
Если же исполнитель «умеет» только вычислять, то, высказывая предположения, нужно
позаботиться о том, чтобы исходные данные и результаты были числами, а связи между
ними — математическими соотношениями. После такого построенную программу
называют математической моделью.
Вопросы и задания
Влияет ли выбор исполнителя на построение модели? Как именно?
Что такое компьютерная модель задач
Какую модель называют математической?
1.Почему и как зависит величина количества информации от алфавита, в котором
закодировано сообщение?
2.Что такое 1 бит? 1 байт? 1 килобайт?
3.Почему построение модели может оказаться полезным при решении конкретных задач?
4.Приведите примеры моделей, которые используются при изучении:
б) химии;
в) географии;
г) литературы.
5.Можно ли говорить о том, плох БИ или хорош?
6.Какую систему команд вы предложили бы для домашнего робота БИ-001.
7.Каким способом можно подавать команды БИ?
8.Назовите книги - сборники алгоритмов. Кто является для них БИ и какие наиболее
типичные команды входят в его систему команд?
9.Исполнитель умеет заменять в слове ровно одну букву, причем из осмысленного слова
должно получится снова осмысленное слово (иначе исполнитель ломается).
Составьте алгоритмы преобразования:
А). Слова САД в слово КОТ;
Б). Слова МУХА в слово СЛОН;
10.Что такое моделирование?
11.В чем разница между алгоритмом и программой?
12.Почему одно и то же сообщение может нести разное количество информации?
13.Влияет ли выбор исполнителя на построение модели? Как именно?
14.Что такое компьютерная модель задач
15.Какую модель называют математической?
Download