Понимание и использование циклов в программировании на Delphi

Цикл является общим элементом во всех языках программирования. Delphi имеет три управляющие структуры которые выполняют блоки кода несколько раз: для, повторить... пока и пока... делать.

Цикл FOR

Предположим, нам нужно повторить операцию фиксированное количество раз.

// показать 1,2,3,4,5 окна сообщения
вар j: целое число;
начать
за j: = 1 в 5 делать
начать
ShowMessage ('Box:' + IntToStr (j));
конец;
конец;

Значение управляющей переменной (j), которая в действительности является просто счетчиком, определяет, сколько раз выполняется оператор for. Ключевое слово для устанавливает счетчик. В предыдущем примере начальное значение для счетчика установлено в 1. Конечное значение установлено на 5.
Когда начинается выполнение оператора for, для переменной counter устанавливается начальное значение. Delphi чем проверяет, меньше ли значение счетчика, чем конечное значение. Если значение больше, ничего не делается (выполнение программы переходит на строку кода, следующую сразу за блоком кода цикла for). Если начальное значение меньше конечного, выполняется тело цикла (здесь: отображается окно сообщения). Наконец, Delphi добавляет 1 к счетчику и запускает процесс снова.

instagram viewer

Иногда необходимо считать в обратном направлении. Downto Ключевое слово указывает, что значение счетчика должно уменьшаться на единицу каждый раз, когда выполняется цикл (невозможно указать инкремент / декремент, кроме единицы). Пример цикла for, который считает в обратном направлении.

вар j: целое число;
начать
за j: = 5 Downto 1 делать
начать
ShowMessage ('T минус' + IntToStr (j) + 'секунд');
конец;
ShowMessage ('Для последовательности выполнено!');
конец;

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

Вложенные циклы FOR

Запись цикла for в другой цикл for (вложенные циклы) очень полезна, когда вы хотите заполнить / отобразить данные в таблице или сетке.

вар k, j: целое число;
начать
// этот двойной цикл выполняется 4x4 = 16 раз
за k: = 1 в 4 делать
за j: = 4 Downto 1 делать
ShowMessage ('Box:' + IntToStr (k) + ',' + IntToStr (j));
конец;

Правило для вложения циклов for-next простое: внутренний цикл (j counter) должен быть завершен до того, как встретится следующий оператор для внешнего цикла (k counter). Мы можем иметь тройные или четырехкратные вложенные циклы или даже больше.

Примечание. Как правило, ключевые слова начала и конца не обязательны, как вы можете видеть. Если начало и конец не используются, оператор, следующий сразу за оператором for, считается телом цикла.

Цикл FOR-IN

Если у вас Delphi 2005 или более новая версия, вы можете использовать «новую» итерацию стиля «элемент в коллекции» над контейнерами. Следующий пример демонстрирует перебор строковых выражений: для каждого символа в строке проверьте, является ли символ «a» или «e» или «i».

Const
s = 'О программировании на Delphi';
вар
с: символ;
начать
за с в s делать
начать
если с в [ 'А', 'е', 'я'] тогда
начать
// сделай что-нибудь
конец;
конец;
конец;

Циклы WHILE и REPEAT

Иногда мы не будем точно знать, сколько раз цикл должен цикл. Что если мы хотим повторить операцию, пока не достигнем конкретной цели?

Самое важное различие между циклом while-do и циклом повторения до того, что код повторить заявление всегда выполняется хотя бы один раз.

Общая схема, когда мы пишем цикл с повторением (и while) в Delphi, выглядит следующим образом:

повторение
начать
заявления;
конец;
до того как условие = правда
пока условие = правда делать
начать
заявления;
конец;

Вот код для отображения 5 последовательных окон сообщения с использованием repeat-before:

вар
j: целое число;
начать
J: = 0;
повторение
начать
j: = j + 1;
ShowMessage ('Box:' + IntToStr (j));
конец;
до того как j> 5;
конец;

Как видите, оператор repeat оценивает условие в конце цикла (поэтому цикл repeat обязательно выполняется хотя бы один раз).

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

вар j: целое число;
начать
J: = 0;
пока J <5 делать
начать
J: = J + 1;
ShowMessage ('Box:' + IntToStr (j));
конец;
конец;

Перерыв и продолжить

Процедуры Break и Continue могут использоваться для управления потоком повторяющихся операторов: Break Процедура заставляет поток управления выйти из оператора for, while или repeat и продолжить на следующем заявление следуя петле заявление. Продолжить позволяет потоку управления перейти к следующей итерации повторяющейся операции.

instagram story viewer