Народна Освіта » Інформатика » § 42. Складання циклічних алгоритмів опрацювання величин

НАРОДНА ОСВІТА

§ 42. Складання циклічних алгоритмів опрацювання величин

Цикл називають вкладеним, якщо він міститься в тілі іншого циклу.

такий цикл також називають внутрішнім, а цикл, у якому він міститься, — зовнішнім.

Вкладені цикли організовані таким чином: внутрішній цикл повністю вміщується в тілі зовнішнього циклу (рис. 42.1).

• А — зовнішній цикл;

• В — внутрішній цикл.

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

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

Надрукувати числа у вигляді таблиці:

Рядок із п’яти цифр можна сформувати за допомогою циклу For: S := ' ';

For i := 1 to 5 do S := S + '5 '; // S — рядок

Щоб повторити виведення даного рядка тричі, вставляємо цей цикл всередину іншого:

For k := 1 to 3 do // тричі виконується цикл із параметром k begin

S := '';

For i := 1 to 5 do S := S + '5 '; // 5 разів виконується цикл із параметром i ListBoxI .Items.Add(S); end;

Параметрами вкладених циклів For повинні бути різні змінні.

 

Надрукувати таблицю множення (рис. 42.2). var N, K: Integer; begin

For N := 2 to 9 do begin For K := 1 to 9 do begin

ListBox1.Items.Add(IntToStr(N) + ' x ' +

IntToStr(K) + ' = ' + IntToStr(N * K)); end;

ListBox1 .Items.Add('---------------');

end; end;

Знайти всі трицифрові натуральні числа, сума цифр яких дорівнює їхньому добутку, та визначити кількість таких чисел (рис. 42.3).

 

Для розв’язання задачі можна перебрати всі можливі сполучення цифр, з яких утворюється десятковий запис трицифрового числа, і перевіряти для кожного сполучення умову задачі. var A, B, C, K: Integer; begin K := 0;

For A := 1 to 9 do // перша цифра For B := 0 to 9 do // друга цифра For C := 0 to 9 do // третя цифра If A + B + C = A * B * C Then begin

K := K + 1;

ListBoxI .Items. Add (I ntToStr(100 * A + 10 * B + C)); end;

ListBoxI.Items.Add('K=' + IntToStr (K)); end;

У задачі використано вкладені цикли. Зверніть увагу, що лише тіло внутрішнього циклу з параметром C взято в операторні дужки begin..end, оскільки складається з двох операторів. Для циклів вищих рівнів у цьому немає потреби, оскільки в кожному з них тіло циклу містить лише один оператор: цикл із параметром C є тілом циклу з параметром B, а той, у свою чергу, є тілом циклу з параметром A.

Питання для самоперевірки

1. Які види циклів ви знаєте? У яких випадках застосовують кожний із цих циклів?

2. У чому полягає правило вкладення циклів?

3. Проаналізуйте циклічну конструкцію:

For i := 1 to 2 do

For j := 1 to 3 do For k := 1 to 3 do

ListBox1.Items.Add(IntToStr(i) + IntToStr(j) + IntToStr(k));

а) Назвіть тіло кожного циклу.

б) Скільки разів буде виконаний кожний цикл?

в) Який результат буде виведений після виконання програми?

4. Який рядок S буде сформовано в результаті виконання фрагмента програми?

S := ' ';

For i := 0 to 1 do For j := 0 to 1 do

S := S + IntToStr(i) + IntToStr(j);

5. Складіть програму для обчислення значення виразу 2k + n при всіх значеннях змінних n = 1, 2, 3 і k = 2, 4, 6, 8.

6. Складіть програму для обчислення F = x + x2 + x3 + ... + xn для х = 0,1; 0,2; ...; 1,0 і введеного з клавіатури значення n.

Вправа 42

Скласти програму для розв’язання старовинної задачі.

Плата за одного бика — 20 карбованців, за корову — 10 карбованців, за теля — 1 карбованець. скільки можна купити биків, корів і телят, якщо на 200 карбованців треба купити 100 голів худоби?

 

1) Створіть новий проект. Змініть заголовок форми на «Старовинна задача».

2) Розмістіть на формі компонент ListBox згідно з рисунком.

3) Додайте на форму кнопку Button1. Змініть заголовок доданої кнопки на «Виконати».

4) Розв’язання задачі.

Позначимо літерою b кількість биків; k — кількість корів; t — кількість телят. Загальна кількість голів дорівнює 100: b + k + t = 100.

За биків заплатили 20b карбованців, за корів — 10k карбованців, за телят — t карбованців, отже, 20b + 10k + t = 200. На 200 карбованців можна купити: не більше 10 биків, тобто 0 <= b <= 10; не більше 20 корів, тобто 0 <= k <= 20; не більше 200 телят, тобто 0 <= t <= 200. Таким чином, необхідно перебрати всі можливі значення змінних b, k, t і вивести в поле ListBox той набір значень, для яких виконується умова (20 * b + 10 * k + t = 200) and (b + k + t = 100).

5) Створіть процедуру обробки події onclick для кнопки Старовинна задача. У програмному коді створеної процедури запишіть такі оператори:

6) Запустіь проект на виконання. Перевірте роботу програми. Збережіть проект у папці Вправа 42.

Комп’ютерне тестування

Виконайте тестове завдання 42 з автоматичною перевіркою на сайті interactive.ranok.com.ua.

Практична робота 15

Складання та виконання алгоритмів із повтореннями та розгалуженнями для опрацювання величин

Завдання: скласти програму для обчислення найбільшого спільного дільника (НСД) чисел А і В за алгоритмом Евкліда. Обладнання: ПК із встановленим середовищем програмування Lazarus.

хід роботи

Під час роботи з комп’ютером дотримуйтеся правил безпеки.

І. Розміщення елементів керування на формі

1. Створіть новий проект.

•2. Розробіть інтерфейс програми згідно з рис. 1.

ІІ. Написання процедури обробки подій

3. Створіть процедуру обробки події onclick для кнопки Обчислити NSD, за допомогою якої обчислюється НСД чисел А і B: поки А ^ В, від більшого числа віднімати менше (рис. 2).

4. Додайте на форму текстове поле Edit4. Змініть заголовок кноп

ки на «Обчислити NSD і NSK».

5. Додайте до програмного коду оператори для обчислення зна

чення найменшого спільного кратного (НСК) чисел А і В та виведення цього значення в поле Edit4. Скористайтеся формулою: NSK(A1B) = А * В / NSD(A, В).

ІІІ. Тестування проекту

6. Запустіть проект на виконання. Перевірте роботу програми

для різних наборів чисел. Збережіть проект у папці Практична робота 15. Завершіть роботу за комп’ютером.

Зробіть висновок: як складати та виконувати циклічні алгоритми з розгалуженням усередині циклу для розв’язування задач.

 

Це матеріал з підручника Інформатика 8 клас Бондаренко

 

Категорія: Інформатика

Автор: admin от 7-10-2016, 22:45, Переглядів: 2153