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

Algorithmes et structures de données Discussion :

Sujet d’algorithmie original : imprimer des numéros de table en piles


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    90
    Par défaut Sujet d’algorithmie original : imprimer des numéros de table en piles
    Petit devoir de vacances…

    Juste pour vous faire partager le plus sympathique sujet d’algorithmie auquel j’ai été confronté.

    Anecdote :

    Nous sommes début mars 1992 et je développe l’application examens-concours depuis à peine plus d’un mois lorsqu’une gestionnaire vient s’installer en face de moi. Je la vois inscrire des chiffres avec un gros feutre noir sur des morceaux cartonnés découpés dans des intercalaires.

    - « Vous faites quoi ? »

    - « Je prépare des numéros de table pour le concours qui va avoir lieu la semaine prochaine, j’ai besoin de calme, les collègues sont trop bruyantes. »

    - « Mais c’est fastidieux, ce travail ! Vous ne faites quand même pas ça pour tous les concours ? Si ?... Pour le prochain concours, je résous votre problème… »

    Mais bien sûr, il n’est pas question de remplacer l’inconvénient d’inscrire des numéros par l’inconvénient de les trier. L’idée est donc d’imprimer ces numéros de table, quatre par page mais en piles, c’est-à-dire que sous le numéro « un » il y a le « deux », puis le « trois », etc. Deux coups de massicot, il ne suffit plus qu’à réunir les quatre piles, mettre un élastique autour et le tour est joué.

    Et tant qu’à faire, plutôt que de se contenter d’un numéro sur un quart de feuille, autant y mettre le libellé du concours, la date, le lieu, la salle, les noms-prénoms et la consigne « Numéro de place à reporter sur votre copie ».
    Avant l’envoi des convocations à un concours, un placement des candidatures par ordre alphabétique affecte un numéro de place à chaque candidat. Pour pouvoir imprimer en piles 4 numéros de place par page, il faut nécessairement affecter un nouveau numéro à chaque candidature de façon à ce que les candidatures triées sur ce nouveau numéro permettent au programme d’édition d’imprimer sur chaque page les quatre numéros de place qui conviennent.

    Facile de créer ces nouveaux numéros ! Il suffit de connaître le nombre d’inscrits, de diviser par quatre et de prendre en compte l’éventuel reste.

    Oui, mais… Car il y a toujours un « Oui, mais » ! Certains candidats peuvent s’inscrire aux deux concours interne et externe. Avant la date d’examen, ils doivent obligatoirement se déterminer pour l’un des deux concours. Cela implique la suppression d’une candidature dans l’un des deux, ce qui génère fatalement une place libre. Mais comment traiter une candidature qui n’existe plus dans la table des candidatures ?

    Je vous laisse réfléchir à l’algorithme de création de ces nouveaux numéros… si toutefois cette problématique vous inspire.

    Bonnes vacances !

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 298
    Par défaut il faut une troisième table pour le nom qui a déjà candidaté
    Il faut une table pour l' historique des noms des candidats qui ont déjà candidaté et à chaque nouvelle inscription parcourir cette liste et optimiser avec un tri à fusion pour optimiser la complexité

  3. #3
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    en fait il ne faut pas supprimer l’étudiant dans la table de Candidature mais le marquer comme valide ou non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    ETABLESEMENT 
      IDETABLISEMENT 
      NOM 
      LIEU
    FINTBL
     
    SALLE
      IDSALLE 
      NUMETABLISSEMENT 
      NOMSALLE
    FINTBL
     
    CONCOURS
      IDCONCOURS
      DTCONCOUR
      NUMSALLE
    FINTBL
     
    ETUDIANT 
      IDETUDIANT
      NOM
      PRENOM
    FINTBL
     
    CANDIDATURE  
      IDCANDIDAT
      NUMETUDIANT
      NUMCONCOURS
      VALIDE
    FINTBL
     
    PLACE 
       IDPLACE 
       NUMCANDIDAT
    FINTBL
    il te suffit de placer que les étudiants VALIDE

  4. #4
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    90
    Par défaut Le sujet n’a besoin que de deux tables et quatre attributs
    Citation Envoyé par mach1974 Voir le message
    Il faut une table pour l' historique des noms des candidats qui ont déjà candidaté et à chaque nouvelle inscription parcourir cette liste et optimiser avec un tri à fusion pour optimiser la complexité.
    Le placement des candidats se réalise au dernier moment avant l’édition et l’envoi des convocations.

    Les candidatures postérieures à la date limite d’inscription ne sont pas prises en compte (hors délais) mais une candidature émise avant la date limite d’inscription peut toujours être reçue accidentellement après le placement. L’application gère cette situation mais ce n’est pas le problème présentement. Pour être exhaustif, il y a également le cas des candidats dits COTOREP. Des places particulières doivent alors être attribuées à ces candidats si leur handicap nécessite un aménagement particulier. On leur attribue un numéro de place au-delà du nombre d’inscrits. Mais c’est vraiment pour l’anecdote.

    Dans la BDD, il n’y a qu’une seule table des candidatures.

    Le sujet que j’ai proposé est simple dans son énoncé :

    Il y a une table des candidatures et une place est attribuée à chaque candidature suite à un placement par ordre alphabétique, rien de plus. Le problème consiste donc à partir des numéros de place à déterminer de nouveaux numéros de façon à ce que les candidatures triées sur ce nouveau numéro permettent d’imprimer les numéros de place en piles (4 numéros de place par page), sachant toutefois que certaines candidatures ont pu être supprimées après le placement suite à des désistements.
    L’édition des numéros de table est réalisée au dernier moment, la veille ou l’avant-veille des épreuves. Entre la date d’édition des convocations et la date d’édition des numéros de tables, il peut se passer bien des événements qui peuvent venir perturber le bel ordre initial.

    Pour en dire un peu plus sur le sujet, j’ai nommé « post_it », le nouveau numéro dans la table des candidatures. Vous en saurez davantage un peu plus tard.

    Pour l’instant, le problème consiste à partir de la table des candidatures triée sur le numéro de table à générer un ficher avec :

    • l’identifiant de la candidature
    • le numéro de place
    • le numéro de post_it

    Ce fichier sera traité par une requête SQL pour renseigner l’attribut post_it dans la table des candidatures.

    Le nombre d’inscrits, ou plutôt la dernière place attribuée pour le concours est renseignée dans la table des concours.

    Mes deux tables sont nommées :

    • ec pour examens-concours avec l’attribut :
      ec.place (dernier numéro de place)

    • cec pour candidatures examens-concours avec les attributs :
      cec.n_cec (numéro de candidature)
      cec.place (numéro de place)
      cec.post_it (numéro de post_it)

    Je vous fais grâce de la description complète de ces deux tables, inutile pour résoudre l’algorithme de création des nouveaux numéros.

    Chacun était libre de créer ses propres noms de tables et d’attributs pour créer son algorithme, soit sous forme d’algorigramme, soit sous forme de pseudocode, ou même encore de codage dans un langage de son choix.

    J’ai proposé ce sujet car je pense que c’est un excellent exercice de réflexion bien que ce ne soit pas l’avis du membre qui m’a attribué un vote négatif.

    La réflexion doit prendre en compte quatre informations :

    • Numéro de place,
    • Numéro de post_it,
    • Numéro de pile,
    • Numéro de page



    Citation Envoyé par anapurna Voir le message
    en fait il ne faut pas supprimer l’étudiant dans la table des Candidatures mais le marquer comme valide ou non.
    Il te suffit de placer que les étudiants VALIDES.
    Une suppression logique génère des complications dans la conception de tous les écrans, de tous les états et nécessiterait un traitement d'épuration au final.

    La fonctionnalité Numéros de table n'implique que 2 programmes et deux écrans.

    Lorsque le placement est réalisé, toutes les candidatures sont valides. Les désistements éventuels interviennent entre la date à laquelle s'est fait le placement et la date à laquelle sont éditées les numéros de table. Les places libres font l'objet d'un numéro de table "Place libre" de façon à ne pas perturber le chef de salle et les surveillants qui préparent les salles.



    L'algorithme à réaliser a plusieurs intérêts :

    • Trouver la formule pour déduire le nouveau numéro
    • Gérer un nombre total de places qui ne soit pas un multiple de 4
    • Gérer les places libres

    Mais je vous en dis bien trop. Mon anecdote à l’origine de cette aventure aurait dû suffire à faire bouillir votre imagination et votre réflexion.

    Il y avait trois ingrédients essentiels :

    • des candidatures placées par ordre alphabétique,
    • des désistements possibles,
    • et idée farfelue : imprimer des numéros de table en piles.

    À partir de là, c’est rien que du bonheur, une passion, le job du développeur… Quoi !

    Merci aux 6 votes positifs qui ont compris l’intérêt de ce petit sujet d’algorithmie à la simplicité trompeuse.

    Si vous souhaitez mon corrigé tout de suite, vous dites.



  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    donc on a un peu plus d'info

    c'est donc cec.post_it a déterminé et c'est lui qui défini la place final attribué

    nous savons qu'il faut jouer avec les modulo pour connaitre la page
    comme nous avons 4 concourant par page il nous faut donc 16 element pour remplir 1 page complètement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       0 modulo 4 = 0 => Numero de page 
       1 modulo 4 = 1 => Numero de page 
       2 modulo 4 = 2 => Numero de page 
       3 modulo 4 = 3 => Numero de page 
       ... 
       12 modulo 4 = 0 => Numero de page 
       13 modulo 4 = 1 => Numero de page 
       14 modulo 4 = 2 => Numero de page 
       15 modulo 4 = 3 => Numero de page
    pour connaitre la position de celui-ci dans la page il suffit faire un division entière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       0   DIV 4 = 0 => Position dans la page
       4   DIV 4 = 1 => Position dans la page 
       8   DIV 4 = 2 => Position dans la page 
       12 DIV 4 = 3 => Position dans la page
    j'aurais pu prendre la deuxieme page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       1   DIV 4 = 0 => Position dans la page
       5   DIV 4 = 1 => Position dans la page 
       9   DIV 4 = 2 => Position dans la page 
       13 DIV 4 = 3 => Position dans la page
    le principe reste le même

    compte tenu de ses element il est assez facile d'imprimer nos pages

    PS : après réflexion => pour ta résolution de place libre c'est assez simple il suffit de décaler les suivants après la place libre
    vu que les concurrents sont classés par ordre alphabétique cela revient a une translation d'indice comme pour un tableau

  6. #6
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    90
    Par défaut Simuler pour comprendre
    Citation Envoyé par anapurna Voir le message
    Donc on a un peu plus d'info

    C'est donc cec.post_it à déterminer et c'est lui qui défini la place finale attribuée.
    Comme je l’ai dit, chacun était libre de faire à sa guise. Il fallait prendre ce sujet comme un sujet de DST, se mettre dans ma situation, partir de presque rien (trois éléments) et proposer une solution, créer des attributs si nécessaire en l’occurrence : le numéro de place maximum dans la table des examens-concours (ec.place pour moi) et un nouveau numéro dans la table des candidatures (cec.post_it pour moi) ; puis réaliser l’algorithme (le programme) permettant d’associer à une place, un nouveau numéro afin de permettre au programme d’édition d’imprimer les numéros de place, 4 par page et en piles. Ce nouveau numéro (cec.post_it pour moi) ne définit pas de place finale attribuée. Le placement des candidats a eu lieu, les candidats vont recevoir leur convocation avec leur numéro de place qu’ils trouveront facilement dans la salle où ils sont convoqués.

    Mais je parle, je parle et le prochain concours a lieu dans huit jours… Vous serez prêts ? Il y a encore le programme d’édition à développer…

    Citation Envoyé par anapurna Voir le message
    Nous savons qu'il faut jouer avec les modulos pour connaitre la page…
    Je ne sais pas trop où tu vas avec tes modulos. Mais il n’y a pas forcément qu’une seule solution.

    Je vous propose la deuxième partie de ma simulation (pas la plus capitale, je fais durer le plaisir) mais on voit bien que la première page imprimera les numéros de place 1, 7, 13 et 18, etc.

    Tout le problème, c’est comment arriver à ça.

    Pour un concours avec 22 candidatures (sans places libres mais non multiple de 4), la liste des candidatures triées sur le nouveau numéro (post_it) doit ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
                  TRI / NUMÉRO DE POST-IT
              ┌───────┬───────┬───────┬───────┐
              │ Place │Post-it│ Pile  │ Page  │
              ├───────┼───────┼───────┼───────┤
              │     1 │     1 │     1 │    1  │
              ├───────┼───────┼───────┼───────┤
              │     7 │     2 │     2 │    1  │
              ├───────┼───────┼───────┼───────┤
              │    13 │     3 │     3 │    1  │
              ├───────┼───────┼───────┼───────┤
              │    18 │     4 │     4 │    1  │
              ├───────┼───────┼───────┼───────┤
              │     2 │     5 │     1 │    2  │
              ├───────┼───────┼───────┼───────┤
              │     8 │     6 │     2 │    2  │
              ├───────┼───────┼───────┼───────┤
              │    14 │     7 │     3 │    2  │
              ├───────┼───────┼───────┼───────┤
              │    19 │     8 │     4 │    2  │
              ├───────┼───────┼───────┼───────┤
              │     3 │     9 │     1 │    3  │
              ├───────┼───────┼───────┼───────┤
              │     9 │    10 │     2 │    3  │
              ├───────┼───────┼───────┼───────┤
              │    15 │    11 │     3 │    3  │
              ├───────┼───────┼───────┼───────┤
              │    20 │    12 │     4 │    3  │
              ├───────┼───────┼───────┼───────┤
              │     4 │    13 │     1 │    4  │
              ├───────┼───────┼───────┼───────┤
              │    10 │    14 │     2 │    4  │
              ├───────┼───────┼───────┼───────┤
              │    16 │    15 │     3 │    4  │
              ├───────┼───────┼───────┼───────┤
              │    21 │    16 │     4 │    4  │
              ├───────┼───────┼───────┼───────┤
              │     5 │    17 │     1 │    5  │
              ├───────┼───────┼───────┼───────┤
              │    11 │    18 │     2 │    5  │
              ├───────┼───────┼───────┼───────┤
              │    17 │    19 │     3 │    5  │
              ├───────┼───────┼───────┼───────┤
              │    22 │    20 │     4 │    5  │
              ├───────┼───────┼───────┼───────┤
              │     6 │    21 │     1 │    6  │
              ├───────┼───────┼───────┼───────┤
              │    12 │    22 │     2 │    6  │
              └───────┴───────┴───────┴───────┘
    
    Là, je vous ai déjà bien aidé. Moralité : commencer par une simulation.

    Il y a encore du chemin à faire dans la réflexion pour arriver à l'algorithme complet. Tant pis, les gestionnaires continueront à faire leurs numéros de table à la mimine !

    … C’est ce que me disaient les gestionnaires qui me voyaient trimer 15 heures par jours pour résoudre leurs problèmes :

    - Vous savez, nous pouvons faire à la main, nous le faisions bien avant que vous vous intéressiez à nous.

    - PAS QUESTION ! Demain matin vous trouverez vos résultats sur le coin de votre bureau.

  7. #7
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    90
    Par défaut Problème d'affichage de ma simulation dans l'actualité
    1. 14/03/2023 : Ce message se voulait être un commentaire de l'actualité qui affichait ma simulation de façon illisible mais il se retrouve dans le forum. Désolé !

    2. 15/03/2023 : Suite de l’histoire… L’actualité a été modifiée, merci à la personne qui est intervenu.

      Lien vers l’actualité :


    3. Je profite de ce message pour joindre après ma simulation, l'exemple d'état que je viens d'ajouter dans mon billet de blog...




    Ma simulation, telle qu'elle est dans la discussion :

    ec_place = Plus grand numéro de place = nombre de candidats = 22 (pour ce jeu d’essai)
    
    Numéro de post-it = Numéro de la pile + (Numéro de la page précédente * 4)
                      => initialiser le numéro de page à zéro
    
                   TRI / NUMÉRO DE PLACE                     TRI / NUMÉRO DE POST-IT
              ┌───────┬───────┬───────┬───────┐          ┌───────┬───────┬───────┬───────┐
              │ Place │Post-it│ Pile  │ Page  │          │ Place │Post-it│ Pile  │ Page  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     1 │     1 │     1 │    1  │          │     1 │     1 │     1 │    1  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     2 │     5 │     1 │    2  │          │     7 │     2 │     2 │    1  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     3 │     9 │     1 │    3  │          │    13 │     3 │     3 │    1  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     4 │    13 │     1 │    4  │          │    18 │     4 │     4 │    1  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     5 │    17 │     1 │    5  │          │     2 │     5 │     1 │    2  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     6 │    21 │     1 │    6  │          │     8 │     6 │     2 │    2  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     7 │     2 │     2 │    1  │          │    14 │     7 │     3 │    2  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     8 │     6 │     2 │    2  │          │    19 │     8 │     4 │    2  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │     9 │    10 │     2 │    3  │          │     3 │     9 │     1 │    3  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    10 │    14 │     2 │    4  │          │     9 │    10 │     2 │    3  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    11 │    18 │     2 │    5  │          │    15 │    11 │     3 │    3  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    12 │    22 │     2 │    6  │          │    20 │    12 │     4 │    3  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    13 │     3 │     3 │    1  │          │     4 │    13 │     1 │    4  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    14 │     7 │     3 │    2  │          │    10 │    14 │     2 │    4  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    15 │    11 │     3 │    3  │          │    16 │    15 │     3 │    4  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    16 │    15 │     3 │    4  │          │    21 │    16 │     4 │    4  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    17 │    19 │     3 │    5  │          │     5 │    17 │     1 │    5  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    18 │     4 │     4 │    1  │          │    11 │    18 │     2 │    5  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    19 │     8 │     4 │    2  │          │    17 │    19 │     3 │    5  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    20 │    12 │     4 │    3  │          │    22 │    20 │     4 │    5  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    21 │    16 │     4 │    4  │          │     6 │    21 │     1 │    6  │
              ├───────┼───────┼───────┼───────┤          ├───────┼───────┼───────┼───────┤
              │    22 │    20 │     4 │    5  │          │    12 │    22 │     2 │    6  │
              └───────┴───────┴───────┴───────┘          └───────┴───────┴───────┴───────┘
    


    Exemple d'état reconstitué sous Word à partir de ma simulation :


    PS : Il est très intéressant de mettre en parallèle ce fichier PDF et le tableau de droite de ma simulation.

    Mon billet de blog :




    Et tant qu’à faire je me fais un peu de publicité…

    Vous trouverez mes autres tutoriels d’algorithmique dans mon blog logique :




    À propos de blog…

    Vous avez le droit d’utiliser les blocs du menu latéral (à droite) pour naviguer dans mon blog :

    • 1er bloc : Blogs logiques

      1. APL-AML
      2. MÉTHODOLOGIES
      3. ALGORITHMIQUE
      4. FORUMS
      5. DIVERS

      NB : Pour les blogueurs, chaque blog logique correspond à une page personnalisée (dans le tableau de bord du blog). On est limité à 5 pages personnalisées.

    • 2ème bloc : Catégories

      Catégories globales

      • Programmation

      Catégories de l'utilisateur

      ■ APL-AML

      • I- L’ART
      • I-1. Règles de conception
      • I-2. Règles de réalisation
      • I-3. Annexes
      • I-3.1. BDD Examens-Concours
      • I-3.2. BDD Formation continue
      • II- LA MANIÈRE
      • II-1. Principes méthodologiques
      • II-2. Principes psychologiques
      • II-3. Principes philosophiques
      • III- BIBLIOGRAPHIE
      • IV- WEBOGRAPHIE
      • V- COMMENTAIRES

      ■ MÉTHODOLOGIES

      ■ ALGORITHMIQUE

      ■ FORUMS

      • I-1. Contributions aux forums
      • I-2. Synthèses de discussions

      ■ DIVERS

      Chaque item affiche la liste des billets concernés dans l’ordre chronologique de leur publication.

      NB : Les items préfixés d’un petit carré correspondent à mes blogs logiques.

    • 3ème bloc : Nuage de tags

      Les tags sont en ordre décroissant d'importance :

      méthodologie principes bibliographie tutoriel algorithmie anecdotes lcp corig citations sgbd excel

      NB : Tous mes billets sont tagués selon leur contenu. Chaque tag affiche la description de mon blog suivie de la liste des billets taggués.




    Dernière information :

    À la fin d’un billet en cours de lecture, un carrousel permet d’afficher, soit le billet précédent, soit la liste des billets, soit le billet suivant.

    Bonne lecture… Il n'y a qu'environ 800 pages Word + peut-être une centaine de pages de contribution aux forums.



  8. #8
    Membre très actif
    Avatar de APL-AML
    Homme Profil pro
    Développeur Gestion (Retraité)
    Inscrit en
    Juin 2020
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur Gestion (Retraité)
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2020
    Messages : 54
    Billets dans le blog
    90
    Par défaut Amélioration pédagogique de mon chapitre "§ 01 : Simulation"
    Constatant plusieurs consultations quotidiennes de cette discussion, j'ai amélioré la pédagogie de ma simulation.

    Si le sujet de cette discussion vous intéresse, le mieux c'est de lire le Billet de mon Blog logique :


    ou mon tutoriel en version PDF :




    § 01 : Simulation

    Création d’un jeu d’essai avec 22 candidatures (sans places libres)

    Chaque même quart de feuille des pages à imprimer constitue une pile.

    Deux tableaux permettent de spatialiser mentalement l’édition pour comprendre comment le NUMÉRO DE PLACE interagit avec le NUMÉRO DE POST-IT :

    • Tableau de gauche

      La table des candidatures, triée sur le NUMÉRO DE PLACE, est traitée par le premier programme "post_itBDD.ace" afin de déterminer le rang des places (Post-it) qui permettra au deuxième programme d’imprimer en piles.

      Ce tableau en trois dimensions (2 x 2 x n) représente l’impression de 4 numéros de table par page, "n" étant le nombre de pages, à savoir n = 6 pour ce jeu d’essai.

      Deux compteurs Pile et Page modélisent les coordonnées spatiales - verticale et horizontale - des NUMÉROS DE PLACE et permettent de calculer Post-it pour chaque candidature :

      • Pile s'incrémente de 1 à 4
      • Page s'incrémente de 1 à n (n étant égal à 6 pour ce jeu d’essai)

      Pile et Page ne sont finalement que les indices de deux tables virtuelles.

      Sont surlignées les lignes correspondant aux NUMÉROS DE PLACE (1, 7, 13 et 18) à imprimer sur la première page.

      La réflexion consiste à s’intéresser aux lignes avec un même numéro de page pour comprendre comment évolue POST-IT en fonction de Pile et Page.

    • Tableau de droite

      La table des candidatures, triée sur le NUMÉRO DE POST-IT, permet au deuxième programme "post_itALL.ace" d’imprimer les NUMÉROS DE PLACE en piles.

      Sont surlignées les lignes correspondant aux NUMÉROS DE PLACE imprimés dans la première pile.

    Nom : Simulation.jpg
Affichages : 129
Taille : 197,4 Ko

    Numéros de places

    Le placement des candidats se réalise au dernier moment avant l’édition et l’envoi des convocations. Le dernier numéro de place correspond à ce moment-là au nombre d'inscrits mais ce nombre d'inscrits pourra évoluer entre le placement des candidats et la date du concours.

    Les candidatures postérieures à la date limite d’inscription ne sont pas prises en compte (hors délais) mais une candidature émise avant la date limite d’inscription peut toujours être reçue accidentellement après le placement. L’application gère cette situation mais ce n’est pas le problème présentement. Pour être exhaustif, il y a également le cas des candidats dits COTOREP. Des places particulières doivent alors être attribuées à ces candidats si leur handicap nécessite un aménagement particulier. On leur attribue un numéro de place au-delà du dernier numéro de place. Mais c’est vraiment pour l’anecdote.

    Places libres

    Je n’ai pas concrétisé de place libre dans ma simulation mais c’est facile à faire. Il suffit par exemple de désister le candidat N° 13. Il faut alors supprimer Place = 13 et Post-it = 3. On garde les informations Pile = 3 et Page = 1 pour visualiser notre simulation.

    La candidature n’existant plus, le programme devra faire évoluer ces deux informations Pile et Page pour permettre de traiter correctement la candidature suivante.

    Pour savoir s’il y a une place vide, le programme devra compter les candidatures traitées et comparer son compteur au numéro de place de la candidature en cours de traitement. Le programme devra évidemment prévoir le cas de plusieurs places vides qui se suivent, et qu’il y ait une ou plusieurs places vides au début comme à la fin de la table des candidatures à l’Examen-Concours.

    Le programme d’édition, quant-à lui, va également s’apercevoir qu’il manque le Post-it N° 3 et imprimera un numéro de table 13 avec « Place libre » comme nom-prénom.

    Édition du jeu d’essai

    Ci-dessous, les six pages de l’édition des numéros de table du jeu d’essai :

    Nom : Numéros de table.jpg
Affichages : 151
Taille : 400,5 Ko



Discussions similaires

  1. Réponses: 2
    Dernier message: 25/08/2017, 15h00
  2. Réponses: 0
    Dernier message: 16/05/2013, 14h12
  3. Réponses: 2
    Dernier message: 16/06/2010, 18h51
  4. Réponses: 0
    Dernier message: 29/06/2008, 07h51
  5. Calcul des numéros de semaine d'un calendrier
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 06/11/2002, 21h29

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