7) Какая алгоритмическая конструкция называется цикличе ской? Как она связана с ветвлением?
8. Водитель автобуса, в котором К мест, продаёт билеты и по одному пропускает пассажиров в автобус. Он должен завер- шить посадку и уехать либо когда в автобус войдут все же лающие, либо когда все места будут заняты. Составьте алго ритм действий водителя.
9. Исполнитель Редактор получает на вход строку цифр и преоб - разует её. Редактор может выполнять две команды. Команда нашлось (г) проверяет, встречается ли цепочка и в строке, поданной на вход исполнителя. Команда заменить (и, ш) за- меняет в строке первое слева вхождение цепочки и на це почку ш. Дана программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (33) ИЛИ нашлось (22)
ЕСЛИ нашлось (33)
ТО заменить (33, 2)
ИНАЧЕ заменить (22, 3)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Какая строка получится в результате применения приведён- ной выше программы к строке, состоящей из:
1) 500 идущих подряд цифр 3;
2) 500 идущих подряд цифр 2;
3) 300 идущих подряд цифр 3 и следующих за ними 200 идущих подряд цифр 2.
7) Циклическая конструкция — это одна из основных алгоритмических конструкций, которая позволяет повторять выполнение определенной части кода (тела цикла) несколько раз, пока выполняется заданное условие. Примеры таких конструкций включают циклы `for`, `while` и `do while`. Циклы могут использоваться, например, для перебора элементов массивов, повторения операций и т.д.
Связь циклов с ветвлением состоит в том, что и циклы, и ветвление (например, условные конструкции `if`, `else`) позволяют управлять потоком выполнения программы. Ветвление определяет, какие инструкции следует выполнить в зависимости от условия, а циклы управляют повторением этих инструкций. То есть, в цикле условие проверяется на каждой итерации, и в зависимости от результата проверки выполняется определенный код.
8) Алгоритм действий водителя автобуса можно представить следующим образом:
1. Начать.
2. Установить количество занятых мест `занятые_места = 0`.
3. Установить количество билетов `проданные_билеты = 0`.
4. Пока (занятые_места < K) И (проданные_билеты < общее_количество_пассажиров) сделать:
1. Пропустить пассажира в автобус (всегда пропускаем).
2. Увеличить количество занятых мест: `занятые_места = занятые_места + 1`.
3. Увеличить количество проданных билетов: `проданные_билеты = проданные_билеты + 1`.
5. Конец. Уехать.
Таким образом, водитель будет пропускать пассажиров до тех пор, пока не закончатся места или пока все желающие не сядут.
9) Применение программы Редактор к различным строкам:
1) Для строки, состоящей из 500 идущих подряд цифр 3 (т.е. "333...3", 500 раз):
- Программа сначала найдет первую подряд идущую 33 и заменит её на 2.
- Затем оставшиеся 498 цифр 3 образуют новую строку, и программа снова найдет 33 и заменит его, пока все желающие не будут заменены.
Результат будет: "2" + 498 раз "3", т.е. "2" + "333...3", в итоге получится строка длиной 499 символов: "2333...3".
2) Для строки, состоящей из 500 идущих подряд цифр 2 (т.е. "222...2", 500 раз):
- Поскольку программа начинает с проверки 33 и не находит его, она сразу найдет 22 и заменит первое его вхождение на 3.
- Это будет продолжаться, пока не останется только 1 цифра 2, что заменится на 3.
В результате получится строка: 499 раз "3" и 1 раз "2", т.е. "333...32".
3) Для строки, состоящей из 300 идущих подряд цифр 3 и 200 идущих подряд цифр 2 (т.е. "333...3222...2", 300 раз 3 и 200 раз 2):
- Программа будет заменять 33 на 2, пока не закончатся 3.
- Все 300 троек будут заменены, что даст сначала строку из "200 тройек", затем "200 двоек".
- Остаток обработки строкой не приведет к дальнейшим замещениям, как минимум.
В итоге получится: 200 раз "2" заменится на "3", строка станет "2" + "200 раз 2" (284 символов в общем, т.е. "2" + "3" + "222...2").