Індикатор виконання або індикатор прогресу (англ. Progress bar[1]) — це елемент графічного інтерфейсу, який показує, наскільки просунулася обробка задачі певної комп'ютерної операції, такої як завантаження чи процес встановлення. Це комп'ютерний еквівалент гістограми. У сучасній термінології Microsoft цей елемент називається індикатором стану.

Індикатор виконання зображає процес копіювання у файловому менеджері Nautilus
Анімований індикатор виконання.

Визначений індикатор виконання ред.

Зазвичай індикатор виконання складається зі смуги, яка відображає у відсотках хід виконання процесу, збільшуючись від 0 до 100 %. Це дає приблизне уявлення про час, що залишився до завершення. Індикатори виконання також часто зустрічаються під час завантаження або при встановленні пакету програмного забезпечення.

Невизначений індикатор виконання ред.

 
Невизначений індикатор виконання, який фактично не вказує наскільки просунувся процес обробки задачі

Невизначений індикатор виконання виглядає як цикл, де смуга безупинно рухається в одному напрямку і в кінці відображення зануляється. Тут не використовуються відсотки, оскільки невідомо, скільки часу знадобиться для завершення процесу. Проте невизначений індикатор виконання дає зрозуміти, що комп'ютер не завис і далі продовжує працювати.

Альтернативою цьому є такі елементи, як тробер (Throbber)  або відображення курсора в режимі очікування (наприклад, пісковий годинник).

Текстовий індикатор виконання ред.

У ранні часи, коли графічні можливості були обмежені, індикатори виконання формувалися в текстовому відображенні зі зростаючого ряду мовних знаків, наприклад, XXXXXX. . ..

Текстовим попередником Throbber вважається циклічна послідовність символів |/-\, які були виведені в одній і тій же позиції курсора. Ці текстові анімації були вже в ранніх версіях UNIX та DR DOS у 1980-х роках.

Ресурси ред.

Відображення індикатора виконання також споживає певні ресурси й, таким чином, може збільшити загальну тривалість процесу, але на практиці це навряд чи є актуальним в цей час. Також це спрощений спосіб показати користувачеві, що програма все ще працює.

Тривіальний патент ред.

Патент[2] на розробку індикатора виконання був поданий Томасом Послінскі і Кімом Анноном Ріалом через компанію Sony. Цей патент вважається тривіальним, тобто таким, який не має вагомої винахідницької цінності.

Когнітивний ефект ред.

У 1985 році Бред Майерс представив статтю про індикатор виконання на конференції, присвяченій взаємодії комп'ютера та людини. Його дослідження полягало у тому, що люди запускали пошук у базі даних з індикатором виконання та без. Люди, які чекали завершення процесу, спостерігаючи за індикатором виконання, повідомляли про кращі враження від очікування закінчення процесу.

Як правило, індикатори виконання використовують лінійну функцію, так що просування індикатора виконання прямо пропорційно залежить від обсягу виконаної роботи. Однак відмінності у жорстких дисках, процесорах, пам'яті та інших факторах ускладнюють цю оцінку. Як наслідок, індикатори виконання часто виконують процес завантаження з прискореннями, уповільненнями чи паузами. У поєднанні з нелінійним сприйняттям часу, притаманним людям, це спричиняє різне сприйняття тривалості процесу, який показує індикатор. Потрібно брати до уваги, що індикатори виконання можуть бути спроектовані так, щоб вони здавалися швидшими.

Дослідження Майерса продемонструвало, що графічний дизайн індикаторів виконання також впливає на сприйняття людиною тривалості.

Приклад коду ред.

C# ред.

У цьому прикладі показано мовою програмування C# реалізацію індикатора виконання. У поле списку на екрані вводяться трикутні числа, а індикатор виконання відображує цей процес[3].

using System.Windows.Forms;

public class MainForm : System.Windows.Forms.Form
{
	private System.Windows.Forms.ListBox triangularNumbersListBox;
	
	private System.Windows.Forms.ProgressBar newProgressBar;
	
	// Конструктор MainForms.
	public MainForm()
	{
		InitializeControls();
	}
	
	// Запускає додаток та створює головну форму MainForm шляхом виклику конструктора.
    public static void Main()
    {
        Application.Run(new MainForm());
    }
	
	// Ініціалізує поле зі списком та індикатором виконання.
	private void InitializeControls()
	{
		// Створює індикатор виконання списку шляхом виклику стандартних конструкторів.
		
		triangularNumbersListBox = new ListBox();
		newProgressBar = new ProgressBar();
		
		SuspendLayout();
		
		triangularNumbersListBox.Location = new System.Drawing.Point(50, 50);
		triangularNumbersListBox.Size = new System.Drawing.Size(200, 100);
		triangularNumbersListBox.MultiColumn = false;
		triangularNumbersListBox.SelectionMode = SelectionMode.One;
		Controls.Add(triangularNumbersListBox);
		
		int minimum = -10;
		int maximum = 10;
		
		newProgressBar.Location = new System.Drawing.Point(50, 200);
		newProgressBar.Minimum = 1;
		newProgressBar.Maximum = maximum - minimum + 2;
		newProgressBar.Value = 1; // Встановлює початкове значення індикатора виконання.
		newProgressBar.Step = 1; // Задає розмір кроку індикатора виконання.
		Controls.Add(newProgressBar);
		
		// Цей цикл for вводить у поле списку трикутні числа -10* -9/2, -9* -8/2, ..., 9*10/2, 10*11/2.
		triangularNumbersListBox.BeginUpdate();
		for (int i = minimum; i <= maximum; i++)
		{
			int triangularNumber = i * (i + 1) / 2;
			triangularNumbersListBox.Items.Add(triangularNumber.ToString());
			newProgressBar.PerformStep(); // Переміщує індикатор виконання на один крок вперед.
		}
		triangularNumbersListBox.EndUpdate();
		
		Text = "Індикатор виконання";
		
		ResumeLayout(false);
		PerformLayout();
	}
}

Примітки ред.

  1. Progress Bar. Enterprise-Gamification.com. Процитовано 22 лютого 2014. {{cite web}}: Проігноровано невідомий параметр |archivebot= (довідка); Проігноровано невідомий параметр |offline= (можливо, |url-status=?) (довідка)
  2. Patent US7290698B2: Progress bar with multiple portions. Опубліковано 6 листопада 2007 р., винахідники: Томас Послинські, Кім Аннон Ріал.
  3. Microsoft Docs: ProgressBar Class