Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы и величины исп Чертежн.doc
Скачиваний:
15
Добавлен:
01.03.2025
Размер:
531.46 Кб
Скачать
    1. Алгоритмы с несколькими аргументами

А

А39

лгоритм может иметь несколько аргументов. Рассмотрим пример.

алг прямоугольник (арг вещ а, b)

дано | перо Чертежника в левом нижнем углу А будущего

| прямоугольника и поднято

надо | нарисован прямоугольник со сторонами а и b , перо Чертежника

| в точке А и поднято

нач

о пустить перо

сместиться на вектор (а, 0)

сместиться на вектор (0, b)

сместиться на вектор (-а, 0)

сместиться на вектор (0, - b)

поднять перо

кон

При вызове такого алгоритма важно правильно задать порядок следования аргументов. Соответствие между аргументами в команде вызова и в заголовке алгоритма устанавливается по порядку их следования. На рисунке 45, а показано изображение, полученное при вызове "прямоугольник (3, 7)", а на рисунке 45,б — изображение, полученное при вызове "прямоугольник (7, 3)".

Рис. 45

14.5. Аргументы в заголовке цикла n раз

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

При помощи цикла n раз с аргументом можно составить алгоритмы для смещения Робота на заданное число клеток в нужном направлении, например:

а

А40

лг влево на (арг цел n)

дано | на поле Робота стен нет

надо | Робот сместился на n клеток влево

нач

н ц n раз

| влево

кц

кон

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

Обратите внимание, что без помощи цикла n раз алгоритм А40 составить нельзя. Таким образом, применение аргументов открывает новые возможности в использовании этой простой конструкции: цикл n раз с аргументом не только сокращает запись, но и позволяет решать задачи, для которых невозможен простой линейный алгоритм.

14.6. Закрашивание прямоугольника

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

а

А41

А42

лг
закрасить прямоугольник (арг цел m, n)

дано | на поле Робота стен нет

надо | закрашен прямоугольник размером m*n, Робот в исходном положении

н ач

н ц n раз

закрасить ряд (m)

вниз

кц

вверх на (n)

кон

алг закрасить ряд (арг цел m)

дано | на поле Робота стен нет

надо | Робот закрасил m клеток вправо и вернулся в исходное положение

нач

н ц m раз

|закрасить; вправо

кц

н ц m раз

| влево

кц

кон

алг вверх на (арг цел n)

д

А43

ано | на поле Робота стен нет

надо | Робот сместился на n клеток вверх

нач

н ц n раз

| вверх

кц

кон

14.7. Заголовок алгоритма с аргументами

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

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

Например, в задаче «квадрат» такой дополнительной информацией была сторона квадрата, поэтому у алгоритма появился один аргумент.

В общем случае переменным в условии задачи соответствуют аргументы в заголовке алгоритма.

ЗАДАЧИ И УПРАЖНЕНИЯ

  1. Составьте алгоритм "прямоугольник (арг вещ х, у, а, в)", который рисует прямоугольник с длинами сторон а и в, начиная и заканчивая в углу — точке (х, у) (рис. 46).

  2. Используя алгоритм "прямоугольник" (упр. 1), составьте алгоритмы рисования робота и собачки (рис. 47).

Рис 46.

а) Робот б) Собачка

Рис. 47

3 Составьте алгоритмы рисования схем (рис . 48)

Рис. 48

4. Придумайте какую-нибудь картинку, составленную из прямоугольников. Напишите алгоритм для рисования этой картинки.

  1. Сколько клеток будет закрашено и сколько команд компьютер выдаст Роботу при выполнении вызова алгоритма А41:

а) закрасить прямоугольник (1, 1);

б) закрасить прямоугольник (0, 11);

в) закрасить прямоугольник (9, 0);

г) закрасить прямоугольник (9, 11)?

6 . Опишите, как будет выполняться вызов А41 "закрасить прямоугольник (3, 3)" в ситуациях, изображенных на рисунке 49.

Рис. 49

  1. Измените алгоритмы "закрасить ряд" (А42) и "закрасить прямоугольник" (А41) так, чтобы при вызове "закрасить прямоугольник (3, 3)" в ситуации на рисунке 49б отказа не возникало, а оказался закрашенным квадрат 3x3 клетки.

  2. Нарисуйте результат выполнения алгоритма:

а

А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

  1. По образцу упражнения 13 составьте алгоритмы рисования орнаментов (рис. 51).

  1. Составьте алгоритм "горизонтальная ломаная (арг цел 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