Цикл "поки" та його використання, Детальна інформація
Цикл "поки" та його використання
while k
begin
if n mod k = 0 then d:=d+1;
k:=k+1
end;
if d>0 then issimple:=false
end
Цей алгоритм можна істотно поліпшити. Почнемо з дрібниць. За оператором "if d>0 then …" змінній issimple фактично присвоюється значення виразу not (d>0). Простіше написати: issimple:=not(d>0). Насправді змінна d взагалі не потрібна. Дійсно, значенням issimple буде false, якщо хоча б один раз виконується оператор d:=d+1. Замість нього напишемо issimple:=false. Крім того, якщо n=2, то умова продовження k2 можна взагалі вилучити:
issimple:= true; k:= 2;
while k
begin
if n mod k=0 then issimple:=false;
k:=k+1
end
.
Щоб не обчислювати trunc(sqrt(n))+1 при кожному виконанні циклу, означимо допоміжну змінну tsn і присвоїмо їй trunc(sqrt(n))+1.
Друге. Після того, як у циклі змінна issimple одержала значення false, подальші перевірки не потрібні, тому що вже ясно, що n не просте. Тому до умови продовження слід додати, що issimple має значення "істина". А перевірка цієї умови задається таким виразом: issimple.
Було б природно записати вираз (k
simp:= true; tsn:= trunc(sqrt(n))+1; k:= 2;
while (k
begin
if n mod k=0 then simp:=false;
k:=k+1
end;
issimple:=simp
Оформлення функції з заголовком
function issimple(n:integer):boolean
лишаємо для вправи. Відзначимо ще раз, що тіло функції треба записувати так, що при виконанні її виклику виконувався хоча б один оператор присвоювання з її ім'ям у лівій частині.\xF0E7
З цього прикладу напрошується простий висновок: після того, як алгоритм розв'язання задачі написаний, майже ніколи не пізно і не завадить подумати про те, як його поліпшити.
Поліпшення алгоритму й програми можуть стосуватися таких цілком різних властивостей, як зрозумілість, обсяг пам'яті комп'ютера, що використовується, та кількість дій, заданих програмою. А ця кількість визначає тривалість виконання програми, яка іноді буває дуже істотною.
begin
if n mod k = 0 then d:=d+1;
k:=k+1
end;
if d>0 then issimple:=false
end
Цей алгоритм можна істотно поліпшити. Почнемо з дрібниць. За оператором "if d>0 then …" змінній issimple фактично присвоюється значення виразу not (d>0). Простіше написати: issimple:=not(d>0). Насправді змінна d взагалі не потрібна. Дійсно, значенням issimple буде false, якщо хоча б один раз виконується оператор d:=d+1. Замість нього напишемо issimple:=false. Крім того, якщо n=2, то умова продовження k
issimple:= true; k:= 2;
while k
begin
if n mod k=0 then issimple:=false;
k:=k+1
end
.
Щоб не обчислювати trunc(sqrt(n))+1 при кожному виконанні циклу, означимо допоміжну змінну tsn і присвоїмо їй trunc(sqrt(n))+1.
Друге. Після того, як у циклі змінна issimple одержала значення false, подальші перевірки не потрібні, тому що вже ясно, що n не просте. Тому до умови продовження слід додати, що issimple має значення "істина". А перевірка цієї умови задається таким виразом: issimple.
Було б природно записати вираз (k
simp:= true; tsn:= trunc(sqrt(n))+1; k:= 2;
while (k
begin
if n mod k=0 then simp:=false;
k:=k+1
end;
issimple:=simp
Оформлення функції з заголовком
function issimple(n:integer):boolean
лишаємо для вправи. Відзначимо ще раз, що тіло функції треба записувати так, що при виконанні її виклику виконувався хоча б один оператор присвоювання з її ім'ям у лівій частині.\xF0E7
З цього прикладу напрошується простий висновок: після того, як алгоритм розв'язання задачі написаний, майже ніколи не пізно і не завадить подумати про те, як його поліпшити.
Поліпшення алгоритму й програми можуть стосуватися таких цілком різних властивостей, як зрозумілість, обсяг пам'яті комп'ютера, що використовується, та кількість дій, заданих програмою. А ця кількість визначає тривалість виконання програми, яка іноді буває дуже істотною.
The online video editor trusted by teams to make professional video in
minutes
© Referats, Inc · All rights reserved 2021