manipulation # 01 : implémentation de trois … · nous allons aussi découvrir comment ... le...
TRANSCRIPT
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 1
Manipulation # 01 : Implémentation de Trois Techniques de
Codification et des Contrôles Associés
Objectifs : Dans cette manip, nous allons apprendre à programmer trois techniques de
codification que sont : la codification séquentielle, la codification juxtaposée et la
codification hiérarchisée. Nous allons aussi découvrir comment programmer des contrôles
directs et indirects.
Pré-Requis : Avoir fait la série de manip #00 et #00.X. Le chapitre 2 de « I.SY.I ».
Toutes ces notions vous ont été rappelées durant le cours et vous pouvez lire le chapitre 2
du cours « I.SY.I » étudié en S3.
� Créez un nouveau projet que nommerez « Manip01 » en respectant les mêmes étapes
que celles décrites dans les précédentes manipulations.
Nous allons commencer par implémenter l’interface générale de l’application qui devrait
avoir l’allure suivante :
� Créer une fenêtre vierge que vous nommerez « FenPrincipale » et dont le titre est
« Mise en Œuvre de Techniques de Codification ».
� Insérer quatre boutons comme le montre la figure suivante en respectant les
dénominations et les libellés donnés aux boutons :
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 2
� Programmer le bouton « Quitter l’Application » avec l’instruction « Ferme » sous
l’événement « Clic sur le bouton QuitterApp ».
� Enregistrer la fenêtre et tester le projet.
Maintenant, nous allons construire trois fenêtres correspondant chacune à une
technique de codification. La figure suivante montre les trois fenêtres reliées à la fenêtre
principale. L’éditeur de Windev permet de créer des liens hiérarchiques entre les fenêtres,
ceci permet de mieux organiser les interfaces d’une application et d’avoir une meilleure
vision de celle-ci.
Avant de relier les fenêtres, construisons les d’abord une à une. Notons toutefois qu’il est
possible de créer des fenêtres vides et de les relier entre elles avant de les programmer
chacune. Nous verrons cela dans des applications futures.
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 3
1. Fenêtre mettant en œuvre la codification séquentielle : EENNOONNCCEE
Dans cet exercice nous allons mettre en œuvre une codification séquentielle qui vise à
numéroter les livres d’une petite librairie. Deux implémentations sont possibles : une
implémentation manuelle permettant à l’utilisateur de saisir lui-même les occurrences de code
alors que la deuxième implémentation utilise un compteur à incrément pour passer d’une
occurrence à l’autre.
� Créer une fenêtre vide dénommée « Codification_Séquentielle » et ayant pour titre
« Codification Séquentielle » puis l’enregistrer sous le même nom.
� Créer les différents champs comme le montre la figure suivante et en respectant les
noms des champs :
Comme montre la fenêtre (et ceci a été expliqué en cours), il y a deux implémentations
possibles pour la codification séquentielle : la première (à gauche de la fenêtre) gère
manuellement le code alors que la deuxième (à droite de la fenêtre) le gère à l’aide d’un
compteur automatique.
� Préciser pour chaque champ de la fenêtre « Codification_Séquentielle » ses propriétés
comme décrit dans la table suivante :
Nom du
champ Dans onglet Dans onglet
Type
Taille de
Saisie
Masque de
Saisie Etat Initial
CodeLivre1 Numérique 99 En Saisie
TitreLivre1 Texte 40 En Saisie
LISTE_Livres1 Est une boite à liste
CodeLivre2 Numérique 99 En Affichage Seul
TitreLivre2 Texte 40 En Saisie
LISTE_Livres2 Est une boite à liste
� Le bouton « Quitter » sera programmé avec l’instruction « Ferme » et ceci est valable
pour tous les boutons « Quitter » de toutes les fenêtres de ce projet.
Afin de mettre en œuvre les différents contrôles (directs et indirects), nous allons créer
deux procédures locales à la fenêtre « Codification_Séquentielle » : l’une sera consacrée aux
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 4
contrôles à mettre en œuvre dans le cas d’une gestion manuelle et l’autre sera pour le cas
d’une gestion automatique.
� Assurez-vous que la fenêtre « Codification_Séquentielle » soit bien visible sur
l’éditeur de fenêtre Windev.
� Cliquer sur l’option « procédures locales »1 dans le volet situé en bas de l’éditeur
comme le montre la figure suivante :
� En utilisant le bouton encerclé en rouge sur la figure, créer deux procédures locales
que vous dénommerez « Contrôler1 » et « Contrôler2 ».
� Cliquer sur la procédure « Contrôler1 » et appuyer sur F2 puis taper le code comme il
se présente dans cette figure2 :
1 Une procédure locale est une portion de programme (PROCEDURE ou FONCTION) utilisable uniquement par
la fenêtre ou elle est déclarée. 2 Vous remarquerez que les commentaires de début générés automatiquement ont été effacé et que le mot
clé « PROCEDURE » a été remplacé par le mot clé « FONCTION » car « Contrôler1 » est une fonction booléenne
pouvant retourner la valeur « Vrai » ou « Faux ».
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 5
Expliquons le rôle de certaines fonctions du W-Langage que nous utilisons ici3 :
Fonction W-
Langage
Rôle Exemple (si nécessaire)
Vrai, Faux Représentent respectivement les
valeurs booléennes « True » et
« False ».
SansEspace Permet de ne pas prendre en
considération les espaces situés à
droite et à gauche d’une chaine de
caractère.
SansEspace(" Une Etoile ") retournera la
chaine "Une Etoile".
Erreur Permet d’afficher un message
d’erreur.
ListeOccurrence Retourne le nombre d’éléments
que contient une liste de type
combo ou une boite à liste.
Val Retourne la valeur numérique
d’une chaine de caractère.
Val("Une Etoile") retournera 0.
Val("123") retournera la valeur numérique
123.
3 Les fonctions du W-Langage prennent la couleur bleue, ce qui signifie que ce sont des mots utilisés par le
langage de Windev.
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 6
ExtraitChaine Extrait une sous chaine à partir
d’une chaine en précisant le
délimiteur et la position de la sous
chaine par rapport au délimiteur.
ExtraitChaine("motA+motB+motC+motD",
1, "+") retournera la sous chaine "motA" qui
correspond à la sous chaine située avant la
première occurrence du séparateur "+".
ExtraitChaine("motA+motB+motC+motD ",
3, "+") retournera la sous chaine "mot3" qui
correspond à la sous chaine située avant la
troisième occurrence du séparateur "+".
TAB Représente le caractère spécial
équivalent à la touche de
tabulation du clavier.
Une fois la fonction « Contrôler1 » écrite, il ne reste plus qu’à programmer le bouton
« AjouterLivre1 » en utilisant cette fonction de contrôle.
� Cliquer sur le bouton « AjouterLivre1 » et appuyer sur la touche F2 puis taper le code
suivant comme le montre la figure :
Voici l’explication du rôle de la fonction « ListeAjoute » :
Fonction W-
Langage
Rôle Exemple (si nécessaire)
ListeAjoute Permet d’ajouter un élément à une
liste déroulante ou pas.
ListeAjoute("Liste1","Toto") ajoutera
l’élément "Toto" dans la liste "Liste1".
� Cliquer maintenant sur la procédure « Contrôler2 » et appuyer sur F2 puis taper le
code comme il se présente dans cette figure :
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 7
Une fois la fonction « Contrôler2 » écrite, il ne reste plus qu’à programmer le bouton
« AjouterLivre2 » en utilisant cette fonction de contrôle.
� Cliquer sur le bouton « AjouterLivre2 » et appuyer sur la touche F2 puis taper le code
suivant comme le montre la figure :
� Enregistrer et tester le projet en essayant les deux implémentations de la codification
séquentielle.
DDIISSCCUUSSSSIIOONN
Pour la première implémentation : l’avantage est la liberté donnée à l’utilisateur pour l’usage
des occurrences de code. L’inconvénient est le risque d’un mauvais usage des occurrences.
Pour la seconde implémentation : l’avantage est l’exploitation ordonnée des occurrences.
L’inconvénient est l’usage restrictif des occurrences.
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 8
2. Fenêtre mettant en œuvre la codification juxtaposée : EENNOONNCCEE
Dans cet exercice nous allons mettre en œuvre une codification juxtaposée qui vise à attribuer
un numéro d’immatriculation à un véhicule. Deux implémentations sont possibles : la
première en saisissant chaque champ de code à part, ensuite la fusion des champs donnera le
code au complet. Une procédure de contrôle vérifiera la cohérence de chaque champ avant la
fusion. La seconde se fait en saisissant le code en vrac en utilisant un masque de saisie. Une
procédure de contrôle se chargera alors d’extraire et de vérifier la cohérence des différents
champs du code.
� Créer une fenêtre vide dénommée « Codification_Juxtaposée » et ayant pour titre
« Codification Juxtaposée » puis l’enregistrer sous le même nom.
� Créer les différents champs comme le montre la figure suivante et en respectant les
noms des champs :
Comme montre la fenêtre, il y a deux implémentations possibles pour la codification
séquentielle : la première (à gauche de la fenêtre) permet de saisir le code champ par champ et
de faire les contrôles champ par champ avant de fusionner le tout pour l’insérer dans la liste.
La seconde implémentation permet de saisir le code suivant un masque de saisie puis
d’effectuer un ensemble de contrôles en extrayant les différentes parties avant d’ajouter le
code dans le liste, si tout est correcte bien sûr.
� Préciser pour chaque champ de la fenêtre « Codification_ Juxtaposée » ses propriétés
comme décrit dans la table suivante :
Nom du champ Dans onglet Dans onglet
Type
Taille de
Saisie
Masque de
Saisie Etat Initial
NumSérie Texte 6 999999 En Saisie
Catégorie Contenu
Initial De 1 jusqu’à 5
AnnéeCirculation Numérique 9999 En Saisie
Wilaya Contenu
Initial De 1 jusqu’à 48
LISTE_Matricules1 C’est une boite à liste
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 9
MatriculeVéhicule Texte 17
CCCCCC –
CCC - CC
LISTE_Matricules2 C’est une boite à liste
De la même manière que le cas précédent, nous allons mettre en œuvre les différents
contrôles (directs et indirects) en utilisant deux procédures locales à la fenêtre
« Codification_Juxtaposée » : l’une sera consacrée aux contrôles de la première
implémentation et l’autre à la seconde implémentation.
� Assurez-vous que la fenêtre « Codification_Juxtaposée » soit bien visible sur l’éditeur
de fenêtre Windev.
� Cliquer sur l’option « procédures locales » dans le volet situé en bas de l’éditeur et
créer deux procédures locales que vous dénommerez « Contrôler1 » et
« Contrôler2 ».
� Cliquer sur la procédure « Contrôler1 » et appuyer sur F2 puis taper le code comme il
se présente dans cette figure :
Expliquons le rôle de certaines fonctions du W-Langage que nous utilisons ici :
Fonction W-Langage Rôle Exemple (si nécessaire)
NumériqueVersChaine Permet de convertir une donnée
numérique vers une chaine de
caractère.
NumériqueVersChaine(125,45)
renverra la chaine "123,45".
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 10
… L’utilisation des trois points de
suspension « … » permet de
tronquer une longue ligne de code
pour qu’elle soit écrite sur
plusieurs lignes de l’éditeur pour
une meilleure lisibilité.
Somme = A + B + …
C + D est équivalent à l’écriture de la
ligne suivante :
Somme = A + B + C + D
Maintenant que la fonction « Contrôler1 » est écrite, il ne reste plus qu’à programmer le
bouton « AjouterMatricule1 » en utilisant cette fonction de contrôle.
� Cliquer sur le bouton « AjouterMatricule1 » et appuyer sur la touche F2 puis taper le
code suivant comme le montre la figure :
Voici l’explication du rôle de la fonction « ListeSelectPlus» :
Fonction W-
Langage
Rôle Exemple (si nécessaire)
ListeSelectPlus Permet de sélectionner et
d’afficher dans la combo
l’élément dont l’indice est le
numéro précisé dans les
arguments.
ListeSelectPlus("Liste1",5) sélectionnera et
affichera le 5ème
élément contenu dans la
combo ou la liste "Liste1".
� Cliquer maintenant sur la procédure « Contrôler2 » et appuyer sur F2 puis taper le
code comme il se présente dans cette figure :
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 11
Une fois la fonction « Contrôler2 » écrite, il ne reste plus qu’à programmer le bouton
« AjouterMatricule2 » en utilisant cette fonction de contrôle.
� Cliquer sur le bouton « AjouterMatricule2 » et appuyer sur la touche F2 puis taper le
code suivant comme le montre la figure :
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 12
� Enregistrer et tester le projet en essayant les deux implémentations de la codification
séquentielle.
DDIISSCCUUSSSSIIOONN
Pour la première implémentation : l’avantage est la facilité à renseigner les champs
séparément d’où le risque d’erreurs pendant la saisie est réduit. L’inconvénient est que la
saisie nécessite plus de temps du fait qu’il faut remplir plusieurs champs pour reconstituer le
code.
Pour la seconde implémentation : la saisie est plus facile et rapide mais la mise en œuvre est
plus compliquée.
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 13
3. Fenêtre mettant en œuvre la codification hiérarchisée : EENNOONNCCEE
Il s’agit de mettre en œuvre une codification hiérarchisée relativement à des produits
commerciaux en prenant en compte le fait qu’un produit commercial appartient à une sous
famille qui elle-même appartient à une famille. Nous considérons cinq (05) familles que sont
les « produits laitiers » (PL), les « produits d’entretien » (PE », les « légumes secs » (LS), les
« fruits secs » (FS) et la « Droguerie » (DR). Chaque famille peut compter jusqu’à dix (10)
sous familles et chaque sous famille peut avoir jusqu’à cinquante (50) produits.
� Créer une fenêtre vide dénommée « Codification_Hiérarchisée » et ayant pour titre
« Codification Hiérarchisée » puis l’enregistrer sous le même nom.
� Créer les différents champs comme le montre la figure suivante et en respectant les
noms des champs :
� Préciser pour chaque champ de la fenêtre « Codification_ Hiérarchisée » ses
propriétés comme décrit dans la table suivante :
Nom du champ Dans onglet Dans onglet
Type
Taille de
Saisie
Masque de
Saisie Etat Initial
CodeFamille Texte 2 AA
NomFamille Texte 20
LISTE_Famille C’est une boite à liste
ListeDesFamilles C’est une boite combo qui sera remplie par programmation4
4 Comme vous avez peut-être pu le remarquer, les combos seront remplies par programmation contrairement
au cas précédent où les combos « Type » et « Wilaya » ont été initialisées dans la zone « Contenu Initial » de
l’onglet « Général » de la fenêtre des propriétés. Ceci montre qu’il est possible de manipuler les combos, les
boites à liste et même les tables mémoire de manière statique ou dynamique (i-e, par programmation).
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 14
NuméroSousFamille Texte 2 CC
NomSousFamille Texte 20
LISTE_SousFamille C’est une boite à liste
ListeCodeSousFamille C’est une boite combo qui sera remplie par programmation
NuméroProduit Texte 3 CCC
NomProduit Texte 20
LISTE_Produits C’est une boite à liste
Pour mettre en œuvre les différents contrôles (directs et indirects) nous allons utiliser trois
fonctions appelées respectivement « ContrôlerFamille», « ContrôlerSousFamille » et
« ContrôlerProduit ».
� Assurez-vous que la fenêtre « Codification_ Hiérarchisée » soit bien visible sur
l’éditeur de fenêtre Windev.
� Cliquer sur l’option « procédures locales » dans le volet situé en bas de l’éditeur et
créer les trois procédures locales que vous dénommerez exactement comme il a été
précisé plus haut.
� Cliquer sur la procédure « ContrôlerFamille» et appuyer sur F2 puis taper le code
comme il se présente dans cette figure :
Expliquons le rôle de certaines fonctions du W-Langage que nous utilisons ici :
Fonction W-Langage Rôle Exemple (si nécessaire)
Position Délivre la position de début d’une
sous chaine de caractère dans une
Position("Rose de Sable", "de")
renverra le chiffre 6 qui signifie que la
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 15
chaine de caractères. sous chaine "de" commence à partir de
la position n° 6 de la chaine principale.
Lorsque la valeur retournée vaut 0,
cela signifie que la sous chaine en
question est introuvable.
Une fois la fonction « ContrôlerFamille » écrite, il ne reste plus qu’à programmer le
bouton « AjoutFamille » en utilisant cette fonction de contrôle.
� Cliquer sur le bouton « AjoutFamille » et appuyer sur la touche F2 puis taper le code
suivant comme le montre la figure :
� De la même manière, procéder à la programmation de la fonction
« ContrôlerSousFamille » dont le code est donné ci-dessous :
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 16
� Programmer le bouton « AjoutSousFamille » par le code suivant :
� Enfin, procéder à la programmation de la fonction « ContrôlerProduit » par le code
ci-dessous :
� Programmer le bouton « AjoutProduit » par le code suivant :
� Enregistrer et tester le projet puis le fermer.
MISE EN ŒUVRE DE TECHNIQUES DE CODIFICATION 9 mars 2010
Pratique des SI(s) 17
DDIISSCCUUSSSSIIOONN
Pour la première implémentation : l’avantage est la facilité à renseigner les champs
séparément d’où le risque d’erreurs pendant la saisie est réduit. L’inconvénient est que la
saisie nécessite plus de temps du fait qu’il faut remplir plusieurs champs pour reconstituer le
code.
Pour la seconde implémentation : la saisie est plus facile et rapide mais la mise en œuvre est
plus compliquée.
EExxeerrcciicceess ssuupppplléémmeennttaaiirreess àà ffaaiirree cchheezz vvoouuss ::
Exercice 1 : Codification Séquentielle
� Un cabinet de médecine générale a confectionné 24 jetons en carton qu’il a
l’habitude de distribuer aux patients selon leur ordre d’arrivée pour
consultation chez le médecin. A cause des problèmes survenant souvent
suite à des erreurs de l’infirmière ou à des mécontentements des patients,
le médecin responsable du cabinet vous demande de lui informatiser la
gestion des jetons.
� L’infirmière qui reçoit quotidiennement les patients aimerait bien avoir un
petit programme informatique qui lui permettra d’enregistrer les patients
qui arrivent. Elle voudrait pouvoir saisir les informations suivantes : « N°
du jeton », « Nom et Prénom » du patient ainsi que l’heure d’arrivée.
� Lors de la programmation, il faudra prendre en compte le fait que
lorsqu’un jeton est libéré, i-e, le patient est passé en consultation,
l’infirmière ne peut réaffecter ce jeton que lorsque les jetons de numéros
supérieur à lui sont tous libres et que ceux inférieurs à lui sont déjà
affectés. Autrement dit, avant de donner un jeton, elle regardera le logiciel
qui l’informera sur le prochain jeton à donner.
Exercice 2 : Codification Juxtaposée
� Réaliser un programme mettant en œuvre la codification de la vaisselle
BCR dont la solution a été traitée en S3 dans le module « I.SY.I ». Si vous
n’arrivez pas à retrouver la solution, vous pouvez la récupérer chez les
étudiants de la section A/LACAD qui sont actuellement en S4 de leur
formation.