Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

besoin petits programmes avec notion de temps

2 réponses
Avatar
marioski
bonjour,

je suis d=E9butant en programmation et j'utilise devc++ qui travaille sous =
windows 7 64 bits.
je veux introduire la notion de temps en langage c mais je ne sais comment =
impl=E9menter correctement:

exemple 1:
je voudrais cr=E9er un petit programme qui me retourne =E0 chaque temps cho=
isi(1s ou 2s ou autre ms)le r=E9sultat d'une fonction,par exemple a=3D3*i p=
our i(gr=E2ce =E0 une boucle for) variant de 0 =E0 100000.
Alors je sais bien s=FBr impl=E9menter la fonction,la fonction initiale qui=
me permet d'afficher ce que je veux,mais pas le temps.

exemple 2:
je voudrais afficher avec la m=EAme utilisation du temps qu'en 1) diff=E9re=
ntes couleurs choisies auparavant dans un petit rond ou carr=E9.L=E0,je n'a=
i aucune id=E9e de quelle fonction graphique il faut utiliser et dans quell=
e librairie.

merci de votre aide.

2 réponses

Avatar
Xavier Roche
Le 29/07/2014 20:08, marioski a écrit :
je voudrais créer un petit programme qui me retourne à chaque temps choisi(1s ou 2s ou autre ms)le résultat d'une fonction,par exemple a=3*i pour i(grâce à une boucle for) variant de 0 à 100000.
Alors je sais bien sûr implémenter la fonction,la fonction initiale qui me permet d'afficher ce que je veux,mais pas le temps.



Y a-t-il un intérêt à cela, ou est-ce juste un exercice ? :)

Si la précision est supérieure à la seconde, time() ne suffira pas, et
gettimeofday() sera probablement une option intéressante. (ou sous
Windows GetSystemTimeAsFileTime),

Après, vu le coût de ces fonctions, tester à chaque itération dans la
boucle est probablement trop coûteux, mais pour un premier jet ça
devrait aller.

Ie. quelque chose comme:

static unsigned long GetTimeMicroseconds(void);
...

/* Temps de début*/
const unsigned long start = GetTimeMicroseconds();

/* Temps limite (déclarer nombre_de_microsecondes avant) */
const unsigned long limit = start + nombre_de_microsecondes;

int i;
for(i = 0 ; i < 100000 ; i++) {
const unsigned long now = GetTimeMicroseconds();
mon_calcul = .. un calcul quelconque ici
if (now > limit)
break;
}
return mon_calcul;

Ps: on pourra implémenter un GetTimeMicroseconds():

#ifdef _WIN32 /* Version Windows */

#include <Windows.h>
static unsigned long GetTimeMicroseconds(void) {
FILETIME fileTime;
GetSystemTimeAsFileTime(&fileTime);
return (((unsigned long) fileTime.dwHighDateTime << 32) |
fileTime.dwLowDateTime) / 10;
}

#else /* Version "POSIX */

#include <sys/time.h>
static unsigned long GetTimeMicroseconds(void) {
struct timeval tv;
gettimeofday(&tv, NULL);
return (unsigned long) tv.tv_sec * 1000000 + tv.tv_usec;
}

#endif
Avatar
Marc Boyer
Le 29-07-2014, marioski a écrit :
bonjour,

je suis débutant en programmation et j'utilise devc++ qui travaille sous windows 7 64 bits.
je veux introduire la notion de temps en langage c mais je ne sais comment implémenter correctement:

exemple 1:
je voudrais créer un petit programme qui me retourne à chaque temps choisi(1s ou 2s ou autre ms)le résultat d'une fonction,par exemple a=3*i pour i(grâce à une boucle for) variant de 0 à 100000.
Alors je sais bien sûr implémenter la fonction,la fonction initiale qui me permet d'afficher ce que je veux,mais pas le temps.



Rapidement, la gestion du temps n'est pas forcément ce qu'il y
a de plus simple pour un programmeur débutant.

En gros, il y a deux méthodes:
- faire une boucle qui passe son temps à lire l'horloge
et qui ne termine que quand la date est atteinte.
On appelle ça une attente active. Par analogie, c'est
attendre face à son horloge.
- faire un appel à une fonction spéciale, un "appel système"
qui "endort" le programme jusqu'à la date demandée.
Par analogie, c'est un minuteur/réveil qui permet
de faire autre chose en attendant.

Tout cela se base sur des fonctions spécifiques au système
d'exploitation, et comme je code jamais sous Win*, je pourrais
pas en dire bcp plus.

Marc Boyer
--
"On est tout surpris, un beau soir, de trouver la satiété où
l'on cherchait le bonheur", [Beaumarchais, Mar. de Figaro, V, 7]