# Обработка # Условия # Условия Условные операторы занимают центральное место в программировании. Они позволяют организовывать ветвления, например: - Если есть путь, ведущий влево, то сверни влево. - Если количество баллов = 100, то напечатай «Молодец!». ### Блоки #### Блоки **«если»** Простейшим условием является блок **«если»**: [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild1-ru.PNG) При выполнении этого блока значение переменной **x** сравнивается с 100. Если значение переменной **x** превышает 100, выдается фраза «Was für eine große Zahl!» («Какое большое число»)! В противном случае ничего не происходит. #### Блоки **«если... иначе»** Также можно указать, что в случае невыполнения условия что-либо не должно происходить, как в этом примере: [![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild2-ru.PNG) Как и в случае с предыдущим блоком, если **x** > 100, выдается фраза «Was für eine große Zahl!». В противном случае выдается фраза «Das ist nicht sehr groß.» («Это не очень большое число.»). Блок **«если»** может иметь не более одной ветки **«иначе»**. #### Блоки **«если-иначе-если»** Ты можешь протестировать несколько условий при помощи одного блока **«если»**, добавив к нему ветку **«иначе**-**если»**: [![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild3-ru.PNG) Сначала блок проверяет, больше ли **x** 100, и выдает «what a great number!», если это так. Если это не так, блок проверяет, равен ли **x** 42. Если да, он выдает «this is my lucky number!» («Это мое счастливое число!»). В противном случае ничего не происходит. Блок **«если»** может иметь любое количество ветвей **«иначе**-**если»**. Условия анализируются сверху вниз, пока не будет выполнено какое-либо условие или пока не останется ни одного условия. #### Блоки **«если-иначе-если-иначе»** Блоки **«если»** могут иметь как ветви **«иначе**-**если»**, так и ветви **«иначе»**: [![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild4-ru.PNG) Ветвь **«иначе»** обеспечивает выполнение действия, даже если не выполняется ни одно из предшествующих условий. Ветвь **«иначе»** может стоять после любого количества ветвей **«иначе**-**если»**, включая ноль; в последнем случае ты получишь обычный блок **«если**-**иначе»**. #### Изменение блока В панели инструментов отображается только простой блок **«если»** и блок **«если**-**иначе»**: [![Bild5_1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild5-1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild5-1-ru.PNG) [![Bild5_2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild5-2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild5-2-ru.PNG) Чтобы добавить ветви **«иначе**-**если»** и **«иначе»**, щелкни по символу «+». Символ «-» удаляет ветви **«иначе**-**если»**: [![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/scaled-1680-/bild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/bild6-ru.PNG) Обрати внимание на то, что формы блоков допускают добавление любого количества подблоков **«иначе**-**если»**, однако только одного блока **«если»**. # Логика Булевская логика — это простая математическая система, в которой существуют два значения: - **истина** - **ложь** Как правило, логические блоки в программе ROBO Pro Coding предназначены для контроля условий и циклов. Приведем пример: [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild1-ru.PNG) Если значение переменной x больше 100, условие является истиной и выдается текст «Was für eine große Zahl!». Если значение переменной x не больше 100, условие является ложью и выдается текст «Das ist nicht sehr groß.». Булевские значения могут наподобие числам, текстам и спискам сохраняться в переменных и передаваться в функции. ### Блоки Если блок ожидает ввода булевского значения, отсутствие такого ввода интерпретируется как **ложь**. Небулевские значения нельзя напрямую вставить туда, где ожидаются булевские значения, но можно (хотя и не рекомендуется) сохранить небулевское значение в переменной и потом вставить ее в условие. Мы не советуем использовать этот способ, и в следующих версиях ROBO Pro Coding возможности его использования могут быть изменены. #### Значения Для вызова булевского значения можно использовать один-единственный блок с выпадающим списком, в котором (списке) указано **wahr (истина)** или **falsch (ложь)**. #### Операторы сравнения Существует шесть операторов сравнения Каждый из них сравнивает две введенные величины (как правило, два числа) и возвращает **wahr** или **falsch** в зависимости от того, как сравниваются эти величины. [![image-1623518116706.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-9t97asqa.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116706.png)[![image-1623518117182.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-2qqlvlxe.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518117182.png) [![image-1623518116894.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-aoochywb.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116894.png)[![image-1623518116802.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-vxxmcfod.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116802.png) [![image-1623518116985.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-sz6vgygt.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518116985.png)[![image-1623518166030.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2022-01/embedded-image-lafdcj9e.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518166030.png) Шесть операторов сравнения — это равно, не равно, меньше, больше, меньше или равно, больше или равно. #### Логические операторы Блок **und (и)** возвращает **wahr (истина)** тогда и только тогда, когда оба его входных значения являются истиной. [![Bild8.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/nFQbild8.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/nFQbild8.PNG) Блок **oder (или)** возвращает **wahr**, если как минимум одно из двух его входных значений является истиной. [![Bild9.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/0bEbild9.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/0bEbild9.PNG) #### не Блок **nicht (не)** превращает введенное булевское значение в противоположное. Например, результатом [![Bild10_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild10-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild10-ru.PNG) будет **falsch (ложь)**. Если не вводится никакое значение, программа исходит из значения **wahr**, поэтому следующий блок генерирует значение **falsch**: [![Bild11_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild11-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild11-ru.PNG) Не рекомендуем оставлять поле для ввода значения пустым. #### Тернарный оператор Тернарный оператор — это блок **«если-иначе»** в миниатюре. Тернарный оператор принимает три входных значения. Первое из них — проверяемое булевское условие, второе — значение, возвращаемое, если проверка даст результат **wahr (истина)**, третье — значение, возвращаемое, если проверка даст результат falsch (ложь). В следующем примере переменной **Farbe (цвет)** присваивается значение rot (красный), если переменная **x** меньше 10, иначе переменной **Farbe** присваивается значение grün (зеленый). [![Bild12_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild12-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild12-ru.PNG) Тернарный оператор всегда можно заменить блоком **«если-иначе»**. Следующие два примера абсолютно идентичны.[ ](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-06/image-1623518306106.png) [![Bild13_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild13-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild13-ru.PNG) [![Bild14_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild14-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild14-ru.PNG) # Циклы Область «Steuerung» («Управление») содержит блоки, которые указывают, надо ли выполнять другие блоки, находящиеся внутри них. Есть два вида блоков управления: [**блоки «если-иначе»**](https://docs.fischertechnik-cloud.com/books/robo-pro-coding/page/bedingungen "Условия") (описываются на отдельной странице) и блоки, управляющие частотой выполнения их содержимого. Второй вид блоков называют циклами, т. к. их содержимое, также именуемое телом цикла или просто телом, повторяется (может повторяться) многократно. Каждое выполнение цикла называется итерацией. ### Блоки для создания циклов #### **dauerhaft wiederholen (повторять всегда)** Блок **dauerhaft wiederholen** выполняет код, содержащийся в его теле, до завершения выполнения программы. #### **wiederhole (повторить... раз)** Блок **wiederhole** выполняет код, содержащийся в его теле, указанное количество раз. Например, следующий блок десять раз выдаст «Hallo!» («Привет!»): [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/Wyrbild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/Wyrbild1-ru.PNG) #### **wiederhole-solange (повторять, пока …)** Представь себе игру, в которой игрок бросает игральную кость и складывает все выпавшие очки, пока их сумма меньше 30. Следующие блоки описывают смысл этой игры: 1. Переменной с именем **insgesamt (итого)** присваивается начальное значение 0. 2. Цикл начинается с проверки того, меньше ли 30 значение переменной **insgesamt**. Если да, выполняются блоки в теле цикла. 3. Генерируется случайное число в диапазоне от 1 до 6 (имитация броска игральной кости) и сохраняется в переменной с именем **gewürfelt (выпало)**. 4. Выдается выпавшее число. 5. Значение переменной **insgesamt** увеличивается на значение переменной **gewürfelt**. 6. По достижении конца цикла выполняется возврат к шагу 2. [![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild2-ru.PNG) После завершения цикла выполняются все последующие блоки (не показаны). В примере выполнение цикла прекращается, после того как будет выдано определенное количество случайных чисел в диапазоне от 1 до 6 и значением переменной **insgesamt** станет сумма этих чисел, составляющая не менее 30. #### **wiederhole-bis (повторять, пока не …)** Циклы **wiederhole solange** повторяют свое тело, **пока** выполняется какое-либо условие. Циклы **wiederhole bis** похожи на них с тем отличием, что они выполняют свое тело, **пока не** будет выполнено определенное условие. Следующие блоки эквивалентны предыдущему примеру, потому что цикл выполняется, пока переменная **insgesamt** не примет значение, большее или равное 30. [![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild3-ru.PNG) #### **zählen-von-bis (считать от … до)** Цикл **zählen-von-bis** увеличивает значение переменной, начиная с первого значения и заканчивая вторым значением, с шагом, равным третьему значению, причем тело цикла выполняется единожды для каждого значения переменной. Например, следующая программа выдает числа 1, 3 и 5. [![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild4-ru.PNG) Два следующих цикла, каждый из которых выводит числа 5, 3 и 1, демонстрируют, что первое значение может быть больше второго. Эти циклы работают одинаково вне зависимости от того, положителен или отрицателен инкремент (третье значение). [![Bild5_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild5-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild5-ru.PNG) [![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild6-ru.PNG) #### **für jeden (для каждого)** Блок **für jeden** похож на цикл **zählen-von-bis** с тем отличием, что вместо переменной цикла в числовой последовательности он последовательно использует значения из какого-либо списка. Следующая программа выдает каждый элемент из списка «alpha», «beta», «gamma»: [![Bild7_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild7-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild7-ru.PNG) ### Блоки для выхода из цикла Большинство циклов выполняется до тех пор, пока не будет выполнено условие выхода из цикла (у блоков **wiederhole (повторять)**) либо пока переменная цикла не примет все значения (у циклов **zählen mit (считать с)** и **für jeden (для каждого)**). Два следующих редко используемых, но в некоторых случаях очень полезных блока открывают дополнительные возможности управления выполнением циклов. В следующих примерах показано их использование для цикла **für jeden (для каждого)**, но эти блоки можно использовать для циклов всех видов. #### **fahre-mit-nächster-Iteration-fort (переход на следующую итерацию)** Блок **fahre-mit-nächster-Iteration-fort** позволяет пропустить остальные блоки в теле цикла и перейти к следующей итерации цикла. Следующая программа при первой итерации выдает «alpha». При второй итерации выполняется блок **fahre mit nächster Integration fort (переход на следующую итерацию)**, т. е. вывод «beta» пропускается. При последней итерации программа печатает «gamma». [![Bild8_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild8-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild8-ru.PNG) #### Schleifenabbruch (выход из цикла) Блок **schleifenabbruch** служит для досрочного завершения цикла. Следующая программа при первой итерации выдает «alpha», а при второй итерации выходит из цикла, если переменная цикла принимает значение «beta». Программа не доходит до третьего пункта списка. [![Bild9_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild9-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild9-ru.PNG) # Математика Блоки категории Mathematik (Математика) используются для выполнения вычислений. Результаты вычислений можно использовать, например, в качестве значений переменных. В основе большинства «математических» блоков лежат обычные математические действия, поэтому эти блоки должны быть понятны без разъяснений. ### Блоки #### Числа Используй блок Zahl (число), чтобы добавить в свою программу любое число или присвоить какой-либо переменной значение в виде этого числа. Эта программа присваивает переменной **Alter (возраст)** число 12: [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/6Bnbild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/6Bnbild1-ru.PNG) #### Простые вычисления Этот блок имеет структуру «Значение-оператор-значение» Доступные операторы: **+**, **-**, **÷**, **×** и **^**. Оператор выбирают в выпадающем меню. Операторы можно применять как непосредственно к числам, так и к значениям переменных. Пример: [![Bild2.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/Ntibild2.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/Ntibild2.PNG) Этот блок выдает результат 144 (12^2). #### Специальные вычисления Этот блок применяет счетную операцию, выбранную в выпадающем меню, к следующему за этим меню числу или к значению следующей за этим меню переменной. Доступные счетные операции: - корень квадратный; - сумма; - натуральный логарифм; - десятичный логарифм; - экспоненциальная функция с основанием e (e^1, e^2,...); - экспоненциальная функция с основанием 10 (10^1, 10^2,...); - инверсия знака (умножение на -1), где e — эйлерово число. Этот блок извлекает корень квадратный из 16 и присваивает этот результат переменной **i**. [![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/P8vbild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/P8vbild3-ru.PNG) #### Тригонометрические функции Этот блок работает аналогично описанному выше с тем отличием, что в качестве счетных операций используются тригонометрические функции: синус, косинус, тангенс и их подфункции. Указанное число или значение указанной переменной вставляется в функцию, выбранную в выпадающем меню. Полученный результат можно продолжать обрабатывать в программе. Еще есть блок **arctan2 of X: ... Y: ...**, который позволяет при помощи двух вещественных чисел (подставляемых вместо X и Y) получить значение функции arctan2 в области 360°. #### Часто используемые константы Этот блок работает аналогично блоку Zahl (число) с тем отличием, что здесь не надо самостоятельно указывать численное значение. Вместо него применяются уже сохраненные часто используемые константы (напр., π). Константу выбирают в выпадающем меню. #### Rest einer Division (остаток от деления) Блок **Rest von … (остаток от ...)** используется для вывода остатка от деления. Эта программа присваивает переменной **Rest (остаток)** остаток от деления 3:2, т. е. 1: [![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/QwIbild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/QwIbild4-ru.PNG) #### Runden (округление) При помощи блока **runde … (округлить ...)** указанные десятичные числа или значение указанной переменной можно округлить до целого числа. В выпадающем меню предусмотрены три опции: - «runde» («округлить») — коммерческое округление (напр., 4,5 округляется до 5) - «runde auf» («округлить вверх») — округление в большую сторону (напр., 5,1 округляется до 6) - «runde ab» («округлить вниз») — округление в меньшую сторону (напр., 5,9 округляется до 5). #### Анализ списков При помощи блока **... der Liste (... списка)** можно получить следующее: - при вводе «Summe über die» — сумму всех значений списка; - при вводе «Minimalwert der» — минимальное значение списка; - при вводе «Maximalwert der» — максимальное значение списка; - при вводе «Mittelwert der» — среднее арифметическое всех значений списка; - при вводе «Median der» — медианное значение списка; - при вводе «am häufigsten in der» — значение списка, которое встречается чаще всех остальных; - при вводе «Standardabweichung der» — среднеквадратичное отклонение всех значений списка; - при вводе «Zufallswert aus der» — случайное значение из списка. Любую из этих опций можно выбрать в выпадающем меню блока: [![Bild5_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/b4zbild5-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/b4zbild5-ru.PNG) #### Ограничение входных величин Блок **beschränke ... von ... bis … (ограничить ... от … до ...)** позволяет ограничить входные величины определенным интервалом. Перед дальнейшей обработкой входной величины программа проверяет, принадлежит ли она заданному интервалу. В зависимости от входной величины программа может поступать одним из трех способов: - Величина принадлежит интервалу: дальше передается величина в неизменном виде. - Величина меньше нижнего предела интервала: дальше передается этот нижний предел. - Величина больше верхнего предела интервала: дальше передается этот верхний предел. В следующем примере этот блок используется для ограничения значения переменной **Geschwindigkeit (скорость)** диапазоном частоты вращения, поддерживаемым двигателем: [![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/TZkbild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/TZkbild6-ru.PNG) #### Генерирование случайных значений И блок **zufällige Zahl von ... bis... (случайное число от … до ...)**, и блок **zufälliger Bruch (случайная дробь)** выдают случайное значение. При этом блок **zufällige Zahl von ... bis...** выдает число из заданного интервала, а блок **zufälliger Bruch** — значение от 0,0 (включая) до 1,0 (исключая). # Тексты Примеры текстов: «Вещь 1» «12 марта 2010 года» «» (пустой текст) Текст может содержать буквы (нижнего и верхнего регистров), числа, знаки препинания, другие символы и пробелы. ### Блоки #### Создание текста Следующий блок генерирует текст «Hallo» («Привет») и сохраняет его в переменной с именем **Gruß (приветствие):** **[![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/rXVbild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/rXVbild1-ru.PNG)** Блок **erstelle Text aus (создать текст из)** создает из значения переменной **Gruß** и нового текста «Welt» («мир») текст «HalloWelt» («Приветмир»). Обрати внимание на то, что два исходных текста не разделены пробелом, т. к. его не было ни в одном из них. [![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/wCHbild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/wCHbild2-ru.PNG) Чтобы увеличить количество текстов, щелкни по символу «+». Чтобы удалить последний текст, щелкни по символу «-». #### Изменение текста Блок **an ... anhängen (к … добавить)** добавляет указанный текст к указанной переменной. В этом примере он изменяет текст переменной **Gruß** с «Hallo» на «Hallo, da!» («Эй, привет!»): [![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/wy0bild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/wy0bild4-ru.PNG) #### Длина текста Блок **Länge von (длина)** считает количество символов (букв, чисел и т. д.), содержащихся в тексте. Длина выражения «Wir sind #1!» равна 12, длина пустого текста равна 0. [![Bild5_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/ygKbild5-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/ygKbild5-ru.PNG) [![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/ChHbild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/ChHbild6-ru.PNG) #### Проверка на пустой текст Блок **ist leer (пустой)** проверяет, пуст ли указанный текст (равна ли его длина 0). В первом примере результат проверки — **wahr (истина)**, во втором примере — **falsch (ложь)**. [![Bild7_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/5OSbild7-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/5OSbild7-ru.PNG) [![Bild8_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/M1ybild8-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/M1ybild8-ru.PNG) #### Поиск текста Эти блоки можно использовать, чтобы проверить, встречается ли текст в другом тексте, и если да, то где. Например, здесь программе задается вопрос о месте первой буквы «a» в слове «Hallo», результат — 2: [![Bild9_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/100bild9-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/100bild9-ru.PNG) Здесь задается вопрос о месте последней буквы «a» в слове «Hallo», результат — тоже 2: [![Bild10_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/9tEbild10-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/9tEbild10-ru.PNG) Вне зависимости от того, первое или последнее место выбрано, этот блок выдает результат 0, т. к. в слове «Hallo» нет буквы «z». [![Bild11_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/BlUbild11-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/BlUbild11-ru.PNG) #### Извлечение текста ##### Извлечение отдельного символа Этот блок выдает «b» — вторую букву выражения «abcde»: [![Bild12_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/3FSbild12-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/3FSbild12-ru.PNG) Этот блок выдает «d» — предпоследнюю букву выражения «abcde»: [![Bild13_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/zg2bild13-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/zg2bild13-ru.PNG) Этот блок выдает «a» — первую букву выражения «abcde»: [![Bild14_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/fFqbild14-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/fFqbild14-ru.PNG) Этот блок выдаст «e» — последнюю букву выражения «abcde»: [![Bild15_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild15-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild15-ru.PNG) Этот блок с одинаковой вероятностью выдает любую из пяти букв выражения «abcde»: [![Bild16_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild16-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild16-ru.PNG) Ни один из этих блоков не изменяет текст, из которого извлекается символ. #### Извлечение области текста При помощи блока **im Text ... liefer Zeichenkette (из текста … выдай цепочку символов)** можно извлечь область текста, которая начинается на: - букву №, либо - букву № с конца, либо - первую букву и заканчивается на: - букву №, либо - букву № с конца, либо - последнюю букву. В следующем примере извлекается цепочка «abc»: [![Bild17_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild17-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild17-ru.PNG) #### Переключение между верхним и нижним регистрами Этот блок генерирует версию введенного текста, которая написана - ПРОПИСНЫМИ БУКВАМИ (все буквы верхнего регистра), либо - строчными буквами (все буквы нижнего регистра), либо - По Правилу «Слова Начинаются С Прописной Буквы» (первые буквы слов прописные, остальные строчные). Результатом выполнения следующего блока будет «HALLO»: [![Bild18_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild18-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild18-ru.PNG) На небуквенные знаки это не распространяется. Обрати внимание на то, что этот блок не будет оказывать эффекта в языках без регистров, например в китайском. #### Удаление пробелов Следующий блок в зависимости от того, что выбрано в выпадающем меню (маленький треугольник), удаляет пробелы: - в начале текста; - в конце текста; - с обеих сторон текста. Результатом выполнения следующего блока будет «Hi du»: [![Bild19_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild19-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild19-ru.PNG) Пробелы внутри текста не удалились. #### Вывести текст Блок **gib aus (вывести)** выдает входную величину в окне консоли: [![Bild20_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild20-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild20-ru.PNG) При этом текст никогда не отправляется на принтер, как можно было бы подумать, исходя из названия. #### Вывести текст с форматированием Блок **formatiere text (форматировать текст)** форматирует выводимый текст, содержащий переменные. При этом все подстановочные знаки **{}** в тексте заменяются на содержимое переменной, приведенной после текста. В фигурных скобках можно указать форматирование. Например, форматирование **{:.1f}** выводит только первый знак после запятой в переменной **t**. [![image-1638882988865.png](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/image-1638882988865.png)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/image-1638882988865.png) # Списки Как и в повседневной жизни, в ROBO Pro Coding под списком тоже понимается упорядоченный набор элементов, например список дел или список покупок. Элементы списка могут принадлежать любому типу. Одно и тоже значение может встречаться в списке более одного раза. ### Создание списка #### **Создать список из** При помощи блока **erstelle Liste mit (создать список из)** можно указать начальные значения нового списка. В этом примере создается список слов и сохраняется в переменной с именем **Buchstaben (буквы)**: [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/0tIbild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/0tIbild1-ru.PNG) Мы назовем этот список \[«alpha», «beta», «gamma»\]. Ниже показано создание списка **чисел**: [![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/8v3bild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/8v3bild2-ru.PNG) Так создается список **цветов**: [![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/uC2bild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/uC2bild3-ru.PNG) Хотя этот вариант и встречается не так часто, можно создать список значений разных типов: [![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/FGsbild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/FGsbild4-ru.PNG) #### Изменение количества входов Чтобы изменить количество входов, щелкни по значку шестеренки или коснись его. Открывается новое окно. Чтобы добавить новый вход, перетащи подблоки элементов из левой стороны окна в блок списка на правой стороне: В этом примере новый элемент добавлен внизу, но его можно добавить в любом месте. Ненужные подблоки элементов можно перетащить из блока списка влево. #### Создание списка с определенным количеством экземпляров элемента При помощи блока **erstelle Liste mit Element (создать список с … элементами(-ом))** ты можешь создать список, содержащий указанное количество экземпляров элемента. Например, следующие блоки присваивают переменной **Wörter (слова)** значение в виде списка \[«sehr», «sehr», «sehr»\] (\[«очень», «очень», «очень»\]). [![Bild5_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/SFzbild5-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/SFzbild5-ru.PNG) ### Проверка длины списка #### **ist leer (пустой)** Значение блока **ist leer (пустой)** является **истиной**, если он содержит пустой список, и **ложью**, если он содержит что-либо другое. Будет ли следующее выражение **истиной**? Следующий блок будет иметь значение **ложь**, т. к. переменная «Цвета» не пустая: она содержит три элемента. [![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/dLRbild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/dLRbild6-ru.PNG) Обрати внимание на схожесть этого блока с блоком **ist leer (пустой)** для текста. #### **Длина** Значением блока **Länge von (длина)** является количество элементов списка, подставленного в блок. Например, значением следующего блока было бы 3, т. к. список **Farbe** содержит три элемента: [![Bild7_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/Jv7bild7-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/Jv7bild7-ru.PNG) Обрати внимание на то, что блок **Länge von (длина)** считает общее количество элементов в списке, а не количество разных элементов в списке. Например, следующий блок имеет значение 3, хотя список **Wörter** состоит из трех одинаковых слов: [![Bild8_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/1Fcbild8-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/1Fcbild8-ru.PNG) Обрати внимание на схожесть этого блока с блоком **Länge von (длина)** для текста. ### Поиск элементов в списке Эти блоки находят положение элемента в списке. В следующем примере блок, находящий положение первого экземпляра элемента, имеет значение 1, т. к. первое слово «sehr» стоит в начале списка слов (\[«sehr», «sehr», «sehr»\]). [![Bild9_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/i89bild9-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/i89bild9-ru.PNG) Результатом выполнения следующего блока, находящего положение последнего экземпляра элемента, будет 3, т. к. последнее слово «sehr» в списке **Wörter** стоит на 3 месте. [![Bild10_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/xdibild10-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/xdibild10-ru.PNG) Если элемент не встречается в списке, результатом выполнения блока будет 0, как в следующем примере: [![Bild11_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/gPnbild11-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/gPnbild11-ru.PNG) Эти блоки работают аналогично блокам для поиска букв в тексте. ### Вызов элементов из списка #### Вызов одного элемента Вспомни определение списка **Farben (цвета)**: [![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/uC2bild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/uC2bild3-ru.PNG) Следующий блок содержит синий цвет, т. к. он является вторым элементом в списке (если считать слева): [![Bild13_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/57Wbild13-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/57Wbild13-ru.PNG) Этот блок содержит зеленый цвет, т. к. он является вторым элементом (если считать справа): [![Bild14_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/7FNbild14-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/7FNbild14-ru.PNG) Этот блок содержит первый элемент — красный цвет: [![Bild15_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/BQTbild15-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/BQTbild15-ru.PNG) Этот блок содержит последний элемент — желтый цвет: [![Bild16_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/q8nbild16-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/q8nbild16-ru.PNG) Этот блок с одинаковой вероятностью выбирает случайный элемент из списка: красный, синий, зеленый или желтый цвет. [![Bild17_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/4iQbild17-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/4iQbild17-ru.PNG) #### Вызов и удаление элемента При помощи выпадающего меню блок **aus Liste ... abrufen (вызвать … из списка)** превращается в блок **aus Liste ... abrufen** **und entfernen** (**вызвать … из списка** **и удалить**), который выдает такое же значение, но изменяет список: [![Bild18_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/cTrbild18-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/cTrbild18-ru.PNG) В этом примере переменной **erster Buchstabe (первая буква)** присваивается значение «alpha», остальные буквы (\[«beta», «gamma»\]) остаются в списке. [![Bild19_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/VrObild19-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/VrObild19-ru.PNG) #### Удаление элемента списка Если в выпадающем меню выбрать **entfernen (удалить)**, выступ на блоке слева исчезает: [![Bild20_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/zCBbild20-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/zCBbild20-ru.PNG) Первый элемент из списка **Buchstaben** удаляется. #### Вызвать подсписок Блок **aus Liste … Subliste abrufen (вызвать из списка... подсписок**) похож на блок **aus Liste ... abrufen (вызвать … из списка)** с тем отличием, что он извлекает подсписок, а не один элемент. Существует несколько возможностей указать начало и конец подсписка: [![Bild21_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild21-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild21-ru.PNG) [![Bild22_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/EAvbild22-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/EAvbild22-ru.PNG) В этом примере создается новый список **erster Buchstabe (первая буква)**. Этот новый список содержит два элемента: \[«alpha», «beta»\]. [![Bild23_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild23-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild23-ru.PNG) Обрати внимание на то, что этот список не изменяет исходный список. ### Добавление элементов в список #### Замена элементов списка Блок **in Liste ... ersetze (заменить … в списке)** заменяет элемент в определенном месте списка на другой элемент. [![Bild24_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild24-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild24-ru.PNG) Значение пунктов выпадающего меню см. в предыдущем разделе. В следующем примере выполняются два действия: 1. Создается список **Wörter (слова)** с 3 элементами: \[«sehr», «sehr», «sehr»\] (\[«очень», «очень», «очень»\]). 2. Третий элемент списка заменяется на «gut» («хорошо»). Новым значением переменной **Wörter** является \[«sehr», «sehr», «gut»\] (\[«очень», «очень», «хорошо»\]). [![Bild25_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild25-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild25-ru.PNG) #### Вставка элементов в определенное место списка Блок **in Liste ... einfügen bei (вставить в список … на место)** вызывается через выпадающее меню блока **заменить ... в списке**: [![Bild26_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild26-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild26-ru.PNG) Этот блок вставляет новый элемент в указанное место списка, а именно перед элементом, ранее находившимся на этом месте. В следующем примере (основанном на предыдущем примере) выполняются три действия: 1. Создается список **Wörter (слова)** с 3 элементами: \[«sehr», «sehr», «sehr»\] (\[«очень», «очень», «очень»\]). 2. Третий элемент списка заменяется на «gut» («хорошо»). Таким образом, новым значением переменной **Wörter** является \[«sehr», «sehr», «gut»\] (\[«очень», «очень», «хорошо»\]). 3. В начало списка вставляется слово «Sei» («будь»). Таким образом, окончательным значением переменной **Wörter** будет \[«Sei», «sehr», «sehr», «gut»\] (\[«Будь», «очень», «очень», «хорошим»\]). [![Bild27_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild27-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild27-ru.PNG) ### Разделение цепочек символов и объединение в списки #### Создание списка из текста Блок **erstelle Liste aus Text (создать список из текста)** разбивает на части указанный текст при помощи ограничителя: [![Bild28_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild28-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild28-ru.PNG) В вышеприведенном примере возвращается новый список, содержащий три фрагмента текста: «311», «555» и «2368». #### Создание текста из списка Блок **erstelle Text aus Liste (создать текст из списка)** создает из списка единый текст при помощи разделителя: [![Bild29_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild29-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild29-ru.PNG) В вышеприведенном примере возвращается новый текст со значением «311-555-2368». ### Родственные блоки #### Печать списка Блок **drucken (напечатать)** в категории Text (Текст) может выдавать списки. В результате выполнения следующей программы на консоль выводятся показанные данные: [![Bild30_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild30-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild30-ru.PNG) [![Konsole_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/konsole-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/konsole-ru.PNG) #### Выполнение какого-либо действия для каждого элемента списка Блок **für-jeden (для каждого)** в категории «Управление» выполняет ту или иную операцию для каждого элемента списка. Например, этот блок отдельно выводит каждый элемент списка: [![Bild31_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/bild31-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/bild31-ru.PNG) При этом из исходного списка элементы не удаляются. См. также примеры [блоков для выхода из цикла](https://docs.fischertechnik-cloud.com/books/robo-pro-coding/page/schleifen "Циклы"). # Пользование Категория «Benutzung» («Пользование») программы ROBO Pro Coding содержит следующие блоки: - Выбор цвета - Ожидание - Код на Python - Запустить - Выполнение функции #### Выбор цвета Этот блок служит входной величиной, если задается вопрос о цвете (напр., при регулировке цветового баланса камерой). При щелчке по цвету или касании цвета можно выбрать один из 70 цветов палитры. #### Ожидание ##### Ожидание до истечения времени Блок **warte \[\] … (ждать \[\] ...)** приостанавливает выполнение программы на указанное время ожидания. При этом в выпадающем меню (маленький треугольник) можно выбрать единицу измерения времени, а в поле ввода за ним — нужную длину перерыва. ##### Ожидание с условием Блок **warte bis (ждать, пока не)** привязывает перерыв не ко времени, а к выполнению какого-либо условия (напр., нажатию какой-либо клавиши). Условие вставляется после блока **warte** **bis**. #### Код на Python Если ты хочешь интегрировать в ROBO Pro Coding имеющийся код на языке Python, его можно вставить в блок **Python Code (код на Python)**. Тогда программа выполнит все, что указано в блоке на языке Python. #### Запустить Блок **starte wenn** (**запустить, если**) тоже привязан к выполнению условия. Программа, указанная в теле блока, запускается только при выполнении этого условия. #### Выполнение функции При помощи блока **führe Funktion ... in einem Thread aus** (**выполнить функцию ... в отдельном потоке**) выбранная функция выполняется в отдельном потоке. В некоторых случаях благодаря этому программа может продолжать реагировать на ввод данных и выполняться быстрее.
Обработка
# Переменные Мы используем понятие переменной так же, как оно используется в математике и других языках программирования, то есть понимаем под переменной именованное значение, которое может изменяться. Существуют разные способы создания переменных. - Некоторые блоки, например **считать с** и **для каждого**, используют переменную и определяют ее значения. Традиционно в информатике для обозначения таких переменных используется понятие «переменная цикла». - Пользовательские функции (также именуемые «процедурами») могут задавать вводимые данные, вследствие чего генерируются переменные, которые можно использовать только в данной функции. Такие переменные традиционно называют «параметрами» или «аргументами». - Пользователи могут в любой момент изменять переменные при помощи блока **setze (присвоить)**. Их традиционно называют «глобальными переменными». Они используются во всем коде ROBO Pro Coding. #### Выпадающее меню При щелчке по символу выпадающего меню (маленький треугольник) переменной появляется следующее меню: [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/gD2bild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/gD2bild1-ru.PNG) Это меню содержит следующие опции: - отображение имен всех существующих переменных, заданных в этой программе. - «Variable umbenennen...» («Переименовать переменную...»), т. е. изменение имени этой переменной во всей программе (при выборе этой опции программа спросит тебя о новом имени) - «Variable löschen...» («Удалить переменную ...»), т. е. удаление всех блоков, ссылающихся на эту переменную, во всей программе. ### Блоки #### Задать Блок **присвоить** присваивает переменной какое-либо значение и создает эту переменную, если она еще не существует. Например, здесь переменной **Alter (возраст)** присваивается значение 12: [![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/m8zbild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/m8zbild2-ru.PNG) #### Вызвать Блок **rufe ab (вызвать)** выдает значение, сохраненное в переменной, не изменяя его: [![Bild3.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/oLvbild3.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/oLvbild3.PNG) Можно (хотя это и плохая идея) написать программу, в которой перед блоком **вызвать** не будет соответствующего блока **установить**. #### Изменить Блок **ändere (изменить)** прибавляет к переменной число. [![Bild4_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/Ut0bild4-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/Ut0bild4-ru.PNG) Блок **изменить** является сокращением следующей конструкции: [![Bild5_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/vUZbild5-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/vUZbild5-ru.PNG) #### Пример Посмотри на следующий пример кода: [![Bild6_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/dszbild6-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/dszbild6-ru.PNG) Первый ряд блоков создает переменную под названием **Alter (возраст)** и **присваивает** ей начальное значение 12. Второй ряд блоков **вызывает** значение 12, прибавляет к нему 1 и сохраняет полученную сумму (13) в переменной. В последней строке выдается сообщение: «Herzlichen Glückwunsch! Du bist jetzt 13» (Поздравляю! Тебе исполнилось 13 лет»). # Функции Функции делают возможным повторное использование частей кода, структурируя тем самым код в целом. При заполнении блока функции в меню функций появляется новый блок с таким же именем, что и заполняемый блок функции. Сейчас в основную программу можно просто вставить блок с именем функции. При прогоне программы этот блок перенаправляет к коду в одноименной функции и выполняет его. #### Простая функция Блок простой функции позволяет создать функцию с именем, введенным в текстовое поле. Функция может содержать любое количество переменных, добавляемых щелчком по значку шестеренки. Эта функция **Altern (старение)** прибавляет 1 к переменной **Alter (возраст)**: [![Bild1_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/Eu4bild1-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/Eu4bild1-ru.PNG) Функцию можно использовать в основной программе: [![Bild2_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/tZnbild2-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/tZnbild2-ru.PNG) #### Функция с возвращаемым значением Этот блок позволяет создать функцию с возвращаемым значением. Это возвращаемое значение можно использовать в основной программе. Приведем пример: [![Bild3_ru.PNG](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/scaled-1680-/FZWbild3-ru.PNG)](https://docs.fischertechnik-cloud.com/uploads/images/gallery/2021-12/FZWbild3-ru.PNG)