Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1713 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Explication des variables dans un boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Explication des variables dans un boucle

n°2297149
raghebgmir​a
Posté le 03-03-2017 à 11:39:49  profilanswer
 

Bonjour,
 
Je suis entrain de comprendre un script de gestion d'ordonnancement des processus. (Voici le code ci dessous).
Ce que je ne comprend pas ces : 1E8 , 4E6, 1E7 4E6 utilisé dans le boucle For et la condition if.
ça correspond à quoi ? et c'est quoi leurs utilité ?
 
Merci pour votre aide.
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <malloc.h>
  5. /* Utilisation de la bibliotheque LIBSCHED */
  6. #include "sched.h"
  7. void ProcLong(int *);
  8. void ProcCourt(int *);
  9. /* Description d'un processus LONG */
  10. void ProcLong(int *pid) {
  11. long i;
  12. for (i=0;i<1E8;i++)
  13.  if (i%(long)4E6 == 0)
  14.  printf("   Proc. Long%d - %ld\n",*pid, i);
  15. printf("############ FIN LONG %d\n\n", *pid);
  16. }
  17. /* Description d'un processus COURT */
  18. void ProcCourt(int *pid) {
  19. long i;
  20. for (i=0;i<1E7;i++)
  21.  if (i%(long)4E6 == 0)
  22.  printf("   Proc. Court%d - %ld\n",*pid, i);
  23. printf("############ FIN COURT %d\n\n", *pid);
  24. }

mood
Publicité
Posté le 03-03-2017 à 11:39:49  profilanswer
 

n°2297156
tpierron
Posté le 03-03-2017 à 16:40:56  profilanswer
 

Ce sont des nombres en notation flottante. 1E8 par exemple veut dire 1*10^8. C'est une manière d'éviter d'écrire 100000000. Cela dit, le type de ces nombres est "double" et non "int". Le modulo pour le type double n'est pas défini en C, d'où la conversion.
 
De ce que je vois du code, il tente de simuler une boucle d'attente. Honnêtement, ça serait plus de remplacer ça par:

Code :
  1. sleep(delai_en_seconde);


n°2297173
h3bus
Troll Inside
Posté le 03-03-2017 à 22:57:39  profilanswer
 

sleep() rend la main au système.
Il semble que le code veuille simuler de la charge CPU.


---------------
sheep++
n°2297384
raghebgmir​a
Posté le 08-03-2017 à 08:26:28  profilanswer
 

Merci, le code va être utilisé dans le cadre d'un TP, il va montré les méthodes l’ordonnancement des processus.
Voici le code complet :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <malloc.h>
  5. /* Utilisation de la bibliotheque LIBSCHED */
  6. #include "sched.h"
  7. void ProcLong(int *);
  8. void ProcCourt(int *);
  9. void ProcMoy(int *);
  10. /* Description d'un processus LONG */
  11. void ProcLong(int *pid) {
  12. long i;
  13. for (i=0;i<1E8;i++)
  14.  if (i%(long)4E6 == 0)
  15.  printf("   Proc. Long%d - %ld\n",*pid, i);
  16. printf("############ FIN LONG %d\n\n", *pid);
  17. }
  18. /* Description d'un processus MOY */
  19. void ProcMoy(int *pid) {
  20. long i;
  21. for (i=0;i<1.5E7;i++)
  22.  if (i%(long)4E6 == 0)
  23.  printf("   Proc. MOY%d - %ld\n",*pid, i);
  24. printf("############ FIN MOY %d\n\n", *pid);
  25. }
  26. /* Description d'un processus COURT */
  27. void ProcCourt(int *pid) {
  28. long i;
  29. for (i=0;i<1E7;i++)
  30.  if (i%(long)4E6 == 0)
  31.  printf("   Proc. Court%d - %ld\n",*pid, i);
  32. printf("############ FIN COURT %d\n\n", *pid);
  33. }
  34. /* Fonction principale */
  35. int main (int argc, char *argv[]) {
  36. int i;
  37. int *j; 
  38. // Création des processus courts
  39. for  (i = 0; i < 2; i++) {
  40.  j = (int *) malloc(sizeof(int));
  41.  *j= i;
  42.  // Ajout du processus dans la table des processus
  43.  CreateProc((function_t)ProcCourt,(void *)j, 10);
  44. }
  45. // Créeation des processus moyen
  46. for  (i = 0; i < 1; i++) {
  47.  j = (int *) malloc(sizeof(int));
  48.  *j= i;
  49.  // Ajout du processus dans la table des processus
  50.  CreateProc((function_t)ProcMoy,(void *)j, 100);
  51. }
  52. // Créeation des processus longs
  53. for  (i = 0; i < 2; i++) {
  54.  j = (int *) malloc(sizeof(int));
  55.  *j= i;
  56.  // Ajout du processus dans la table des processus
  57.  CreateProc((function_t)ProcLong,(void *)j, 100);
  58. }
  59. // Parametrage de l'ordonnanceur
  60. SchedParam(BATCH, 0, NULL);
  61. // Lancer l'ordonnanceur en mode verbeux
  62. sched(1);
  63. // Imprimer les statistiques
  64. PrintStat();
  65. return EXIT_SUCCESS;
  66. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Explication des variables dans un boucle

 

Sujets relatifs
Formulaire créé en javascript limité à 90 "lignes"[REGLÉ] Fonction php avec variables : débutant
boucle while avec affectation en pythonUtilisation de variables avec VLookup
TWS PB variables dépendantesProblème META REFRESH tourne en boucle
Plusieurs variables ou un tableau? (Performances)créer des listes python en boucle list(n)
Problème avec boucle foreach powershellboucle de dico et liste
Plus de sujets relatifs à : Explication des variables dans un boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR