Управління циклами в delphi, delphi, компоненти delphi, вихідні коди delphi

Управління циклами в Delphi

У цьому прикладі запускається цикл, в якому змінна i буде змінюватися від -3 до 3. На кожному кроці ділиться 10 на значення i і зберігається результат у змінній r.

При розподілі використовується функція round, яка округлює передане їй значення. В якості вихідного значення ми передаємо їй результат ділення 10 на змінну i, тобто round (io / i). Таким чином, в змінну г буде записаний округлений до цілого результат ділення.

Наступним дією є додавання результату в ListBox1, з одночасним перетворенням змінної г в рядок.

Давайте подивимося, що станеться, коли змінна i буде дорівнює 0. У цьому випадку число 10 буде ділитися на 0, а значить, відбудеться помилка, тому що на 0 ділити не можна. Як же тоді вийти з цієї ситуації? Можна на кожному етапі циклу перевіряти значення i, і якщо воно дорівнює 0, то не виконувати ніяких дій. Два можливих рішення наведені в лістингах:

procedure TForml.CalculateButt # 111; nclick (Sender: TObj ect); var

begin for i: = - 3 to 3 do

begin 11 Це початок для оператора for if i<>0 then

begin // Це початок для оператора if

ListBoxi.Items.Add (40 / '+ IntToStr (i) +' = '+ IntToStr (r)); end; // Цей end для оператора if end; // Цей end для оператора for end;

У цьому прикладі на кожному етапі перевіряється значення i, і якщо воно не дорівнює 0, то тільки в цьому випадку виробляються обчислення.

Це дуже просте рішення для маленьких і простих програм. Але якщо ваш цикл великий і виконує багато дій, то таке рішення буде як мінімум незручно і може загубитися "читабельність" коду. У гіршому випадку, взагалі може нічого не вийти. Ось тут на допомогу приходить оператор continue.

procedure TFormi.CalculateButt # 111; nclick (Sender: TObj ect); var

i, r: Integer; begin for i: = - 3 to 3 do

begin // Це початок для оператора for if 1 = 0 then

begin /./ Це початок для оператора if

ListBoxi.Items.Add ( 'На нуль ділити не можна');

Continue; end; // Цей end для оператора if

ListBoxi.Items.Add ('10 / '+ IntToStr (i) +' = 'VlntToStr (r)); end; // Цей end для оператора for end;


Управління циклами в delphi, delphi, компоненти delphi, вихідні коди delphi

У цьому прикладі ми також перевіряємо на кожному етапі значення змінної i. Якщо воно дорівнює нулю, то виводиться повідомлення в ListBox1 про те, що на нуль ділити не можна, і виконується оператор continue. Як тільки програма зустрічає такий оператор, вона відразу перериває подальше виконання циклу і переходить на наступний крок. Це те ж саме, що виконати команду "Зупинити подальше виконання програми,

збільшити значення змінної i і почати виконання циклу з наступним значенням ".

Як тільки програма зустрічає оператор continue, вона перескакує на кінець циклу, де збільшується значення лічильника (в даному випадку змінна i) і продовжується виконання вже з наступного кроку.

На рис. показана форма з результатом роботи нашого прикладу.

Використання continue разом з циклом for досить зручно і безпечно, на відміну ВІД РЕЖИМІВ while або repeat. until. Подивимося на наступний приклад:

while i<3 do begin if i=0 then continue;

Коли виконуєте оператор continue в циклі while. переконайтеся що лічильник змінюється. В даному випадку потрібно було зробити наступну перевірку:

if i = 0 then begin i: = i + l; continue; end;

У цьому випадку перед перериванням кроку циклу значення змінної i збільшується на одиницю, а значить, на наступному кроці вона вже не буде дорівнює нулю.

Тепер давайте розберемося з оператором break. Як тільки програма зустрічає такий оператор, цикл переривається і виконання передається наступному оператору після оператора циклу. Давайте візьмемо наш попередній приклад і замінимо У ньому continue на break:

procedure TForml.CalculateButt # 111; nclick (Sender: TObj ect); var

i, r: Integer; begin for i: = - 3 to 3 do

begin // Це початок для оператора for if 1 = 0 then

begin // Це початок для оператора if ListBoxl.Items.Add ( 'Ha нуль ділити не можна'); break;

end; // Цей end для оператора if r: = round (10 / i);

ListBoxl.Iterns.Add ('10 / '+ IntToStr (i) +' = '+ IntToStr (r)); end; // Цей end для оператора for ListBox1.Items.Add ( 'Розрахунок закінчено'); end;

В цьому випадку якщо значення i дорівнюватиме нулю, то виводиться повідомлення про те, що на нуль ділити не можна і цикл переривається. Після цього управління передається наступному оператору після циклу.

Як бачите, після зустрічі з нулем в циклі більше нічого не виконується і оператор break просто завершує його роботу.

Допоможи проекту! Розкажи друзям про цей сайт:

Схожі статті