
ответ:команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
• якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
• серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.
Розглянемо задачу, алгоритм розв’язування якої містить цикл з передумовою.
Задача. Скільки потрібно взяти доданків, перший з яких дорівнює заданому д ійсному числу, а кожний наступний на 3 більший від попереднього, щоб їхня сума перевищила 100?
Даними цієї задачі є перший доданок. Вводитимемо його в поле.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження суми, значення першого доданка. А змінній п, яку використаємо для збереження кількості взятих доданків, присвоїмо значення 1, бо в сумі вже враховано один (перший) доданок.
До суми потрібно додавати наступні доданки, поки ця сума буде меншою, або дорівнюватиме 100. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100. У тілі циклу шукатимемо наступний доданок, додаватимемо його до поточного значення суми і збільшуватимемо кількість доданих доданків на 1.
Объяснение:
#1
begin
var N := ReadInteger();
var sum:real := 1;
for var i := 1 to N do sum *= 1 / i;
sum.println;
end.
#2
begin
var N := ReadInteger();
var sum:real := 1;
var divisor := 1;
while divisor <= N do begin
sum *= 1/divisor;
divisor += 1;
end;
sum.Println;
end.
#3
begin
var N := ReadInteger();
var sum:real := 1;
var divisor := 1;
repeat begin
sum *= 1/divisor;
divisor += 1;
end;
until divisor > N;
sum.Println;
end.
А вообще:
begin
SeqGen(ReadInteger(), p -> 1/p, 1).product.Println;
end.