русс | укр

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

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


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


Алгоритм організації лічильника


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


Цей алгоритм застосовується, коли потрібно підрахувати кількість елементів даних, що відповідають якій-небудь умові або умовам. У загальному виді алгоритм описується в такий спосіб:

  1. у розділі var описати змінну целочисленного типу, за допомогою якої буде вестися підрахунок;
  2. до циклу привласнити їй початкове значення 0;
  3. у тілі циклу, якщо черговий елемент даних відповідає умові підрахунку, збільшити цю змінну на 1 оператором виду k:=k+1;.

Необхідність присвоювання початкових значень на кроці 2 цього й наступних алгоритмів пов'язана з тим, що після опису в розділі var значення змінної ще не визначене. "Поки ми не почали підраховувати кількість, воно дорівнює нулю" – цей очевидний для людини факт не очевидний для комп'ютера! Тому будь-який змінної, яка може змінюватися в тілі циклу, необхідно привласнити до циклу початкове значення, що й робить оператор виду k:=0;.

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

Inc(X,N); - Збільшує значення змінної.

Тут параметр X - змінна порядкового типу, а N – змінна або вирази целочисленного типу. Значення X збільшується на 1, якщо параметр N не визначений, або на N, якщо параметр N визначений, тобто Inc(X); відповідає X:=X+1;, а Inc(X,N); відповідає X:=X+N;.

Dec(X,N); - Зменшує значення змінної.

Параметр X – також змінна порядкового типу, N – целочисленное значення або вирази. Значення X зменшується на 1, якщо параметр N не визначений, або на N, якщо параметр N визначений, тобто Dec(X); відповідає X:=X-1;, а Dec(X,N); відповідає X:=X-N;.

За допомогою Inc і Dec генерується більш оптимізований код, особливо корисний у складних циклах. Можливо, ми будемо використовувати їх не у всіх прикладах, але Вам раджу про них не забувати.

 

Як приклад реалізації алгоритму розглянемо наступне завдання:

Пр. Послідовність z(i) задана співвідношеннями , i=1,2,…,100. Знайти кількість елементів послідовності, більших значення 0.5.

Позначивши шукану кількість за k, складемо наступну програму:

var z:real;

i,k:integer;

begin

k:=0;

for i:=1 to 100 do begin

if i mod 2 = 0 then z:=sqr(i)*cos(i)

else z:=sin(i/2);

if z>0.5 then inc(k);

end;

writeln ('Кількість=',k);

end.

Тому що крок по змінній i рівний 1, у програмі використаний цикл for, для перевірки того, чи є значення i парним, використана операція mod.

 

У наступнім завданні займемося обробкою даних у міру їх уведення користувачем:

Пр. Відомі оцінки за екзамен з інформатики для групи з n студентів, 2≤n≤25. Оцінити кількісну і якісну успішність групи по формулах:

, , де k1 – кількість "трійок", "четвірок" і "п'ятірок", k2 - кількість тільки "четвірок" і "п'ятірок".

Для введення поточної оцінки використовуємо целочисленную змінну a, у якості лічильника циклу for уведемо змінну i ("номер студента"), інші величини описані в умові. При введенні значення n і чергового значення a для простоти не будемо контролювати коректність даних, що вводяться.

var a,i,n,k1,k2:integer;

ykol,ykach:real;

begin

writeln;

writeln ('Уведіть кількість студентів:');

read (n);

k1:=0;

k2:=0;

for i:=1 to n do begin

write ('Уведіть оцінку ',i,' студента:');

read (a);

if a>2 then begin

inc(k1);

if a>3 then inc(k2);

end;

end;

ykol:=k1/n*100;

ykach:=k2/n*100;

writeln ('Кількісна успішність=',ykol:6:2);

writeln ('Якісна успішність =',ykach:6:2);

reset (input); readln;

end.

 


<== попередня лекція | наступна лекція ==>
Алгоритм табулювання | Алгоритми нагромадження суми й добутку


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