Цикл з передумовою
1. Який вигляд має і як виконується команда циклу з лічильником в Object Pascal?
2. Який вигляд має і як виконується блок-схема циклу з передумовою?
3. У яких випадках в алгоритмах використовується цикл з лічильником, а в яких - цикл з передумовою?
ЦИКЛ З ПЕРЕДУМОВОЮ
Ви вже знаєте, що цикл з передумовою як фрагмент алгоритму починається з команди перевірки умови й результатом виконання цієї команди може бути або істина (Так, true), або хиба (Ні, false). І залежно від результату виконання цієї команди - виконуватимуться команди тіла циклу або команда алгоритму, наступна за циклом.
У загальному випадку у цій команді визначається значення певного логічного виразу, яке може бути або true, або false.
Загальний вигляд блок-схеми циклу з передумовою такий (мал. 6.31):
КОМАНДА ЦИКЛУ З ПЕРЕДУМОВОЮ В OBJECT PASCAL
Команда циклу з передумовою в мові програмування Object Pascal має такий вигляд:
While<aori4HHfi вираз>
Then begin
<команди тіла циклу> end;
(англ. while - поки).
Виконання цієї команди відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
• якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
• серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.
Розглянемо задачу, алгоритм розв’язування якої містить цикл з передумовою.
Задача. Скільки потрібно взяти доданків, перший з яких дорівнює заданому д ійсному числу, а кожний наступний на 3 більший від попереднього, щоб їхня сума перевищила 100?
Даними цієї задачі є перший доданок. Вводитимемо його в поле.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження суми, значення першого доданка. А змінній п, яку використаємо для збереження кількості взятих доданків, присвоїмо значення 1, бо в сумі вже враховано один (перший) доданок.
До суми потрібно додавати наступні доданки, поки ця сума буде меншою, або дорівнюватиме 100. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100. У тілі циклу шукатимемо наступний доданок, додаватимемо його до поточного значення суми і збільшуватимемо кількість доданих доданків на 1.
Відповідний фрагмент проекту матиме такий вигляд: var a, s: real; n: integer; begin
a := StrToFloat (Editl.Text);
s := a; n := 1;
while s <=100 do
begin
a := a+3;
s := s+a;
n := n+1;
end;
Labell.Caption := IntToStr(n); end;
Загальний вигляд блок-схеми циклу з передумовою показано на малюнку 6.31.
Команда циклу з передумовою в мові програмування Object Pascal має такий вигляд:
While<aori4Hnfi вираз>
Then begin
<команди тіла циклу> end;
Виконання цієї команди відбувається так: обчислюється значення логічного виразу; якщо це значення true, то виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
1*. Який вигляд має блок-схема циклу з передумовою? Поясніть виконання цього циклу.
2*. Чи можуть команди тіла циклу з передумовою не виконуватись жодного разу? Поясніть свою відповідь. Наведіть приклади.
3*. Чи може виконання циклу з передумовою ніколи не закінчитися? Поясніть свою відповідь. Наведіть приклади.
4*. Чим відрізняються між собою цикл з лічильником і цикл з передумовою?
5*. У чому полягають відмінності у виконанні основних алгоритмічних структур: слідування, розгалуження, цикл з лічильником і цикл з передумовою?
6°. Який загальний вигляд команди циклу з передумовою в Object Pascal?
7*. Як виконується команда циклу з передумовою в Object Pascal?
Виконайте завдання
2*. Виконайте фрагмент програми та з’ясуйте, якими будуть значення змінних після його завершення: а) k := 1; a := 12; б) s := 0; a := 1; k := 1;
while a < 100 do while a < 50 do begin begin
a := 2*a — 4; s := s + a;
k := k + 1; k := k + 1;
end; a := k*k;
end;
3*. Виконайте фрагмент програми та з’ясуйте, якими будуть значення змінних після його завершення: а) k := 1; a := 100; б) s := 0; a := 5;
while a > 10 do while a <= 100 do
begin begin
a := a/2; s := s + a;
k := k + 1; a := a*2;
end; end;
4*. Складіть блок-схему алгоритму знаходження суми чисел, перше з яких дорівнює 7, кожне наступне на 5 більше від попереднього і всі вони не перевищують 100. Виконайте алгоритм.
5*. Складіть блок-схему алгоритму знаходження суми додатних чисел, перше з яких дорівнює 50, кожне наступне на 8 менше від попереднього. Виконайте алгоритм.
6*. Створіть проект, у якому можна обчислити кількість двоцифрових чисел серед чисел, перше з яких дорівнює 10, а кожне наступне більше від попереднього на задане додатне число. Збережіть проект у папці з іменем Завдання 6.7.6, створеній у вашій папці.
7*. Створіть проект для обчислення середнього арифметичного додатних чисел серед чисел, перше з яких дорівнює 100, а кожне наступне менше від попереднього на задане додатне число. Збережіть проект у папці з іменем Завдання 6.7.7, створеній у вашій папці.
8*. Створіть проект для розв’язання задачі: Клієнт поклав у банк певну суму грошей. Щорічно банк додає до суми наперед визначений відсоток від суми, що зберігається на рахунку п ісля попереднього року. Через скільки років сума на рахунку перевищить S грн? Збережіть проект у папці з іменем Завдання 6.7.8, створеній у вашій папці.
ПРАКТИЧНА РОБОТА № 12
«Складання та виконання проектів з повтореннями та розгалуженнями
для опрацювання величин»
Увага! Під час роботи з комп’ютером дотримуйтеся правил безпеки та санітарно-гігієнічних норм.
1. Відкрийте середовище Lazarus.
2. Створіть проект для розв’язування задачі: Відомі довжини сторін двох прямокутників. Обчислити площі прямокутників та порівняти їх. Визначити, чи є прямокутники квадратами. Визначити, чи вміститься один прямокутник усередину другого.
1. Розмістіть на формі поля для введення даних написи для виведення результатів і три кнопки.
2. У проекті:
• складіть обробник події Click для першої кнопки, виконання якого приведе до обчислення площ прямокутників та їх порівняння;
• складіть обробник події Click для другої кнопки, виконання якого, залежно від вибраних прапорців, приведе до визначення того, чи є відповідний прямокутник квадратом;
• складіть обробник події Click для третьої кнопки, виконання якого приведе до визначення, чи вміститься перший прямокутник усередину другого або другий прямокутник усередину першого, залежно від вибраного перемикача.
3. Збережіть проект у папці з іменем Практична 12_1, створеній у вашій папці.
4. Створіть проект для розв’язування задачі: Перед початком повені рівень води у річці становив Н метрів. Під час повені щогодини рівень води збільшувався на Р відсотків від рівня попередньої години. Яким буде рівень води через N годин після початку повені? Через скільки годин після початку повені рівень води буде не менше ніж K метрів?
1. Розмістіть на формі поля для введення початкових даних написи з текстами, що пояснюватимуть призначення полів, і три кнопки.
2. Установіть на першій кнопці напис Завдання 1, на другій - Завдання 2, на третій - Спочатку, у полів - порожній текст.
3. Складіть обробник події Click для першої кнопки, виконання якого приведе до виведення у вікно повідомлення відповіді на перше запитання задачі.
4. Виконайте проект і переконайтеся, що результати його роботи правильні.
5. Складіть обробник події Click для другої кнопки, виконання якого приведе до знаходження відповіді на друге запитання задачі і виведення його в окремий напис.
6. Виконайте проект і переконайтеся, що результати його роботи правильні.
7. Складіть обробник події Click для третьої кнопки, виконання якого приведе до очищення тексту в полях та написі з відповіддю на друге запитання задачі.
5. Збережіть проект у папці з іменем Практична 12_2, створеній у вашій папці.
6. Закрийте середовище Lazarus.
Це матеріал з підручника Інформатика 8 клас Ривкінд
Автор: admin от 16-10-2016, 16:07, Переглядів: 19537