IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

questions sur le langage C


Sujet :

C

  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut questions sur le langage C
    salam alaikom !

    je veux faire un programme en C qui simule le travail d'un processeur
    (avec un vecteur de 16 colonnes pour l’état RUN, une matrice de 16 colonne et 20 lignes pour l’état READY, une matrice de 16 colonnes et 16 lignes pour l’état WAIT)
    on charge les informations sur les processus a partir d'un fichier qui garde ces informations en permanence
    pour chaque processus on a les information suivante: ( identificateur, priorité, temps d’exécution) ..

    mes questions sont:
    -comment implémenté ce fichier en langage C?
    -comment le connecté au programme ?
    -comment faire pour le temps d’exécution de chaque processus ?

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Alors pour les fichiers tu as un tutoriel complet ici : http://melem.developpez.com/tutoriel...ge-c/fichiers/

    Pour tes matrices l'idée la plus simple est l'utilisation de tableaux. Une question me vient tout à coup : Les données comprises dans tes matrices peuvent elles être représentée sous forme binaire ? C'est à dire dans une case 0 ou 1 suffirait-il pour représenter la donnée?

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Bonjour.

    Alors pour les fichiers tu as un tutoriel complet ici : http://melem.developpez.com/tutoriel...ge-c/fichiers/

    Pour tes matrices l'idée la plus simple est l'utilisation de tableaux. Une question me vient tout à coup : Les données comprises dans tes matrices peuvent elles être représentée sous forme binaire ? C'est à dire dans une case 0 ou 1 suffirait-il pour représenter la donnée?
    oui, Les données comprises dans les matrices sont représentée sous forme binaire .

  4. #4
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Donc ca réduit la taille de ta matrice. 16 colonnes se représentent avec un nombre codée sur 16 bits. Donc une matrice de 16x20 se représente simplement avec un tableau linéaire de 20 nombres codés sur 16 bits. C'est déjà ca .

    Cette démarche est applicable aux autres matrices et vecteurs.

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Donc ca réduit la taille de ta matrice. 16 colonnes se représentent avec un nombre codée sur 16 bits. Donc une matrice de 16x20 se représente simplement avec un tableau linéaire de 20 nombres codés sur 16 bits. C'est déjà ca .

    Cette démarche est applicable aux autres matrices et vecteurs.
    désolé , j'ai pas bien pigé le truc !

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Si tu prends un nombre encodé sur 16 bits. Chaque bit correspond à une colonne. Donc avec 20 de ces nombres tu obtiens ta matrice de 16 colonnes par 20 lignes. Ce qu'on te demande est un exercice de manipulation de bits.

    En règle générale (ca dépend de la machine sur laquelle tu fais tourner ton programme) un int est encodé sur 2 octets. Chaque octet est encodé sur 8 bits. Donc un int représente 16 bits.

  7. #7
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    mais le but de ce programme c'est le diagramme de transition !

  8. #8
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    mais le but de ce programme c'est le diagramme de transition !
    Pour ca je suis dépassé, désolé.

  9. #9
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Citation Envoyé par gerald3d Voir le message
    Pour ca je suis dépassé, désolé.
    -comment faire pour le temps d’exécution de chaque processus ?

  10. #10
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    mes questions sont:
    -comment implémenté ce fichier en langage C?
    -comment le connecté au programme ?
    -comment faire pour le temps d’exécution de chaque processus ?
    Salut

    Tu as là un TP de haut niveau démontrant que tu es déjà bien avancé dans le domaine de prog. Pourtant tes questions sont assez bas de gamme et décalées par rapport au niveau du TP. Donc on ne sait pas trop comment t'aider.
    Le langage C est un langage comme tous les autres: il t'offre des outils permettant de modéliser des concepts. Alors comparé à d'autres plus évolués comme VB ou Python ou C++ on a le droit de dire qu'il est assez archaïque car manifestement certains outils de ces langages cités manquent (essayons de faire a=[x*y for x in range(5) for y in range(10) if x%y] en C et on comprendra ce que je veux dire) mais comparé à d'autres comme l'assembleur on sera heureux de l'avoir.
    Ainsi le C t'offre des variables de type simple (int, char, float), des variables de type plus complexes comme les structures (que tu peux créer toi-même) et des tableaux sur ces types simples ou complexes. Donc "comment implémenter ce fichier en C" devra se faire par le biais de ces outils.
    Par exemple un processus c'est une entité contenant
    - un identificateur
    - une priorité
    - un temps d'exécution
    Donc à toi de créer l'outil te permettant de modéliser cette entité. T'as de la chance, le C possède le concept "structure" qui est un concept assez universel pouvant regrouper plusieurs éléments entre eux. Donc ici je verrais bien une structure
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct {
        unsigned long id;
        unsigned short pri;
        unsigned short time;
    } t_processus;
    Maintenant tu as en main le type "t_processus" te permettant de créer des variables pour gérer ce processus. Par exemple si tu dois gérer 3 processus, alors tu peux écrire
    Ou alors si tu dois gérer, et ce de façon plus "robotisée" un nombre de processus plus important, tu peux utiliser un tableau
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    t_processus tabProcess[100];

    A ce qu'il me semble, les processus doivent prendre leurs infos dans un fichier. Ben le fichier devra alors stocker ces infos dans un format de ton choix (texte si tu as envie de le visualiser/modifier au travers d'un éditeur, ou binaire si tu n'as pas besoin de cette possibilité) puis ton code devra s'occuper de lire le fichier et copier les données lues dans le tableau des processus. Moi j'utiliserais fgets() + sscanf() si c'est un fichier texte, et fread() si c'est un fichier binaire.

    Bref tu as plein d'outils très généraux permettant de manipuler de la data, mais c'est à toi de
    1) organiser ces datas pour qu'elles représentent le concept que tu veux manipuler
    2) prendre les outils nécessaires pour effectuer tous les travaux

    Le C est un bon langage rapide et solide, mais il n'est pas une marmite de potion magique et ne fera rien par lui-même. Ainsi tu as un outil qui peut lire des datas dans un fichier (fread) et copier ces datas dans une zone mémoire (memcpy) mais tu n'as pas d'outil qui te permette de dire "je veux générer un tableau de processus et les faire communiquer". C'est à toi de découper ce travail en tâches très basiques pour pouvoir ensuite attribuer chaque tâche à l'outil approprié...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    en langage C
    -comment créer un fichier ou je charge et je mis a jour les processus ?
    -comment gérer le temps d’exécution ?

  12. #12
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    je veux remplir la matrice aléatoirement d'entiers entre 0 et 9
    voila ce que j"ai fais mais ça marche pas!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0; i<20; i++)
    {
        for (j=0; j<16; j++) {r[i][j]=rand()%10;}
    }
    et je cherche aussi une fonction en C qui simule le temps d'execution !! svp

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    je veux remplir la matrice aléatoirement d'entiers entre 0 et 9
    voila ce que j"ai fais mais ça marche pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (i=0; i<20; i++)
    {
        for (j=0; j<16; j++)
        {
            r[i][j]=rand()%10;
        }
    }
    Mets ton code entre balises "code" et non balises "quotes" sinon il n'est pas repris quand on te répond. De plus tu pourrais quand-même faire l'effort d'écrire du code élégant. Déjà tu te relirais mieux, de plus les autres te liront mieux et enfin ça t'évitera de passer pour un type qui bâcle son travail...

    Sinon il n'y a aucun souci avec cet exemple. Ca remplit bien chaque r[x][y] d'un nombre aléatoire (sous réserve que tu aies initialisé ton générateur aléatoire par un appel à srand() au début). Je ne vois pas en quoi "ça ne marche pas"...

    Citation Envoyé par mohsenuss91 Voir le message
    et je cherche aussi une fonction en C qui simule le temps d'execution !! svp
    Une "simulation" ben ça peut se faire aussi par un nombre aléatoire...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  14. #14
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    Une "simulation" ben ça peut se faire aussi par un nombre aléatoire...
    comment ça ?
    je cherche un truc qui stop l’exécution un moment donné genre (1s par exemple) puis il reprend l’exécution..

  15. #15
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par défaut
    Pour tout ce qui traite du temps tu peux utiliser la bibliothèque time.h.

    Tu trouveras toute la documentation nécessaire sur le Net.

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 840
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mohsenuss91 Voir le message
    comment ça ?
    je cherche un truc qui stop l’exécution un moment donné genre (1s par exemple) puis il reprend l’exécution..
    Ah ben tu as sleep() qui fait ça très simplement. Ca arrête ton processus pour le nombre de secondes de ton choix. Une fois ce temps écoulé, il repart.

    Tu as aussi pause() qui a le même but mais qui fonctionne différemment. Avec cette fonction, le processus s'arrête jusqu'à ce qu'il reçoive un signal, signal pouvant être envoyé via kill() depuis un autre processus.

    Avec ces 2 outils, tu peux faire ce que tu demandes...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 338
    Par défaut
    merci a vous !

Discussions similaires

  1. question sur les langages de programmation de demain
    Par faabian dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 05/01/2010, 14h52
  2. Question sur le langage
    Par space_56 dans le forum Débuter
    Réponses: 13
    Dernier message: 21/04/2008, 21h49
  3. [MySQL] Pour un projet php/mysql : questions sur le langage et l'environnement
    Par 3wicha dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/07/2007, 18h21
  4. Réponses: 4
    Dernier message: 10/04/2007, 18h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo