Цикл DO – WHILE и оператор IF

Опубликовано Master 09.04.2021 0 Комментарии Изучаем PowerMill,

Всем приветы! Давайте продолжим))

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

 

 

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

 

Добавленный нами цикл работает хорошо, если необходимо всегда выводить строку 10 green bottles sitting on the wall одинаковое количество раз.

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

  1. Откроем файл макроса в текстовом редакторе и внесем изминения:

// Создание функции Main, содержащей количество раз,

// необходимое для вывода первой строки. FUNCTION Main (INT Count) {

// Создание переменной с текстом первой строки STRING bottles = "10 green bottles sitting on the wall"

// Повторение цикла до тех пор, пока Count больше 0

WHILE Count > 0 {

// Вывод строки PRINT $bottles

// Уменьшение счётчика на 1

$Count = Count - 1

}

// Вывод последних двух строк

PRINT "If 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

}

  1. Сохраните файл как example.mac.

  2. Чтобы запустить этот макрос, нельзя будет выбрать Выполнить из контекстного меню Макросы, потому что необходимо задать значение для Count. Поэтому, наберите в командном окне:

MACRO example.mac 5

Где 5 - это значение для Count. Командное окно отобразит:

 

 

Добавление пользовательских функций

Также можно создавать пользовательские функции. Их можно использовать для выделения блоков кода.

Функции можно использовать:

  • для создания библиотеки полезных операций

  • для того, чтобы макрос был более понятным.

Функцию можно вызывать неограниченное число раз в макросе.

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

 

 

  1. Откройте макрос example.mac в текстовом редакторе и измените его на:

FUNCTION PrintBottles(INT Count) {

// Создание переменной с текстом первой строки STRING bottles = "10 green bottles sitting on the wall"

// Повторение цикла до тех пор, пока Count больше 0

WHILE Count > 0 {

// Вывод строки PRINT $bottles

// Уменьшение счётчика на 1

$Count = Count - 1

}

}

FUNCTION Main (INT Count) {

// Вывод первой строки число раз, заданное

// с помощью переменной Count CALL PrintBottles(Count)

// Вывод последних двух строк

PRINT "If 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

}

  1. Сохраните макрос.

  1. Запустите макрос, набрав MACRO example.mac 5 в командном окне.

 

 

Результат вывода будет такой же как и раньше.

 

Порядок функций в макросе не имеет значения. Например, совершенно неважно будет ли функция Main до или после функции PrintBottles.

Очень важно, чтобы каждая функция имела уникальное имя и чтобы макрос имел функцию с именем Main.

Макрос может содержать любое количество функций.

 

Цикл DO – WHILE

 

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

  1. Отредактируем функцию PrintBottles в  нашем макросе

чтобы получилось следующее:

FUNCTION PrintBottles(INT Count) {

// Создание переменной с текстом первой строки STRING bottles = "10 green bottles sitting on the wall"

// Повторение цикла до тех пор, пока Count больше 0

DO {

// Вывод строки PRINT $bottles

// Уменьшение счётчика на 1

$Count = Count - 1

} WHILE Count > 0

}

Функция Main не меняется:

FUNCTION Main (INT Count) {

// Вывод первой строки число раз, заданное

// с помощью переменной Count CALL PrintBottles(Count)

// Вывод последних двух строк

PRINT "And if 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

}

  1. Наберите MACRO example.mac 0 в командном окне.

Строка 10 green bottles sitting on the wall будет выведена только один раз.

Оператор IF

 

Дословно "Если"

 IF можно использовать чтобы обеспечить вывод строки

10 green bottles sitting on the wall по меньшей мере дважды.

 

  1. Отредактируйте функцию Main в макросе example.mac как указано ниже:

FUNCTION Main (INT Count) {

// Обеспечим, чтобы Count был не менее 2 IF Count < 2 {

$Count = 2

}

// Вывод первой строки число раз, заданное

// с помощью переменной Count CALL PrintBottles(Count)

// Вывод последних двух строк

PRINT "And if 1 green bottle should accidentally fall" PRINT "There will be 9 green bottles sitting on the wall"

}

Функция PrintBottles осталась неизменённой.

FUNCTION PrintBottles(INT Count) {

// Создание переменной с текстом первой строки STRING bottles = "10 green bottles sitting on the wall"

// Повторение цикла до тех пор, пока Count больше 0

WHILE Count > 0 {

// Вывод строки PRINT $bottles

// Уменьшение счётчика на 1

$Count = Count - 1

}

}

  1. Наберите MACRO example.mac 0 в командном окне.

 

 

Строка 10 green bottles sitting on the wall будет выведена дважды.

 

 

На сегодня достаточно, скоро продолжим. До новых встреч.

Оставить комментарий