русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Відмітимо, що при роботі з циклами слід “вручну” перевіряти принаймні початкову та кінцеву ітерації циклу.


Дата додавання: 2014-11-28; переглядів: 787.


 

Цикл for ‑ to ‑ do.

 

Як вже зазначалось вище, цикл for – to ‑ do відноситься до циклів зі скінченною фіксованою кількістю ітерацій. Внаслідок цього для роботи циклу необхідна змінна, яка буде “відповідати” за номер ітерації, тобто індикатор циклу. Індикатором циклу може бути довільна перелікова, інтервальна, ціла, булевська чи символьна змінна. Найчастіше для індексу циклу використовується змінна цілого типу. Загальна структура циклу for ‑ to ‑ do має вигляд

 

for інд_циклу:=початкове_значення_інд to кінцеве_значення_інд do оператор;

 

де інд_циклу – індикатор циклу, ‑ початкове значення індексу циклу, ‑ кінцеве значення індексу циклу. Причому початкове_значення_інд > кінцеве_значення_інд.

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

Не рекомендується у тілі циклу міняти самостійно значення інд_циклу.

Ще одна модифікація циклу for – to – do має вигляд for – downto – do. У цій модифікації індекс циклу

for інд_циклу:=початкове_значення_інд downto кінцеве_значення_інд do оператор;

де інд_циклу – індикатор циклу, ‑ початкове значення індексу циклу, ‑ кінцеве значення індексу циклу. Причому початкове_значення_інд < кінцеве_значення_інд.

 

Приклад 1.

Потрібно порахувати суму усіх цілих чисел у діапазоні від 1 до 50.

Для цього нам потрібно 2 цілих змінних (наприклад і та s): одна (i) відповідатиме за індекс циклу, а друга (s) ‑ за суму.

Початкове значення суми 0. Фрагмент програми матиме вигляд:

s:=0;

for i:=1 to 50 do

s:=s+i;

Зазначимо, що ці змінні i та s мають бути описаними у блоці опису змінних var.

Приклад 2.

Потрібно вивести у ListBox1 послідовні суми чисел від 1 до 50. Тобто 1, 1+2, 1+2+3,..., 1+2+3+...+50.

Для цього потрібно також 2 цілих змінних (наприклад і та s): одна (i) відповідатиме за індекс циклу, а друга (s) ‑ за суму.

У тілі циклу повинна обраховуватись сума та додаватись рядок до ListBox1, тому ми вимушені будемо використати оператор begin end. Початкове значення суми 0. Фрагмент програми матиме вигляд:

 

s:=0;

for i:=1 to 50 do

begin

s:=s+i;

ListBox1.Items.Append(inttostr(s));

end;

 

Приклад використання циклу for to do для сортування числового масиву (бульбашкове сортування)

Потрібно згенерувати випадковим чином значення масиву зі 100 цілих чисел, кожне число має бути у діапазоні від 0 до 16, вивести максив на екран у ListBox1, відсортувати значення елементів масиву за зростанням і вивести їх у ListBox2.

Спочатку розташуємо об’єкти на формі таким чином:

 

 

Далі, розіб’ємо виконання алгоритму на дві частини: клавіша Button1 відповідатиме за заповнення масиву значення і виведення його на екран не сортованим у ListBox1. Клавіша Button2 відповідатиме за сортування масиву та виведення його сортованим у ListBox2.

Крім того нам знадобляться такі глобальні змінні:

 

var

a:array [1..100] of integer;

i,j:integer;

 

Сформулюємо спочатку головну подію для клавіші Button1. По натисканню цієї клавіші спочатку у нас має заповнюватись масив цилими випадковими чисоами у діапазоні від 0 до 16, тому ця частина підпрограми матиме вигляд:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

for i:=1 to 100 do

begin

a[i]:=random(17);

end;

end;

 

Крім того значення елемнтів масиву мають виводитись у ListBox1. Отримаємо:

 

procedure TForm1.Button1Click(Sender: TObject);

begin

for i:=1 to 100 do

begin

a[i]:=random(17);

ListBox1.Items.Append(inttostr(a[i]));

end;

end;

У ListBox1.Items.Append(inttostr(a[i])); ми використовуємо функцію inttostr через те, що елемент масиву “а” має цілий тип, а додати до ListBox можна тільки рядок (або інакше рядкову змінну). Тому нам і доводиться конвертувати ціле значення у рядкове, використовуючи inttostr.

Далі опишемо головну подію для клавіші Button2. Спочатку тут масив має сортуватись за зростанням (тобто елементи масиву мають бути переставлені таким чином, щоб на початку масиву знаходилось найменше значення з елементів масиву, потім більше і т.д. аж до останнього елементу, де знаходиться найбільше значення). Сформулюємо алгоритм бульбашкового сортування.


<== попередня лекція | наступна лекція ==>
Використання оператору IF зі складеними умовами. | Алгоритм бульбашкового сортування.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн