загрузка...
загрузка...
На головну

Цикли з умовою

  1. Delphi - Цикли for ... to ... do
  2. Delphi - Цикли while
  3. N У площині контакту воно закінчується злиттям вогнищ взаємодії, що є необхідною умовою виникнення міцних хімічних зв'язків між матеріалами.
  4. арифметичні цикли
  5. біогеохімічні цикли
  6. Розгалуження і цикли в обчислювальних алгоритмах
  7. вкладені цикли

Цикли з умовою використовуються в тих випадках, коли число повторень тіла циклу заздалегідь невідомо. Такий цикл продовжує роботу поки виконується (або не виконується) умова закінчення циклу. Причому, якщо умова закінчення циклу перевіряється перед виконанням тіла циклу, то такі циклічні структури називають циклами з передумовою ( «Виконувати поки»), а якщо перевірка умови відбувається після виконання тіла циклу - циклами з умовою поста ( «Виконувати до тих пір, поки").

 Цикл з передумовою  Цикл з умовою поста

У VB такі цикли утворюються за допомогою конструкцій
 Do ... Loop. Існує 4 види таких циклічних конструкцій, їх синтаксис визначається типом перевіряється умови і місцем його розташування.

 синтаксис  опис
 Do While УсловіеОператориLoop  Цикл з передумовою типу «Поки» .Умова перевіряється до того, як виконується група операторів, що утворюють тіло цікла.Цікл продовжує свою роботу, поки ця умова залишається істинним.
 DoОператориLoop While Умова  Цикл з умовою поста типу «Поки» .Умова перевіряється після того, як оператори, складові тіло циклу, будуть виконані хоча б 1 раз.Цікл працює, поки ця умова залишається істинним.
 Do Until УсловіеОператориLoop  Цикл з передумовою типу «До тих пір поки» .Умова перевіряється до того, як виконується група операторів, що утворюють тіло цікла.Цікл продовжує свою роботу до тих пір, поки ця умова не виконається (тобто до тих пір, поки умова є хибним)
 DoОператориLoop Until Умова  Цикл з умовою поста типу «До тих пір поки» .Умова перевіряється після того, як оператори, складові тіло циклу, будуть виконані хоча б один раз.Цікл працює до тих пір, поки ця умова не виконається (тобто до тих пір, поки умова є помилковим).

Зауваження 1. Щоб цикл з передумовою або з умовою поста успішно завершився необхідно, щоб в тілі циклу був хоча б один оператор, що змінює значення, що входять в логічний вираз змінних.

Зауваження 2. Цикли можуть бути вкладеними, коли всередині одного циклічного процесу повинен виконуватися інший. В цьому випадку необхідно дотримуватися правила: кожен цикл повинен мати свій початок - For або Do (заголовок циклу) і свій кінець - слово Loop або Next (закінчення циклу). Причому, кожен раз спочатку повинен бути закінчений внутрішній цикл, а потім вже зовнішній.

Для безумовного виходу з циклу з умовою використовується оператор Exit Do.

Приклад 1. Визначити кількість цифр в цілому числі N. Алгоритм рішення полягає в тому, що потрібно ділити число N на 10 до тих пір, поки в цілій частині числа не опиниться 0. Кількість таких поділів буде дорівнює числу цифр у числі.

 Private Sub Command1_Click () n = Val (Text1.Text) 'Введення чіслаk = 0' Обнулення лічильника k - кількість ціфрDo'Начало ціклаn = Int (n / 10) 'Виділення ціфриk = k + 1' Підрахунок кількості ціфрLoop While n> 0 'Закінчення цікла'Цікл працює, поки ця умова залишається істинним  
 Text2.Text = Str (k) 'Висновок kText2.Visible = TrueLabel2.Visible = True' Вміст поля стає відімимEnd Sub Private Sub Command2_Click () EndEnd Sub Private Sub Form_Load () Text1.Text = "" 'Очищення поляLabel2.Visible = False 'При завантаженні форми фраза' «Кількість цифр" не віднаText2.Text = "" Text2.Visible = FalseEnd Sub

Використання операторів циклу з умовою виправдано в тому випадку, коли кількість повторень тіла циклу визначається в ході самих обчислень і заздалегідь невідомо. Наприклад, для обчислення сум нескінченної низки  зазвичай задають точність обчислень ? і обчислення ведуть до тих пір, поки чергове доданок по модулю не стане менше заданого ?: .

приклад 2. обчислити  з точністю ? = 10-4.

 Private Sub Command1_Click () Dim x, y, a As SingleEps = Val (Text1.Text) 'Введення точності вичісленійs = 0' Ініціалізація змінної sn = 1Do'Начало ціклаa = n / (n ^ 2 + 1) 'Обчислення чергового члена последовательностіs = s + a 'Обчислення суми последовательностіn = n + 1Loop While a> = 0.0001Text2.Text = Str (s)' Висновок отриманої суммиEnd Sub Private Sub Command2_Click () EndEnd Sub

Використання рекуррентной формули для обчислення
 суми ряду

Рекуррентной називається всяка формула, що виражає кожен член послідовності через попередні члени цієї послідовності. Використовується найчастіше з метою позбавлення від великих чисел при обчисленні суми членів послідовності.

Як правило, в цьому випадку рекуррентная формула має вигляд:  , Звідки, знаючи загальний член послідовності, можна буде знайти коефіцієнт c, на який потрібно множити кожен попередній член послідовності, щоб знайти наступний:

приклад. обчислити .

знайдемо коефіцієнт c, розділивши :

Таким чином, черговий член ряду можна обчислити по рекуррентной формулою:

.

приклад 3. Знайти кількість членів нескінченної низки  , Сума яких дає наближене значення sin (x) З точністю ? = 10-4.

 Private Sub Command1_Click () Const Pi = 3.14159265358979Eps = Val (Text4.Text) 'Точностьx = Val (Text1.Text)' Аргумент xx = x / 180 * Pi 'Переклад в Радіан меруf = Sin (x)' Обчислення точного значення функцііs = 0 'Ініціалізація змінної sa = x' Перший член рядаk = 1'Вивод значення Sin (x) по форматуText2.Text = Format ( f, "0.000E +")
 Do While Abs (f - s)> e 'Цикл виконується поки умова a = -a * x ^ 2 / (2 * k) / (2 * k + 1) s = s + a: k = k + 1LoopText3.Text = Format (s, "0.000E +") Text5.Text = Str (k) End Sub

Зауваження. Іноді виникає необхідність переробити цикл типу For ... Next на цикл Do ... Loop (Навпаки не завжди виходить).

 For ... Next  Do ... Loop з передумовою  Do ... Loop з умовою поста
 For i = 1 to nТело ціклаNext i  i = 1Do While i <= nTело ціклаi = i + 1Loop  i = 1DoТело ціклаi = i + 1Loop Until i> n

 Використання функції Timer

Умова продовження або завершення циклу не завжди пов'язано тільки з внутрішніми причинами, - змінюються від кроку до кроку значеннями будь-яких змінних. Часто, наприклад, цикл завершується після того, як вичерпується відпущений на його виконання час. Щоб реалізувати таку умову, слід скористатися системною функцією Timer. Вона повертає поточний час з точністю до 0,01 сек.

Приклад 4.Обчислити суму нескінченного ряду з використанням функції Timer

 Private Sub Command1_Click () Dim x, y, a As SingleEps = Val (Text1.Text) T = Timer 'Зафіксували час початку роботи программиs = 0: n = 1Doa = n / (n ^ 2 + 1) s = s + a : n = n + 1If Timer-T> 10 Then Exit Do'Еслі різниця між поточним 'часом і часом початку роботи більше 10 сек, то вихід з ціклаLoop Until a <0.0001End Sub


загрузка...
© um.co.ua - учбові матеріали та реферати