Разбиране и използване на цикли в програмирането на Delphi

click fraud protection

Цикълът е общ елемент във всички програмни езици. Delphi има три контролни структури които изпълняват блокове код неколкократно: за, повторете... докато и докато... направя.

Примката ЗА

Да предположим, че трябва да повторим операция фиксиран брой пъти.

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

Стойността на контролна променлива (j), която всъщност е само брояч, определя колко пъти се изпълнява оператор. Ключовата дума за настройка на брояч. В предходния пример началната стойност на брояча е настроена на 1. Крайната стойност е зададена на 5.
Когато операторът for започва да работи, променливата на брояча се задава на началната стойност. Delphi отколкото проверява дали стойността на брояча е по-малка от крайната стойност. Ако стойността е по-голяма, нищо не се прави (изпълнението на програмата прескача към реда на кода, непосредствено след блока за кода за цикъл). Ако началната стойност е по-малка от крайната стойност, тялото на цикъла се изпълнява (тук: показва се полето за съобщение). Накрая, Delphi добавя 1 към брояча и стартира процеса отново.

instagram viewer

Понякога е необходимо да се брои назад. Най- Downto ключова дума указва, че стойността на брояча трябва да бъде намалена с единица всеки път, когато цикълът се изпълнява (не е възможно да се посочи прираст / декремент, различен от един). Пример за цикъл за броене назад.

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

Забележка: важно е никога да не променяте стойността на контролната променлива в средата на цикъла. Това ще доведе до грешки.

Вложен за бримки

Писането на цикъл в друг за цикъл (вмъкване на контури) е много полезно, когато искате да попълните / покажете данни в таблица или мрежа.

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

Правилото за влагане за следващите контури е просто: вътрешният цикъл (j брояч) трябва да бъде завършен, преди да се срещне следващото изречение за външния цикъл (k брояч). Можем да имаме трикратни или четирикратни вложени цикли или дори повече.

Забележка: Като цяло, началните и крайните ключови думи не са строго задължителни, както можете да видите. Ако начало и край не се използват, изявлението непосредствено след оператора се счита за тялото на цикъла.

Примката FOR-IN

Ако имате Delphi 2005 или друга по-нова версия, можете да използвате „новата“ итерация за стил в елемент в колекция над контейнери. Следващият пример демонстрира итерация над низови изрази: за всеки знак в низ проверете дали символът е или 'a' или 'e' или 'i'.

конст
s = 'За програмиране на Delphi';
Var
в: char;
започвам
за ° С в с правя
започвам
ако ° С в [ "А", "е", "I"] тогава
започвам
// направи нещо
край;
край;
край;

Пръчките WHILE и REPEAT

Понякога няма да знаем точно колко пъти трябва да циклира цикъл. Ами ако искаме да повторим операция, докато не достигнем конкретна цел?

Най-важната разлика между цикъла while-do и цикъла за повторение до, е, че кодът на повторение на изявление винаги се изпълнява поне веднъж.

Общият модел, когато пишем повторен (и докато) тип цикъл в Delphi, е следният:

повторение
започвам
изявления;
край;
до условие = вярно
докато условие = вярно правя
започвам
изявления;
край;

Ето кода за показване на 5 последователни полета за съобщения с помощта на повторение до:

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

Както можете да видите, операторът с повторение оценява състояние в края на цикъла (следователно поне един цикъл се изпълнява със сигурност поне веднъж).

От друга страна, операторът while оценява състояние в началото на цикъла. Тъй като тестът се прави в горната част, обикновено ще трябва да сме сигурни, че условието има смисъл, преди цикълът да бъде обработен, ако това не е вярно съставител може да реши да премахне цикъла от кода.

Var j: цяло число;
започвам
J: = 0;
докато j <5 правя
започвам
J: = к + 1;
ShowMessage ('Box:' + IntToStr (j));
край;
край;

Прекъснете и продължете

Процедурите Break and Continue могат да се използват за контрол на потока от повтарящи се изявления: The Break процедурата кара потока на контрол да излезе от, докато или да повтори оператора и да продължи в следващия изявление следвайки примката изявление. Продължението позволява на потока на контрол да премине към следващата итерация на повтаряща се операция.

instagram story viewer