Exercice corrigé d’algorithmique
■ ■ ■ SOMMAIRE ■ ■ ■
- La problématique
- Tableaux Excel
- Simulation
- Identification des données
- Les données et leur calcul
- Simulation pour chaque couleur
- Algorigramme pour renseigner un tableau en deux dimensions (Matrice)
- Les variables
- L’Algorigramme
- Algorigramme pour créer une playlist depuis une matrice
- Les variables de la Matrice (100 lignes x 5 colonnes)
- L’Algorigramme
- Algorigramme pour créer une table "couleur" BDD
- Les tables
- Les variables
- L’Algorigramme
- Algorigramme pour créer une playlist depuis une table BDD
- Création de la table t_jetons
- Les variables de la table t_jetons
- Les variables de la table playlist
- L’Algorigramme
- Conclusion
■ § 1. La problématique
On a donc 100 jetons de 5 couleurs différentes correspondant à des genres musicaux différents. Comment répartir ces jetons en proportions différentes dans une playlist de genres musicaux la plus homogène possible ?
- 50 jetons verts (variété française)
- 30 jetons rouges (rock)
- 10 jetons bleus (hiphop)
- 7 jetons jaunes (reggae)
- 3 jetons noirs (musique de film)
petit_chat propose comme exemple, un pourcentage sur un total de 100 jetons, mais rien n’empêche, bien sûr, de définir un pourcentage par rapport à un total de jetons inférieur ou supérieur à 100.
Ma réflexion s’appuie sur l’exemple de petit_chat. Elle n’est en aucun cas universelle. En effet, si le pourcentage le plus important était supérieur à 50%, ma démarche concernant un tel pourcentage ne pourrait plus s’appliquer. Il y aurait alors une alternance aléatoire des jetons du genre : jeton, jeton, vide, jeton, vide…
Prenons cet exemple de petit_chat comme un exercice d’algorithmique. La solution nécessite à priori deux algorithmes.
- Un premier algorithme pour affecter les jetons dans un tableau en deux dimensions de 100 liges sur 5 colonnes (1er tableau Excel joint) :
- Soit un algorithme appliqué à un tableau en deux dimensions
- Soit un algorithme appliqué à une table BDD
- Un second algorithme pour créer la playlist (2ème tableau Excel joint)
Avant d’aller plus loin, je vous montre d’abord le résultat de ma réflexion à l’aide de deux tableaux Excel, puis je vous explique.
Ces deux tableaux résultent d’une simple simulation. Il n’est pas encore question d’algorithmique, c’est juste de la réflexion pragmatique avec le dernier neurone qui me reste et non avec des instructions. De toute façon, je ne dispose plus de mes outils informatiques, je suis à la retraite depuis plus de quinze ans.
Attention !
Excel permettant d’utiliser la couleur, un jeton peut être représenté à la fois par une cellule de couleur et le chiffre "1". Les totalisations verticales et horizontales valident ainsi l’algorithme utilisé à base de calculs.
Sans la couleur, la playlist (2ème tableau Excel), n’afficherait qu’une liste de "1" inexploitable.
La programmation ne permettant pas d’utiliser la couleur, il faudra bien à un moment ou à un autre, concrétiser les jetons par le libellé ou le code de leur couleur.
Cela peut se faire dès le premier algorithme mais pour cet exercice, c’est le 2ème algorithme qui s’en charge.
■ § 2. Tableaux Excel
- Le premier tableau (matrice 100 x 5) correspond au 1er algorithme.
- Le deuxième tableau (playlist) correspond au 2ème algorithme.
Pièce jointe 633567
■ § 3. Simulation
■ § 3.1. Identification des données
Ce n’est finalement qu’un problème d’intervalles.
┌────────────────> N° de ligne (1 à 100)
│
│ ┌────────────> Pourcentage (50, 30, 10, 7, 3)
┌─┴─┬─┴─┐
│ N°│NB%│
├───┼───┤ ───┐
│ 1│ │ │
├───┼───┤ ├────> Cellules_Avant (sans jetons)
│ 2│ │ │
├───┼───┤ ───┴──────────────────────────────────────────────────────────────────┐
│ 3│ 1 │ ───────> 1ère Cellule avec jeton │
├───┼───┤ ───┐ │
│ 4│ │ │ │
├───┼───┤ │ │
│ 5│ │ ├───> Cellules_Intervalle (sans jetons) ───┐ │
├───┼───┤ │ │ │
│ 6│ │ │ │ │
├───┼───┤ ───┘ │ │
│ 7│ 1 │ ├─> Total_Intervalles ├─> Cellules_Début-Fin
├───┼───┤ ───┐ │ │
│ 8│ │ │ │ │
├───┼───┤ │ │ │
│ 9│ │ ├───> Cellules_Intervalle (sans jetons) ───┘ │
├───┼───┤ │ │
│ 10│ │ │ │
├───┼───┤ ───┘ │
│ 11│ 1 │ ───────> dernière Cellule avec jeton │
├───┼───┤ ───┬──────────────────────────────────────────────────────────────────┘
│ 12│ │ │
├───┼───┤ ├────> Cellules_Après (sans jetons)
│ 13│ │ │
└───┴───┘ ───┘
L’idée est simple, il s’agit de calculer le nombre entier de cellules d’un intervalle entre deux jetons.
Le nombre de Cellules_Avant correspond au nombre de Cellules_Début-Fin divisé par 2 (on ne considère que les entiers).
Le nombre de Cellules_Après correspond au reste de cette division par 2. Ce reste est ce qu’il est, il ne sera pas forcément égal au nombre de Cellules_Avant mais il n’est pas nécessaire de le connaitre.
petit_chat qui s’inquiétait de savoir que faire des restes de ses opérations… En fait, on les ignore, on ne considère que les entiers.
■ § 3.2. Les données et leur calcul
Définition |
Mnémonique |
Calcul |
N° de ligne |
N° |
De 1 à n |
Pourcentage |
NB% |
NB% = 50, 30, 17, ou 3 |
Nombre total de cellules sans jeton |
Cellules_vides |
100 – NB% |
Nombre de cellules sans jeton entre deux cellules avec jeton |
Cellules_Intervalle |
Cellules_Vides / NB% |
Total des cellules vides entre la 1ère cellule avec jeton et la dernière cellule avec jeton |
Total_Intervalles |
Cellules_Intervalle * (NB% - 1) |
Cellules avant la 1ère cellule avec jeton et après la dernière cellule avec jeton |
Cellules_Restantes |
100 - Cellules_Début-Fin |
Nombre de cellules sans jeton avant la 1ère cellule avec jeton |
Cellules_Avant |
Cellules_Restantes / 2 |
Nombre de cellules sans jeton après la dernière cellule avec jeton |
Cellules_Après |
Cellules_Restantes – Cellules_Avant |
■ § 3.3. Simulation pour chaque couleur
Pourcentage COULEUR VERTE (50%) |
Calcul |
Résultat |
Calcul des cellules sans jeton |
100 – 50 |
= 50 |
Calcul d’un intervalle |
50 / 50 |
= 1 |
Calcul du nombre total de cellules "intervalles" |
1 * (50 - 1) |
= 49 |
Calcul du nombre de cellules entre le 1er jeton et le dernier jeton |
50 + 49 |
= 99 |
Calcul du nombre de cellules restantes |
100 – 99 |
= 1 |
Calcul du nombre de cellules avant le 1er jeton |
1 / 2 |
= 0 |
Pourcentage COULEUR ROUGE (30%) |
Calcul |
Résultat |
Calcul des cellules sans jeton |
100 – 30 |
= 70 |
Calcul d’un intervalle |
70 / 30 |
= 2 |
Calcul du nombre total de cellules "intervalles" |
2 * (30 - 1) |
= 58 |
Calcul du nombre de cellules entre le 1er jeton et le dernier jeton |
30 + 58 |
= 88 |
Calcul du nombre de cellules restantes |
100 – 88 |
= 12 |
Calcul du nombre de cellules avant le 1er jeton |
12 / 2 |
= 6 |
Pourcentage COULEUR BLEUE (10%) |
Calcul |
Résultat |
Calcul des cellules sans jeton |
100 – 10 |
= 90 |
Calcul d’un intervalle |
90 / 10 |
= 9 |
Calcul du nombre total de cellules "intervalles" |
9 * (10 - 1) |
= 81 |
Calcul du nombre de cellules entre le 1er jeton et le dernier jeton |
10 + 81 |
= 91 |
Calcul du nombre de cellules restantes |
100 – 91 |
= 9 |
Calcul du nombre de cellules avant le 1er jeton |
9 / 2 |
= 4 |
Pourcentage COULEUR JAUNE (7%) |
Calcul |
Résultat |
Calcul des cellules sans jeton |
100 – 7 |
= 93 |
Calcul d’un intervalle |
93 / 7 |
= 13 |
Calcul du nombre total de cellules "intervalles" |
13 * (7 - 1) |
= 78 |
Calcul du nombre de cellules entre le 1er jeton et le dernier jeton |
7 + 78 |
= 85 |
Calcul du nombre de cellules restantes |
100 – 85 |
= 15 |
Calcul du nombre de cellules avant le 1er jeton |
15 / 2 |
= 7 |
Pourcentage COULEUR NOIRE (3%) |
Calcul |
Résultat |
Calcul des cellules sans jeton |
100 – 3 |
= 97 |
Calcul d’un intervalle |
97 / 3 |
= 32 |
Calcul du nombre total de cellules "intervalles" |
32 * (3 - 1) |
= 64 |
Calcul du nombre de cellules entre le 1er jeton et le dernier jeton |
3 + 64 |
= 67 |
Calcul du nombre de cellules restantes |
100 – 67 |
= 33 |
Calcul du nombre de cellules avant le 1er jeton |
33 / 2 |
= 16 |
NB : Après positionnement des jetons dans chaque colonne, certaines lignes comptabilisent jusqu’à trois jetons alors que d’autres lignes n’en n’ont aucun. C'est normal.
■ § 4. Algorigramme pour renseigner un Tableau en deux dimensions (Matrice)
Les variables
ÉLÉMENT_MATRICIE |
= Élément Matriciel correspondant à une cellule du 1er tableau Excel |
NB_COLONNES |
= Nombre de Colonnes (5) |
NB_JETONS |
= Nombre de Jetons (Pourcentage : 50, 30, 10, 7, 3) |
CTR_JETONS |
= Compteur_Jetons |
I_LIGNE |
= Index Ligne |
I_COLONNE |
= Index Colonne |
I_INTERVALLE |
= Index Intervalle |
L'algorigramme
┌───────────────────────────────────────────────────────┐
D_PROG │ NB_COLONNES = 5 │
│ I_COLONNE = 0 │
└───────────────────────────┬───────────────────────────┘
│◄──────────────────────────────────────┐
┌───────────────────────────┴───────────────────────────┐ │
D_COLONNE │ 100 – NB% (ex. : NB% = 50) = Cellules_Vides │ │
│ Cellules_Vides / NB% = Cellules_Intervalle │ │
│ Cellules_Intervalle * (NB% - 1) = Total_Intervalles │ │
│ NB% + Total_intervalles = Cellules_Début-Fin │ │
│ 100 – Cellules_Début-Fin = Cellules_Après │ │
│ Cellules_restantes / 2 = Cellules_Avant │ │
├───────────────────────────────────────────────────────┤ │
│ I_COLONNE = I-COLONNE + 1 │ │
│ I_LIGNE = 0 │ │
│ CTR_JETONS = 0 │ │
└───────────────────────────┬───────────────────────────┘ │
│◄──────────────────────────────┐ │
┌───────────────────────────┴───────────────────────────┐ │ │
T_AVANT │ I_LIGNE = I_LIGNE + 1 │ │ │
│ I_LIGNE :: Cellules_Avant │ │ │
└───────────────────────────┬───────────────────────────┘ < │ │
●───────────────────────────────┘ │
│◄──────────────────────────────────┐ │
┌───────────────────────────┴───────────────────────────┐ │ │
D_JETON │ ÉLÉMENT_MATRICIEL (I_LIGNE, I_COLONNE) = "1" │ │ │
│ CTR_JETONS = CTR_JETONS + 1 │ │ │
│ I_INTERVALLE = 0 │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
│◄──────────────────────────────┐ │ │
┌───────────────────────────┴───────────────────────────┐ │ │ │
T_INTERVALLE │ I_LIGNE = I_LIGNE + 1 │ │ │ │
│ I_INTERVALLE = I_INTERVALLE + 1 │ │ │ │
│ I_INTERVALLE :: Cellules_Intervalle │ │ │ │
└───────────────────────────┬───────────────────────────┘ < │ │ │
●───────────────────────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
F_JETON │ CTR_JETONS :: (NB_JETONS – 1) │ │ │
└───────────────────────────┬───────────────────────────┘ < │ │
●───────────────────────────────────┘ │
┌───────────────────────────┴───────────────────────────┐ │
F_COLONNE │ ÉLÉMENT_MATRICIEL (I_LIGNE, I_COLONNE) = "1" │ │
│ I_COLONNE :: NB_COLONNES │ │
└───────────────────────────┬───────────────────────────┘ < │
●───────────────────────────────────────┘
┌───────────────────────────┴───────────────────────────┐
F_PROG │ Ø │
└───────────────────────────────────────────────────────┘
■ § 5. Algorigramme pour créer la playlist depuis une matrice
Il suffit de lire chaque ligne de la matrice de la gauche vers la droite en parcourant la matrice verticalement de la première ligne à la dernière et de reporter chronologiquement chaque jeton (son libellé ou son code) dans la playlist.
Les variables de la Matrice (100 lignes x 5 colonnes)
ÉLÉMENT_MATRICIEL |
= Élément Matriciel |
I_LIGNE |
= Index Ligne |
K_LIGNE |
= Index Borne Ligne |
I_COLONNE |
= Index Colonne |
K_COLONNE |
= Index Borne Colonne (5) |
JETON |
= Couleur du jeton ("V", "R", "B", "J", "N") |
Les variables de la Table Playlist (100 lignes)
I_PLAYLIST |
= Index Playlist |
L'Algorigramme
┌───────────────────────────────────────────────────────┐
D_PROG │ I_LIGNE = 0 │
│ K_LIGNE = 100 │
│ I_COLONNE = 0 │
│ K_COLONNE = 5 │
│ I_PLAYLIST = 0 │
└───────────────────────────┬───────────────────────────┘
│◄────────────────────────────────────┐
┌───────────────────────────┴───────────────────────────┐ │
D_LIGNE │ I_LIGNE = I_LIGNE + 1 │ │
│ I_COLONNE = 0 │ │
│ JETON = "" │ │
└───────────────────────────┬───────────────────────────┘ │
│◄───────────────────────────────┐ │
┌───────────────────────────┴───────────────────────────┐ │ │
D_COLONNE │ I_COLONNE = I_COLONNE + 1 │ │ │
│ I_COLONNE :: 1 │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
NULL ┌──────────────●──────────────┐ = │ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ Ø │ │ JETON = "V" │ │ │
└────────────┬────────────┘ └────────────┬────────────┘ │ │
└──────────────┬──────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
│ I_COLONNE :: 2 │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
NULL ┌──────────────●──────────────┐ = │ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ Ø │ │ JETON = "R" │ │ │
└────────────┬────────────┘ └────────────┬────────────┘ │ │
└──────────────┬──────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
│ I_COLONNE :: 3 │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
NULL ┌──────────────●──────────────┐ = │ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ Ø │ │ JETON = "B" │ │ │
└────────────┬────────────┘ └────────────┬────────────┘ │ │
└──────────────┬──────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
│ I_COLONNE :: 4 │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
NULL ┌──────────────●──────────────┐ = │ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ Ø │ │ JETON = "J" │ │ │
└────────────┬────────────┘ └────────────┬────────────┘ │ │
└──────────────┬──────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
│ I_COLONNE :: 5 │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
NULL ┌──────────────●──────────────┐ = │ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ Ø │ │ JETON = "N" │ │ │
└────────────┬────────────┘ └────────────┬────────────┘ │ │
└──────────────┬──────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
│ ÉLÉMENT_MATRICIEL (I_LIGNE, I_COLONNE) :: "1" │ │ │
└───────────────────────────┬───────────────────────────┘ │ │
NULL ┌──────────────●──────────────┐ = │ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
T_ELEMENT_MATRICIEL │ │ │ I_PLAYLIST = I_PLAYLIST │ │ │
│ Ø │ │ + 1 │ │ │
│ │ │ Print I_PLAYLIST, " = ",│ │ │
│ │ │ JETON │ │ │
└────────────┬────────────┘ └────────────┬────────────┘ │ │
└──────────────┬──────────────┘ │ │
┌───────────────────────────┴───────────────────────────┐ │ │
F_COLONNE │ I_COLONNE :: K_COLONNE │ │ │
└───────────────────────────┬───────────────────────────┘ < │ │
●────────────────────────────────┘ │
┌───────────────────────────┴───────────────────────────┐ │
F_LIGNE │ I_LIGNE :: K_LIGNE │ │
└───────────────────────────┬───────────────────────────┘ < │
●─────────────────────────────────────┘
┌───────────────────────────┴───────────────────────────┐
F_PROG │ Ø │
└───────────────────────────────────────────────────────┘
■ § 6. Algorigramme pour créer une table "couleur" BDD
Le programme doit être exécuté pour chaque couleur. Les 5 tables couleurs étant créées, il reste à concaténer ces 5 tables en une seule via des requêtes SQL. Chaque table doit être constituée de tous les N° de ligne avec ou sans jeton.
Cette table unique pourra être traitée comme le tableau en deux dimensions pour réaliser une liste séquentielle des jetons de couleurs.
Création de la table t_couleur
Après création de cette table pour une couleur, une requête SQL copie t_couleur.j_couleur dans l’attribut correspondant de la table t_jetons (
j_vert, j_rouge, j_bleu, j_jaune ou j_noir).
{ t_couleur (table couleur) ---------------------------------------------------}
create table t_couleur
(
n_ligne integer not null,
j_couleur char(1)
) ;
{------------------------------------------------------------------------------}
Les variables
JETON |
= Couleur du jeton ("V", "R", "B", "J", "N") |
NB_JETON |
= Nombre de Jetons (Pourcentage : 50, 30, 10, 7, 3) |
CTR_JETON |
Compteur_Jetons |
I_LIGNE |
= Index Ligne |
I_COLONNE |
= Index Colonne |
I_INTERVALLE |
= Index Intervalle |
SÉPARATEUR |
= "ǀ" (pipe) |
La requête SQL pour la couleur verte
{------------------------------------------------------------------------------}
update t_jetons
set t_jetons.j_vert = (select t_couleur.j_couleur
from t_couleur
where t_couleur.ligne = t_jetons.ligne)
where t_couleur.ligne = t_jetons.ligne ;
{------------------------------------------------------------------------------}
L'Algorigramme
┌───────────────────────────────────────────────────────┐
D_PROG │ 100 – NB% (ex. : NB% = 50) = Cellules_Vides │
│ Cellules_Vides / NB% = Cellules_Intervalle │
│ Cellules_Intervalle * (NB% - 1) = Total_Intervalles │
│ NB% + Total_intervalles = Cellules_Début-Fin │
│ 100 – Cellules_Début-Fin = Cellules_Après │
│ Cellules_restantes / 2 = Cellules_Avant │
├───────────────────────────────────────────────────────┤
│ JETON = V, R, B, J, ou N │
│ NB_JETONS = 50, 30 10, 7, 3 │
│ CTR_JETONS = 0 │
│ I_LIGNE = 1 │
└───────────────────────────┬───────────────────────────┘
│◄───────────────────────────────┐
┌───────────────────────────┴───────────────────────────┐ │
D_LIGNE │ I_LIGNE = I_LIGNE + 1 │ │
│ I_LIGNE :: Cellules_Avant │ │
└───────────────────────────┬───────────────────────────┘ │
┌──────────────●──────────────┐ │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │
T_AVANT │ Ø │ │ PRINT I_LIGNE, "ǀǀ" │ │
└────────────┬────────────┘ └────────────┬────────────┘ │
└──────────────┬──────────────┘ │
┌───────────────────────────┴───────────────────────────┐ │
│ I_LIGNE :: Cellules_Avant │ │
└───────────────────────────┬───────────────────────────┘ < │
●────────────────────────────────┘
│◄──────────────────────────────────┐
┌───────────────────────────┴───────────────────────────┐ │
T_JETON │ PRINT I_LIGNE, "ǀ", "JETON", "ǀ" │ │
│ CTR_JETONS = CTR_JETONS + 1 │ │
│ I_INTERVALLE = 0 │ │
└───────────────────────────┬───────────────────────────┘ │
│◄──────────────────────────────┐ │
┌───────────────────────────┴───────────────────────────┐ │ │
T_INTERVALLE │ PRINT I_LIGNE, "ǀ", "ǀ" │ │ │
│ I_INTERVALLE = I_INTERVALLE + 1 │ │ │
│ I_INTERVALLE :: Cellules_Intervalle │ │ │
└───────────────────────────┬───────────────────────────┘ < │ │
●───────────────────────────────┘ │
┌───────────────────────────┴───────────────────────────┐ │
F_JETON │ CTR_JETONS :: (NB_JETONS – 1) │ │
└───────────────────────────┬───────────────────────────┘ < │
●───────────────────────────────────┘
┌───────────────────────────┴──────────────────────────┐
INTER │ PRINT I_LIGNE, "ǀ", JETON, "ǀ" │
└───────────────────────────┬──────────────────────────┘
│◄──────────────────────────────┐
┌───────────────────────────┴───────────────────────────┐ │
D_APRES │ I_LIGNE = I_LIGNE + 1 │ │
│ I_LIGNE :: NB_LIGNES │ │
└───────────────────────────┬───────────────────────────┘ │
= ┌──────────────●──────────────┐ < │
┌────────────┴────────────┐ ┌────────────┴────────────┐ │
T_APRES │ Ø │ │ PRINT I_LIGNE, "ǀ", "ǀ" │ │
└────────────┬────────────┘ └────────────┬────────────┘ │
└──────────────┬──────────────┘ │
┌───────────────────────────┴───────────────────────────┐ │
F_APRES │ I_LIGNE :: NB_LIGNES │ │
└───────────────────────────┬───────────────────────────┘ < │
●───────────────────────────────┘
┌───────────────────────────┴───────────────────────────┐
F_PROG │ Ø │
└───────────────────────────────────────────────────────┘
■ § 7. Algorigramme pour créer la playlist depuis une table BDD
Il suffit de lire chaque item de la table BDD (t_jetons), de tester chaque attribut (j_vert, j_rouge, j_bleu, j_jaune, j_noir) et de reporter chronologiquement chaque jeton dans la playlist.
Création de la table t_jetons
{ t_jetons (table jetons) -----------------------------------------------------}
create table t_jetons
(
n_ligne integer not null,
j_vert char(1),
j_rouge char(1),
j_bleu char(1),
j_jaune char(1),
j_noir char(1)
) ;
{------------------------------------------------------------------------------}
Les variables de la Table t_jetons (100 items)
T_JETONS |
= Table des Jetons |
I_LIGNE |
= Index Ligne |
K_LIGN |
= Index Playlist |
Les variables de la Table Playlist (100 lignes)
I_PLAYLIST |
= Index Playlist |
L'Algorigramme
┌───────────────────────────────────────────────────────┐
D_PROG │ I_LIGNE = 0 │
│ K_LIGNE = 100 │
│ I_PLAYLIST = 0 │
└───────────────────────────┬───────────────────────────┘
│◄────────────────────────────────────┐
┌───────────────────────────┴───────────────────────────┐ │
D_ITEM │ I_LIGNE = I_LIGNE + 1 │ │
└───────────────────────────┬───────────────────────────┘ │
┌────────────────────────────────┼────────────────────────────────┐ │
│ ┌───────────────────────────┴───────────────────────────┐ │ │
T_ITEM │ │ j_vert :: "V" │ │ │
│ └───────────────────────────┬───────────────────────────┘ │ │
│ NULL ┌──────────────●──────────────┐ = │ │
│ ┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ │ │ │ I_PLAYLIST = I_PLAYLIST │ │ │
│ │ Ø │ │ + 1 │ │ │
│ │ │ │ Print I_PLAYLIST, "ǀBǀ" │ │ │
│ └────────────┬────────────┘ └────────────┬────────────┘ │ │
│ └──────────────┬──────────────┘ │ │
│ ┌───────────────────────────┴───────────────────────────┐ │ │
│ │ j_rouge :: "R" │ │ │
│ └───────────────────────────┬───────────────────────────┘ │ │
│ NULL ┌──────────────●──────────────┐ = │ │
│ ┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ │ │ │ I_PLAYLIST = I_PLAYLIST │ │ │
│ │ Ø │ │ + 1 │ │ │
│ │ │ │ Print I_PLAYLIST, "ǀRǀ" │ │ │
│ └────────────┬────────────┘ └────────────┬────────────┘ │ │
│ └──────────────┬──────────────┘ │ │
│ ┌───────────────────────────┴───────────────────────────┐ │ │
│ │ j_bleu :: "B" │ │ │
│ └───────────────────────────┬───────────────────────────┘ │ │
│ NULL ┌──────────────●──────────────┐ = │ │
│ ┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ │ │ │ I_PLAYLIST = I_PLAYLIST │ │ │
│ │ Ø │ │ + 1 │ │ │
│ │ │ │ Print I_PLAYLIST, "ǀBǀ" │ │ │
│ └────────────┬────────────┘ └────────────┬────────────┘ │ │
│ └──────────────┬──────────────┘ │ │
│ ┌───────────────────────────┴───────────────────────────┐ │ │
│ │ j_jaune :: "J" │ │ │
│ └───────────────────────────┬───────────────────────────┘ │ │
│ NULL ┌──────────────●──────────────┐ = │ │
│ ┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ │ │ │ I_PLAYLIST = I_PLAYLIST │ │ │
│ │ Ø │ │ + 1 │ │ │
│ │ │ │ Print I_PLAYLIST, "ǀJǀ" │ │ │
│ └────────────┬────────────┘ └────────────┬────────────┘ │ │
│ └──────────────┬──────────────┘ │ │
│ ┌───────────────────────────┴───────────────────────────┐ │ │
│ │ j_noir :: "N" │ │ │
│ └───────────────────────────┬───────────────────────────┘ │ │
│ NULL ┌──────────────●──────────────┐ = │ │
│ ┌────────────┴────────────┐ ┌────────────┴────────────┐ │ │
│ │ │ │ I_PLAYLIST = I_PLAYLIST │ │ │
│ │ Ø │ │ + 1 │ │ │
│ │ │ │ Print I_PLAYLIST, "ǀNǀ" │ │ │
│ └────────────┬────────────┘ └────────────┬────────────┘ │ │
│ └──────────────┬──────────────┘ │ │
└────────────────────────────────┼────────────────────────────────┘ │
┌───────────────────────────┴───────────────────────────┐ │
F_ITEM │ I_LIGNE :: K_LIGNE │ │
└───────────────────────────┬───────────────────────────┘ < │
●─────────────────────────────────────┘
┌───────────────────────────┴───────────────────────────┐
F_PROG │ Ø │
└───────────────────────────────────────────────────────┘
■ § 8. Conclusion
Je ne sais pas si ma proposition matricielle est réalisable mais j’aime bien ma solution BDD.
Ma simulation avec Excel n’est pas mal non plus. Elle est même suffisante, non ?
En fait, je voulais savoir s’il était possible d’ajouter un message à une discussion fermée.
Vous pouvez retrouver ce message sous forme d’un billet dans mon blog logique...
Bisous…
Partager