EnregPièce pièceSaisie = new EnregPièce();
Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ceci est une ancienne révision du document !
L'algorithme a implémenter :
Structurer des données associées à des pièces. Constantes // Dimension des tableaux MAX_TAB_IdPièce = 10 MAX_TAB_IdNoSérie = 10 MAX_TAB-PIECE = 100000 Types // Types énumérés TE_FormePièce = (sphère, cube, cylindre) TE_Couleur = (jaune, vert, bleu, rouge, orange, mauve) TE_NomJour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche) // Types tableaux TabIdPièce = Tableau [MAX_TAB_IdPièce] de Caractères // Tableau pour identifiant pièce TabIdNoSérie = Tableau [MAX_TAB_IdNoSérie] de Caractères // Tableau pour numéro de série de fabrication TabPièce = Tableau [MAX_TAB_PIECE] de EnregPièce // Tableau pour stocker les descriptions de pièces fabriquées // Type structures EnregPièce = Enregistrement Id : TabIdPièce // Identifiant de la pièce Couleur : TE_Couleur // Couleur de la pièce NoSérie : TabIdNoSérie // Numéro de série de fabrication DateFab : EnregDate // Date de fabrication Dim : Mesures FinEnregistrement EnregDate = Enregistrement NomJour : TE_NomJour Jour : Entier Mois : Entier Année : Entier FinEnregistrement Mesures = Enregistrement // structure de dimensions d'un cylindre Forme : TE_FormePièce Rayon : Entier // rayon (sphère ou cylindre) Hauteur : Entier // hauteur (du cube ou du cylindre) FinEnregistrement Variables ProductionPièces : TabPièce
namespace PiècesUsine { public struct EnregPièce // Déclaration d'une structure de stockage d'un descriptif de pièce { public string Id; // Identifiant de la pièce public int numeroSerie; // numéro de série des pièces public couleur couleurPièce; // Voir liste énumérée 'couleur' public date DateFab; // Voir structure 'date' utilisant deux listes énumérée, // 'jourSemaine' et 'moisAnnée' public mesure dimension; // Voir structure 'mesure' utilisant la liste énumérée 'forme' } public enum couleur { Jaune, Vert, Bleu, Rouge, Orange, Mauve }; public struct date { public jourSemaine NomJour; // Voir Liste énumérée 'jourSemaine' public moisAnnée Mois; // Voir Liste énumérée 'moisAnnée' public int jourChiffre; // le numéro du jour public int Annee; // numéro de l'année } public enum jourSemaine { Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche }; public enum moisAnnée { Janvier, Février, Mars, Avril, Mai, Juin, Juillet, Août, Septembre, Octobre, Novembre, Décembre }; public struct mesure // tout ce qui constitue les mesures des pièces { public forme forme; // forme des pièces public double rayon; // rayon pour les pièces cylindriques et sphériques public double cote; // côté pour les pièces cubiques public double hauteur; // hauteur pour les pièces cylindriques } public enum forme { Cubique, Cylindrique, Sphérique }; class Program { public const int taille = 1000; static void Main(string[] args) { int indice; EnregPièce[] Tableaupiece; EnginDePieces.RemplirTableauPiece(out Tableaupiece, out indice); EnginDePieces.AfficherTableauPiece(Tableaupiece, indice); Console.ReadLine(); Console.WriteLine(); } } }
Où j'ai rédigé le programme des procédures :
On crée un tableau de type “EnregPièce”.
Qu'est-ce que le type “EnregPièce” ?
En c# on peut créer des types utilisateurs. Cela correspond au enregistrement en algo.
C'est un type qui définit une structure de donnée composée de type prédéfini (int
; char
; string
…)
ou composé d'autres de types créés par l'utilisateur (liste énuméré enum
, sous structure struct
)
public static void RemplirTableauPiece(out EnregPièce[] piece_tableau, out int indi) { piece_tableau = new EnregPièce[MAX_TAB_PIECE]; indi = 0; do { piece_tableau[indi] = SaisirPièce(ref piece_tableau[indi]); indi++; } while (veutContinuer()); }
La fonction RemplirTableauPiece
renverra en sortie (out
):
piece_tableau
;int
) nommé indi
;
Pour remplir toutes les cases du tableau de pièce qui contiendra les informations choisies par l'utilisateur, on affecte les cases du tableau piece_tableau
au moyen d'une fonction nommée : SaisirPièce
.
Loupe sur l'appel de fonction : SaisirPièce
Elle prend en entrée/sortie (ref
) le tableau piece_tableau
afin de pouvoir en modifier chaque variable.
Le tableau piece_tableau
étant de type EnregPièce,
il devra “suivre” la structure de ce type créé par l'utilisateur. C'est-à-dire être “composée”:
string
;int
;couleur
: c'est là une liste énumérée (comme ça contrôle sur ce que rentre l'utilisateur ; sûr que la couleur est dans les stocks, et pas d'erreur de frappe à la saisie).date
; ce type est à créer, ce sera une structure.
La fonction veutContinuer
sert à demander à l'utilisateur s'il souhaite remplir des informations sur une autre pièce.
Pour son code qui n'a pas de rapport avec l'implémentation de l'algo voir l'annexe.
internal static EnregPièce SaisirPièce(ref EnregPièce unepiece) { // Déclarations EnregPièce pièceSaisie = new EnregPièce(); // initialisation de la structure pièceSaisie // Titre Console.Write("Saisie d'un descriptif de pièce." + LF); Console.Write("--------------------------------" + LF); // Identifiant pièceSaisie.Id= Lire.Chaine("Entrez l'identifiant"); // Couleur pièceSaisie.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)"); // Numéro de série pièceSaisie.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)"); // Date pièceSaisie.DateFab = SaisirDate(); // Forme et dimensions pièceSaisie.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)"); switch (unepiece.dimension.forme) { case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?"); break; case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?"); break; case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?"); break; default: Console.ReadLine(); break; } return pièceSaisie; }
J'ai mis :
pièceSaisie.Id= Lire.Chaine(“Entrez l'identifiant”);
pièceSaisie.couleurPièce = SaisirCouleur(“Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)”);
Il faut corriger en :
unepiece.Id= Lire.Chaine(“Entrez l'identifiant”);
unepiece.couleurPièce = SaisirCouleur(“Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)”);
⇒ Et pour affecter chaque variable effective unepiece.Id ; unepiece.couleurPièce etc, il est inutile d'initialiser une variable effective de type EnregPièce
1).
J'ai voulu écrire :
// Déclarations EnregPièce pièceSaisie = new EnregPièce();
ou
// Déclarations EnregPièce unepiece = new EnregPièce();
tandis que ceci fonctionne :
internal static EnregPièce SaisirPièce(ref EnregPièce unepiece) { // Titre Console.Write("Saisie d'un descriptif de pièce." + LF); Console.Write("--------------------------------" + LF); // Identifiant unepiece.Id = Lire.Chaine("Entrez l'identifiant"); // on fait confiance à l'utilisateur pour le format // Couleur unepiece.couleurPièce = SaisirCouleur("Choisissez la couleur pièce (Jaune, Vert, Bleu, Rouge, Orange, Mauve)"); // Numéro de série unepiece.numeroSerie = Lire.Entier("Entrez le n° de série de la pièce (Voir au dos de la pièce)"); // Date unepiece.DateFab = SaisirDate(); // Forme et dimensions unepiece.dimension.forme = SaisieForme("Donnez la forme de la pièce (Cubique, Cylindrique, Sphérique)"); switch (unepiece.dimension.forme) { case forme.Cubique: unepiece.dimension.cote = Lire.Double("Votre pièce à une forme Cubique, quelle est la longueur d'un côté?"); break; case forme.Sphérique: unepiece.dimension.rayon = Lire.Double("Votre pièce à une forme Sphérique, quel est son rayon?"); break; case forme.Cylindrique: unepiece.dimension.rayon = Lire.Double("Votre pièce est Cylindrique, quel est son rayon?"); unepiece.dimension.hauteur = Lire.Double("et quelle sa hauteur?"); break; default: Console.ReadLine(); break; } return unepiece; }
⇒ Je ne comprends par quelle magie la variable effective unepiece
de type EnregPièce
a un emplacement en mémoire.
EnregPièce pièceSaisie = new EnregPièce();