Una progress bar es la barrita, generalmente verde, que aparece en sistemas operativos e infinidad de programas cuando algo se está cargando. Hoy no nos vamos a meter en asuntos de cargar archivos o algo, únicamente vamos a ver el principio básico sobre el que operan estas barras.
Nuestro programa sólo pedirá una cantidad en segundos, que será el tiempo que durará en llenarse nuestra progress bar. A la ventana donde se ejecutan nuestros programas le caben 80 caracteres de largo, asà que vamos a decir que nuestra progress bar tiene una resolución de 80. El único problema es saber cuánto durará cada unidad de esas 80 para que en total se acumule el tiempo indicado.
La función delay() o Sleep()
Si en su IDE pueden usar la librerÃa conio.h, entonces van a usar la función delay(). Si no, vamos a tener que agregar la librerÃa windows.h y usar la función Sleep() (asà con mayúscula).
Ambas funciones hacen exactamente lo mismo: paran el programa durante una cierta cantidad de tiempo en milisegundos. Por ejemplo:
cout << "Hola" << endl;
Sleep(2000);
cout << "Hace dos segundos te saludé!";
Se muestra 'Hola', se pausa 2 segundos y se muestra 'Hace dos segundos te saludé!'
Para los que usan conio.h, serÃa algo asÃ:
printf("Hola\n");
delay(2000);
printf("Hace dos segundos te saludé!");
Ahora sÃ, para saber cuanto tiempo durará cada unidad de nuestra barra tenemos primero que convertir los segundos a milisegundos (s*1000), luego dividirlos entre la resolución de la barra (s*1000/80). Asà que nuestro programa queda asÃ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include<windows.h> #include<iostream> using namespace std; int main() { int s; cout << "Segundos?: "; cin >> s; for(int i=0; i<=79; i++) cout << "_"; for(int i=0; i<=79; i++) { cout << "="; Sleep(s*1000/80); } } |
El primer ciclo es solo por estética, para ver hasta donde va a llenar la barra. El segundo es el que imprime la barra con sus respectivas pausas.