MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)

Dimension: px
Commencer à balayer dès la page:

Download "MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE. (Pour l obtention du diplôme d analyste programmeur)"

Transcription

1 REPUBLIQUE DU SENEGAL Un peuple un but une foi MINISTERE DE L ENSEIGNEMENT TECHNIQUE ET DE LA FORMATION PROFESSIONNELLE DIRECTION DE LA FORMATION PROFESSIONNELLE (Pour l obtention du diplôme d analyste programmeur) Présenté par Monsieur Encadré par M. Moussa BA

2 2 Je dédie ce mémoire à mes parents Souleymane MBODJI et Aminata NDIANOR, à mes frères Mamadou Birane, Yaya, Oumar Soulé et à ma sœur Sourouro Belly.

3 3 Je voudrais tout d abord exprimer ma très profonde reconnaissance à mon père Souleymane MBODJI et à ma mère Aminata NDIANOR. Je ne saurais trouver les mots pour remercier mon beau frère Mouhamadou Lamine BALDE, mon ami Ibrahima DIAWARA, mon professeur de Mérise Lamine DIOP et mon oncle Abou NDIANOR pour la correction de ce mémoire. Je remercie vivement Docteur Kéba DIOP pour ses cours d algorithme qu il dispense à l I.F.P, qui ont illuminé davantage ma méthode de réflexion. Que M. Moussa BA professeur du langage Pascal à l I.F.P, qui a mis en pratique le logiciel MSAlgoPascal avec ses étudiants de la première année et ayant largement participé à son déboguage, trouve ici l expression de ma profonde gratitude. J exprime également ma reconnaissance à mes amis Vieux S. COLY et Adja N. M. DIENG pour l administration des questionnaires. Je remercie également tous mes professeurs de l I.F.P qui ont su me donner une formation de qualité. Pour finir, je ne citerai pas de noms, au risque d en omettre certains, pour exprimer mes sincères remerciements à tous ceux qui, de près ou de loin, ont contribué à la réalisation de MSAlgoPascal.

4 4 A.D.S.L C.I.F Go I.F.P M.C.D M.C.T M.L.D MHz Mo R.A.M R.G S.G.B.D Asymetric Digital Suscriber Line Contraintes d Intégrités Fonctionnelles Giga octets Institut de Formation Professionnelle Modèle Conceptuel des Données Modèle Conceptuel des Traitements Modèle Logique des Données Mega Hertz Mega octets Random Access Memory Règle de Gestion Système de Gestion de Base de Données

5 5 Pour faciliter la lecture des algorithmes, nous mettrons en paysage les pages où ils se situent.

6 6 Dédicaces Remerciements Glossaire Errata Plan Introduction... 8 I) Généralités Présentation générale de l I.F. P Organisation Organigramme II) Etude de l existant Présentation du secteur informatique Présentation du domaine d étude Critiques et problématique de l existant Proposition de solutions III) Conception générale Niveau conceptuel des données Définition de quelques concepts Dictionnaire des données Liste des mots-clés de l algorithme associés à leur désignation en langage Pascal Liste des mots réservés Règles de Gestion Modèle Conceptuel des Données Niveau logique des données Implémentation du modèle logique des données Présentation de l algorithme Définition de l algorithme... 25

7 Structure générale d un algorithme Les opérateurs Les types de données Les instructions Les sous programmes Exemples d erreurs Diagramme enchaînement des tâches entre l utilisateur et le logiciel Fiche descriptive des documents Fiche descriptive des tâches Analyse des tâches Fonction AnalyseDeclareVariable (donnée AlgoTexte) : Booléen Fonction DeclareVariable (donnée AlgoTexte) : Booléen Fonction AnalyseCondition (donnée AlgoTexte) : Booléen Fonction ControleExpression (donnée AlgoTexte) : Booléen Procédure Traduction (donnée AlgoTexte) IV) Présentation de MSAlgoPascal Configuration requise Installation de MSAlgoPascal Pas à pas sur MSAlgoPascal V) MSAlgoPascal comme support didactique Période d administration des questionnaires Questionnaire du mois d avril Questionnaire du mois de mai Questionnaire du mois de juin Appréciations Appréciations des étudiants Appréciation du professeur de Pascal Conclusion Bibliographie Annexes

8 8 A ujourd hui avec le développement des sciences et des technologies, nous sommes parvenus au monde de la programmation à la 4 ème génération. Nous sommes passés du binaire à l assembleur puis des langages procéduraux aux langages événementiels et objets. Derrière toutes ces innovations, aussi complexes qu elles soient, nous répétons toujours le même processus pour résoudre un problème en informatique. Cette résolution peut être schématisée comme suit : Problème + Données Analyse Algorithme Langage Compilation Résultat Exécution Edition des liens Figure 1. Cycle de vie de la résolution d un problème en informatique. Nous pouvons retenir que la résolution d un problème en informatique passe par la production d un texte appelé algorithme. Ce dernier décrit l ensemble des opérations élémentaires qui seront exécutées par un ordinateur via un langage de programmation pour obtenir la solution informatique. Ainsi la question qu on pourrait se poser serait de savoir pourquoi toutes ces générations? En effet, l essence de l informatique est de faciliter la tâche aux utilisateurs. On peut aisément comprendre pourquoi y a-t-il plus d informaticiens aujourd hui qu il y en avait vingt ans auparavant. Plus nous rendons les langages de programmation conviviaux, plus nous élargissons le monde de l informatique. A qui donc sont destinés tous ces langages de programmation? Sont-ils pour les néophytes? Les compétences des débutants se limitent à l analyse des problèmes et à l écriture des algorithmes (cf. figure 1 niveaux 2 et 3) ; raison pour laquelle il est difficile, voire même fastidieux pour les débutants de codifier, de corriger les syntaxes et de déboguer leurs programmes. La difficulté majeure que rencontrent le plus souvent les néophytes est d effectuer correctement le passage d un algorithme au code correspondant dans un langage de programmation donné en particulier le Pascal. Notre travail consiste à leur faciliter la tâche par la production d un logiciel qui effectue le passage automatique de l algorithme au langage Pascal. C est l objet de notre étude.

9 9 Ainsi, dans le cadre de notre mémoire, nous nous proposerons de présenter en premier lieu le secteur informatique de l Institut de Formation Professionnelle (I.F.P) en vue d en faire un diagnostic. Ensuite présenter les différents algorithmes et structures de données mis en place pour la conception d un logiciel traducteur d algorithme en langage Pascal et enfin montrer quelques résultats issus de l utilisation de ce produit par des étudiants de l I.F.P.

10 10

11 Présentation générale de l I.F.P Situé aux allées Papa Guèye FALL de DAKAR, l Institut de Formation Professionnelle (I.F.P-Sénégal) est un établissement d enseignement supérieur privé reconnu par le décret et agrée par l Etat du Sénégal. Il a été crée en 1984 par M. Sémi BOUKAROUM. C est le premier institut de formation privé du Sénégal. La vocation de l I.F.P-Sénégal est de cultiver l excellence et de fournir les meilleures prestations possibles dans l éducation. A ce titre, il a été primé en 2000 d une Etoile d Or Internationale par le Président de la République à cause de la qualité de son enseignement. L Institut de Formation Professionnelle dispose aujourd hui de plusieurs filières (sections) qui ne sont accessibles qu aux bacheliers, les cours se font aussi bien de jour comme de soir. Au total, pour l année scolaire , il compte 494 étudiants venant d horizons divers dont 355 en cour du jour et 139 pour le soir. Il présente régulièrement ses étudiants à l examen d état à savoir le Brevet de Technicien Supérieur (BTS). La formation s étale sur deux ans et est sanctionnée par un Diplôme de Technicien Supérieur. L I.F.P anime régulièrement des séminaires de formation. Nous distinguons aujourd hui les sections suivantes : Informatique de Gestion. Comptabilité. Commerce International. Marketing. Maintenance et Réseau Informatique. Bureautique. Les séminaires se font pour la plupart sur les modules de formation en : Microsoft Word pour le traitement de texte. Microsoft Excel pour les tableurs. Microsoft Power Point pour la présentation sur diaporama. Microsoft Access pour la conception de base de données. AutoCad pour la conception de plan. Microsoft Projet pour la gestion de projet.

12 Organisation Le Directeur des Etudes est le coordonnateur général de l institut. Il est à la base de la conception des emplois du temps des professeurs et du contrôle du bon déroulement des enseignements. Les surveillants ont pour rôle de veiller sur l ordre au sein de l établissement. Ils contrôlent les mensualités, l assiduité et la gestion des bulletins de notes des étudiants. Ils veillent aussi à la ponctualité des professeurs. Les étudiants sont appelés à s acquitter de leur mensualité au plus tard le 5 de chaque mois auprès du comptable. Au sein de chaque section, un professeur est désigné comme coordonnateur. 1.3 Organigramme Directeur Général Directeur des études Secrétaire à la direction Comptable Surveillants généraux Secrétariat Représentants commerciaux Session maintenance réseau Session marketing Session comptabilité Session bureautique Session commerce internationale Session informatique Planton Mécanographe Agents d entretien Figure 2. Organigramme de l Institut de Formation Professionnelle

13 Présentation du secteur informatique Il a pour vocation de former des informaticiens qui auront à utiliser et à réaliser des systèmes informatiques de très haut niveau. Hormis l enseignement de l informatique qui couvre 65% du temps de formation, les enseignements complémentaires dispensés sont : mathématiques et statistiques 20% du temps de formation. comptabilité et économie 15% du temps de formation. L enseignement vise à donner dans un premier temps une formation pratique solide appuyée sur les bases théoriques nécessaires permettant aux étudiants non seulement de concevoir et de réaliser des programmes de haute technicité, mais également de suivre avec aisance l évolution rapide de l informatique. La dernière année de formation étant entre autre consacrée à la rédaction d un mémoire de fin de cycle portant sur des cas réels de l école ou de l entreprise. Le secteur informatique de l Institut est dirigé par le Docteur-Ingénieur Kéba DIOP. Il est chargé de la supervision et du contrôle des modules dispensés au niveau de la section. Les modules enseignés sont les suivants : Modules Coefficient Première année Deuxième année Cours TD TP Cours TD TP Architecture et composants Système d exploitation Téléinformatique Langage Pascal Langage C Mérise Système de gestion de fichier Système de gestion de base de données Bureautique Mathématique Recherche opérationnelle Economie générale Technique quantitative de gestion Négociation informatique Technique d expression Anglais Total par colonne Total par année

14 Matériel disponible La section informatique dispose de quatre (4) salles machines pour les cours de travaux pratiques, de bureautique (Word, Excel et PowerPoint), des langages de programmation (Pascal et C++) et de Système de Gestion de Base de Données (MS Access). Chaque salle a en moyenne vingt (20) micro-ordinateurs. L une des salles est en même temps un cyber café disposant d un réseau local et d une connexion haut débit sur câble paire torsadée classique via ADSL (Asymetric Digital Suscriber Line). Figure 3. Structure du réseau Les micro-ordinateurs sont pour la plupart des Pentium II cadencés de 266 à 450 MHz ayant des disques durs variant de 1 à 4 Go avec une mémoire centrale de 32 à 64 Mo. Figure 4. Salle de travaux pratiques

15 15 Les micro-ordinateurs tournent pour la plupart du temps sur les systèmes d exploitation suivants : Windows 98, Windows 2000, Windows Millenium et Windows XP Corps professoral L institut dispose d un corps professoral hautement qualifié ayant une longue expérience professionnelle en entreprise. Au total nous avons vingt deux (22) professeurs : Un (1) Docteur-Ingénieur en informatique. Un (1) Docteur en Lettres. Un (1) Docteur en Anglais. Un (1) DEA en Math. Un (1) DEA en Informatique. Dix (10) Ingénieurs informaticiens. Un (1) Certifié en base de données. Un (1) Diplômé de troisième cycle professionnel en Administration Gestion. Un (1) Maîtrisard en math. Un (1) Diplômé d études supérieures en comptabilité. Trois (3) Analystes programmeur. 2.2 Présentation du domaine d étude Le module de langage Pascal englobe notre étude. Il se fait aussi bien en théorie qu en pratique. La maîtrise du langage Pascal est obligatoire pour la formation d un technicien supérieur en informatique et son coefficient est de cinq (5) à l examen final que ce soit pour le BTS ou le DTS. Les cours de travaux pratiques nécessitent obligatoirement un accès à la salle machine (voir fig. 4) pour deux à quatre heures d application en moyenne par semaine. 2.3 Critiques et problématique de l existant Un véritable problème de compréhension du langage Pascal est noté et constitue un handicap majeur pour les étudiants. Ce phénomène est dû entre autres aux faits suivants : Les ordinateurs ne disposent pas pour la plupart de compilateur Pascal. Le professeur est ainsi obligé d en trouver et de l installer ; ce qui constitue une réelle perte de temps.

16 16 Les programmes écrits par les étudiants sont souvent perdus car les ordinateurs ne sont pas protégés par des anti-virus ou le réseau n est pas du tout fonctionnel pour la protection des données. L institut ne dispose pas de bibliothèque permettant de faciliter la tâche aux étudiants dans le domaine de la recherche. Le professeur est obligé de les donner l ensemble des astuces et des raccourcis pour leur faciliter en ce qui est de la programmation en langage Pascal. Les étudiants rencontrent des difficultés pour faire un passage correct de l algorithme vers le langage Pascal parce qu ils ne maîtrisent pas l équivalence des mots algorithmiques en langage Pascal. Par conséquent, les cours d algorithmique qui sont dispensés sont très en avance par rapport au cours de Pascal. Les étudiants n ont pas la possibilité de traduire les algorithmes qu ils font en classe en langage Pascal. Il revient au professeur d expliquer et de traduire les algorithmes, de déboguer les programmes. Cette situation se répercute même en deuxième année lors de l apprentissage du langage C++. Le langage Pascal devrait être un support de base pour la maîtrise de ce dernier ; mais tel n est pas le cas. Est il possible d améliorer le système de travail en le substituant en partie par un système informatisé? Telle est la question à laquelle l étude que nous mènerons tentera d apporter des éléments de réponses. 2.4 Proposition de solutions Pour faciliter l apprentissage du langage Pascal au niveau des étudiants, nous nous proposons de produire un logiciel non seulement capable de vérifier les expressions parenthésées. de vérifier les clauses arborescentes. de vérifier la déclaration des variables, des types, des procédures et des fonctions. d envoyer des messages d erreur à l utilisateur si nécessaire pour lui signaler une erreur donnée au niveau de l algorithme. d avoir une base de données qui donne la désignation de chaque mot algorithmique en langage Pascal. d avoir une aide qui donne la signification de chaque mot algorithmique. d effectuer la traduction automatique de l algorithme vers le langage Pascal. d avoir la possibilité de sauvegarder et d éditer les algorithmes des utilisateurs.

17 17 mais aussi ayant un compilateur Borland Turbo Pascal pour exécuter les algorithmes traduits. un environnement convivial pour faciliter la saisie des algorithmes. une comptabilité sur l ensemble des versions de Windows sous 32 bits et ne nécessitant pas d espace mémoire importante pour son fonctionnement. Tels sont les objectifs que nous essayerons de mettre en œuvre par la suite.

18 18 Pour concevoir un logiciel traducteur d algorithme en langage Pascal, nous adopterons une approche dichotomique en distinguant les données des traitements Niveau conceptuel des données Définition de quelques concepts Le niveau conceptuel consiste à penser le système d information sans envisager aucun concept d organisation. Il consiste à se poser la question «Quoi?» («Quoi faire?» et avec quelles données?»). Le matériel utilisé et la manière dont le travail est fait ne sont pas pris en compte. Le dictionnaire des données Le dictionnaire des données contient toutes les données utilisées par le système qui sont obtenues à partir des interactions avec les utilisateurs. Règles de Gestion (R.G) Elles traduisent les objectifs visés et les contraintes acceptées spécifiées dans le cahier de charge. Ces règles de gestion sont liées aux données et traitements. Modèle Conceptuel des Données (M.C.D) C est la formulation des données mémorisées dans la base d information. Cette formulation est la suivante. Figure 5. Formulation du modèle conceptuel des données

19 19 Objet ou individu ou entité C est un élément matériel ou immatériel : ayant une existence propre. ayant un intérêt pour le domaine étudié et pour le concepteur. chaque occurrence doit être distinguable au sein de la famille. toutes les occurrences doivent être dotées de la même liste de propriétés. La relation C est une association : de deux ou plusieurs objets. qui n a pas d existence propre. dans laquelle chacune de ces occurrences est distinguable. toutes les occurrences sont caractérisées par une même liste de propriétés. Cardinalité Elle indique pour chaque couple objet-relation les nombres minimum et maximum d occurrences de la relation pouvant exister pour une occurrence de l objet. Contraintes d Intégrités Fonctionnelles (C.I.F) Une CIF sur plusieurs objets est une association au sein d une même relation qui exprime que l un de ces objets est totalement identifié par la connaissance des autres. L identifiant L identifiant est une propriété particulière de l objet choisi de telle manière qu à chaque valeur (occurrence), prise par cette propriété, corresponde une et une seule occurrence de cet objet Dictionnaire des données N Nom Signification 1 Aide 2 AlgoTexte 3 MotRéservé C est l aide associée au mot de l algorithme. Elle donne la signification et l utilité de ce mot. C est le texte de l algorithme qui est saisi à partir de l éditeur. C est un mot réservé uniquement au langage de programmation. Ce mot ne peut être déclaré comme Variable, Type, Constante, Procédure, Fonction, etc. Code mnémonique Type Taille Observation Aide AN 255 Efface l Ecran et positionne le curseur au coin supérieur gauche. AlgoTexte AN MotReserve A 15 TantQue, Algo, FinSi, Pour, Entier, While, Do, Until, IF etc.

20 20 4 NomAlgo 5 NomPascal Détermine tous les mots saisis dans un algorithme. C est la signification associée au mot de l algorithme en langage Pascal. NomAlgo AN 15 EffacerEcran NomPascal AN 15 ClrScr 6 NumeroAide C est le numéro de l aide NumAide N Unit C est la librairie (bibliothèque) qui est utilisée pour exécuter un mot en Pascal. Unit AN 8 CRT, GRAPH, PRINTER Légende : AN : Alpha numérique A : Alphabétique Liste des mots-clés de l algorithme associés à leurs significations en langage Pascal Chaque mot d un algorithme est associé au plus à un mot en Pascal. Ce principe nous permet de dresser le tableau ci-dessous. Algorithme Pascal Algorithme Pascal AFFICHER WRITE AFFICHERLG WRITELN AFFICHERLIGNE WRITELN AFFICHERTEXTXY OUTTEXTXY ALEATOIRE RANDOM ALGO PROGRAM ALGORITHME PROGRAM ALLERCL GOTOXY ALORS THEN ARRET HALT ASCII CHR ASSOCIER ASSIGN ATTENTE READLN AVEC WITH A_LA_LIGNE WRITELN BLANC WHITE BLEU BLUE BOOLÉEN BOOLEAN CARACTÈRE CHAR CHAÎNE STRING CONST CONST CONSTANTE CONST COS COS COULEURTEXT TEXTCOLOR CREER NEW CREERFICHIER REWRITE CVCHAÎNE STR DANS IN DE OF DÉBUT BEGIN DELAI DELAY DEPLACERVERS MOVETO DIV DIV DONNÉE ECRIRE WRITE ECRIRELIGNE WRITELN EFFACERECRAN CLRSCR EFFACERGRAPH CLEARDEVICE EFFACERMONITEUR CLRSCR ENSEMBLE SET ENTIER INTEGER ENTIERCOURT SHORTINT ENTIERLONG LONGINT ENTRÉE ENTREESORTIE IORESULT ES VAR ET AND EXPO EXP FAIRE DO FAUX FALSE FDF EOF FERMER CLOSE FERMERGRAPH CLAUSEGRAPH FF EOF FICHIER FILE FIN END FINALGO END. FINALGORITHME END. FINAVEC END FINFONCTION END FINLIGNE EOFLN FINPOUR END FINPROCÉDURE END FINPROGRAMME END.

21 21 FINSELON END END FINSON NOSOUND FINSTRUCTURE END FINTANTQUE END FONCTION FUNCTION GRAPHCOULEUR SETCOLOR INITALEATOIRE RANDOMIZE INITIALISEGRAPH INITGRAPH JAUNE YELLOW JUSQUA UNTIL LIGNE_SUIVANTE WRITELN LIRE READ LIRETOUCHE READKEY LOG LN LONGUEUR LENGTH MAJ UPCASE MAJUSCULE UPCASE MESSAGE WRITELN MOD MOD MODULO MOD MOT WORD NIL NIL NOIR BLACK NON NOT OCTET BYTE OU OR OUEXCLUSIF XOR OUVRIRECRITURE REWRITE OUVRIRLECTURE RESET PAS NOT PASSON NOSOUND POSTETE SEEK POUR FOR PROCÉDURE PROCÉDURE PROGRAMME PROGRAM RACINE SQRT RÉEL REAL RÉELCOMPATIBLE COMP RÉELDOUBLE DOUBLE RÉELETENDU EXTENDED RÉELSIMPLE SINGLE REPETER REPEAT RÉSULTAT VAR ROUGE RED SAISIR READLN SELON CASE SI IF SIN SIN SINON ELSE SON SOUND SORTIE VAR SSCHAÎNE COPY STRUCTURE RECORD STYLEPOLICE SETTEXTSTYLE TABLEAU ARRAY TAILLEFICH FILESIZE TAN TAN TANTQUE WHILE TEXTCOULEUR TEXTCOLOR TEXTE TEXT TOUCHEAPPUIE KEYPRESSED TRACELIGNE LINE TRACERCERCLE CIRCLE TRACERLIGNE LINE TYPE TYPE VAR VAR VARIABLE VAR VERT GREEN VRAI TRUE À TO Liste des mots réservés Les mots réservés constituent les points fondamentaux à partir desquels sont construits les programmes. Ils servent à spécifier et à structurer tous les concepts qui interviennent dans les programmes ou bien à désigner des entités de base. Pascal AND ARRAY BEGIN BOOLEAN BYTE CASE CHAR CONST CONST DIV DO DOWNTO ELSE END FILE FOR FUNCTION GOTO IF IN Algorithme ET TABLEAU DÉBUT BOOLÉEN OCTET SELON CARACTÈRE CONST CONSTANTE DIV FAIRE BAS SINON FIN FICHIER POUR FONCTION ALLERCL SI DANS

22 22 INTEGER LONGINT MOD NIL NOT OF OR PROCÉDURE PROGRAM PROGRAM REAL RECORD REPEAT SET SHORTINT STRING THEN TO TYPE UNTIL VAR VAR WHILE WITH WORD XOR ENTIER ENTIERLONG MOD NIL PAS DE OU PROCÉDURE ALGO PROGRAMME RÉEL STRUCTURE REPETER ENSEMBLE ENTIERCOURT CHAÎNE ALORS À TYPE JUSQUA VAR VARIABLE TANTQUE AVEC MOT OUEXCLUSIF Certains mots réservés ne sont pas spécifiés dans la liste ci-dessus car ils ne sont pas utilisés pour écrire d un algorithme Règles de Gestion (RG) RG1 : Un mot d un algorithme a une et une seule signification en Pascal. RG2 : Un mot en Pascal peut avoir un ou plusieurs synonymes en algorithmique. RG3 : Un mot en algorithme a une et une seule aide (signification). RG4 : Une variable ne peut jamais débuter par un chiffre (0 à 9). RG5 : Un mot réservé ne peut être déclaré comme identifiant. RG6 : Un mot réservé ne peut être ni supprimé ni modifié. RG7 : Une variable ne doit jamais être déclarée deux ou plusieurs fois (duplication). RG8 : Une expression parenthésée est dite correcte si elle est correctement parenthésée. RG9 : Un commentaire doit nécessairement être fermé. RG10 : Un commentaire peut s étendre sur plusieurs lignes. RG11 : Tout schéma conditionnel doit nécessairement être syntaxiquement correct avant la fin de l algorithme. RG12 : Toute erreur signalée doit être identifiée par son numéro de ligne. RG13 : Un mot non identifié ne doit pas être ignoré lors de la traduction. Tout mot doit être connu (déclaré au préalable). RG14 : Toute variable globale peut être utilisée du début à la fin de l algorithme. RG15 : Toute variable locale ne peut être utilisée que dans la procédure ou fonction où elle a été déclarée. RG16 : Toute condition «SI» a nécessairement un «ALORS» et un. RG17 : Toute condition «TANTQUE» a un et un seul «FAIRE» et n est fermée que par un «FINTANTQUE». RG18 : Toute boucle «REPETER» n est fermée que par un «JUSQUA». RG19 : Toute boucle «POUR» a un et un seul «FAIRE» et n est fermée que par un

23 23 «FINPOUR». RG20 : Un mot est séparé par les caractères suivants :, ; [ ] ^. : = + - * / \?! # ( ) RG21 : Une variable locale peut avoir le même nom que celle d une variable globale. RG22 : Le début et la fin d'un commentaire sont identifiés par le caractère spécial % RG23 : Pour afficher le caractère % (exemple : 100%), il faut le faire précéder de &. Exemple : Afficher «le pourcentage est de 100 &%». RG24 : Toute apostrophe trouvée dans une chaîne de caractères est dédoublée lors de la traduction. RG25 : Toute instruction d affichage et de saisie est parenthésée lors de la traduction. RG26 : L instruction OuvrirLecture (Nom_fichier) est délimitée lors de la traduction par les symboles (directives de compilation en Pascal) {$I-}... {$I+} Exemple : OuvrirLecture (Ficli) {$I-} Reset (Ficli) {$I+} RG27 : Le caractère " (guillemets) est systématiquement traduit par (apostrophe). RG28 : Toute ligne est terminée lors de la traduction par un «;» (point virgule) sauf si celleci se termine par l un des mots suivants : DO, THEN, ELSE, BEGIN, RECORD TYPE, CONST, VAR, REPEAT, OF, AND, OR, XOR Modèle Conceptuel des Données (MCD) A l aide du dictionnaire des données et des règles de gestion, nous pouvons ainsi élaborer le Modèle Conceptuel des Données (MCD). Figure 6. Modèle conceptuel des données

24 Niveau logique des données Le formalisme relationnel La traduction du schéma conceptuel validé, exprimé dans le formalisme individuel en un modèle logique de type relationnel, est entièrement automatique grâce aux règles suivantes : Les propriétés : Chaque propriété du MCD devient un attribut. Les objets : Chaque objet conceptuel devient une relation ou une table et son identifiant sa clé primaire. Les relations : Nous distinguons deux cas suivant le type de la relation : Les relations binaires de type père-fils (m, n)-(1,1) ou (m, n)-(0,1) avec m = 0 ou 1 La relation du formalisme individuel n apparaît plus en tant que tel dans le schéma relationnel, néanmoins les attributs qu elle contient seront conservés et exprimés par la migration de l identifiant de l objet père dans la table issue de la transformation de l objet fils. Les autres relations Pour toutes les autres relations, leurs transformations génèrent une table et la clé de la table sera composée de l ensemble des identifiants des objets de sa collection. Si la relation était porteuse de propriétés, celles-ci deviendraient des attributs de la table issue de la transformation de la relation conceptuelle Implémentation du modèle logique des données Nous utiliserons un système de gestion de base de données du type relationnel pour implémenter les données. Figure 7. Implémentation sur MS Access 2003

25 25 MLD Relationnel : BIBLIOTHEQUE (Unit) MotPASCAL (NomPASCAL, Unit) MotALGO (NomALGO, NomPASCAL, NumAide) AIDE (NumAide, Aide) Note : Les clés primaires sont mises en gras et soulignées, les clés secondaires sont doublement soulignées Présentation de l algorithme Définition de l algorithme «L algorithme est la description d un ensemble fini d actions et d informations élémentaires destinées à être exécutées par un ordinateur pour résoudre un problème. L algorithme est une suite d actions ordonnées sur un ensemble fini d objets. Il doit être défini sans ambiguïté, et son exécution doit s arrêter après un nombre fini d opérations élémentaires». DIOP, Kéba.- Algorithmique et Structures de données Tome 1.- Presse de l université de l UNIS page 8. L algorithme se construit simplement à partir de mots-clés et de conventions, «en français», en utilisant un certain nombre de principes directeurs. Un algorithme bien fait se doit d être optimisé et correctement conçu, de sorte que sa traduction en langage de programmation soit rapide, quasiment systématique et corresponde à un programme qui fonctionne de manière optimale. Algorithmes + Structures de données = Programmes Equation de Niklaus WIRTH. DELANNOY, Claude. - Programmer Windows avec Borland C Eyrolles page Structure générale d un algorithme Algo ou Algorithme ou Programme Nom_Algo Constante ou Const nom_constante = Valeur Type % définition de type de données % Variable ou Var % liste des variables % Procédure Nom_Procédure1 (donnée Nom_Var1 : Type1 ; Résultat Nom_Var2 : Type2) Début % Instruction % FinProcédure

26 26 Fonction Nom_Fonction (donnée Nom_var i : Type i) : Type de résultat Début % Instruction % Nom_Fonction = Valeur retour FinFonction % PROGRAMME PRINCIPAL % Début % Instruction % FinAlgo ou FinAlgorithme ou FinProgramme Donc la structure générale d un algorithme se présente comme suit : En-tête de l algorithme. Et un corps encore appelé bloc. Un algorithme commence toujours par les mots réservés suivants : Algo, Algorithme ou Programme suivi de son Nom. Son nom est un identificateur ; il permet de nommer l algorithme. Un bloc est toujours constitué d une partie déclarative et d une partie instruction. Il est subdivisé en quatre (04) parties : déclaration de constantes. déclaration de types. déclaration de variables. déclaration de procédures et de fonctions. Tous les Algorithmes doivent se terminer par : FinAlgo s ils sont débutés par Algo. FinProgramme s ils sont débutés par Programme. FinAlgorithme s ils sont débutés par Algorithme Les identificateurs Les identificateurs sont des mots qui servent à désigner, nommer, identifier les entités, les objets, les actions, les procédures et fonctions manipulés dans un programme. Les identificateurs ne se créent pas n importe comment. Ils doivent respecter les diagrammes syntaxiques encore appelés diagrammes de CONWAY : un identificateur débute toujours par une lettre ou un caractère de soulignement qui peut être suivi de lettres, de chiffres ou de caractères de soulignement de façon optionnelle.

27 27 Identificateur Lettre - Départ - Lettre Chiffre Arrivée Figure 8. Diagramme syntaxique d un identificateur NOUATIN, Théophile.- Les bases de la PROGRAMMATION avec C++.- ITSS SOFT page Les expressions Elles sont formées par une combinaison d opérateurs et d opérandes. Les opérandes peuvent être des constantes, variables, chaînes de caractères. Les opérateurs sont arithmétiques, logiques et booléens, de chaînes de caractères, d ensemblistes etc Les constantes C est un identificateur qui garde toujours la valeur qu on lui a attribué durant tout l algorithme. Sa valeur ne peut être modifiée. Pour déclarer une constante, il suffit de le faire précéder du mot réservé Const ou Constante, un identificateur suivi du signe égal et une expression Les variables Une variable est une zone mémoire où l on peut stocker des informations identifiées par l identificateur. Elle peut être modifiée dans le corps de l algorithme. Une variable est déclarée via l instruction Var ou Variable suivi de l identificateur et du type de la variable Les commentaires Dans l algorithme, pour éclaircir certains passages, l utilisateur (le programmeur) peut y «glisser» des commentaires. Les commentaires débutent et se terminent par le symbole spécial %. Exemple : Const Pi = % la constante Pi a toujours une valeur de dans tout l algorithme % Remarque : Pour afficher le symbole % au niveau de l algorithme en tant que caractère, nous devons nécessairement le faire précéder par le signe &.

28 Les opérateurs Les opérateurs arithmétiques Opérateur Signification + Addition - Soustraction * Multiplication / Division Div Division entière Mod ou Modulo Modulo (Reste de la division entière) Les opérateurs logiques et binaires Opérateur Pas Et Ou OuExclusif Signification Négation Et logique Ou logique Ou Exclusif logique Les opérandes associés à ces opérateurs peuvent être des entiers (on parle alors d opérateurs binaires) ou des booléens (on parle d opérateurs logiques) Les opérateurs de chaînes de caractères Opérateur Signification + Concaténation de deux chaînes de caractères. Pour concaténer deux chaînes de caractères, nous utilisons l opérateur «+». Le résultat est du type chaîne Les opérateurs relationnels Opérateur Signification = Egal <> Différent < Inférieur à > Supérieur à <= Inférieur ou égal à >= Supérieur ou égal à Ces opérateurs fournissent toujours un résultat booléen (Vrai ou Faux) Les opérateurs sur les pointeurs Opérateur ^ Signification Crée un pointeur sur une variable

29 29 «La notion fondamentale de pointeur est de nommer une entité (une variable) dont le contenu n est pas une donnée de l application, mais une adresse mémoire. A cette adresse est stockée la donnée. C est donc un accès direct.». BINZINGER, Thomas.- Borland DELPHI 6.- CampusPress page 258. Exemple : Type Pointeur = ^Enregistrement Enregistrement = Structure Nom : Chaîne [10] Prénom : Chaîne [15] Lien : Pointeur FinStructure Dans cet exemple, Pointeur est un pointeur sur le type Enregistrement. Les pointeurs permettent de créer des structures dynamiques comme les listes chaînées, les arbres, etc. Le mot réservé NIL (Not In List) est utilisé pour marquer la fin de la liste. A B C A B C D D E H K NIL F E F G J I Figure 9. Arbre binaire et structure chaînée (bidirectionnelle) formées grâce aux pointeurs Les éléments d un arbre se nomment nœuds et ceux d une liste cellules. Pour l arbre, le nœud «A» représente la tête, les nœuds «B», «C», «D», «H» et «K» sont intermédiaires et les nœuds «E», «G», «I», «J» et «F» se nomment feuilles. Pour la liste chaînée, les cellules «A» et «F» représentent vice versa la tête et la queue. Les autres cellules sont appelées cellules intermédiaires Les types de données Les entiers En algorithme, nous utiliserons ces cinq types de données. Type Domaine de définition EntierCourt [-128, 127]

30 30 Entier [-32768, ] EntierLong [ , ] Mot [0, 65535] Octet [0, 255] Les caractères Les types caractère correspondent à l ensemble des caractères de la table ASCII. Variable Touche : Caractère La variable Touche peut recevoir n importe quel caractère appartenant à la table ASCII. Nous pouvons par exemple écrire : Touche = «A» Touche = ASCII (65) Les booléens Les variables du type booléen ne peuvent recevoir que deux valeurs (Vrai ou Faux). NB : Généralement, Faux peut être codifié par 0 et Vrai par 1. Exemple : Variable FinFichier : Booléen (... ) Si FDF (Ficli) = Vrai Alors FinFichier = Vrai Les énumérés Le type énuméré permet de définir une donnée correspondant à un ensemble ordonné d éléments ou de valeurs. Chaque élément est défini au moyen d un identificateur. Exemple : Type Sexe = (Masculin, Féminin) Les intervalles Le type intervalle permet de définir des données en fournissant simplement la borne inférieure et la borne supérieure d un ensemble d entiers, de chaînes de caractères ou d éléments définis de type énuméré. Exemple : Type Chiffre = Les réels Le langage Pascal met à notre disposition cinq types de réels différents. En algorithmique, nous n utiliserons que le type réel standard. Type Domaine de définition Réel [2.9 x ]

31 Les chaînes de caractères Le type chaîne de caractères permet de définir des données correspondant à une suite de caractères (appelée chaîne de caractères) dont la longueur peut être spécifiée dans la définition. Si elle n est pas spécifiée, le système lui attribue une longueur égale à 255 caractères. Exemple : Type Expression = Chaîne [15] Variable Phrase : Chaîne ; Dans cet exemple, le type Expression a été spécifié comme étant un type chaîne pouvant contenir au maximum 15 caractères Les tableaux Le type tableau permet de définir des données composées d un nombre fixe d éléments ayant tous le même type. Syntaxe Générale : NomDuTableau : Tableau [IndiceMin.. IndiceMax] de TypeElements Remarque : l indice minimale (IndiceMin) doit toujours être positif (> 0) Définition d un tableau à 1 dimension TYPE VAR NomNouveauType = Tableau [indicemin..indicemax] de TypeElement VariableTableau : NomNouveauType Exemples : Tab1 : Tableau [1...10] de Entier Tab2 : Tableau [1...3,1...8] de Réel Tab3 : Tableau [1...5,1...5] de Caractère Dans cet exemple, Tab1 est un vecteur de 1 à 10 éléments de type entier. Tab2 est une matrice (tableau à 2 dimensions) contenant des réels et Tab3 contient des caractères. Pour se positionner à une cellule du tableau, il suffit d indiquer le numéro de cellule. Ce numéro commence par l indice 1. Exemple : Tab1 [1] = 3 Tab2 [1,1] = Tab3 [5,1] = «A» Représentation physique d un tableau de caractères Indice sur le tableau M B O D J S Y S T E M

32 32 Tab [1] = «M» Tab [11] = «M» Tab [3] = «O» Tab [25] = Erreur! Dépassement de capacité NB : Si l indice d un tableau dépasse la borne maximale de sa déclaration, un message d erreur est envoyé à l utilisateur par le compilateur pour lui signifier que cette zone n appartient pas au tableau. Ce phénomène peut provoquer un blocage de l ordinateur. Néanmoins, il faut retenir que tous les langages de programmation (tous les compilateurs) ne le contrôlent pas : c est le cas du langage C. Donc le programmeur doit être très attentif dans la manipulation des indices d un tableau Les enregistrements Le type enregistrement permet de définir des données composées d un nombre fixe ou variable d éléments pouvant être de types différents. Chaque élément d un enregistrement est appelé un CHAMP. Exemple : Type SClient = Structure Nom : Chaîne [15] Prénom : Chaîne [20] Adresse : Chaîne [45] FinSturcture A partir de ce type, nous pouvons définir une variable enregistrement comme suit : Variable Client : SClient Pour accéder à une valeur d un champ, il suffit de faire précéder le nom de ce champ par l identificateur du type enregistrement suivi d un point. Exemple : Client.Nom = «MBODJI» Client.Prénom = «Oumar Soulé» Client.Adresse = «Golf Nord 2 Hamo3 S/33» Les ensembles Le type ensemble permet de définir des données représentant une collection d objets de même type (entier, booléen, caractère, énuméré ou intervalle). Nous pouvons spécifier un ensemble vide en utilisant []. Exemple de déclaration. Var Chiffre : Ensemble De 0..9 Lettre : Ensemble De «A».. «Z» L ensemble Lettre peut recevoir les valeurs suivantes : Lettre = [«I», «U», «O», «A», «E», «Y»]

33 Les fichiers Les fichiers représentent une collection de données de même type. Celles-ci peuvent être par exemple des enregistrements (structures), des entiers, des réels, etc. Les informations sont généralement stockées sur disque. On distingue 3 types de fichiers : 1. Les fichiers typés qui sont généralement des fichiers d enregistrement. Pour déclarer un fichier de ce type, il suffit de spécifier les mots réservés FICHIER DE suivis du type d enregistrement. Exemple : Type SClient = Structure Nom : Chaîne [15] Prénom : Chaîne [20] FinSturcture FichClient = Fichier de SClient Le fichier est une collection d enregistrements de type SClient. 2. Les fichiers non typés qui, déclarés simplement en utilisant le mot réservé FICHIER, se distinguent par un accès direct aux informations stockées sur le disque. Exemple : Type Fich = FICHIER 3. Les fichiers Texte permettent de stocker des informations de taille variable. Elles sont séparées les unes des autres par des identificateurs de fin de ligne (caractère retour chariot). Pour déclarer un fichier texte, il suffit de spécifier le mot réservé TEXTE. Exemple : FichText : Fichier de TEXTE Le fichier FichText est un fichier de type Texte Les pointeurs Le type pointeur permet de définir une variable dont la valeur est l adresse en mémoire d une autre variable. Pour déclarer un type pointeur, il suffit d utiliser le symbole ^ suivi du type de la variable pointée. Dans l exemple suivant, le type pointeur permet de créer des variables dont le contenu correspond à une adresse pointant sur un enregistrement ARTICLE. Exemple : Type Pointeur = ^Article Article = Structure Information : Entier Precedent : Pointeur Suivant : Pointeur FinStructure Variable Point : Pointeur La variable Point contiendra une adresse en mémoire pointant sur un enregistrement de type Article. Dans cet enregistrement, les champs Precedent et Suivant sont également du type

34 34 Pointeur. Leurs contenus respectifs seront également une adresse d un enregistrement de type Article. Une telle définition de structure permet de créer des listes d éléments comme ci-dessous. Adresse précédente Information Adresse suivante Figure 10. Définition d une structure chaînée Les instructions Introduction Un algorithme se compose d un certain nombre d instructions. Ces dernières sont classées par catégories. Nous étudierons tout d abord les instructions standard traitant l information : l assignation, la lecture et l écriture. Ensuite, celles définissant l ordre d exécution d un programme : la séquence, le choix et la boucle. Enfin nous terminerons par les sous programmes (fonctions et procédures) L assignation L assignation est une instruction qui permet d attribuer une valeur à une variable ou à un identificateur de fonction afin d en renvoyer le résultat. Cette valeur retournée, doit être du même type que la variable. Syntaxe : ou <Variable> / <identificateur de fonction> = (Expression) <variable> / <identificateur de fonction> := (Expression) Exemple : A := A+1 ; ou A = A+1 Delta = B*B 4 *A*C Les instructions d Entrée/Sortie Les instructions d entrée L instruction d entrée Saisir. Elle offre à l utilisateur la possibilité d entrer plusieurs valeurs (données) dans des variables. La syntaxe générale est la suivante : SAISIR (<Nom_Var1>, <Nom_Var2>,... <Nom_VarN>) Les instructions de sortie Nous avons deux types d instructions de sortie : Afficher et AfficherLigne.

35 35 L instruction Afficher, affiche les données et reste sur la même ligne ; tandis que AfficherLigne place le curseur après l affichage à la ligne suivante (retour chariot). Syntaxe générale : Afficher / AfficherLigne (<Nom_Var1>,..., <Nom_Var2>) Les instructions conditionnelles Les instructions conditionnelles permettent de modifier l ordre de la séquence d un algorithme. Dans une séquence, les instructions sont exécutées les unes à la suite des autres sans interruption. Nous disposons de deux instructions conditionnelles : SI... ALORS et SELON... DE L instruction SI Alors (structure alternative) La structure alternative correspond à un choix entre deux possibilités. Suivant la valeur issue de la condition spécifiée dans l instruction, l ordinateur exécute une suite d instructions A ou une suite d instructions B. En aucun cas, l ordinateur n exécute à la fois les instructions A et les instructions B. Syntaxe générale : SI <Condition> ALORS SI Moyenne < 10 ALORS Instruction Afficher «Redouble» Ou Ou SI <Condition> ALORS SI Moyenne < 10 ALORS Instruction A Afficher «Redouble» SINON SINON Instruction B Afficher «Passe» Exemple : <Condition> est une expression logique. Le choix multiple L instruction alternative ne nous offre que deux choix possibles dépendant de la valeur d une condition (valeur vraie ou fausse). En algorithme, nous disposons aussi d une instruction permettant d effectuer un choix entre plusieurs décisions. L instruction SELON... DE Syntaxe Générale SELON <Expression> DE Cas <Constante 1>, <Constante 2>, <Constante 3> : Instruction A Cas <Constante 4> Début Instruction 1 Instruction N

36 36 FIN CASSINON Instruction B FINSELON <Instruction> peut être, soit une instruction, soit un bloc d instructions. Les comparaisons sont effectuées au fur et à mesure en commençant par la première ; dès qu une comparaison s avère vraie, les instructions correspondantes sont exécutées et le programme se branche à l instruction qui suit FINSELON (les autres comparaisons ne sont donc pas effectuées) ; si aucune comparaison ne s avère vraie, les instructions correspondant à CASSINON sont effectuées si la clause CASSINON existe Les instructions répétitives Dans un programme plusieurs instructions peuvent se répéter, il serait alors plus intéressant de les écrire une seule fois et de les exécuter plusieurs fois. Cette action est ce que l on appelle BOUCLE. En algorithmique, nous possédons trois Boucles. La boucle REPETER JUSQUA Cette boucle permet d exécuter les instructions comprises entre REPETER et JUSQUA jusqu'à ce que la condition du JUSQUA soit vérifiée. Syntaxe générale : REPETER Instruction 1 Instruction 2 Instruction N JUSQUA <Condition> Les instructions allant de 1 à N vont s exécuter jusqu à ce que la condition <Condition> soit vérifiée. Mais il faut noter que cette boucle exécute au moins une fois ces instructions avant de tester la condition. La boucle TANTQUE C est la boucle la plus utilisée en informatique. Son fonctionnement est simple. Elle exécute toutes les instructions comprises entre les mots réservés TANTQUE et FINTANTQUE tant que la condition de départ reste vérifiée. Syntaxe générale : TANTQUE <Condition> FAIRE Action 1... Action N FINTANTQUE

37 37 L ordinateur commence par vérifier si la condition est vraie. Si c est le cas, il exécute les instructions de la boucle. Si ce n est pas le cas les instructions suivant le FINTANTQUE sont exécutées. NB : Pour éviter une boucle infinie, il faut modifier la variable du test à l intérieur de la boucle. La boucle POUR Cette boucle permet d exécuter un certain nombre de fois une suite d instructions. Syntaxe générale : POUR <Nom_Var> = <Borne minimale> à <Borne maximale> FAIRE <Action> FINPOUR L ordinateur exécute l instruction <Action> Borne maximale Borne minimale +1 fois Les sous programmes Définition Un sous programme est rédigé de façon telle que son exécution puisse être commandée par un programme. Celui-ci est appelé programme appelant. Il fournit des données au sous programme et récupère les résultats de ce dernier. On distingue deux types de sous programmes que sont les procédures et les fonctions. La différence est qu une fonction renvoie une valeur alors qu une procédure ne renvoie pas de valeur Les procédures Les procédures sont composées d un en-tête de procédure et d un bloc d instructions : c est la partie déclarative et le corps de la procédure. Syntaxe générale Procédure <identificateur> (<liste de paramètres>) Début Instruction(s) FinProcédure L appel d une procédure se fait au sein du programme principal avec une instruction composée de l identificateur de la procédure suivi des paramètres effectifs. Les paramètres permettent à un programme appelant de transmettre à un sous programme des données lors de l appel de ce dernier.

38 38 Un sous-programme est rédigé de façon à pouvoir recevoir des données du programme appelant ; cela est possible grâce aux paramètres. Ils sont appelés formels lors de la définition et effectifs lors de l appel. Il existe deux types de paramètres : les paramètres transmis par valeur et les paramètres transmis par adresse Les fonctions Les fonctions sont constituées d un en-tête de fonction et d un bloc d instructions : partie déclaration et corps de la fonction. Les fonctions effectuent certaines opérations avant de renvoyer un résultat ; elles sont donc appelées dans une expression. La syntaxe générale d une fonction est la suivante : Fonction <identificateur> (<liste de paramètres>) : <Type résultat> Début Instruction(s) <Identificateur> = Valeur retour FinFonction 3.3 Exemples d erreurs Il s agit de traduire mot à mot tous les mots trouvés en Pascal. Mais avant cela, le système que nous devons mettre en place doit être en mesure de contrôler l exactitude de la syntaxe de l algorithme général. Ainsi plusieurs algorithmes seront indispensables pour analyser la syntaxe avant la traduction. Les exemples ci-dessous illustrent bien quelques cas d erreurs qui pourront se glisser lors de l écriture d un algorithme. Exemple 1 TANTQUE a < b Instruction FINTANTQUE A la ligne 1, la boucle TANTQUE manque un FAIRE. Donc nous devons être en mesure de le signaler à l utilisateur par un message pour la correction. Exemple 2 SI a < b ALORS SI c > f ALORS POUR i = 1 à n FAIRE Instruction A la ligne 3, la boucle POUR n a pas été fermée. Par hypothèse toute structure de clauses (boucles ou conditions) telles que A = { a 1, a 2, a 3,, a i,, a n } est dite correcte si et seulement si toutes les a i appartenant à A sont correctement structurées.

39 39 Exemple 3 SI a < b ALORS SI c > f ALORS POUR i = 1 à n FAIRE Instruction FINPOUR SINON Instruction SINON Instruction La structure de choix SI ne peut pas avoir deux SINON. Exemple 4 SI a < b ALORS SI c > f ALORS POUR i = 1 à n FAIRE Instruction FINPOUR Dans cet exemple, la boucle POUR doit obligatoirement être fermée par FINPOUR au lieu de. Exemple 5 Variable Aire, B, C : Entier F, Aire : Réel L exemple 5 montre une erreur de déclaration de la variable Aire. Cette dernière a été déclarée deux fois. On dit qu elle a été dupliquée. Cas d une autre erreur de duplication entre une variable globale et un nom de fonction. Variable Aire, Lg, Larg F : Entier : Réel Fonction Aire (longueur, largeur : entier) : Réel Exemple 6 : 1. Afficher «Solution double 2. Afficher («X1 =», (-b + racine (delta) /2*a) 3. Afficher (Tab [ max (n, m] ) Dans le cas 1, les guillemets ne sont pas fermés. Dans le cas suivant, il manque une parenthèse fermante.

40 40 Et dans le dernier cas, bien qu il y ait autant de parenthèses et de crochets ouvrants que fermants, l expression n est pas correctement parenthésée. Ces six (6) exemples illustrent bien des cas d erreurs qui arrivent souvent dans l écriture d un algorithme.

41 41

42 Diagramme enchaînement des tâches entre l utilisateur et le logiciel Avant de traduire l algorithme en langage Pascal, nous devons élaborer plusieurs algorithmes (procédures et fonctions) qui se succéderont les uns après les autres jusqu'à la fin des contrôles de validité de l algorithme général. Si l un de ces algorithmes signale une erreur, un message d erreur est automatiquement envoyé à l utilisateur et la succession de ces algorithmes est arrêtée. Donc la traduction n est effectuée que si et seulement si l algorithme saisi par l utilisateur respecte la structure générale d un algorithme. Le diagramme ci-dessous illustre le dialogue qui est effectué entre le système (logiciel) et l utilisateur lors de la traduction de l algorithme en langage Pascal.

43 43 D1 T1 AnalyseCondition D3 D2 T2 AnalyseDeclarationVariable D5 D4 AnalyseVariable T3 D7 D6 T4 AnalyseExpression D9 D8

44 44 T5 Traduction D10 T6 CorrectionTraduction D11 LEGENDE Tâche (procédure ou fonction) Document (texte) ou message (boîte de dialogue) envoyé à l utilisateur Base de données

45 Fiche descriptive des documents N ROLE ET LIBELLE TACHES ENTREE SORTIE D1 AlgoTexte : C est le texte saisi par l utilisateur. C est l algorithme écrit grâce à un éditeur de texte. T1 - D2 MessageErreur1 : C est le message d erreur envoyé à l utilisateur pour lui signifier qu il y a une erreur au niveau des clauses imbriquées. - T2 D3 AlgoTexte1 : C est l algorithme vérifié. Nous dirons qu il est correctement structuré. T2 T1 D4 MessageErreur2 : C est le message d erreur envoyé à l utilisateur pour lui signifier qu il y a une erreur de déclaration de variables. - T2 D5 AlgoTexte2 : C est l algorithme vérifié. Nous dirons que tous ses identificateurs sont correctement déclarés. T3 T2 D6 MessageErreur3 : C est le message d erreur envoyé à l utilisateur pour lui signifier qu il y a un mot non identifié (non déclaré) au niveau de l algorithme. - T3 3.6 Fiche descriptive des tâches N Nom et Description 1 AnalyseCondition : Cette fonction contrôle toutes les structures arborescentes (clauses) de l algorithme. AnalyseDeclarationVariable : Cette fonction analyse toutes les déclarations de 2 variables, de types, de constantes, de procédures et de fonctions. AnalyseVariable : Cette fonction analyse tous les mots rencontrés 3 dans l algorithme. Tout mot doit nécessairement être identifié dans le dictionnaire ou dans le vecteur des variables (VectVar). Documents Entrée Sortie D1 D2, D3 D3 D4, D5 D5 D6, D7

46 ControleExpression : Cette fonction analyse toutes les expressions écrites si elles sont correctement parenthésées. Traduction : Cette procédure traduit tous les mots rencontrés dans l algorithme en utilisant le dictionnaire comme base de données de traduction. CorrectionTraduction : Cette procédure corrige l algorithme traduit. Elle y met quelques ponctuations ainsi que les bibliothèques utilisées dans le fichier final en Pascal. D7 Dictionnaire, D9 D10 D8, D9 D10 D Analyse des tâches (procédures et fonctions) Nous utiliserons quelques primitives intermédiaires pour la gestion des tâches. Fonction SSCH (Ligne : Chaîne ; Posit, N : Entier) : Chaîne Cette fonction extrait à partir de la position Posit d une chaîne Ligne donnée N caractères. FONCTION SSCH (Ligne : Chaîne ; Posit, N : Entier) : Chaîne VARIABLE I : Entier DÉBUT SSCH = "" %initialisation SSCH à vide % SI Posit <= Longueur (Ligne) ALORS SI Posit + N > Longueur (Ligne) ALORS POUR i = Posit à Longueur (Ligne) FAIRE SSCH = SSCH + Ligne [i] FINPOUR SINON POUR i = Posit à (Posit + N) FAIRE SSCH = SSCH + Ligne [i] FINPOUR FINPOUR FINFONCTION Fonctions RechercheMot (Ligne : Chaîne ; K : Entier) : Chaîne Cette fonction renvoie le premier mot rencontré à partir de la K ème position de la ligne d entrée supposée existante. Nous signalons au passage qu un mot est séparé par les caractères suivants : " " % : = ( )] [ ; + - * / < > \ ' "" ^ Fonction RecherCheMot (donnée Ligne Chaîne, Résultat Posit : Entier) : Chaîne % Cette fonction extrait tous les mots susceptibles d'être traduit d'une ligne. % Variable I : Entier % indice de parcours % Car : Caractère DÉBUT

47 47 Car = "" i = Posit RecherCheMot = "" SI i <= Longueur (Ligne) ET Longueur (Ligne) > 0 ALORS Car = SSCH (Chaîne, i, 1) SI Car Dans [" ", "%", ":", =", (", )", "]", "[", ";", ",", ".", "+", -", "*", "/", "<", >", "\", "'", """", "^"] ALORS RecherCheMot = SSCH (Ligne, i, 1) i = i + 1 SINON TANTQUE (i <= Longueur (Ligne)) ET Car Pas (Dans [" ", "%", ":", =", (", )", "]", "[", ";", ",", ".", "+", -", "*", "/", "<", >", "\", "'", """", "^"]) FAIRE RecherCheMot = RecherCheMot + SSCH (Ligne, i, 1) i = i + 1 SI i <= Longueur (Chaîne) ALORS Car = SSCH (Ligne, i, 1) FINTANTQUE Posit = i FINFONCTION Fonction AnalyseDeclareVariable (donnée AlgoTexte) : Booléen Cette fonction vérifie la portée et la validité de l ensemble des identificateurs déclarés au niveau de l algorithme. Elle fera la distinction entre variable locale et variable globale, de même la différence entre un Type et une Variable. Des messages d erreurs seront envoyés à l utilisateur pour lui signifier qu à la ligne «L», l erreur «E» a été identifiée. La fonction AnalyseDeclareVariable a comme valeur retour : Vrai si les identificateurs sont correctement déclarés. Faux au cas contraire. Nous utiliserons un vecteur (un tableau à une dimension) qu on appellera VectVar et qui portera en lui tous les identificateurs (variables, types, constantes, nom procédure, nom fonction) de l algorithme Structure du vecteur VectVar Type StructDeclareVar = Structure NomVariable : Chaîne [30] Degré : Entier Nature : Chaîne [15] NumeroLigne : Entier LigneActuelle : Chaîne [255] FinStructure NomVariable Degré Nature NumeroLigne LigneActuelle

48 Description des champs de la structure StructDeclareVar NomVariable : il mémorise le nom de l identificateur trouvé. Degré : c est la profondeur de l identificateur par rapport à l algorithme. Celle-ci nous permettra de faire la distinction entre variables locales et variables globales. Nature : identifie la nature de l identificateur. Il en existe deux : nature «variable» et nature «type». LigneActuelle : elle mémorise la ligne où se trouve l identificateur Champs d action de la fonction AnalyseDeclareVariable Le schéma ci-dessous nous montre les endroits qui sont «intéressés» par la fonction. C est ce que nous appelons champ d action. Algo MonEssai Const Max = 100 Type Enregistrement = Structure Nom : Chaîne [10] Prénom : Chaîne [15] FinStructure TabEnreg : Tableau [1..Max] de Enregistrement Variable Tab : TabEnreg I, Choix : Entier Champs d action Procédure SaisirEnreg (T : TabEnreg, sortie n) Début Si n < Max Alors n = n + 1 Afficher «Nom=» ; Saisir (Tab[n].Nom) Afficher «Prénom=» ; Saisir (Tab[n].Prénom) Sinon AfficherLigne «Pas d espace» FinSi FinProcédure Procédure AfficherEnreg (T : TabEnreg) Variable i : Entier Début Pour i = 1 à Max Faire Afficher «Nom=» ; Saisir (Tab[i].Nom) Afficher «Prénom=» ; Saisir (Tab[i].Prénom) FinPour FinProcédure Début i = 0 Repeter AfficherLigne «1 : Ajout» AfficherLigne «2 : Affichage» AfficherLigne «3 : Quitter» Afficher «Choix =»

49 49 Saisir (choix) Si Choix = 1 Alors SaisirEnreg (Tab, i) FinSi Si Choix = 2 Alors AfficherEnreg (Tab) FinSi Jusqua Choix = 3 FinAlgo Seuls les mots mis en évidence seront concernés dans cette fonction Analyse de la fonction AnalyseDeclareVariable L opération d ajout dans le vecteur VectVar se fera dans les cas suivants : A la rencontre des mots réservés Algo, Programme, Algorithme, Constante, Const, Procédure et Fonction. A la rencontre du mot réservé Type. Dans ce cas, l opération d ajout dans le vecteur VectVar se fera de la manière suivante : A la rencontre du premier mot suivi du Type L opération d ajout dans le vecteur s arrêtera à la rencontre de «;», de la fin de la ligne ou à la rencontre de DÉBUT. NB : Ne pas ajouter tout mot trouvé après les signes «=» et «:» car ils déclencheront la recherche de l identificateur dans le vecteur et dans le dictionnaire. Cela veut dire que nous avons simplement rencontré un type qui est normalement défini au préalable. Exemple Const Max1 = 50 Max2 = 100 Max = Max1 + Max2 Recherche de Max1 et Max2 Dans cet exemple, Max1 et Max2 se situent respectivement après le signe «=». La recherche des identifiants (Max1 et Max2) au niveau de VectVar sera fructueuse car ces derniers y ont été ajoutés depuis leurs rencontres au niveau de la ligne 1 et 2. NB : Les nombres (50 et 100) ne font pas l objet de cette recherche. Exemple : Type Etudiant = Structure ; Nom : Chaîne [10] ; Prénom : Chaîne [15] ; Matricule : Chaîne [25] ; FinStructure Les mots doubles soulignés seront directement ajoutés au niveau du vecteur VectVar. Les mots surlignés (gris) déclencheront la recherche de ces derniers aussi bien dans le dictionnaire (Base de données) qu au niveau du vecteur VectVar. Si cette opération de recherche est infructueuse c'est-à-dire que le mot ne se trouvant pas dans le dictionnaire et dans le vecteur, alors nous dirons que le mot rencontré n a pas été déclaré et un message d erreur est envoyé à l utilisateur.

50 50 Par ailleurs les mots soulignés sous-entendent qu ils ne doivent pas au préalable exister au niveau du vecteur VectVar sinon il y a une duplication au niveau de l identificateur et un message d erreur est envoyé à l utilisateur. Exemple de message d erreur : Message («Erreur à la ligne», NumeroLigne, «Duplication de l identificateur», NomVariable) Chaque identifiant rencontré (type, constante, nom procédure, nom fonction) est ajouté au niveau du vecteur avec les éléments (informations) suivants : Numéro de la ligne où elle se situe. Nature : Type ou Variable. Degré : tout identificateur est ajouté au niveau du vecteur en fonction de son niveau de profondeur. Ce dernier nous permet de faire la distinction entre identificateur local et identificateur global. Le degré est incrémenté à la rencontre des mots réservés Algo, Procédure, Fonction, FinProcédure et FinFonction. Exemple : Algo MonEssai Const Max = 100 Type Etudiant = Structure Matricule : Chaîne [5] Nom : Chaîne [10] Prénom : Chaîne [15] FinStructure TFichEtudiant = Fichier de Etudiant TEnreg = Etudiant Variable Fich : TFichEtudiant Enreg : TEnreg Début... FinAlgo Déroulement de l algorithme Initialisons au départ Degré à 0 (zéro) : Degré = 0 Nous rencontrons le premier mot réservé Algo, nous incrémentons alors Degré de 1 (Degré = Degré + 1) donc tout ce qui va suivre sera ajouté dans le vecteur VectVar avec un Degré qui est égal à 1 sauf si nous rencontrons Procédure, Fonction, FinProcédure et FinFonction. Et par convention tout mot (identifiant) ajouté avec un Degré = 1 est un identifiant global et ceux qui sont ajoutés avec un Degré > 1 sont locaux. Le mot suivant est MonEssai, ajoutons ce dernier à VectVar.

51 51 NB : il faut noter qu il est impossible d ajouter deux identifiants de même nom avec le même Degré (niveau de profondeur) sinon il y a duplication d identifiant. Voici l état de VectVar : VectVar (1) = MonEssai 1 VARIABLE 1 Algo MonEssai NomVariable Degré Nature NumeroLigne LigneActuelle Fin de la ligne, nous passons à la ligne suivante et nous rencontrons à nouveau un autre mot réservé déclencheur d empilement (Constante). Le mot suivant est Max, on réitère l opération c'est-à-dire nous cherchons d abord ce dernier au niveau du dictionnaire ensuite dans le vecteur VectVar. Ce dernier ne doit en aucun cas y figurer sinon il y a duplication. Passons au mot suivant, nous rencontrons «=», un signe déclencheur de recherche de «Type» dans le vecteur VectVar. Le mot suivant est 100, la recherche n est pas effectuée car il est numérique. Fin de la ligne, passons à la ligne suivante (ligne 3), nous rencontrons le mot réservé Type qui déclenche l opération d ajout au niveau du vecteur si le mot se situe avant le signe «=» et de recherche si le mot se situe après ce signe. Le mot suivant est Etudiant, avant de l ajouter dans le vecteur VectVar, nous ferons d abord une recherche dans le dictionnaire puis dans le vecteur avec un Degré = 1 pour être sûr de son inexistence dans ces derniers. S il n y figure pas, nous l empilons (ajoutons) avec son «Degré», sa «nature», son «numeroligne» ainsi que sa «ligneactuelle». Ce procédé continue jusqu à ce que nous rencontrions une erreur ou que nous arrivons à la fin de l algorithme. Exemple 2 : Algo MonEssai Variable X, Y : Entier Fonction Maximum (X, Y : Entier) : Entier Début Si X > Y Alors Maximum = X Sinon Maximum = Y FinSi FinFonction Début EffacerEcran Afficher «Valeur de x et y» Saisir (x, y) Afficher («le plus grand des 2 nombres est», maximum (x, y)) FinAlgo

52 52 En exécutant notre algorithme, l état du vecteur sera le suivant : Position sur le Vecteur Etat du Vecteur MonEssai 1 Variable 1 Algo MonEssai X 1 Variable 3 X, Y : Entier Y 1 Variable 3 X, Y : Entier Maximum 1 Variable 4 Fonction Maximum (X, Y : Entier) : Entier X 2 Variable 4 Fonction Maximum (X, Y : Entier) : Entier Y 2 Variable 4 Fonction Maximum (X, Y : Entier) : Entier NomVariable Degré Nature NumeroLigne LigneActuelle Nous remarquons que grâce au niveau de profondeur, nous avons quatre identifiants de Degré = 1 et deux de Degré = 2. Or par convention, nous disons qu un identificateur est global si son Degré est 1 et au cas contraire c est un identificateur local. Donc à la position 2 et 3, les identificateurs X et Y sont des variables globales et la position 4, maximum est global malgré la rencontre du mot réservé Fonction qui incrémente le Degré. Maximum est empilé exceptionnellement avec le un Degré égal à 1 pour signifier qu il est global. Nous utiliserons trois primitives pour écriture l algorithme : Fonction EmpilerVariable (Nom_identifiant : chaîne ; Degré, NumLigne : entier ; TypeIdent : chaîne, Ligne : chaîne) : Booléen qui empile Nom_identifiant au niveau du vecteur VectVar avec son degré, son numéro ligne, son type (TypeIdent) et sa ligne d instruction. Elle renvoie la valeur Faux si l identifiant existe (avec le même degré de profondeur) dans le vecteur et Vrai dans le cas contraire. Fonction DepilerVariable (Nom_Var, Degré) : Booléen qui vérifie si Nom_var de profondeur Degré existe au niveau de VectVar. Elle renvoie la valeur Vrai si Nom_var y existe et Faux dans le cas contraire. Fonction RechercheInTabVar (Mot) : Booléen qui cherche Mot au niveau du dictionnaire. Elle renvoie la valeur Vrai si la recherche est fructueuse et Faux dans le cas contraire.

53 Ecriture de l algorithme Fonction AnalyseDeclarationVariable (donnée AlgoTexte) : Booléen % cette fonction mémorise tous les variables, les constantes, les noms de procédure et de fonctions. Ainsi dans la fonction ANALYSEVARIABLE, nous ferons une cherche sur VectVar pour voir si le mot trouvé est déjà déclaré...% VARIABLE NumLigne : Entier % compteur de ligne % I : Entier Arret, BoolVar, CfVar, Trouver : Booléen % Boolvar nous permet de savoir si nous sommes sur les variables % Ligne, Mot : Chaîne Degré : Entier % c est le niveau de profondeur de l identificateur rencontré % ResultEmpile, InProcFonct, InType : Booléen % InType nous permet de savoir si nous sommes au niveau des types % EmpileVar, EmpileType : Booléen DÉBUT Ouvrir (AlgoTexte) en Lecture % ouverture du fichier texte en lecture % Arret = Faux NumLigne = 0 Degré = 0 Ligne = "" BoolVar = Faux CfVar = Faux TANTQUE PAS (FDF (AlgoTexte)) ET (Arret = Faux) FAIRE LireLigne (AlgoTexte, Ligne) InProcFonct = Faux NumLigne = NumLigne + 1 i = 1 CfVar = Vrai TANTQUE (i <= Longueur (Ligne)) ET (Longueur Ligne)) > 0) ET (Arret = Faux) FAIRE Mot = RecherCheMot (Ligne, i) SI (Mot Dans ["CONST", "TYPE", "VAR", "ALGO", "PROCÉDURE", "FONCTION",

54 54 "VARIABLE", "PROGRAMME", "ALGORITHME", "CONSTANTE"] ALORS BoolVar = Vrai CfVar = Vrai SI Mot Dans ["CONST", "CONSTANTE", "TYPE"] ALORS InType = Vrai SI (Mot = "VAR") OU (Mot = "VARIABLE") ALORS InType = Faux SI (Mot = "PROCÉDURE") OU (Mot = "FONCTION") OU (Mot = "ALGO") OU (Mot = "PROGRAMME") OU (Mot = "ALGORITHME") Alors Degré = Degré + 1 InType = Faux SI (Mot = "PROCÉDURE") OU (Mot = "FONCTION") Alors InProcFonct = Vrai SI (Mot = "DÉBUT") OU (Mot = "(") OU (Mot = "FINPROCÉDURE") OU (Mot = "FINFONCTION") ALORS BoolVar = Faux SI Mot = "DÉBUT" Alors InType = Faux SI (Mot = ":") OU (Mot = "=") OU (Mot = "(") Alors CfVar = Faux SI Mot = ";" ALORS CfVar = Vrai SI (Mot = "FINPROCÉDURE") OU (Mot = "FINFONCTION") ALORS Degré = Degré + 1 SI (BoolVar = Vrai) ET (CfVar = Vrai) ALORS SI Mot Pas (Dans ["VAR", "CONST", "TYPE", "FINSTRUCTURE", "VARIABLE", "CONSTANTE", "PROCÉDURE", "FONCTION", "ALGO", ";", "PROGRAMME", "ALGORITHME"]) ALORS % cherche la variable trouvée dans le vecteur VectVar % Trouver = RechercheInTabVar (Mot) SI Trouver = Vrai Alors % dans ce cas la variable a été dupliquée et on arrête aussitôt l algorithme Arret = Vrai

55 55 SINON SI TestVariable (Mot, NumLigne) = Faux Alors % analyse la variable s il n'est réservée % AnalyseDeclarationVariable = Faux SINON % Mémorise la variable déclarée... % SI InProcFonct = Faux Alors % si nous ne sommes pas sur la ligne procédure et fonction % SI InType = Vrai Alors ResultEmpile = EmpilerVariable (Mot, Degré, NumLigne, "TYPE", Ligne) SINON ResultEmpile = EmpilerVariable (Mot, Degré, NumLigne, "VARIABLE", Ligne) SI ResultEmpile = Faux Alors Arret = Vrai Trouver = Faux AnalyseDeclarationVariable = Faux SINON % nous sommes sur la ligne procédure et fonction donc nous empilons le nom de la procédure comme variable globale. Faisons à cet effet la recherche de ces paramètres... Ce premier mot doit donc être le nom de la procédure ou de la fonction...% ResultEmpile = EmpilerVariable (Mot, 1, NumLigne, "VARIABLE", Ligne) SI ResultEmpile = Vrai Alors Mot = RecherCheMot (Ligne, i) TANTQUE (i <= Longueur (Ligne) ET (ResultEmpile = Vrai)) ET (InProcFonct = Vrai) FAIRE SI Mot = "(" Alors EmpileVar = Vrai EmpileType = Faux SI Mot = ":" ALORS EmpileType = Vrai EmpileVar = Faux TANTQUE (EmpileVar = Vrai) ET (i <= Longueur (Ligne)) ET (ResultEmpile = Vrai) FAIRE SI Mot PAS Dans [":", ";", ",", "(", ")", "VAR", "VARIABLE","ENTREE", "SORTIE",

56 56 "RÉSULTAT", "ES","DONNÉE"]) ALORS ResultEmpile = EmpilerVariable (Mot, Degré, NumLigne, "VARIABLE", Ligne) SI ResultEmpile = Faux Alors Arret = Vrai SI Mot = ":" Alors EmpileType = Vrai EmpileVar = Faux Mot = RecherCheMot (Ligne, i) FINTANTQUE TANTQUE (EmpileType = Vrai) ET (i <= Longueur (Ligne)) ET (ResultEmpile = Vrai) FAIRE SI (Mot Pas (Dans [":", ";", ",", "(", ")"]) Alors ResultEmpile = RechercheInTabVar (Mot) SI ResultEmpile = Faux Alors ResultEmpile = DepilerVariable (Mot, 1) SI ResultEmpile = Faux Alors Arret = Vrai SI Mot = ";" Alors EmpileType = Faux EmpileVar = Vrai SI Mot = ":" Alors EmpileType = Vrai EmpileVar = Faux Mot = RecherCheMot (Ligne, i) FINTANTQUE SI i > Longueur (Ligne) Alors InProcFonct = Faux FINTANTQUE SINON Arret = Vrai Trouver = Faux AnalyseDeclarationVariable = Faux SI ResultEmpile = Faux ALORS

57 57 FINTANTQUE FINTANTQUE FermerFichier (AlgoTexte) Arret = Vrai Trouver = Faux AnalyseDeclarationVariable = Faux Message "Erreur déclaration à la ligne ", NumLigne, Mot, " est non défini! Vérifiez s'il ne doit d'abord pas être déclaré au niveau des variables types ou constantes. Ou il y a un ""DÉBUT"" qui manque!" SI Arret = Vrai Alors Message "Erreur déclaration à la ligne ", NumLigne, Mot, " est un mot réservé. Il ne peut pas être déclaré comme VARIABLE, TYPE, CONSTANTE, nom d'algorithme, nom de FONCTION ou nom de PROCÉDURE. Ou il y a un ""DÉBUT"" qui manque!" AnalyseDeclarationVariable = PAS (Arret) FINFONCTION

58 Fonction DeclareVariable (donnée AlgoTexte) : Booléen Cette fonction teste tous les mots compris entre les mots réservés DÉBUT et FinAlgo ou FinProgramme ou FinAlgorithme. Ce test consiste simplement à faire une recherche du mot trouvé avec son degré dans le vecteur VectVar et au niveau du dictionnaire. En d autres termes, cette fonction nous permet de savoir si un mot est déclaré ou pas. Si la recherche est infructueuse, alors nous dirons que le mot trouvé n est pas déclaré et un message d erreur est envoyé à l utilisateur. Les mots entre guillemets et commentaires (voir structure générale d un algorithme) sont ignorés Champs d action de la fonction DeclareVariable Algo MonEssai Variable X, Y : Entier Champs d action Fonction Maximum (X, Y : Entier) : Entier DÉBUT Si X > Y Alors Maximum = X Sinon Maximum = Y FinSi FinFonction Chaînes ignorées DÉBUT EffacerEcran Afficher «Valeur de x et y» Saisir (X, Y) Afficher («le plus grand des 2 nombres est», maximum (X, Y)) FinAlgo Analyse de la Fonction DeclareVariable Nous utiliserons le vecteur VectVar construit à partir de la fonction AnalyseDeclareVariable (vue précédemment) et le dictionnaire pour savoir si le mot trouvé a été déclaré ou pas. La fonction est déclenchée par la rencontre du mot réservé DÉBUT et ne se termine qu à la rencontre du mot réservé FinAlgo, FinProgramme ou FinAlgorithme. Tous les mots surlignés feront l objet de la fonction. Que fait cette dernière? Elle fait d abord une recherche dans le dictionnaire, si le mot ne s y trouve pas, la recherche s effectuera alors dans le vecteur VectVar qui garde en mémoire tous les mots (identificateurs) déclarés au niveau de l algorithme.

59 59 Si le mot ne s y trouve toujours pas, alors un message d erreur est envoyé à l utilisateur pour lui signifier qu un mot non défini a été trouvé. NB : La recherche que nous effectuons dans le vecteur VectVar tiendra compte du niveau de profondeur (Degré) vu précédemment. Le principe d incrémentation de «Degré» est le même que celle de la fonction AnalyseDeclareVariable. On dit que les deux fonctions se synchronisent au niveau de la profondeur et du nom de l identificateur.

60 Ecriture de l algorithme Fonction DeclareVariable (donnée AlgoTexte) : BOOLÉEN % cette fonction vérifie l'ensemble des mots-clés de l'algorithme s'ils sont déclarés ou pas. Donc chaque mot-clé doit nécessairement être déclaré au préalable... avant toute utilisation % VARIABLE DÉBUT NumLigne : ENTIER i, Degré : ENTIER Arret, Trouver : BOOLÉEN Ligne, Mot : CHAÎNE inf, sup, milieu, j : Entier Ouvrir (AlgoTexte) en Lecture Arret = FAUX NumLigne = 0 Ligne = "" Degré = 0 TANTQUE PAS (FDF (fichier)) ET (Arret = FAUX) FAIRE LireLigne (AlgoTexte, Ligne) NumLigne = NumLigne + 1 % incrémente l indice de la ligne à chaque lecture d une ligne % i = 1 TANTQUE (i <= Longueur (Ligne)) ET (Longueur (Ligne) > 0) ET (Arret = FAUX) FAIRE Mot = RecherCheMot (Ligne, i) SI (Mot PAS (Dans ["", " ", ">", "\", "-", "*", "+", "/", "=", ")", """", "&", ",", "^", ":", ";", "(", "]", "[", ".", "'", "<"])) ALORS SI (Mot Dans ["PROCÉDURE", "FONCTION", "ALGO", "PROGRAMME", "ALGORITHME", "FINPROCÉDURE", "FINFONCTION") ALORS Degré = Degré + 1 inf = 1

61 61 sup = Pos milieu = Int ((inf + sup) / 2) Trouver = FAUX % recherche dichotomique de la variable sur la liste des mots susceptibles d'être traduits... % TANTQUE (inf <= sup) ET (Trouver = FAUX) FAIRE % Parcours du TABLEAU % milieu = (inf + sup) div 2 SI Mot > Tableau (milieu).algorithme ALORS inf = milieu + 1 SINON SI Mot = Tableau (milieu).algorithme ALORS % le mot est trouvé % Trouver = VRAI SINON Sup = milieu - 1 FINTANTQUE SI Trouver = FAUX ALORS % Nous dépilons toutes les variables déclarées pour voir s'il est déclaré... % SI DepilerVariable (Mot, Degré) = VRAI ALORS Trouver = VRAI SI Trouver = FAUX ALORS % mais il faut noter que la chaîne trouvée peut être constituée de nombres, alors il sera considérée comme déclarée, sinon non déclarée % POUR j = 1 à Longueur (Mot) FAIRE Selon SSCH (Mot, j, 1) De Cas "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" Trouver = VRAI Cas SINON Trouver = FAUX Arret = VRAI Exit POUR FINSELON FINPOUR SI (Trouver = FAUX) ET (Mot Pas (Dans ["""", ";", ":", "", "'"])) ALORS Message "ERREUR DECLARATION! à la ligne ", NumLigne, ".", Mot," non défini à la ligne" "LIGNE ERREUR --> ", Ligne, "Vérifier s'il ne s agit pas de variable, TYPE," "nom PROCÉDURE ou nom de FONCTION non définis..." AnalyseVariable = FAUX

62 62 Arret = VRAI FINTANTQUE FINTANTQUE FermerFichier (AlgoTexte) AnalyseVariable = PAS (Arret) FINFONCTION

63 Fonction AnalyseCondition (donnée AlgoTexte) : Booléen Cette fonction contrôle toutes les structures arborescentes (clauses) de l algorithme. Elle renvoie la valeur : Vrai si elle est correctement structurée. Faux au cas contraire. Nous dirons qu une clause arborescente «A» est correctement structurée si toutes les sousstructures arborescentes «a i» appartenant à A sont correctement structurées Clause d ouverture et clause de fermeture Une clause d ouverture doit nécessairement être fermée par une et une seule clause de fermeture. Clause d ouverture Algo Programme Algorithme Structure Procédure Fonction Si Tantque Pour Repeter Selon Clause de fermeture FinAlgo FinProgramme FinAlgorithme FinStructure FinProcédure FinFonction FinSi FinTantque FinPour Jusqua FinSelon Par ailleurs certaines clauses nécessitent un ou plusieurs mots réservés pour leurs fonctionnements : Si (condition) Alors Tantque (condition) Faire Pour nom_var = valeur_min à valeur_max Faire Selon nom_var De NB : Il faut savoir qu il existe des sous-clauses qui sont toujours utilisées entre une clause d ouverture et une autre de fermeture, mais leur usage n est pas obligatoire. La sous-clause SINON Si (condition) Alors Action Sinon Action FinSi

64 64 La sous-clause CasSinon Selon nom_var De Cas Valeur : Action CasSinon Action FinSelon NB : L union d une clause d ouverture et d une clause de fermeture est appelée «Structure arborescente». Les structures arborescentes Si-Finsi et Selon-FinSelon ne peuvent avoir au plus qu une sous-clause. Néanmoins une structure arborescente peut imbriquer plusieurs sous structures arborescentes. Exemple Algo Nom_Algo Var Liste_Var : Type Début Si (condition) Alors Tantque (condition) Faire Pour nom_var = min à max Faire Repeter Action Jusqua (condition) FinPour FinTantque Sinon Repeter Selon nom_var De Cas Valeur_nom_var : Action CasSinon Si (condition) Alors Action FinSi FinSelon Jusqua FinSi FinAlgo Outils utilisés pour le contrôle des structures arborescentes Nous utiliserons une pile pour garder en mémoire l état de toutes les clauses d ouverture de l algorithme Structure de la pile Type EnregPile = Structure Condition : Chaîne [12] Validité : Booléen NumLigne : Entier Sinon : Entier FinStructure

65 Description des champs de la structure Condition : mémorise le nom de la clause empilée. Validité : vaut Vrai si la condition (clause) n est pas fermée. Faux au cas contraire. NumLigne : mémorise le numéro de la ligne où se trouve la clause rencontrée. Sinon : voici les différents cas possibles : (-1) si la clause ne possède jamais de SINON (sous-clause). C est le cas de TANTQUE, REPETER, POUR, PROCÉDURE, FONCTION etc. (0) si la clause ne possède pas encore de SINON. (1) si la clause possède un SINON Analyse de la fonction AnalyseCondition Cette fonction utilise une pile de 300 enregistrements au maximum. Elle empile (ajoute) au niveau de la pile toutes les clauses ouvrantes précédemment vues avec Validité = Vrai. Ceci nous permettra d imbriquer des sous-structures. A la rencontre d une clause fermante, nous ferons un retour en arrière à partir du SOMMET pour trouver la première clause valide correspondante (Validité = Vrai). Néanmoins, lors du retour en arrière, toutes les clauses que nous rencontrerons au passage avant la clause cherchée doivent nécessairement être invalides (fermées) c'est-à-dire Validité = Faux. Dans tous les cas, à chaque lecture d une ligne, nous incrémenterons la variable ligne et nous l empilerons avec sa clause correspondante. Ceci nous permettra de signaler à l utilisateur qu une erreur a été détectée à une ligne donnée. Exemple : SI (Condition) ALORS TANTQUE (Condition) FAIRE REPETER Action JUSQUA (condition) FINTANQUE SINON POUR nom_var = min à max FAIRE Action FINPOUR Dans cet exemple, les clauses ouvrantes sont SI, TANTQUE, REPETER et POUR et les clauses fermantes sont JUSQUA, FINTANTQUE et.

66 66 Etat de la pile par la lecture ligne par ligne de l exemple : Condition Validité NumLigne Sinon Ligne 1 SI VRAI 1 0 La clause rencontrée est «SI», elle est valide. Elle se trouve à la ligne n 1 et ne possède pas de «SINON» Ligne 2 TANTQUE VRAI 2-1 SI VRAI 1 0 A la ligne suivante, nous rencontrons la clause «TANTQUE» qui ne possède jamais de «SINON». Ligne 3 REPETER VRAI 3-1 TANTQUE VRAI 2-1 SI VRAI 1 0 A la 3 ème ligne, nous rencontrons la clause ouvrante «REPETER» que nous empilons aussi. Ligne 5 REPETER FAUX 3-1 TANTQUE VRAI 2-1 SI VRAI 1 0 Nous rencontrons la première clause fermante (JUSQUA) de «REPETER», donc nous faisons un retour en arrière à partir du SOMMET jusqu'à ce qu on trouve le premier «REPETER» valide que nous invaliderons (Validité = Faux). Ligne 6 REPETER FAUX 3-1 TANTQUE FAUX 2-1 SI VRAI 1 0 Nous trouvons à nouveau une clause fermante «FINTANQUE» à la ligne 6, depuis le SOMMET de la pile, nous cherchons le premier TANTQUE valide que nous mettrons par la suite à Faux. Ligne 7 REPETER FAUX 3-1 TANTQUE FAUX 2-1 SI VRAI 1 1 A la ligne 7, nous rencontrons le «SINON». Ainsi nous cherchons le premier «SI» valide n ayant pas de «SINON» (Sinon = 0) partant du SOMMET.

67 67 Ligne 8 POUR VRAI 8-1 REPETER FAUX 3-1 TANTQUE FAUX 2-1 SI VRAI 1 1 A la ligne 8, la clause «POUR» est rencontrée, on l empile directement au SOMMET de la pile. Ligne 10 POUR FAUX 8-1 REPETER FAUX 3-1 TANTQUE FAUX 2-1 SI VRAI 1 1 «FINPOUR» est rencontrée à la 10 ème ligne. Nous mettons la clause «POUR» à FAUX. NB : Si l algorithme s achevait ici, il y aurait une erreur car toutes les clauses ne sont pas fermées. C est le cas du «SI» qui se situe au bas de la pile. Ainsi à la 11 ème ligne l état de la pile est la suivante : Ligne 11 POUR FAUX 8-1 REPETER FAUX 3-1 TANTQUE FAUX 2-1 SI FAUX 1 1

68 Ecriture de l algorithme FONCTION AnalyseCondition (donnée AlgoTexte) : BOOLÉEN % Cette fonction contrôle toutes les structures arborescentes (clauses) à l aide d une pile % Type EnregPile = Structure Condition : Chaîne [12] Validité : Booléen NumLigne : Entier Sinon : Entier FinStructure CONSTANTE MaxPile = 300 % Taille maximale de la pile % VARIABLE Pile : TABLEAU [1..MaxPile] de EnregPile FinAlgorithme : Booléen J : Entier Condition : Chaîne SOMMET : Entier % c est le sommet de la pile % Indice : Entier % c est l indice sur la ligne lue % Ligne : Chaîne % c est la ligne lue depuis le fichier AlgoTexte % CTLigne : Entier % Compteur de ligne % Début Ouvrir (AlgoTexte) en Lecture I = 0 FinAlgorithme = Faux SOMMET = 0 CTLigne = CTLigne + 1 TANTQUE Pas (FDF (AlgoTexte)) FAIRE % Tant que AlgoTexte n est pas terminé % Indice = 1 LireLigne (AlgoTexte, Ligne) % lit une ligne entière % TANTQUE (indice <= Longueur (Ligne)) ET (FinAlgorithme = FAUX) FAIRE Condition = RechercheMot (Ligne, Indice) SI Condition Dans [«TANTQUE», «REPETER», «SI», «ALGO»,«PROCÉDURE», «FONCTION», «SELON», «ALGORITHME», «STRUCTURE», «AVEC»] ALORS SI SOMMET = MaxPile Alors % si la pile est pleine,on arrête l algorithme % Message "Pile Pleine!" AnalyseCondition = Faux

69 69 SINON SOMMET = SOMMET + 1 Pile (SOMMET).Condition = Condition Pile (SOMMET).NumLigne = CTLigne Pile (SOMMET).Validité = Vrai SI Condition = «SI» ou Condition = «SELON» ALORS Pile (SOMMET).Sinon = 0 SINON Pile (SOMMET).Sinon = -1 % Dans le cas des clauses fermantes, nous ferons un retour en arrière pour chercher la première clause correspondante valide. Par ailleurs, lors du retour en arrière, toutes les clauses rencontrées doivent nécessairement être invalides (Validité = Faux) % Si Condition Dans [«FINTANTQUE», «JUSQUA»,, «FINALGO», «FINPROCÉDURE», «FINFONCTION», «FINSELON», «FINSTRUCTURE», «FINAVEC», «FINPROGRAMME», «FINALGORITHME»] ALORS J = SOMMET TANTQUE (J > 0) ET (FinAlgorithme = Faux) FAIRE SI Pile (J).Condition = SSCH (Condition, 4, Longueur (Condition) ALORS SI Pile (J).Validité = Vrai ALORS Pile (J).Validité = FAUX SINON J = J 1 SINON SI Pile (J).Validité = Vrai ALORS Message «Erreur à la ligne», Pile (J).NumLigne «il faut fermer la condition», Pile (J).Condition, «avant la condition», Condition FinAlgorithme = Vrai SINON J = J 1 FINTANTQUE % De même, à la rencontre d un «SINON», nous ferons un retour en arrière pour chercher au niveau de la pile le premier SI valide n ayant pas de SINON (SINON = 0). Dans le cas où nous rencontrons un SI avec (SINON = 1), alors un message est envoyé à l utilisateur car un SI ne peut avoir au plus un SINON. %

70 70 SI Condition = «SINON» ALORS J = SOMMET TANTQUE (J > 0) ET (FinAlgorithme = Faux) FAIRE SI Pile (J).Condition DANS [«SI», «SELON»] ALORS SI Pile (J).Validité = Vrai ALORS SI Pile (J).SINON = 1 ALORS Message «Erreur à la ligne», Pile (J).NumLigne, «ce SI possède déjà un SINON» FinAlgorithme = VRAI SINON Pile (J).SINON = 1 SINON J = J - 1 SINON SI Pile (J).Validité = Vrai ALORS Message «Erreur! la clause», Pile (J).Condition, «ne doit pas posséder de SINON» FinAlgorithme = VRAI SINON J = J 1 FINTANTQUE FINTANTQUE % fin de la ligne lue % FINTANTQUE % fin du fichier AlgoTexte % % à la fin de l algorithme, il faut être sûr que toutes les clauses ouvertes sont fermées % J = SOMMET TANTQUE (FinAlgorithme = Faux) ET (J > 0) FAIRE SI Pile (J).Validité = VRAI ALORS Message «Erreur! à la ligne», Pile (J).NumLigne, «la clause», Pile (J).Condition, «n a pas été fermée» FinAlgorithme = VRAI SINON J = J 1 FINTANTQUE AnalyseCondition = PAS (FinAlgorithme) FermerFichier (AlgoTexte) % fermeture du fichier principal % FINFONCTION

71 Fonction ControleExpression (donnée AlgoTexte) : Booléen Il nous est amené de contrôler la validité d une expression parenthésée. Une expression parenthésée est dite valide si et seulement si elle est correctement parenthésée. Nous distinguons deux types de parenthèses : - parenthèses ouvrantes : (, [ et { - parenthèses fermantes : ), ] et } Chaque type de parenthèse ouvrante est toujours associé à une et une seule autre parenthèse fermante Liste de parenthèses Parenthèse fermante Parenthèse ouvrante correspondante ( ) { } [ ] Analyse de la fonction ControleExpression Nous ferons usage d une pile pour garder en mémoire l état des parenthèses ouvrantes. L opération d empilement se fera à chaque fois que nous rencontrons une parenthèse ouvrante et l opération de dépilement s effectuera à la rencontre de parenthèses fermantes. La fonction renvoie donc la valeur VRAI si toutes les lignes de l algorithme sont correctement parenthésées et la valeur FAUX dans ces trois cas de figure : si la valeur du sommet de la pile ne correspond pas à la parenthèse fermante associée. si à la fin d une ligne donnée et qu au niveau de la pile il reste toujours des éléments. (la pile n est pas vide). si la pile est vide et qu il reste dans l expression des parenthèses fermantes Exemple d erreur dans une expression Exemple 1 : ( ( a + b ) [ k + r ) ) Le crochet ouvrant est mal fermé. Exemple 2 : ) a + b ) [ k + r ] La première parenthèse fermante ne ferme aucune parenthèse ouvrante.

72 72 Exemple 3 : ( ( a + b ) k + r A la fin de l expression, la pile ne sera pas vide. Donc il y a une parenthèse ouvrante non fermée Structure de la pile Type PileParenthese = Tableau [ ] de caractère

73 Ecriture de l algorithme Fonction ControleExpression (donnée AlgoTexte) : BOOLÉEN VARIABLE Pile : PileParenthese i, j : Entier Correct : BOOLEEN ; Ligne : CHAÎNE DÉBUT Correct = VRAI ; j = 0 Ouvrir (AlgoTexte) en Lecture TANTQUE (PAS (FDF (AlgoTexte)) ET (Correct = VRAI)) FAIRE LireLigne (AlgoTexte, Ligne) i = 1 TANTQUE (i <= Longueur (Ligne)) ET (Correct = VRAI) FAIRE SI Ligne [i] DANS [«(», «[», «{»] ALORS j = j +1 Pile [j] = Ligne [i] SINON SI (Ligne[i] Dans [«)», «]», «}»] ALORS SI j = 0 ALORS Correct = FAUX SINON SI (Ligne[i] = «)») ET (Pile [j]= «(») OU (Ligne[i] = «]») ET (Pile[j]= «[») OU (Ligne [i] = «}») ET (Pile [j]= «{») ALORS j = j 1 SINON Correct = FAUX i = i + 1 FINTANTQUE FINTANTQUE SI j > 0 ALORS % Si la pile n est pas vide à la fin de la ligne % Correct = FAUX ControleExpression = Correct FINFONCTION

74 Procédure Traduction (donnée AlgoTexte) Avec les fonctions précédemment vues, nous pouvons dire que l écriture de l algorithme est correcte si et seulement si le texte saisi par l utilisateur respecte toutes les fonctions antérieures. Avant de traduire l algorithme, toutes ces fonctions doivent retourner comme résultat VRAI. (Voir Diagramme enchaînement des tâches). Pour accélérer le traitement, nous porterons tous les enregistrements de la base de données dans un vecteur (tableau à 1 dimension) dont la structure est la suivante : Type Dico = STRUCTURE NomAlgo : Chaîne [15] NomPascal : Chaîne [15] Unit : Chaîne [8] FINSTRUCTURE Constante MaxDico = 500 Variable Dictionnaire : Tableau [1..MaxDico] de Dico Maintenant, il suffit de parcourir la base de données du début à la fin et porter tous les enregistrements au niveau du vecteur Dictionnaire. Analyse : La traduction se fera essentiellement mot à mot. Nous utiliserons la fonction RechercheMot qui va extraire tous les mots contenus dans l algorithme. Ainsi pour chaque mot trouvé, nous le remplacerons par sa désignation en Pascal depuis le vecteur Dictionnaire en Pascal s il y existe. Sinon, il restera toujours le même. Cette recherche sur le vecteur se fera à l aide d une recherche dichotomique dont le principe réside sur la division successive de l espace de recherche en deux dans un vecteur ordonné sur le critère de recherche Fonctions intermédiaires Fonction EnPASCAL (donnée MotAlgo : Chaîne) : Chaîne Variable Trouver : Booléen Inf, Sup, Milieu : Entier Début Inf = 1 Sup = Max EnPascal = MotAlgo % initialisation du résultat de la fonction % Trouver = Faux TANTQUE (Trouver = FAUX) ET (Inf <= Sup) FAIRE Milieu = (Inf + Sup) div 2 SI MotAlgo > Dictionnaire [Milieu].NomAlgo ALORS Inf = Mileu + 1 SINON SI MotAlgo < Dictionnaire [Milieu].NomAlgo ALORS Sup = Milieu 1 SINON Trouver = VRAI EnPascal = Dictionnaire [Milieu].NomPascal

75 75 FINTANQUE FINFONCTION A la sortie de cette fonction, nous aurons la signification de chaque mot algorithmique en Pascal. Par ailleurs dans cet algorithme, nous utiliserons la petite primitive EmpilerLibrairie qui mémorisera toutes les librairies utilisées dans l algorithme. Son utilité sera très importante pour l exécution de l algorithme par l ordinateur via le compilateur Turbo Pascal. Cette primitive agira comme un éditeur des liens qui regroupera toutes les bibliothèques qui seront utilisées pour l écriture d un algorithme. Procédure EmpilerLibrairie (donnée Librairie : Chaîne) Variable Trouver : Booléen I : Entier Début Trouver = FAUX I = 1 % Nous cherchons si la librairie n a déjà pas été empilée % TANTQUE (Trouver = FAUX) ET (I <= PosMax) FAIRE % la variable PosMax est le sommet de la Pile % SI Librairie = VectLibrairie [I] ALORS Trouver = VRAI SINON I = I + 1 FINTANQUE SI I = PosMax Alors Message «Pile pleine» SINON SI Trouver = FAUX ALORS PosLib = PosLib + 1 VectLibrairie [PosLib] = Librairie FINPROCÉDURE Ecriture de l algorithme PROCÉDURE Traduction (Donnée AlgoTexte; Résultat PascalTexte) % cette procédure traduit mot à mot l'algorithme en Pascal % VARIABLE i : Entier Mot, Ligne, LigneTraduite, DernierMot : Chaîne DÉBUT OuvrirEcriture (PascalTexte) OuvrirLecture (AlgoTexte) TANTQUE PAS (FDF (AlgoTexte)) FAIRE LireLigne (AlgoTexte, Ligne) LigneTraduite = i = 1 TANTQUE (i <= Longueur (Ligne)) ET (Longueur (ligne) >= 1) FAIRE Mot = RechercheMot (ligne, i) DernierMot = Mot LigneTraduite = LigneTraduite + EnPascal (Mot) FINTANTQUE % fin de la ligne %

76 76 SI DernierMot = "SINON" ALORS EcrireLigne (PascalTexte, "END") EcrireLigne (PascalTexte, LigneTraduite) % Ecrire la ligne traduite en PASCAL si le dernier mot est égal à ALORS, SINON, type, etc. % SI (DernierMot PAS DANS ["DO", "ALORS", "SINON", "TYPE", "CONST", ";", "VAR"]) ALORS SI Longueur (LigneTraduite) > 0 ALORS SI DernierMot PAS DANS [";", ".", "}"] ALORS EcrireLigne (PascalTexte, LigneTraduite + " ;") SINON EcrireLigne (PascalTexte, LigneTraduite) SINON EcrireLigne (PascalTexte, "") SINON EcrireLigne (PascalTexte, LigneTraduite) % test du dernier mot pour pouvoir ajouter "BEGIN" % SI DernierMot DANS ["ALORS", "SINON", "FAIRE"] ALORS EcrireLigne (PascalTexte, "BEGIN") FINTANTQUE % fin du fichier % FermerFichier (AlgoTexte) FermerFichier (PascalTexte) FINPROCÉDURE

77 77 Les différents algorithmes vus précédemment sont utilisés pour la conception du logiciel traducteur d algorithmes en langage Pascal. Ce dernier se nomme MSAlgoPascal. Pour améliorer l interface utilisateur, Microsoft Visual Basic 6.0 a été utilisé lors de la conception de MSAlgoPascal. 4.1 Configuration requise Pour une meilleure utilisation du logiciel MSAlgoPascal, vous devez disposer de : Processeur : PC Pentium 100 MHz au minimum Système d exploitation : Parfaitement compatible sur toutes les versions de Windows sous 32 Bits (Windows 95, Windows 98, Windows NT, Windows Millenium, Windows 2000 et Windows XP). Ram (mémoire vive ou centrale) : 32 Mo. Définition de l écran : minimum 256 couleurs. Espace disque : 3.5 Mo espace disque. Périphérique : Carte son et un lecteur de cd-rom. 4.2 Installation de MSAlgoPascal Le logiciel MSAlgoPascal est livré sur cd-rom. Insérez le cd-rom d installation dans votre lecteur, puis patientez un moment. Cette fenêtre s affichera en premier lieu. Cliquez sur le bouton Installer, pour démarrer l installation du logiciel MSAlgoPascal.

78 78 Au clic, voici la fenêtre qui s affiche. Cliquer sur le bouton OK Une nouvelle fenêtre se présente et vous demande de choisir votre répertoire d installation. Pour son bon fonctionnement, MSAlgoPascal doit être installé dans le répertoire C:\ALGOPAS. Validez toutes ces opérations en cliquant sur le bouton suivant : Vous êtes à présent au bout, la copie des fichiers se lance automatiquement. Patientez jusqu à ce que la barre des pourcentages soit à 100 %. Enfin terminé, tous les fichiers sont désormais dans votre disque dur, vous pouvez maintenant retirer le cd-rom d installation de MSAlgoPascal de votre lecteur. Cliquez sur le bouton Démarrer de Windows, ensuite sur Tous les programmes (pour les autres versions de Windows (Win9x, WinNT, 2000) vous avez «programmes» au lieu de «Tous les programmes») puis sur le groupe de Travail MSAlgoPascal et enfin MSAlgoPascal.

79 79 Lancement de MSAlgoPascal depuis le menu démarrer 4.3 Pas à pas sur MSAlgoPascal Vous avez enfin installé MSAlgoPascal. Vous pouvez lancer MSAlgoPascal à tout moment depuis le menu démarrer de Windows. Cette fenêtre s affichera en premier lieu : Chargement de la base de données en mémoire centrale Cette fenêtre d animation s affiche pour une petite durée, elle charge la base de données (dictionnaire) en mémoire. (Voir III Conception Générale).

80 80 A la fin du traitement, la fenêtre principale s affichera à l écran. Interface de MSAlgoPascal Cette fenêtre présente l environnement général. Elle contient une barre d outils avec des boutons sur la partie supérieure de la fenêtre et une zone de texte sur la partie gauche. C est à partir de cette zone de texte (éditeur de texte) que l utilisateur saisit son algorithme Comment écrire un algorithme? L écriture d un algorithme est très simple. MSAlgoPascal dispose d un éditeur de texte standard que l utilisateur utilise pour saisir ses algorithmes. Cette zone de texte est similaire à Bloc-notes de Windows. Par défaut, un bout de code est affiché pour préparer l algorithme à venir. ALGO Nom_Algo DÉBUT FINALGO Pour saisir un algorithme, l utilisateur peut changer le nom Nom_Algo par le nouveau nom qu il introduit, ensuite déclarer les variables, types, constantes si nécessaire. Puis entre le Début et FinAlgo, il introduira les instructions de l algorithme principal.

81 Présentation des objets de l environnement La barre d outils Le logiciel MSAlgoPascal dispose d une barre d outils assez complète qui permet à l utilisateur de dialoguer avec le système. Le bouton Nouveau Il sert à créer de nouveaux algorithmes. L ordinateur affiche une page vierge et invite l utilisateur à saisir son nouvel algorithme. Le bouton Ouvrir Ce bouton nous permet d accéder au répertoire des fichiers d algorithme sauvegardés sur le disque dur et de les ouvrir. A son clic, voici la fenêtre qui s affiche. L utilisateur peut sélectionner l un des algorithmes précédemment sauvegardés pour l éditer à nouveau.

82 82 Après sélection, voici l apparence de la fenêtre principale. Le bouton Enregistrer Le bouton Enregistrer sert à sauvegarder l algorithme courant dans le disque dur. Si l algorithme porte déjà un nom, le fichier source est automatiquement mis à jour selon les modifications effectuées. Mais s il s agissait d un nouvel algorithme, une fenêtre d enregistrement s afficherait et inviterait à nouveau l utilisateur à donner un nom à l algorithme. Cette fenêtre d enregistrement se présente ainsi : L utilisateur est appelé à donner un nom de fichier n ayant pas plus de 8 caractères (à cause du système de gestion de fichier sur MS-DOS). Ce fichier ne doit comporter ni de caractères spéciaux ni d espaces. Une fois saisi, nous cliquons sur le bouton Enregistrer pour valider cette opération.

83 83 Le bouton Imprimer Ce bouton permet à l utilisateur d imprimer ses codes sources (aussi bien l algorithme que sa traduction en langage Pascal). A son clic, une fenêtre s affiche et l invite à choisir le code à imprimer. La fenêtre d invite se présente ainsi : Le bouton Dictionnaire Il est très important et permet d accéder à la base de données du système (voir Schéma relationnel (voir Implémentation du modèle conceptuel des données). A son clic, la fenêtre de relation s affiche. Les données sont triées en ordre croissant sur l algorithme. A chaque clic sur un enregistrement (occurrence), le système pointe automatiquement sur l enregistrement auquel il correspond. Par exemple, en cliquant sur ALGO, l ordinateur sélectionne sur les mots listés en Pascal PROGRAM et un vide sur la liste des Librairies. Cela veut simplement dire que ALGO en algorithme signifie PROGRAM en Pascal et son utilisation ne nécessite pas de librairie.

84 84 Le bouton Zoom Il permet d agrandir l algorithme ou la traduction en plein écran et facilite l écriture de l algorithme. Zoom sur l algorithme Le bouton Gestion de l interface de l environnement La gestion de l interface de l environnement permet à l utilisateur de personnaliser l interface générale. Cette fenêtre s affiche par la suite : Gestionnaire des couleurs de l environnement Grâce à cette fenêtre l utilisateur peut changer la couleur de la police, la couleur de fond et de l environnement. Cette fenêtre permet aussi de changer le type de police et la taille de tabulation. Pour conserver ces modifications, il suffit de cliquer sur le bouton Mémoriser.

85 85 A chaque redémarrage du logiciel, MSAlgoPascal conserve les dernières modifications de la Gestion de l interface de l environnement. Le bouton Traduire en langage Pascal Pour traduire notre algorithme en langage Pascal, il suffit de cliquer sur ce bouton. C est ce dernier qui déclenche l ensemble des procédures et des fonctions vues antérieurement pour avoir une traduction correcte. Plusieurs messages d erreur peuvent être envoyés à l utilisateur pour qu il puisse les corriger. En voici quelques exemples : Exemple 1 Algo exemple1 Var A, b : entier Début Saisir (a1) Saisir (b) Finalgo Exemple 2 Algo exemple2 Var A : entier Début A = 20 Tantque A > 0 Faire Afficher («A=», A) A = A 1 FinAlgo Exemple 3 Algo exemple3 Var K : entier Début A1 = 0 Tantque A <= 20 Faire Afficher (K) ; K = K +1 FinTantque FinAlgo La variable a1 n a pas été définie. La clause ouvrante Tantque n a pas été fermée. A1 est non identifié

86 86 Exemple 4 Algo Exemple4 Var 1A : entier Début Sasir (1A) Si 1A = 0 alors Afficher «un nombre nul» Finsi FinAlgo Une variable ne doit pas débuter par * / ^ ( ) Exemple 5 Algo Exemple5 Var a, b, c : entier Début Saisir (a, b, c) Afficher («(a+b) / c =», (a+b/c) FinAlgo Expression mal parenthésée Une fois que l algorithme est correct, le système affiche sa traduction en langage Pascal dans la zone de texte située à droite de votre algorithme de sorte que nous puissions mieux voir la traduction. Traduction d un exemple d algorithme en langage Pascal

87 87 Le bouton Exécuter en langage Pascal MSAlgoPascal est muni du compilateur de Borland Turbo Pascal 7.0. Celui-ci nous permet d éditer et d exécuter nos algorithmes traduits en langage Pascal. Au clic de ce bouton, la fenêtre du compilateur Turbo Pascal 7.0 s affiche. Traduction de l algorithme éditée à partir de l éditeur de Borland Turbo Pascal 7.0 A partir de Turbo Pascal 7.0, l utilisateur pourra exécuter ses programmes en appuyant simultanément sur les touches CTRL + F9. Voici ce que nous aurons lors de l exécution d un algorithme par Turbo Pascal. Exécution du programme

88 88 Le bouton Aide Pour savoir comment écrire un algorithme correct, il suffit de cliquer sur ce bouton. Une aide s affiche et nous explique comment faire. Fenêtre d aide Autres options du logiciel MSAlgoPascal Opération d ajout Il peut arriver qu un mot ne soit pas traduit par MSAlgoPascal, il faut donc ajouter ce dernier dans le dictionnaire et donner son équivalence en Pascal ainsi que la librairie associée. Pour ce faire, cliquer sur le menu «Dictionnaire» puis «ajouter un mot clé» Ainsi la fenêtre d ajout s affiche par la suite.

89 89 Fenêtre d ajout d un mot dans le dictionnaire Dans cet exemple, le mot EffacerMoniteur a été ajouté et son équivalence en Pascal n est rien d autre que CLRSCR. Or la procédure CLRSCR se trouve dans la librairie standard CRT. Opération de suppression Pour supprimer un mot au sein de la base de données, il suffit d aller au menu «Dictionnaire», puis sur «Supprimer un mot clé». A son clic, voici la fenêtre qui s affiche. Le système nous invite à donner le mot en algorithme à supprimer et sa signification en langage Pascal.

Adama MBODJI MBODJ.SYSTEM

Adama MBODJI MBODJ.SYSTEM MBODJ.SYSTEM Tableaux & vecteurs Algorithmes de tris Chaînes de caractères Listes linéaires Piles & Files Arbres Fichiers Je dédie cet ouvrage à mon père Souleymane MBODJI 2 Dédicace... 2 Sommaire... 3

Plus en détail

LES TYPES DE DONNÉES DU LANGAGE PASCAL

LES TYPES DE DONNÉES DU LANGAGE PASCAL LES TYPES DE DONNÉES DU LANGAGE PASCAL 75 LES TYPES DE DONNÉES DU LANGAGE PASCAL CHAPITRE 4 OBJECTIFS PRÉSENTER LES NOTIONS D ÉTIQUETTE, DE CONS- TANTE ET DE IABLE DANS LE CONTEXTE DU LAN- GAGE PASCAL.

Plus en détail

Corrigé des TD 1 à 5

Corrigé des TD 1 à 5 Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Algorithmique et programmation : les bases (VBA) Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé PAD INPT ALGORITHMIQUE ET PROGRAMMATION 1 Cours VBA, Semaine 1 mai juin 2006 Corrigé Résumé Ce document décrit l écriture dans le langage VBA des éléments vus en algorithmique. Table des matières 1 Pourquoi

Plus en détail

UE Programmation Impérative Licence 2ème Année 2014 2015

UE Programmation Impérative Licence 2ème Année 2014 2015 UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie prenom.nom@mi.parisdescartes.fr 2 Programmation Impérative

Plus en détail

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

STAGE IREM 0- Premiers pas en Python

STAGE IREM 0- Premiers pas en Python Université de Bordeaux 16-18 Février 2014/2015 STAGE IREM 0- Premiers pas en Python IREM de Bordeaux Affectation et expressions Le langage python permet tout d abord de faire des calculs. On peut évaluer

Plus en détail

Cours Informatique 1. Monsieur SADOUNI Salheddine

Cours Informatique 1. Monsieur SADOUNI Salheddine Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale

Plus en détail

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes PLAN CYCLE DE VIE D'UN LOGICIEL EXPRESSION DES BESOINS SPÉCIFICATIONS DU LOGICIEL CONCEPTION DU LOGICIEL LA PROGRAMMATION TESTS ET MISE AU POINT DOCUMENTATION CONCLUSION C.Crochepeyre Génie Logiciel Diapason

Plus en détail

Créer le schéma relationnel d une base de données ACCESS

Créer le schéma relationnel d une base de données ACCESS Utilisation du SGBD ACCESS Polycopié réalisé par Chihab Hanachi et Jean-Marc Thévenin Créer le schéma relationnel d une base de données ACCESS GENERALITES SUR ACCESS... 1 A PROPOS DE L UTILISATION D ACCESS...

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Cours d Algorithmique et de Langage C 2005 - v 3.0

Cours d Algorithmique et de Langage C 2005 - v 3.0 Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU cordeau@onera.fr Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris

Plus en détail

Nom de l application

Nom de l application Ministère de l Enseignement Supérieur et de la Recherche Scientifique Direction Générale des Etudes Technologiques Institut Supérieur des Etudes Technologiques de Gafsa Département Technologies de l Informatique

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

EXCEL TUTORIEL 2012/2013

EXCEL TUTORIEL 2012/2013 EXCEL TUTORIEL 2012/2013 Excel est un tableur, c est-à-dire un logiciel de gestion de tableaux. Il permet de réaliser des calculs avec des valeurs numériques, mais aussi avec des dates et des textes. Ainsi

Plus en détail

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Présentation du langage et premières fonctions

Présentation du langage et premières fonctions 1 Présentation de l interface logicielle Si les langages de haut niveau sont nombreux, nous allons travaillé cette année avec le langage Python, un langage de programmation très en vue sur internet en

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Algorithmique et Programmation, IMA

Algorithmique et Programmation, IMA Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Page 1 de 9 MATLAB : COMMANDES DE BASE Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */. Aide help, help nom_de_commande Fenêtre de travail (Command Window) Ligne

Plus en détail

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de

Plus en détail

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Sub CalculAnnuite() Const TITRE As String = Calcul d'annuité de remboursement d'un emprunt TD1 : traduction en Visual BASIC des exemples du cours sur les structures de contrôle de l'exécution page 1 'TRADUCTION EN VBA DES EXEMPLES ALGORITHMIQUES SUR LES STRUCTURES 'DE CONTROLE DE L'EXECUTION

Plus en détail

Enseignement secondaire technique

Enseignement secondaire technique Enseignement secondaire technique Régime technique Division technique générale Cycle moyen Informatique 11TG Nombre de leçons: 2.0 Nombre minimal de devoirs: - Langue véhiculaire: / Remarque générale:

Plus en détail

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs

THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT. Objectifs Architecture Matérielle des Systèmes Informatiques. S1 BTS Informatique de Gestion 1 ère année THEME 1 : L ORDINATEUR ET SON ENVIRONNEMENT Dossier 1 L environnement informatique. Objectifs Enumérer et

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

La mémoire. Un ordinateur. L'octet. Le bit

La mémoire. Un ordinateur. L'octet. Le bit Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve

Plus en détail

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

CONCEPTION Support de cours n 3 DE BASES DE DONNEES CONCEPTION Support de cours n 3 DE BASES DE DONNEES Auteur: Raymonde RICHARD PRCE UBO PARTIE III. - LA DESCRIPTION LOGIQUE ET PHYSIQUE DES DONNEES... 2 A. Les concepts du modèle relationnel de données...

Plus en détail

Cours d Informatique

Cours d Informatique Cours d Informatique 1ère année SM/SMI 2007/2008, Info 2 Département de Mathématiques et d Informatique, Université Mohammed V elbenani@hotmail.com sayah@fsr.ac.ma 2007/2008 Info2, 1ère année SM/SMI 1

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Organigramme / Algorigramme Dossier élève 1 SI

Organigramme / Algorigramme Dossier élève 1 SI Organigramme / Algorigramme Dossier élève 1 SI CI 10, I11 ; CI 11, I10 C24 Algorithmique 8 février 2009 (13:47) 1. Introduction Un organigramme (ou algorigramme, lorsqu il est plus particulièrement appliqué

Plus en détail

Chap III : Les tableaux

Chap III : Les tableaux Chap III : Les tableaux Dans cette partie, on va étudier quelques structures de données de base tels que : Les tableaux (vecteur et matrice) Les chaînes de caractères LA STRUCTURE DE TABLEAU Introduction

Plus en détail

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014

Plan du cours 2014-2015. Cours théoriques. 29 septembre 2014 numériques et Institut d Astrophysique et de Géophysique (Bât. B5c) Bureau 0/13 email:.@ulg.ac.be Tél.: 04-3669771 29 septembre 2014 Plan du cours 2014-2015 Cours théoriques 16-09-2014 numériques pour

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if Pierre Boudes 28 septembre 2011 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike

Plus en détail

GUIDE Excel (version débutante) Version 2013

GUIDE Excel (version débutante) Version 2013 Table des matières GUIDE Excel (version débutante) Version 2013 1. Créer un nouveau document Excel... 3 2. Modifier un document Excel... 3 3. La fenêtre Excel... 4 4. Les rubans... 4 5. Saisir du texte

Plus en détail

Algorithmes et programmation en Pascal. Cours

Algorithmes et programmation en Pascal. Cours Algorithmes et programmation en Pascal Faculté des Sciences de Luminy Edouard Thiel Cours Deug 1 Mass MA Module de 75 heures 1997 à 2004 2 Algorithmes et programmation en Pascal Edouard Thiel Table des

Plus en détail

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

Plus en détail

Recherche dans un tableau

Recherche dans un tableau Chapitre 3 Recherche dans un tableau 3.1 Introduction 3.1.1 Tranche On appelle tranche de tableau, la donnée d'un tableau t et de deux indices a et b. On note cette tranche t.(a..b). Exemple 3.1 : 3 6

Plus en détail

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr 6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr Interface d un SGF Implémentation d un SGF Gestion de la correspondance entre la structure logique et la structure

Plus en détail

Python - introduction à la programmation et calcul scientifique

Python - introduction à la programmation et calcul scientifique Université de Strasbourg Environnements Informatique Python - introduction à la programmation et calcul scientifique Feuille de TP 1 Avant de commencer Le but de ce TP est de vous montrer les bases de

Plus en détail

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION 145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

Plus en détail

Le langage SQL Rappels

Le langage SQL Rappels Le langage SQL Rappels Description du thème : Présentation des principales notions nécessaires pour réaliser des requêtes SQL Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs,

Plus en détail

Examen Médian - 1 heure 30

Examen Médian - 1 heure 30 NF01 - Automne 2014 Examen Médian - 1 heure 30 Polycopié papier autorisé, autres documents interdits Calculatrices, téléphones, traducteurs et ordinateurs interdits! Utilisez trois copies séparées, une

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION En C

ALGORITHMIQUE ET PROGRAMMATION En C Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2

Plus en détail

1 Recherche en table par balayage

1 Recherche en table par balayage 1 Recherche en table par balayage 1.1 Problème de la recherche en table Une table désigne une liste ou un tableau d éléments. Le problème de la recherche en table est celui de la recherche d un élément

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

I. Introduction aux fonctions : les fonctions standards

I. Introduction aux fonctions : les fonctions standards Chapitre 3 : Les fonctions en C++ I. Introduction aux fonctions : les fonctions standards A. Notion de Fonction Imaginons que dans un programme, vous ayez besoin de calculer une racine carrée. Rappelons

Plus en détail

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Dossier I Découverte de Base d Open Office

Dossier I Découverte de Base d Open Office ETUDE D UN SYSTEME DE GESTION DE BASE DE DONNEES RELATIONNELLES Définition : Un SGBD est un logiciel de gestion des données fournissant des méthodes d accès aux informations. Un SGBDR permet de décrire

Plus en détail

Initiation à la programmation en Python

Initiation à la programmation en Python I-Conventions Initiation à la programmation en Python Nom : Prénom : Une commande Python sera écrite en caractère gras. Exemples : print 'Bonjour' max=input("nombre maximum autorisé :") Le résultat de

Plus en détail

Comprendre Merise et la modélisation des données

Comprendre Merise et la modélisation des données Comprendre Merise et la modélisation des données Tables des matières Avant-propos 1- Introduction 1-1 Principes fondateurs 1-2 Bases conceptuelles 1-3 Place de Merise dans le cycle de développement informatique

Plus en détail

Cours Informatique Master STEP

Cours Informatique Master STEP Cours Informatique Master STEP Bases de la programmation: Compilateurs/logiciels Algorithmique et structure d'un programme Programmation en langage structuré (Fortran 90) Variables, expressions, instructions

Plus en détail

UE C avancé cours 1: introduction et révisions

UE C avancé cours 1: introduction et révisions Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS

Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS Découverte du logiciel ordinateur TI-n spire / TI-n spire CAS Mémento Ouvrir TI-Nspire CAS. Voici la barre d outils : L insertion d une page, d une activité, d une page où l application est choisie, pourra

Plus en détail

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite. Mots-clés : Niveau : Bases de données relationnelles, Open Office, champs, relations,

Plus en détail

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009 Déroulement Algorithmes et structures de données Cours 1 et 2 Patrick Reuter http://www.labri.fr/~preuter/asd2009 CM mercredi de 8h00 à 9h00 (Amphi Bât. E, 3 ème étage) ED - Groupe 3 : mercredi, 10h30

Plus en détail

Excel 2007 Niveau 3 Page 1 www.admexcel.com

Excel 2007 Niveau 3 Page 1 www.admexcel.com Excel 2007 Niveau 3 Page 1 TABLE DES MATIERES UTILISATION DE LISTES DE DONNEES... 4 REMARQUES PREALABLES SUR LES LISTES DE DONNEES... 4 METTRE EN FORME LE TABLEAU... 6 METTRE LA LISTE A JOUR... 7 a/ Directement

Plus en détail

Initiation à Excel. Frédéric Gava (MCF) gava@univ-paris12.fr

Initiation à Excel. Frédéric Gava (MCF) gava@univ-paris12.fr Initiation à Excel Frédéric Gava (MCF) gava@univ-paris12.fr LACL, bâtiment P2 du CMC, bureau 221 Université de Paris XII Val-de-Marne 61 avenue du Général de Gaulle 94010 Créteil cedex Plan de cette année

Plus en détail

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE ARDUINO DOSSIER RESSOURCE POUR LA CLASSE Sommaire 1. Présentation 2. Exemple d apprentissage 3. Lexique de termes anglais 4. Reconnaître les composants 5. Rendre Arduino autonome 6. Les signaux d entrée

Plus en détail

Évaluation et implémentation des langages

Évaluation et implémentation des langages Évaluation et implémentation des langages Les langages de programmation et le processus de programmation Critères de conception et d évaluation des langages de programmation Les fondations de l implémentation

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE

clef primaire ; clef étrangère ; projection ; restriction ; jointure ; SQL ; SELECT ; FROM ; WHERE Cas Neptune hôtel Base de données et langage SQL Propriété Intitulé long Formation concernée Matière Notions Transversalité Présentation Description Neptune Hôtel. L interrogation d une base de données

Plus en détail

Bases de programmation. Cours 5. Structurer les données

Bases de programmation. Cours 5. Structurer les données Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et

Plus en détail

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN Les contenues de ce document sont la propriété exclusive de la société REVER. Ils ne sont transmis qu à titre d information et ne peuvent en aucun cas

Plus en détail

Rappels sur les suites - Algorithme

Rappels sur les suites - Algorithme DERNIÈRE IMPRESSION LE 14 septembre 2015 à 12:36 Rappels sur les suites - Algorithme Table des matières 1 Suite : généralités 2 1.1 Déition................................. 2 1.2 Exemples de suites............................

Plus en détail

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis

Plus en détail

Sélection du contrôleur

Sélection du contrôleur Démo CoDeSys - 1 - 1. Configuration de l environnement de travail : Lancer le logiciel CoDeSys Fichier Nouveau Lors de la première utilisation, une boîte de dialogue apparaît permettant la sélection du

Plus en détail

Rappels d architecture

Rappels d architecture Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée

Plus en détail

Informatique Générale

Informatique Générale Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) guillaume.hutzler@ibisc.univ-evry.fr Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html

Plus en détail

TD3 - Facturation avec archivage automatisé

TD3 - Facturation avec archivage automatisé TD3 - Facturation avec archivage automatisé Objectifs Insérer les formules nécessaires aux calculs d une facture. Créer une macro- commande avec l enregistreur de macros et l affecter à un bouton. Utiliser

Plus en détail

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET Brancher / débrancher l ordinateur de la prise Allumer / éteindre l ordinateur : pour allumer ou éteindre l ordinateur vous devez appuyer sur le bouton On/off

Plus en détail

Cours 1 : La compilation

Cours 1 : La compilation /38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas yrg@pps.univ-paris-diderot.fr PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà

Plus en détail

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ Auteur : S.& S. Etienne F7n COUP DE BOURSE, NOMBRE DÉRIVÉ TI-Nspire CAS Mots-clés : représentation graphique, fonction dérivée, nombre dérivé, pente, tableau de valeurs, maximum, minimum. Fichiers associés

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque 1 ENDNOTE X2 SOMMAIRE 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque 2. Manipuler une bibliothèque EndNote 2.1. La saisie

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

UML et les Bases de Données

UML et les Bases de Données CNAM UML et les Bases de Données UML et les Bases de Données. Diagramme de classes / diagramme d objets (UML)...2.. Premier niveau de modélisation des données d une application...2.2. Les éléments de modélisation...2.2..

Plus en détail

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1

Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1 Service des ressources informatiques - Conseil Scolaire de District Catholique Centre-Sud Page 1 Table des matières 1. Accéder au gestionnaire de notes... 3 2. Sélectionner une classe... 4 3. Première

Plus en détail

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...

Plus en détail

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES Dossier G11 - Interroger une base de données La base de données Facturation contient tout un ensemble d'informations concernant la facturation de la SAFPB (société anonyme de fabrication de produits de

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail