Цей алгоритм застосовується, коли потрібно підрахувати кількість елементів даних, що відповідають якій-небудь умові або умовам. У загальному виді алгоритм описується в такий спосіб:
  - у розділі var описати змінну целочисленного типу, за допомогою якої буде вестися підрахунок;
- до циклу привласнити їй початкове значення 0;
- у тілі циклу, якщо черговий елемент даних відповідає умові підрахунку, збільшити цю змінну на 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.
 , 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 - кількість тільки "четвірок" і "п'ятірок".
 , де 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.