Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
7-2011.doc
Скачиваний:
10
Добавлен:
21.11.2018
Размер:
4.43 Mб
Скачать

1. Команда для создания текстового окна:

нт <имя>[x y] [длина ширина]

– создать текстовое окно с именем «имя», от точки с координатами (х; у) с размерами «длина»  «ширина».

нт “рассказ [-100 200] [400 500]

нт – название команды; <имя> - имя текстового объекта (перед именем ставятся кавычки), [x y] – координаты верхнего левого угла текстового окна; [длина ширина] – размеры окна в пикселях.

2. Другие команды для работы с текстовыми окнами:

Команда

Назначение команды

Пример

пиши [<слова>]

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

пиши [Я хочу учиться на пятёрки]

ст

Стирает текст в активном текстовом окне, окно остаётся пустым.

пиши [Здравствуйте, это Я] ст

удали <имя>

Удаляет имя или свойство текстового объекта

удали "текст1

нрш <число>

Устанавливает размер шрифта для активного текстового окна

нрш 20

пиши [Пробуем шрифт]

нс <"свойства шрифта>

Устанавливает  стиль шрифта

нс [жирный курсив]

пиши [Я хочу учиться на пятёрки]

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

Изменяет цвет шрифта

нцт "красный

пиши "КРАСНЫЙ

нцт 26

пиши "ОРАНЖЕВЫЙ

вставь <слова>

Печатает слова в позиции курсора, курсор на следующую строку не переходит

нст "жирный

нцт "красный

вставь [Обратите внимание!]

Задание 1. Напишите процедуру для создания текстового окна.  

это сказка

нт "Приключения_Элли [-200 200] [300 380]

нрш 10

пиши [   Местность выглядела такой мирной и приветливой,]

пиши [жёлтые кирпичи так прогрелись на солнышке,]

пиши [что Элли очень захотелось пройтись по ним босиком.]

пиши [Девочка сняла серебряные башмачки, смахнула с них]

пиши [дорожную пыль и спрятала в сумку, бережно завернув]

пиши [в большой лист лопуха.]

пиши [   Элли весело шагала по тёплым кирпичам и глядела]

пиши [вперёд. Вдруг она заметила на краю дороги высокий ]

пиши [столб и на нём доску с надписью:]

нрш 15

нцт "синий

нс [жирный курсив]

пиши [               ПУТНИК, ПОТОРОПИСЬ!]

пиши [   ЗА ПОВОРОТОМ ДОРОГИ ИСПОЛНЯТСЯ]

пиши [              ВСЕ ТВОИ ЖЕЛАНИЯ!]

конец

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

Задание 2. Напишите процедуру, которая создаёт текстовое окно с фрагментом текста какой-либо сказки или другого произведения. Хорошо, если во фрагменте будет несколько действующих лиц, и рассказ о каждом Вы выполните разными шрифтами и стилями.

Домашнее задание. Подготовьтесь к тестированию  по командам управления работой объекта "текстовое окно".

Урок 2. Программное управление  Текстовым окном.

Задание 1. Создать Текстовое окно с помощью редактора, а затем сделать такое же Текстовое окно с помощью команд.

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

1) Инструментом   создайте текс-товое окно Текст1 и наберите в нём текст, показанный на рисунке.

2) Выделяя каждую строку, с помощью меню Текст поменять шрифт, гарнитуру и цвет  текста.

3. Чтобы создать похожее окно, сначала установим место верхнего левого угла нового Текстового окна. Для этого, поставив черепаху в нужное место, в поле команд зададим команду место (ответ Логомиров: «Не знаю что делать с [x y]), затем примерно подберём ширину и высоту окна.

4. Далее, набираем программу:

это новое_окно

нт “текст2 [x y][a b]

нрш 15

нцт “красный

пиши [Утром бабочка проснулась]

пиши [Улыбнулась, потянулась]

нцт “желтый

пиши [Раз – росой она умылась.]

нцт “зеленый

пиши [Два – изящно покружилась.]

нцт “голубой

пиши [Три – нагнулась и присела.]

нцт “синий

пиши [На четыре – улетела.]

конец

Вместо х и у – поставьте те координаты, которые вы определили по команде место, вместо a и b - те размеры окна, которые вы подобрали.

Задание 2. С помощью процедуры создайте текстовое окно с текстом не менее, чем из 4 строк. Каждую строчку сделайте разным цветом.

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

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

если <условие> [действие]

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

если_иначе <условие>

[действие1][действие2]

Команда ветвления. Её удобно использовать, если есть два набора действий – при выполнении условия и невыполнении условия

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

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

спроси [<текст вопроса>]

Команда, которая создаёт диалоговое окно с окошком для ввода ответа

Например, если мы напишем команду спроси [Что будете строить?], то в ответ на рабочем поле появится такое окно:

Задание. Написать процедуру, которая по выбору строит квадрат или шестиугольник.

1) на листе Программы заготовим две процедуры, которые строят квадрат и шестиугольник;

2) создадим процедуру, которая сначала спросит нас о том, что мы хотим построить, а потом выполнит наши пожелания. Блок-схема такой процедуры:

это фигура

спроси [Что будете строить?]

если_иначе ответ = 4 [квадрат] [шестиугольник]

конец

К вопросу «Что будете строить?» можно добавить подсказку: «4 – квадрат, 6 – шестиугольник». Тогда вторая строка будет выглядеть так:

cпроси [Что будете строить? 4 – квадрат, 6 – шестиугольник]

3) на рабочем поле создадим кнопку фигура:

4) Запустим процедуру:

5) При ответе «4» получим:

Проверьте работу проекта, когда введённый ответ равен 6. Проверьте как работает проект при вводе любого ответа, отличного от 4. Сделайте выводы.

Задание. Используя диалоговое окно, создать процедуру, которая по Вашему выбору строит восьмиугольник или двадцатиугольник.

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

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

это тр20

повтори 3[вп 20 пр 120]

конец

это тр50

повтори 3[вп 50 пр 120]

конец

это тр80

повтори 3[вп 80 пр 120]

конец

это тр100

повтори 3[вп 100 пр 120]

конец

это тр150

повтори 3[вп 150 пр 120]

конец

это тр200

повтори 3[вп 200 пр 120]

конец

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

это тр :д

повтори 3[вп :д пр 120]

конец

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

 Параметр – это величина, которая может принимать различные значения, и описывает какие-либо характеристики объекта.

В программе параметр имеет имя.

Имя параметра – сочетание любых букв или цифр, записанное без пробела. Перед именем параметра ставится ":".

Значение параметра задаётся при вызове процедуры.

Значение параметра – число или слово, которое Лого автоматически подставляет в процедуру и выполняет её с заданным значением.

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

это кв :д

повтори 4 [вп :д пр 90]

конец

Вызовем её несколько раз, изменяя значение параметра как показано на рисунке:

Пример 2. Процедура построения правильного n-угольника. Параметр – количество сторон, которое мы обозначим, например, :n.

это мног :n

повтори :n [вп 20 пр 360 / :n]

конец

Команда вызова процедуры

Результат работы

мног 10

мног 20

мног 30

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

Пример 3. Процедура построения правильного многоугольника с произвольным числом сторон и произвольной длиной стороны. Обозначим количество сторон, например, :к, а длину стороны – :д.

это мой_угольник :к :д

повтори :к [вп :д пр 360 / :к]

конец

Попробуйте разобраться какая команда вызова процедуры мой_угольник соответствует каждой из картинок:

мой_угольник 3 60

мой_угольник 5 60

мой_угольник 5 80

мой_угольник 10 20

Задание. Перед Вами таблица, в которой для части узоров представлены процедуры, для других Вам придётся написать процедуры самостоятельно.

Процедуры

Вызов

Результат

это треуг

повтори 3 [вп :д пр 120] конец

это узор1 :д

повтори 24 [пр 15 треуг] конец

узор1 120

узор1 90

это линия

повтори 4[вп 60 пр :г]

конец

это узор2 :г

повтори 360 / :г [пр :г линия]

конец

узор2 45

узор2 90

Домашнее задание. Подготовьтесь к самостоятельной работе и тестированию.

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

Сценарий теста. Процедура задаёт вопрос, отвечающий вводит ответ, процедура определяет верность ответа и подсчитывает общий балл.

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

Переменная – поименованная ячейка памяти, многократно используемая в программе.

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

Определим ячейку с именем "результат" и положим в неё 0.

пусть "результат 0

Возьмём содержимое ячейки "результат" (0), прибавим 1 и то, что получилось отправим снова в ячейку "результат".

пусть "результат :результат + 1

 

Возьмём содержимое ячейки "результат" (1), умножим на 2, прибавим 1 и то, что получилось отправим снова в ячейку "результат".

пусть "результат :результат * 2 + 1

Определим содержимое ячейки с именем "результат" равным 8.

пусть "результат 8

пусть "имя <значение>

задать переменную с именем "имя и присвоить ей некоторое значение.

1. Посмотрите примерную блок-схему нашего теста (в разрыве – команды повторяются, поэтому нет смысла выписывать эту блок-схему полностью):  

 

 

 

 

 

 

 

 

 

2. А вот такую процедуру можно написать на листе программ. Переменная для результата называется "рез.

это проверка

нт "т1 [-200 100] [400 200]

нрш 18

пусть "рез 0

спроси [сколько получится при умножении 6 на 7?]

если_иначе ответ = 42 [ст пиши [правильно!] пусть "рез :рез + 1] [ст пиши [неверно!]] спроси [сколько получится при умножении 8 на 4?]

если_иначе ответ = 32 [ст пиши [правильно!] пусть "рез :рез + 1] [ст пиши [неверно!]] спроси [сколько получится при умножении 7 на 3?]

если_иначе ответ = 21 [ст пиши [правильно!] пусть "рез :рез + 1] [ст пиши [неверно!]] спроси [сколько получится при умножении 8 на 7?]

если_иначе ответ = 56 [ст пиши [правильно!] пусть "рез :рез + 1] [ст пиши [неверно!]] спроси [сколько получится при умножении 9 на 8?]

если_иначе ответ = 72 [ст пиши [правильно!] пусть "рез :рез + 1] [ст пиши [неверно!]] ст пиши [Ваш результат - ] пиши :рез пиши [Из 5 возможных]

конец

3. Так работает наш тест:

4. А вот так мы получаем результат:

Задание. Создайте тестовую программу, проверяющую таблицу умножения, из 10 вопросов и проверьте знания своего товарища.

Урок 1. Учимся выбирать ответ.

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

1. Процедура1, создающая текстовое окно, в котором высвечивается текст с вопросом и ответами.

2. Процедура2, обрабатывающая ответ, который передаётся ей как параметр. Параметр она должна сравнить с введённым ответом (ответ можно ввести с помощью диалогового окна) и вызывает следующую процедуру в зависимости от правильности ответа. (вспомните: если_иначе).

3. Если ответ верный, вызывается процедура3, которая увеличивает счётчик правильных ответов и выводит сообщение "верно". Если ответ неверный, то вызывается другая процедура4, которая просто выводит сообщение "неверно".

4. Наконец, нам понадобится процедура5, которая скажет, сколько баллов Вы набрали (в нашем простом примере из одного вопроса 0 или 1).

1) Составим примерную блок-схему процедуры:

2) Затем заготовим на листе проекта два текстовых окна:

 

Текстовое окно текст1 содержит  вопрос и ответы на выбор. Обладает свойством невидимости. Это необходимо, чтобы при создании тестовой задачи из множества вопросов можно было окна с вопросами проявлять и прятать по мере необходимости.

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

3) На листе программ подготовим следующие процедуры:

ТЕСТ

это ТЕСТ

удали "результат

нт "результат [0 200] [100 100]

пусть "рез 0

текст1, ВОПР  3

текст1, спрячь_текст

ОЦЕНКА конец

начало процедуры ТЕСТ

удаляем текстовое окно результат

создаём заново текстовое окно результат создаём переменную рез - счётчик правильных ответов

проявляем текстовое окно текст1 и вызываем процедуру ВОПР обработки ответа

прячем окно текст1

вызываем процедуру ОЦЕНКА

ВОПР

это ВОПР

покажи_текст спроси [укажите правильный ответ]

если_иначе ответ = :о [ВЕРНО] [НЕВЕРНО] конец

Номер ответа, переданный как параметр, сравнивается с введённым через диалоговое окно и вызывается одна из процедур.

ВЕРНО

это ВЕРНО

пусть "рез 1 + :рез

конец

Увеличивается счётчик правильных ответов.

НЕВЕРНО

это НЕВЕРНО

конец  

 

ОЦЕНКА

это ОЦЕНКА

результат, ст пиши [Ваш результат - ] пиши :рез

конец

 

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

Урок 2. Разрабатываем сценарий теста.

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

текст4, вопр 2

текст4, спрячь_текст

Все остальные процедуры работают точно также. Процедуры ВОПР,  ВЕРНО,  НЕВЕРНО вызываются столько раз, сколько вопросов в нашем тесте. Процедура ОЦЕНКА работает один раз в конце программе. Дополнительно мы отредактируем процедуры ВЕРНО и НЕВЕРНО так, чтобы они после каждого введённого ответа в окне результат выводили текст "Правильно" или "Неправильно". Если в нашем тесте N вопросов, то блок-схема будет выглядеть так:

1) Теперь, прежде чем начать писать процедуры нашей многомодульной программы и отлаживать её, заготовим текстовые окна с вопросами:

2) Затем, расположим окна так (не забудьте придать свойство невидимости текстовым окнам с вопросами):

 

Урок 3. Многомодульная процедура Тест.

Теперь, когда у нас есть заготовленные окна с вопросами и ответами и написаны основы процедур, мы можем приступить к созданию многомодульной тестовой задачи. Мы отредактируем тесты трёх процедур: ТЕСТ – добавим вопросы, ВЕРНО, НЕВЕРНО – сделаем, так, чтобы в окне результат выводилась информация о правильности или неправильности ответа:

ТЕСТ

это ТЕСТ

удали "результат

нт "результат [0 200] [100 100] пусть "рез 0

текст1,  ВОПР  3

текст1, спрячь_текст

текст2, ВОПР  1

текст2, спрячь_текст

текст3ВОПР  4

текст3, спрячь_текст

текст4, ВОПР  2

текст4, спрячь_текст

текст5, ВОПР  2

текст5, спрячь_текст

ОЦЕНКА конец

начало процедуры ТЕСТ

удаляем текстовое окно результат

создаём заново текстовое окно результат

создаём переменную рез – счётчик правильных ответов

проявляем текстовое окно текст1 и вызываем процедуру ВОПР обработки ответа

прячем окно текст1

 

 

вызываем процедуру ОЦЕНКА

ВОПР

это ВОПР

покажи_текст спроси [укажите правильный ответ]

если_иначе ответ = :о [ВЕРНО] [НЕВЕРНО] конец

Номер ответа, переданный как параметр, сравнивается с введённым через диалоговое окно и вызывается одна из процедур.

ВЕРНО

это ВЕРНО

пусть "рез 1 + :рез

результат, ст пиши [Верно!] конец

Увеличивается счётчик правильных ответов, выдаём информацию о правильности ответа

НЕВЕРНО

это НЕВЕРНО

результат, ст пиши [Неверно!] конец

выдаём информацию о правильности ответа

ОЦЕНКА

это ОЦЕНКА

результат, ст пиши [Ваш результат - ]пиши :рез вставь [правильных ответов из 5.] конец

сообщаем количество правильных ответов

Как выглядит работающий тест?

Данный фрагмент показывает ожидание ввода номера ответа на текущий вопрос (Вопрос 3.) и информацию об ответе предыдущего вопроса в окне результат.

А в конце работы мы увидим картинку:

Задание. Создайте свой многомодульный тест.

Урок 1. «Пазл» из четырёх деталей.

Алгоритм: 1) подбор подходящей картинки и установление для неё нужных размеров; 2) подготовка пустых форм; 3) создание в проекте нужного количества черепах; 4) написание процедуры.

1. Подберём картинку, близкую к размеру 360360 точек. В данном случае мы нашли картинку "Лягушка", щелкнули по ней правой кнопкой мыши и выбрали команду "копировать".

В редакторе Photoshop выбраем команду: Файл – Новый. В открывшееся новое окно вставляем скопированный рисунок: Редактирование – Вставить. С помощью команды Изображение – Размер изображения можно увидеть, что рисунок имеет размеры 600472 пикселя.

Делаем квадратное выделение (прямоугольное выделение + Shift), а затем уменьшаем размеры до необходимых 360360 точек.

Сохраняем файл в своей папке с именем, например, Lagusha.jpg

2. Вставляем рисунок на лист проекта Логомиров: Файл – Возьми – Рисунок – <имя файла>.

3. Добавляем в проект в Логомирах ещё три черепашки – всего их станет четыре.

4. Рассчитаем, как "накрыть" черепашками нашу картинку.  На чертеже видно, что четыре черепахи должны накрыть рисунок размером 360360 точек (они же шаги – черепахи). Тогда получается, что размер каждой черепахи должен быть 180180, а местоположение каждой черепашки определяется координатами центров малых квадратов:

5. Подготовим формы. Для этого воспользуемся пустыми формами  с номерами 13, 14, 15, 16. Раскрывая каждую форму установим размер 180180 вручную.

6. Вспомните команду "Штамп". С её помощью мы можем сделать черепашью форму частью фона (как у настоящей печати), причём столько раз, сколько хотим, да ещё и размер этого оттиска  можно менять.

Но есть команда, которая делает черепашью форму (одёжку) такой же, как фон, на котором она сидит. Получается «оттиск наоборот». Размер фона, который послужит платьем для черепашки, зависит от размера самой черепашки. Черепашка при этом возьмёт только копию изображения:

возьми_форму

Для черепашки – «надеть» на себя изображение фона.

Но, эта команда не работает с начальной формой черепашки . Поэтому, сначала придадим черепашке новую форму (а мы приготовили формы 13, 14, 15, 16, каждая размером 180180).

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

это формы

пусть "ф 13

ч1, нм [90 90]

нф :ф

возьми_форму

пусть "ф :ф + 1

ч2, нм [-90 90]

нф :ф

возьми_форму

пусть "ф :ф + 1

ч3, нм [90 -90]

нф :ф

возьми_форму

пусть "ф :ф + 1

ч4, нм [-90 -90]

нф :ф

возьми_форму

конец

Наша процедура состоит из четырёх похожих фрагментов.

Переменная ф будет содержать номер формы (изначально её значение равно 13, затем оно будет увеличиваться на 1 при переходе к работе со следующей формой).

Первая черепашка (ч1) занимает назначенное ей место, принимает новую форму (нф :ф) - №13 и переодевается во фрагмент картинки.

Номер формы увеличивается на 1 (№14) для работы со следующей черепашкой – ч2.

Для ч3 и ч4 команды те же самые.

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

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

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

Задание 1. Подберите картинку с изображение цветка, загрузите картинку на лист проекта. Подготовьте две формы и придайте им вид лепестка и пестика с использованием команды возьми_форму. С помощью команды "штамп" создайте новый цветок.

Задание 2. Проверьте работоспособность процедуры на любой картинке.

Урок 2. Массивы и циклы в игре «Пазл»

Допустим, что для игры «Пазл» мы выбрали картинку размером 36060 и сделали программу для шести деталей. Если действовать, как на прошлом уроке, то надо создать 6 черепашек, придать им размер 6060 и написать процедуру, содержащую шесть частей с похожими командами. Что очень похоже на цикл (повторение). Только в данном случае у похожих наборов команд будут разные значения параметров.

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

1. Подготовим картинку 36060:

2."Разобьём" её на шесть частей размером 6060 и рассчитаем координаты центров малых квадратов для установки туда черепашек:

Не забудьте подготовить формы!

В нашем примере для каждой черепашки координата по оси У всегда 0, а координата по оси Х для каждой следующей черепашки увеличивается на 60 шагов.

3. Соберём всех черепашек в один общий «дом», который назовём список черепах (сокращённо, например, спчер), и каждая черепашка будет являться элементом этого списка со своим номером.

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

Посадим на лист проекта 6 черепах и в начало процедуры вставим команду, определяющую список: пусть "спчер [ч1 ч2 ч3 ч4 ч5 ч6]

Чтобы задать действие для элемента с номером к (к = 1, 2, 3, 4, 5, 6), надо использовать команду: для элемент :к :спчер <список команд>.

Такая структура называется массивом.

Массив – поименованная совокупность однотипных данных.

4. Наш <список команд> будет одинаков для всех черепашек из списка (массива). А такие команды должна выполнить каждая черепашка:

установить новую координату по оси Х

нов_х :х

установить нулевую координату по оси У

нов_у 0

надеть новую форму

нф :ф

установить новый размер черепашки

нрз 60

взять форму (одеться в часть картинки)

возьми_форму

подготовить номер элемента для следующей черепашки (увеличить на 1)

пусть "к :к + 1

 

подготовить номер формы для следующего элемента списка черепах (увеличить на 1)

пусть "ф :ф + 1

подготовить новую координату по оси У для следующего элемента списка черепах (увеличить на 60)

пусть "х :х + 60

 

нов_х :х

Установить для черепашки новую координату по оси Х, где :х – переменная. Её значение может быть числом (нов_х 245) или параметром (например, нов_х :коорд1)

нов_у :у  

Установить для черепашки новую координату по оси У, где :у – переменная.

В знакомой нам команде нм [х у] можно указывать только числа.

5. Теперь, с учётом объединения черепах в массив с именем  спчер, напишем основную команду нашей процедуры:

повтори 6 [для элемент :к :спчер нов_х :х нов_у 0 нф :ф нрз 60 возьми_форму пусть "к :к + 1 пусть "ф :ф + 1  пусть "х :х + 60]

Осталось определить начальные значения всех переменных:

пусть "к 1

 

переменная "к содержит номер элемента из массива спчер (начальное значение 1, так как ч1 стоит в списке первой)

пусть "ф 13

 

переменная "ф содержит номер формы для черепах из списка черепах (начальное значение 13)

пусть "х -150  

координата по оси Х для первой черепашки (–150)

пусть "у 0  

координата по оси У для первой черепашки (для всех 0)

Вот теперь можно записать процедуру на лист программ:

это формы

пусть "спчер [ч1 ч2 ч3 ч4 ч5 ч6]

пусть "к 1

пусть "ф 13

пусть "х -150

пусть "у 0

повтори 6 [для элемент :к :спчер нов_х :х нов_у 0 нф :ф нрз 60 возьми_форму

пусть "ф :ф + 1 пусть "к :к + 1 пусть "х :х + 60]

конец

Задание.   Создайте проект "Пазл"  из шести фрагментов с использованием массива черепах и команд нов_х :х  и нов_у :у для картинки размером 48080.

Урок 3. Использование вложенных циклов.

Вложенный цикл – цикл в цикле.

Создадим игру "Пазл" из 16 фрагментов, но, в отличие от предыдущих уроков не будем создавать черепашек вручную, а воспользуемся командой:

нч "имя

создать новую черепашку с именем "имя (по умолчанию – ч2, ч3..). Вновь созданные черепашки – невидимы (используем команду пч (покажи черепашку)), и находятся в точке (0; 0)

1. Подберём картинку 360360 точек, «разрежем» на 16 частей и просчитаем координаты центров каждого из 16-ти малых квадратов:

2. На чертеже видно, что размер каждой черепашки должен быть 9090 точек, а местоположение определяется координатами центров малых квадратов. 

3. Загрузим на лист проекта картинку.

4. Добавим 15 черепашек: сформируем массив (список) черепах с именами: ч1, ч2, ... , ч16. Далее, будем использовать команду нч, где в качестве имени будем брать элемент из массива. Одна черепашка у нас уже есть (ч1), поэтому в нашем цикле будет только 15 тактов.

пусть "спчер [ч1 ч2 ч3 ч4 ч5 ч6 ч7 ч8 ч9 ч10 ч11 ч12 ч13 ч14 ч15 ч16]

пусть "к 2

повтори 15 [нч элемент :к :спчер пч  пусть "к :к + 1]

5. Подготовим начальные значения переменных.

пусть "к 1

к – содержит текущий номер элемента массива спчер. В конце каждого такта внутреннего цикла (одна линейка малых квадратов) значение увеличивается на 1.

пусть "ф 13

ф – содержит текущий номер пустой формы. В конце каждого такта внутреннего цикла увеличивается на 1. При переходе к следующему такту внешнего цикла (к следующей линейке) увеличивается на 12.

пусть "х -135

Значения координаты х для первой черепашки. Значение х в конце каждого такта внутреннего цикла увеличивается на 90 единиц для подготовки к работе со следующей черепахой.

пусть "у 135

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

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

повтори  4[для элемент :к :спчер  нов_х :х  нов_у :у  нф :ф  нрз 90 возьми_форму  пусть "ф :ф + 1 пусть "к :к + 1 пусть "х :х + 90]

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

повтори 4 [повтори 4[для элемент :к :спчер нов_х :х нов_у :у нф :ф нрз 90 возьми_форму пусть "ф :ф + 1 пусть "к :к + 1 пусть "х :х + 90] пусть "х -135 пусть "у :у - 90 пусть "ф :ф + 12]

6. Теперь можно записать процедуру на лист программ, запустить её и играть в  "Пазл".

Задание.  Выполните свой собственный проект "Пазл". Количество фрагментов, размер черепашек определите сами.

Содержание

Стр.

Тема 1. Повторение …………………………………………………………………………............

2

Тема 2. Модель объекта ……………………………………………………………………………..

3

Тема 3. Моделирование ……………………………………………………………………………..

5

Тема 4. Алгоритмические модели ………………………………………………………...........

6

Тема 5. Циклический алгоритм…………………………………………………………………….

8

Урок 1. Построение правильных многоугольников ……………………………….

8

Урок 2-3. Построение окружности и дуги окружности ……………………………

8

Урок 4. Построение сложных рисунков с помощью циклических алгоритмов ……………………………………………………………………………………..

10

Тема 6. Процедуры ……………………………………………………………………………………

10

Урок 1. Процедура. Запуск процедуры ……………………………………………….

10

Урок 2-3. Процедура в процедуре. Домик ……………………………………………

11

Урок 4-5. Построение пейзажа формами и графикой. Использование процедуры Домик …………………………………………………………………………….

12

Урок 6-7. Процедура в процедуре. Рожица ………………………………………….

14

Тема 7. Основы компьютерной анимации ……………………………………………………

15

Урок 1-2. Основы компьютерной анимации ………………………………………..

15

Урок 3-4. Движение нескольких объектов. Мультфильм «Лебедь, рак и щука» ……………………………………………………………………………………………..

17

Урок 5-6. Движение нескольких объектов со сменой форм. Смена картин. Запуск мелодии ……………………………………………………………………………….

19

Тема 8. Работа с текстовыми окнами …………………………………………………………..

21

Урок 1. Процедура создания Текстового окна ……………………………………..

21

Урок 2. Программное управление Текстовым окном ……………………………

23

Тема 9. Разветвляющийся алгоритм. Выбор действий в процедуре …………………

24

Тема 10. Процедуры с параметрами ……………………………………………………………

26

Тема 11. Тест с использованием текстовых окон ……………………………………………

29

Тема 12. Тест с выбором варианта ответа …………………………………………………….

31

Урок 1. Учимся выбирать ответ ………………………………………………………….

31

Урок 2. Разрабатываем сценарий теста ………………………………………………

34

Урок 3. Многомодульная процедура Тест …………………………………………….

35

Тема 13. Игра «Пазл» ………………………………………………………………………………….

37

Урок 1. «Пазл» из четырёх деталей ………………………………………………………

37

Урок 2. Массивы и циклы в «Пазл» ……………………………………………………..

40

Урок 3. Использование вложенных циклов ………………………………………….

42

©Максимовская М.А., 2002 - 2010.

©Максимовская М.А., Ананьева В.А., 2011.

60