русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Алгоритм табулювання


Дата додавання: 2014-11-28; переглядів: 856.


Застосовується для складання всіляких таблиць, якими можуть бути як абстрактна таблиця значень математичної функції, так і конкретна таблиця вартості товару або платежів, зроблених абонентом стільникового оператора.

У загальному виді алгоритм можна описати так:

  1. до циклу задається початкове значення керуючої змінної, умовою виходу із циклу служить досягнення керуючої змінної кінцевого значення;
  2. у тілі циклу на кожному кроці обчислюється чергове значення функції, що залежить від керуючої змінної, потім формується рядок таблиці:
  3. наприкінці кроку циклу значення керуючої змінної (позначимо її x) змінюється оператором виду x:=x+d;, де d – заданий крок по керуючої змінній.

Пр. Складемо таблицю синусів у межах від 0 до π із кроком по аргументу 0.25. Позначимо аргумент як x, значення синуса від x позначимо як y. У найпростішому випадку програма табулювання може виглядати так:

var x,y:real;

begin

writeln('x':10,'sin(x)':10);{печатка заголовка таблиці – до циклу}

x:=0; {початкове значення аргументу}

while x<=pi do begin

y:=sin(x); {обчислення функції}

writeln (x:10:2, y:10:2); {печатка рядка таблиці}

x:=x+0.25; {крок по x}

end;

end.

Пр. "Розширимо" завдання за рахунок використання довільних границь зміни аргументу й довільного кроку, а також виконання всіх необхідних перевірок коректності. Нехай, наприклад, потрібно скласти таблицю значень наступної функції:

, значення a,b уводяться користувачем.

Напишемо текст програми, супроводивши його відповідними коментарями.

var x,f,a,b,dx:real; {змінні з умови завдання}

n:integer; {лічильник виведених на екран рядків}

begin

repeat {Цикл уведення з контролем правильності значень:

a,dx,b повинні бути числами, dx>0, a+dx повинне бути менше b}

writeln ('Уведіть початкове значення, крок і кінцеве значення:');

{$I-}read (a,dx,b);{$I+}

if Ioresult <> 0 then begin

writeln ('Ви не ввели 3 числових значення, спробуємо ще раз');

continue;

end;

if (dx<=0) or (a+dx>=b) then begin

writeln ('Ви не ввели припустимі дані, спробуємо ще раз');

continue;

end

else break;

until false;

{Печатка заголовка таблиці - робиться один раз до циклу}

writeln;

writeln ('x':10,'f(x)':10);

x:=a;

n:=2; {2 рядка вже зайнятий - порожня й заголовок}

while x<=b+1e-6 do begin

{в умові циклу враховуємо можливу погрішність роботи з real!}

if x<=0 then f:=sqr(x)*x

else f:=exp(1/3*ln(abs(x))); {корінь 3 ступеня побрали через exp і ln}

writeln (x:10:2,f:10:2);

n:=n+1;

if n=24 then begin {На екрані консолі за замовчуванням усього 25 рядків}

write ('Натисніть Enter для продовження...');

reset (input); readln;

n:=1;

end;

x:=x+dx;

end;

writeln ('Таблиця виведена');

reset (input); readln;

end.

Як видне із прикладу, основний порядок дій – такий же, як у попередньому завданні. Тому що екран консолі за замовчуванням містить усього 25 рядків, за допомогою змінної n ми додатково контролюємо число вже виведених рядків і робимо по заповненню екрана паузу до натискання користувачем клавіші Enter.

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

Пр. Відома вартість одиниці товару. Скласти таблицю вартості 1,2,…,K одиниць товару, значення K уводиться.

Тому що число одиниць товару – свідомо ціле, при програмуванні завдання буде зручний цикл for:

var t:real;

i,k:integer;

begin

writeln;

writeln ('Уведіть вартість одиниці товару:');

read (t);

writeln ('Уведіть кількість одиниць товару для таблиці:');

read (k);

writeln ('Одиниць':10,'Вартість':10);

for i:=1 to k do

writeln (i:10,(i*t):10:2);

end.

Тут для простоти ми виключили зроблені в другому прикладі перевірки. Вартість одиниці товару позначена t, змінна i необхідна для перебору можливих значень одиниць товару в циклі for. Оскільки лічильник циклу for автоматично міняється із кроком 1, а оператором writeln можна виводити не тільки значення змінних, але й вирази, основний цикл програми складається з одного оператора й не має потреби в операторных дужках.

 


<== попередня лекція | наступна лекція ==>
Цикл із лічильником і дострокове завершення циклів | Алгоритм організації лічильника


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн