ответ:команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
• якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
• серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.
Розглянемо задачу, алгоритм розв’язування якої містить цикл з передумовою.
Задача. Скільки потрібно взяти доданків, перший з яких дорівнює заданому д ійсному числу, а кожний наступний на 3 більший від попереднього, щоб їхня сума перевищила 100?
Даними цієї задачі є перший доданок. Вводитимемо його в поле.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження суми, значення першого доданка. А змінній п, яку використаємо для збереження кількості взятих доданків, присвоїмо значення 1, бо в сумі вже враховано один (перший) доданок.
До суми потрібно додавати наступні доданки, поки ця сума буде меншою, або дорівнюватиме 100. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100. У тілі циклу шукатимемо наступний доданок, додаватимемо його до поточного значення суми і збільшуватимемо кількість доданих доданків на 1.
//PascalABC.NET версия 3.4.2.1991 от 03.03.19
//Если программа не запускается, то обновите версию
const
handsfree = true;
nmax = 100;
random_min = -50;
random_max = 50;
var
a: array[1..nmax] of real;
i, n, count: integer;
procedure QuickSort(first, last: Integer);{ Быстрая сортировка массива A[] , использует массив как глобальную переменную}
var
i, j: integer;
x, y: real;
begin
i := first;
j := last;
x := a[(first + last) div 2];
repeat
while (A[i] < x) do inc(i);
while (x < A[j]) do dec(j);
if (i <= j) then
begin
y := A[i]; a[i] := a[j]; a[j] := y;
inc(i); dec(j);
end;
until (i > j);
if (first < j) then QuickSort(first, j);
if (i < last) then QuickSort(i, last);
end;
begin
{ввод массива}
n := nmax;
if handsfree then begin
n := random(nmax - 5) + 5;
for i := 1 to n do
begin
a[i] := random(random_max - random_min) + random_min;
write(a[i], ' ');
end
end
else begin
write('n = ');
readln(n);
for i := 1 to n do
readln(a[i]);
end;
writeln();
QuickSort(1, n);
{вывод массива}
writeln('Вывод массива[', n, ']:');
for i := 1 to n do
write(a[i], ' ');
writeln();
{подсчет разных}
count := 1; {первый элемент точно разный}
for i := 2 to n do
if a[i] <> a[i - 1] then
count := count + 1;
writeln('Разных элементов = ', count);
end.
ответ:команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу; якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
• якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
• серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.
Розглянемо задачу, алгоритм розв’язування якої містить цикл з передумовою.
Задача. Скільки потрібно взяти доданків, перший з яких дорівнює заданому д ійсному числу, а кожний наступний на 3 більший від попереднього, щоб їхня сума перевищила 100?
Даними цієї задачі є перший доданок. Вводитимемо його в поле.
Перед початком циклу присвоїмо змінній s, яку використаємо для збереження суми, значення першого доданка. А змінній п, яку використаємо для збереження кількості взятих доданків, присвоїмо значення 1, бо в сумі вже враховано один (перший) доданок.
До суми потрібно додавати наступні доданки, поки ця сума буде меншою, або дорівнюватиме 100. Тому логічний вираз у заголовку циклу матиме вигляд s <= 100. У тілі циклу шукатимемо наступний доданок, додаватимемо його до поточного значення суми і збільшуватимемо кількість доданих доданків на 1.
Объяснение: