
- •13 Исполнитель Чертежник и работа с ним
- •13.1. Особенности записи чисел в информатике
- •13.2. Исполнитель Чертежник
- •13.3. Команды с параметрами
- •13.4. Абсолютное и относительное смещение
- •13.5. Пример алгоритма управления Чертежником
- •13.6. Рисование букв
- •13.7. Использование вспомогательных алгоритмов
- •14 Алгоритмы с аргументами
- •14.1. Пример алгоритма с аргументом
- •Выполнение вспомогательного алгоритма с аргументами
- •Модель памяти компьютера
- •Алгоритмы с несколькими аргументами
- •14.5. Аргументы в заголовке цикла n раз
- •14.6. Закрашивание прямоугольника
- •14.7. Заголовок алгоритма с аргументами
- •15 Арифметические выражения и правила их записи
- •15.1. Арифметические выражения в алгоритмическом языке
- •15.2. Выражения вычисляет компьютер
- •15.3. Правила записи арифметических выражений в алгоритмическом языке
- •15.4. Операции и стандартные функции алгоритмического языка
- •15.5. Порядок действий в арифметических выражениях
- •16 Величины в алгоритмическом языке. Команда присваивания
- •16.1. Измерение радиации и температуры
- •16.2. Компьютер запоминает информацию
- •16.3. Компьютер выполняет подсчет
- •16.4. Величины и их характеристики
- •16.5. Описание величин
- •6.6. Модель памяти компьютера
- •16.7. Команда присваивания
- •Примеры использования команды присваивания
- •Еще один пример алгоритма, работающего с величинами
- •Рисование параболы
- •17 Алгоритмы с результатами
- •17.1. Простейший пример алгоритма с результатами
- •17.2. Выполнение алгоритма с результатами
- •17.3. Общие правила выполнения команды вызова вспомогательного алгоритма
- •Алгоритм с результатами при управлении Роботом
- •Алгоритм Евклида
- •Сумма цифр десятичного числа
- •Исполнение алгоритмов
Алгоритмы с несколькими аргументами
А
А39
алг прямоугольник (арг вещ а, b)
дано | перо Чертежника в левом нижнем углу А будущего
| прямоугольника и поднято
надо | нарисован прямоугольник со сторонами а и b , перо Чертежника
| в точке А и поднято
нач
о
пустить
перо
сместиться на вектор (а, 0)
сместиться на вектор (0, b)
сместиться на вектор (-а, 0)
сместиться на вектор (0, - b)
поднять перо
кон
Рис. 45
14.5. Аргументы в заголовке цикла n раз
Аргументы алгоритма можно использовать в любых командах алгоритмического языка, где могут быть числа, в том числе в заголовке цикла n раз.
При помощи цикла n раз с аргументом можно составить алгоритмы для смещения Робота на заданное число клеток в нужном направлении, например:
а
А40
дано | на поле Робота стен нет
надо | Робот сместился на n клеток влево
нач
н
ц
n
раз
| влево
кц
кон
Аналогично можно составить алгоритмы "вниз на (арг цел n)", "вверх на (арг цел n)" и "вправо на (арг цел n)". В дальнейшем мы часто будем пользоваться этими алгоритмами как вспомогательными.
Обратите внимание, что без помощи цикла n раз алгоритм А40 составить нельзя. Таким образом, применение аргументов открывает новые возможности в использовании этой простой конструкции: цикл n раз с аргументом не только сокращает запись, но и позволяет решать задачи, для которых невозможен простой линейный алгоритм.
14.6. Закрашивание прямоугольника
В § 9 мы решали задачу о закрашивании Роботом прямоугольника. Тогда мы вынуждены были указывать в алгоритме конкретные размеры прямоугольника. Используя аргументы, мы можем переписать этот алгоритм так, чтобы при его выполнении закрашивался прямоугольник произвольного размера.
а
А41
А42
дано | на поле Робота стен нет
надо | закрашен прямоугольник размером m*n, Робот в исходном положении
н ач
н
ц
n
раз
закрасить ряд (m)
вниз
кц
вверх на (n)
кон
алг закрасить ряд (арг цел m)
дано | на поле Робота стен нет
надо | Робот закрасил m клеток вправо и вернулся в исходное положение
нач
н
ц
m
раз
|закрасить; вправо
кц
н ц m раз
| влево
кц
кон
алг вверх на (арг цел n)
д
А43
надо | Робот сместился на n клеток вверх
нач
н ц n раз
| вверх
кц
кон
14.7. Заголовок алгоритма с аргументами
Как мы уже знаем, заголовок алгоритма описывает условие задачи, а тело алгоритма — ее решение. Чтобы записать заголовок алгоритма, обычно достаточно внимательно изучить условие, не думая пока о решении.
При построении алгоритмов с аргументами важно точно определить количество аргументов и их типы. Для этого нужно изучить условие задачи и выделить в нем ту информацию, которую необходимо задать, прежде чем приступать к решению. Этой информации будут соответствовать аргументы алгоритма.
Например, в задаче «квадрат» такой дополнительной информацией была сторона квадрата, поэтому у алгоритма появился один аргумент.
В общем случае переменным в условии задачи соответствуют аргументы в заголовке алгоритма.
ЗАДАЧИ И УПРАЖНЕНИЯ
Составьте алгоритм "прямоугольник (арг вещ х, у, а, в)", который рисует прямоугольник с длинами сторон а и в, начиная и заканчивая в углу — точке (х, у) (рис. 46).
Используя алгоритм "прямоугольник" (упр. 1), составьте алгоритмы рисования робота и собачки (рис. 47).
Рис
46.
а) Робот б) Собачка
Рис. 47
3 Составьте алгоритмы рисования схем (рис . 48)
Рис. 48
4. Придумайте какую-нибудь картинку, составленную из прямоугольников. Напишите алгоритм для рисования этой картинки.
Сколько клеток будет закрашено и сколько команд компьютер выдаст Роботу при выполнении вызова алгоритма А41:
а) закрасить прямоугольник (1, 1);
б) закрасить прямоугольник (0, 11);
в) закрасить прямоугольник (9, 0);
г) закрасить прямоугольник (9, 11)?
6
. Опишите,
как будет выполняться вызов А41 "закрасить
прямоугольник (3, 3)" в ситуациях,
изображенных на рисунке 49.
Рис. 49
Измените алгоритмы "закрасить ряд" (А42) и "закрасить прямоугольник" (А41) так, чтобы при вызове "закрасить прямоугольник (3, 3)" в ситуации на рисунке 49б отказа не возникало, а оказался закрашенным квадрат 3x3 клетки.
Нарисуйте результат выполнения алгоритма:
а
А44
нач
квадрат (10); сместиться на вектор (1,1)
квадрат (7); сместиться на вектор (1,1)
квадрат (4); сместиться на вектор (1,1)
квадрат (1)
кон
б
А45
нач
опустить перо
виток (1); виток (3); виток (5); виток (7); виток (9)
поднять перо
кон
а
А46
нач
сместиться на вектор (а, 0)
сместиться на вектор (0, -а)
сместиться на вектор (-а -1,0)
сместиться на вектор (0, а + 1)
кон
Что нарисует Чертежник при выполнении алгоритма "спираль" (А45), если в алгоритме "виток" (А46) всюду заменить 1 на 2?
Измените
алгоритм "виток" (А46)
так, чтобы спираль в алгоритме А45
раскручивалась против часовой стрелки.
Составьте алгоритм рисования спирали, изображенной на рисунке 50.
Измените ваше решение упражнения 11 так, чтобы расстояние между витками при каждом новом витке увеличивалось.
Рис. 50
13. Нарисуйте результат выполнения алгоритма "орнамент":
а
А47
дано | перо Чертежника в левом верхнем углу будущего
| орнамента размером 12x12 и поднято
надо | нарисован орнамент, перо в левом нижнем углу и поднято
нач
| ряд; ряд; ряд
кон
а
А48
дано | перо Чертежника в левом верхнем углу будущего ряда
| размером 12x4 и поднято
надо | нарисован ряд, перо в левом нижнем углу ряда и поднято
нач
I фрагмент; фрагмент; фрагмент
I сместиться на вектор (-12,-4)
кон
а
А49
дано | перо Чертежника в левом верхнем углу будущего
| фрагмента размером 4x4 и поднято
надо | нарисован фрагмент, перо в правом верхнем углу и поднято
нач
опустить перо
сместиться на вектор (2, -2)
сместиться на вектор (-2, -2)
поднять перо; сместиться на вектор (4, 0); опустить перо
сместиться на вектор (0, 1)
сместиться на вектор (-2, 0)
сместиться на вектор (0, 2)
сместиться на вектор (2, 0)
сместиться на вектор (0, 1)
поднять перо
кон
Рис 51
По образцу упражнения 13 составьте алгоритмы рисования орнаментов (рис. 51).
Составьте алгоритм "горизонтальная ломаная (арг цел n, арг вещ а)", рисующий с помощью Чертежника ломаную линию с 2n звеньями, показанную на рисунке 52.
Рис. 52
16. Составьте алгоритм "вертикальная ломаная (арг цел n, арг вещ а)", рисующий ломаную из упражнения 15, повернутую вокруг начального положения пера на 90° по часовой стрелке.
17. Используя алгоритмы из упражнений 15 и 16 как вспомогательные, составьте алгоритмы, рисующие:
а) т горизонтальных ломаных с 2n звеньями одна под другой на расстоянии b друг от друга;
б) т вертикальных ломаных с 2n звеньями одна под другой на расстоянии b друг от друга.
18. Компьютер выполнил последовательность команд:
горизонтальная ломаная (5, 1) вертикальная ломаная (7, 1) горизонтальная ломаная (5,-1) вертикальная ломаная (7, -1)
Что нарисовал Чертежник?
19. Составьте алгоритм с целыми аргументами m и n, который с помощью Робота закрашивает клетки, отмеченные на рисунке 53.
Рис. 53