Выполнение вспомогательного алгоритма с аргументами 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Выполнение вспомогательного алгоритма с аргументами



 

Если в основном алгоритме написать вызов "квадрат (4)", то компьютер запомнит, что аргумента равен 4, и при выполнении алгоритма "квадрат (арг вещ а)" скомандует Чертежнику:

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

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

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

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

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

поднять перо

 

Если же в основном алгоритме написать вызов "квадрат (6)", то компьютер запомнит, что аргумент а равен 6, и скомандует Чертежнику:

 

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

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

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

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

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

поднять перо

 

 

Модель памяти компьютера

 

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

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


Возможный вид памяти при исполнении алгоритма "квадрат" показан на рисунке 44 (здесь

а=4)

 

Рис. 44

 


 

 

Алгоритмы с несколькими аргументами

А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 раз с аргументом не только сокращает запись, но и позволяет решать задачи, для которых невозможен простой линейный алгоритм.

 

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

 

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

 

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

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

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

нач

нц n раз

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

вниз

кц

вверх на (n)

Кон

 

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

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

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

нач

нц m раз

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

кц

нц m раз

| влево

Кц

Кон

 

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

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

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

нач

нц n раз

| вверх

Кц

Кон

 

 



Поделиться:


Последнее изменение этой страницы: 2016-08-12; просмотров: 506; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.58.39.23 (0.011 с.)