Стрелка (Strelka) - компьютерная шахматная программа для Microsoft Windows, разработанная Юрием Осиповым. В настоящее время “Стрелка” является одной из сильнейших в мире программ, включая блиц-рейтинг листы и сильнейшей в России.
Всего разработано пять версий программы. Последняя программа “Стрелка” 5.5 включает только одно-процессорную версию. В рейтинге CCRL 40/40 от 17.08.2013 шахматная программа “Стрелка” 5.5 64-bit имеет 3115 единиц Бэйесело. В блиц-рейтинге CCRL 40/4 от 24.08.2013 программа “Стрелка” 5.1 64-bit имеет 3137 единиц Бэйесело. В блиц-рейтинге CEGT 4/40 от 28.08.2013 программа Strelka 5.0 x64 1CPU имеет 3003 единиц Эло.
Автор программы Юрий Осипов не утверждает, что последняя версия является полностью оригинальной, так как использовал при разработке многое из других программ: Rybka 3, IPPOLIT’ы, Houdini, Critter и . В наибольшей степени это касалось алгоритмов шахматной программы Houdini 1.5а. Однако, “Стрелка” 5.0 содержит многие принципиальные отличия от других программ. Прежде всего, в алгоритме поиска оценочной функции. Хотя оценка текущей позиции часто выдает странные результаты, её алгоритм строится на цепочке ходов, приведших к ней.
Пройдя тему "Алгоритмы", можно двигаться дальше, углублять свои знания. И следующий шаг это программирование. Пугающее для большинства людей слово - программирование. Но все не так сложно, если правильно подойти к вопросу.
Часть 1.
Управление - важная часть нашей жизни. Видим мы это или нет, но успех любого предприятия зависит от того, насколько четко даны инструкции, насколько они понятны. Кроме того, они должны учитывать знания и способности того, кто эти инструкции будет выполнять.
Предположим, учитель задал вам домашнее задание по теме, которую вы не проходили. Вполне очевидно, что не все справятся с этой задачей.
А если вам поручить построить дом? Вы либо не сможете сделать этого вовсе, так как не обладаете необходимыми знаниями и навыками (а может и просто физически не способны сделать некоторые работы - например, поднять бетонную плиту)... Либо ваш дом не будет соответствовать ожиданиям, не будет пригоден для полноценной эксплуатации.
Реалии таковы, в общении людей, часто можно наблюдать, что мы не даем друг другу четких инструкций. Мы рассчитываем на логику, сообразительность и имеющиеся друг у друга знания. Многое нам кажется элементарным, не требующим комментариев, пояснений.
Но так ли это? Например, я прошу: сделайте мне чай. И даже маленький ребенок знает, что для этого надо налить воду в чайник, включить его, подождать пока закипит вода и т.д. В результате, мне приносят чашечку теплого зеленого чая, без сахара. Вроде все верно. Но я хотела чашку черного, крепкого, горячего чая с сахаром. Это означает, что я дала недостаточно четкие инструкции. Тот, кого я просила сделать чай, воспользовался логикой и додумал то, относительно чего не получил инструкций.
Если мы говорим об общении человека с компьютером, нужно понимать, что компьютер машина. Он может считать с огромной скоростью, совершать многие операции одновременно. Но он совершенно не умеет принимать самостоятельные решения, даже если они логичны и очевидны. Машина - это наш инструмент для решения различных задач, облегчения выполнения работы. Если мы хотим получить результат, нужно предусмотреть все варианты выбора действий, на любом этапе выполнения задачи. Человек может или принять решение сам, или спросить: положить ли тебе сахар в чай? Компьютер только ждет нашего решения.
Сейчас мы начинаем наш путь в мир программирования.
Программа - это алгоритм написанный на языке исполнителя. А язык исполнителя, он же система команд исполнителя (СКИ) - это его умения.
Мы начнем с работы в графическом исполнителе Чертежник. Подобные программы разработаны для того, что бы наглядно демонстрировать процесс управления. Понимая как это работает, вам будет достаточно просто перейти на новый уровень - начать работать на языке программирования. Чертежник поможет нам научиться составлять управляющие алгоритмы.
Откройте программу Стрелочка на своем компьютере.
Обстановка, в которой действует исполнитель, называется средой исполнителя. В нашем случае, как вы видите, это разлинованное поле. Стрелка указывает положение исполнителя. Именно ее движениями мы и будем управлять.
Мы будем работать в режиме прямого управления - человек отдает команду, а ГРИС ее исполняет (ГРИС - графический исполнитель).
Теперь посмотрим, какова СКИ Стрелочки.
Вот простые команды, которые умеет делать наш ГРИС:
шаг
- перемещение ГРИС на одну клетку вперед с рисованием линии;
поворот
- поворот направления движения на 90°
против часовой стрелки;
прыжок
- перемещение вперед на одну клетку, без рисования линии.
Эти команды вы видите в левой части окна. Вы можете как нажимать мышью на кнопки соответствующие команде, так и печатать вручную. Первый способ более предпочтителен, так как экономит время и исключает ошибку в написании.
Начнем с простого - линейная программа. Так же как и линейный алгоритм, такая программа строится по принципу последовательного выполнения шагов.
Для входа в режим программирования надо нажать кнопки - "Начало", затем "Разработка". В левой части экрана вы увидите первые слова нашей программы.
Тест программы, а правильнее сказать - тело программы, должно, так же как и в блок-схеме, размещаться между словами Начало и Конец. В исполнителе, для упрощения, используют их сокращение: НАЧ и КОН. Все команды написанные выше или ниже, не будут учтены программой, а значит, они не будут выполнены.
ЗАДАЧА 1.
Построим квадрат со стороной 2 клетки. Исходное положение ГРИС примем за левый верхний угол квадрата. Стрелка направлена вправо.
Тест программы:
ШАГ ШАГ ПОВОРОТ ПОВОРОТ ПОВОРОТ
ШАГ ШАГ ПОВОРОТ ПОВОРОТ ПОВОРОТ
Как видите, это довольно просто.
Теперь найдите кнопку с изображением зеленой стрелки - это отладка. Данный режим позволяет нам просмотреть как ГРИС исполняет написанную программу. Вы можете выбрать скорость просмотра. Наша первая программа не велика, поэтому предлагаю вам посмотреть ее на самой медленной скорости. Этот режим позволяет не просто посмотреть результат, но и выявить, где допущена ошибка. Если ошибки нет, вы увидите на экране ровный аккуратный квадратик.
Если ошибка найдена, возвращайтесь в режим программирования и вносите корректировку.
ЗАДАЧА 2.
Теперь давайте построим три квадрата со стороной два шага. Разместить квадраты нужно в одну горизонтальную линию. Расстояние между квадратами - один шаг.
В данном случае, вы можем сказать, что у нас несколько раз повторяется одно и тоже действие. Но мы не можем просто скопировать текст предыдущей программы и повторить его три раза. Дело в том, что закончив рисование первого квадрата ГРИС остановится так, что стрелка будет стоять в начальной точке и смотреть вверх.
Но и это не все. Писать три раза программу квадрата нам тоже не обязательно. Для подобных случаев существуют вспомогательные алгоритмы. Это такие алгоритмы, которые решают некую подзадачу из основной задачи и повторяются многократно. Как видно в нашем примере, это может быть и самостоятельный алгоритм (наша первая задача), так и часть других алгоритмов.
В языке программирования такие алгоритмы называют подпрограммами или процедурами.
У нас есть основная задача - Строка квадратов и вспомогательный алгоритм - Квадрат.
Для построения процедуры Квадрат, нужно в левой части экрана выбрать кнопку - Описание процедуры. У вас появляется окно, в котором вы должны задать имя задаваемой процедуры, т.е. для нас - Квадрат. Закройте окно и увидите, что слева появилось начало и конец процедуры - между ними вы пишете текст процедуры:
ШАГ ШАГ ПОВОРОТ ПОВОРОТ ПОВОРОТ
ШАГ ШАГ ПОВОРОТ ПОВОРОТ ПОВОРОТ
ШАГ ШАГ ПОВОРОТ ПОВОРОТ ПОВОРОТ
Теперь нужно построить основной алгоритм Строка квадратов.
Сначала мы вызываем процедуру Квадрат, соответствующей кнопкой в левой части экрана. Теперь, напоминаю - после ее выполнения, ГРИС стоит в начальном положении, но стрелка смотрит вверх. Значит требуется написать шаги, приводящие ее в необходимое для нас положение - когда стрелка стоит в левом верхнем углу будущего квадрата и смотрит вправо. Во эти шаги:
Если вы не уверены, сделайте отладку - убедитесь, что положение стрелки соответствует необходимому. Чем чаще вы ее делаете, тем больше шансов выявить ошибку вовремя. Особенно это ценно при написании большой программы.
Если все в порядке, мы можем продолжить и дописать программу:
сделай Квадрат
ПОВОРОТ ПОВОРОТ ПОВОРОТ ПРЫЖОК ПРЫЖОК ПРЫЖОК
сделай Квадрат
ПОВОРОТ ПОВОРОТ ПОВОРОТ ПРЫЖОК ПРЫЖОК ПРЫЖОК
сделай квадрат
Есть и еще один вариант - так как шаги приведения стрелки повторяются, их можно включить в процедуру Квадрат, либо создать вторую процедуру - Возврат стрелки в исходное.
Попробуйте хотя бы один из вариантов.
Тот способ алгоритма, которым мы воспользовались - описание процедуры, а потом последующее написание основного алгоритма - называется снизу вверх. Но можно делать и наоборот, сначала написать основной алгоритм, а затем уже описывать входящие в него вспомогательные алгоритмы (процедуры).
ЗАДАЧА 3.
Нужно нарисовать линию через весь экран. Исходное положение ГРИС, как и в прошлых задачах, слева. Стрелка смотрит вправо.
Можно сосчитать сколько всего клеток на поле (15) и написать программу нажав кнопку ШАГ 15 раз. Но это не совсем удобно. Что если поле было бы огромным, скажем 200 клеток? Можно сбиться, как при подсчете, так и при написании шагов.
Что бы облегчить себе работу, мы воспользуемся специальной командой. Мы строим цикл. Как вы помните, циклический алгоритм - это алгоритм в котором команда или группа команд выполняется многократно, пока не выполнено условие. В нашем случае условие: делать шаг, пока не дойдем до края поля. В ГРИС край поля так же называется стеной.
Мы выбираем условие:
ШАГ
конец цикла
ЗАДАЧА 4.
Нужно нарисовать рамку по краю поля. ГРИС находится в левом углу поля, стрелка смотрит вправо.
Назовем алгоритм Рамка и используем все полученные знания, что бы сделать программу максимально лаконичной (без написания лишних шагов).
Мы знаем, что ГРИС умеет поворачиваться только против часовой стрелки, поэтому, что бы не делать много лишних поворотов (посмотрите алгоритм из первой задачи Квадрат), нам удобнее повернуть стрелку вниз, тогда разворот в каждом углу рамки мы сможем делать используя только одну команду ПОВОРОТ.
Кроме того, мы уже знаем, что проще построить процедуру и цикл, чем несколько раз печатать одни и те же команды. Используем эти знания.
Создадим процедуру линия, как делали это в прошлой задаче:
процедура ЛИНИЯ
пока впереди не край, повторять
ШАГ
конец процедуры
Теперь напишем основной алгоритм Рамка:
ПОВОРОТ ПОВОРОТ ПОВОРОТ
сделай ЛИНИЯ
ПОВОРОТ
сделай ЛИНИЯ
ПОВОРОТ
сделай ЛИНИЯ
ПОВОРОТ
сделай ЛИНИЯ
конец цикла
Сейчас, что бы убедиться, что вы помните все из темы Алгоритмы и поняли как работает ГРИС Стрелочка, немного отвлекитесь и пройдите тест.
Он удобен тем, что вы сразу видите свой результат - номер вопроса будет подсвечен красным если вы допустили ошибку. После прохождения теста, вам будут показаны правильные ответы. Попробуйте пройти тест несколько раз, что бы убедиться, что все запомнили. Удачи:)
ТЕСТ
Если с этим заданием вы справились, мы можем двигаться далее.
Часть 2.
Вы можете попробовать работать со всеми ГРИС. Для данного занятия нам понадобится только один - Робот. Откройте его на своем компьютере.
Нас ждет немного творческой работы. Перед нами пустое поле. Так выглядит среда исполнителя Робот:
Потренеруйтесь, это станет неплохим развлечением и отдыхом перед предстоящей работой. Нарисовав лабиринт, сохраните его себе на компьютер. ВАЖНО! Что бы он сохранился и в последующем работал, после придуманного вами имени лабиринта, необходимо поставить расширение.maz
Можно нарисовать сколько угодно много вариантов лабиринтов. По мере необходимости загружать их в программу для выполнения.
ЗАДАЧА 1.
Попробуйте нарисовать вот такой лабиринт:
Как видите, рядом я уже написала наш первый алгоритм, состоящий из простых команд
Обратите внимание на отличие оформления команд! Так же как и в языках программирования, в исполнителе Робот, после каждой команды ставится знак - ; Если вы забудете его поставить - исполнитель не выполнит команду. Еще одно полезное отличие - если подряд идет повторение одной и той же команды, в скобках можно указать количество повторений, не вызывая оператор несколько раз.
Давайте посмотрим какая СКИ у Робота и вы выполните несколько алгоритмов.
Система команд Робота больше, чем у Стрелочки:
Часть 3.
Если вы справились со всеми заданиями Робота, то мы можем двигаться дальше. И теперь мы познакомимся с вами с еще одной программой, которая будет последней остановкой на пути к программированию на языке программирования. Эта программа - КуМир.
| Планирование уроков на учебный год | Графический учебный исполнитель
![]() |
|
![]() |
![]() |
Учебные исполнители используются для обучения составлению управляющих алгоритмов.
Есть много учебных исполнителей, придуманных для занятий по информатике. У них разные, часто забавные названия: Черепашка, Робот, Чертежник, Кенгуренок, Пылесосик, Муравей, Кукарача и другие. Одни исполнители создают рисунки на экране компьютера, другие складывают слова из кубиков с буквами, третьи перетаскивают предметы из одного места в другое. Все эти исполнители управляются программным путем. Любому из них свойственна определенная среда деятельности , система команд управления , режимы работы .
В этой главе мы не будем детально описывать работу с каким-то реальным учебным исполнителем из вышеперечисленных (в компьютерных классах разных школ может быть разное программное обеспечение). Мы опишем условного исполнителя, который очень похож на некоторых из существующих в главном: системой команд, языком и приемами программирования.
Многие из учебных исполнителей занимаются рисованием на экране компьютера. Из названных выше это Черепашка, Кенгуренок, Чертежник. Эту группу можно назвать графическими исполнителями. Пусть наш гипотетический (придуманный) исполнитель тоже будет из этой «компании». Назовем его ГРИС, что значит «ГРафический ИСполнитель».
Что умеет делать ГРИС? Он может перемещаться по полю и своим хвостом рисовать на этом поле (предположим, что у него есть хвост, к которому привязан кусочек мела).
Обстановка, в которой действует исполнитель, называется средой исполнителя . Среда графического исполнителя показана на рисунке ниже. Это лист (страница экрана) для рисования. ГРИС может перемещаться в горизонтальном и вертикальном направлениях с постоянным шагом. На рисунке пунктиром показана сетка с шагом, равным шагу исполнителя. Исполнитель может двигаться только по линиям этой сетки. ГРИС не может выходить за границы поля.
Состояние исполнителя на поле определяется, во-первых, его местоположением (в какой точке поля он находится), во-вторых, направлением (куда он смотрит). Направление будем определять, как на географической карте: вверх — на север, вниз — на юг, влево — на запад, вправо – на восток. ГРИС может шагать или прыгать по линиям сетки, а также поворачиваться. Поворачиваться он умеет только против часовой стрелки.
Графический исполнитель — это объект управления. А управлять им будем мы с вами. Целью управления является получение определенного рисунка. Понятно, что этот рисунок может состоять только из горизонтальных и вертикальных отрезков, в других направлениях ГРИС двигаться не умеет.
Задача обычно ставится так: исполнитель находится в данной точке поля, смотрит в данном направлении. Требуется получить определенный рисунок. Например: ГРИС находится в середине поля и смотрит на восток. Надо нарисовать букву «Т» с длиной каждой линии, равной четырем шагам.
Первоначально исполнителю придается исходное состояние. Это делается в специальном режиме установки .
Теперь перейдем к управлению графическим исполнителем. Здесь возможны два режима: режим прямого управления
и режим программного управления
.
Работа в режиме прямого управления происходит так: человек отдает команду, ГРИС ее выполняет; затем отдается следующая команда и т. д. (как в примере с хозяином и собакой).
В режиме прямого управления система команд исполнителя следующая:
Эти команды будем называть простыми командами .
Например, пусть требуется нарисовать квадрат со стороной, равной одному шагу. Исходное положение ГРИС – в левом нижнем углу квадрата, направление — на восток. Будем отмечать состояние исполнителя маленькой стрелкой. Тогда последовательность команд и результаты их выполнения будут следующими:
Работа в программном режиме имитирует автоматическое управление исполнителем. Управляющая система (компьютер) обладает памятью, в которую заносится программа. Человек составляет программу и вводит ее в память. Затем ГРИС переводится в режим установки и человек вручную (с помощью определенных клавиш) устанавливает исходное состояние исполнителя. После этого производится переход в режим исполнения и ГРИС начинает работать по программе. Если возникает ситуация, при которой он не может выполнить очередную команду (выход за границу поля), то выполнение программы завершается аварийно. Если аварии не происходит, то работа исполнителя заканчивается на последней команде.
Таким образом, программное управление графическим исполнителем проходит этап подготовки (программирование и установка исходного состояния) и этап исполнения программы.
В режиме программного управления по-прежнему используются команды шаг, поворот, прыжок. Однако в этом режиме есть еще и другие команды. С ними вы познакомитесь позже.
Язык программирования для графического исполнителя — это учебный Алгоритмический язык (АЯ). Поэтому алгоритмы управления ГРИСом, записанные на АЯ, являются для него одновременно и программами.