Jean-Philippe PERNIN Université Stendhal Département Informatique Pédagogique Bureau I113 Mél. : Algorithmique : Programmes et données
2 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 L'approche algorithmique (Approche procédurale, programmation structurée) Origine du terme : –Al Kwarismi : mathématicien arabe (Xème siècle) Algorithme = Ensemble de règles opératoires définissant une suite finie d'opérations à effectuer, en vue d'obtenir la solution d'un problème donné. Deux activités distinctes : –1. Conception d'un algorithme produisant le résultat cherché –2. Rédaction de l'algorithme dans un langage de programmation donné (par exemple JavaScript)
3 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Deux étapes : conception et programmation AFFICHER "Donne ton age" LIRE age de l'utilisateur SELON LE CAS | SI l'age est inférieur ou égal à 18 | AFFICHER "Tu es jeune" | SI l'age est entre 19 et 29 | AFFICHER "Tu es vieux" | SINON | AFFICHER "Tu es très vieux" 1. CONCEVOIR L'ALGORITHME var age age = prompt ("Quel est ton age ?", "") if (age <= 18) { alert ("tu es jeune"); } else { if ( (age >= 19) &&( age <=29)) { alert ("tu es vieux" ) ; } else { alert (" tu es tres vieux") ; } 2. TRADUIRE L'ALGORITHME EN JAVASCRIPT
4 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Deux étapes : conception et programmation AFFICHER "Donne ton age" LIRE age de l'utilisateur SELON LE CAS | SI l'age est inférieur à 18 | AFFICHER "Tu es jeune" | SI l'age est entre 19 et 29 | AFFICHER "Tu es vieux" | SINON | AFFICHER "Tu es très vieux" var age age = prompt ("Quel est ton age ?", "") if (age < 18) { alert ("tu es jeune"); } else { if ( (age >= 19) &&( age <=29)) { alert ("tu es vieux" ) ; } else { alert (" tu es tres vieux") ; } ERREUR DE CONCEPTION La conception d'un algorithme juste est une activité plus complexe que la maîtrise d'un langage de programmation
5 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Algorithme : une première définition Combinaison d'actions qui agissent sur des données –Qu'est ce qu'une action ? Le concept d'action élémentaire Le concept d'action complexe : l'analyse descendante –Comment combiner les actions ? la composition séquentielle la composition conditionnelle la composition alternative la composition itérative –Comment décrire les données ? les types simples de données les types complexes de données
6 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Ex: Recette de Gâteau glacé Forêt noire, sauce à la vanille et au kirsch 1. Dans une casserole, faire bouillir le lait, la crème et les gousses de vanille 2. Faire mousser les jaunes d'oeufs avec le sucre. 3. Ajouter le mélange bouillant tout en remuant. 4. Remettre la sauce dans la casserole 5. Remuer sans arrêt jusqu'au point d'ébullition (ne pas bouillir). 6. Laisser refroidir, 7. Enlever les gousses de vanille 8. Parfumer au kirsch. Ingrédients: 2 dl de lait 2 dl de crème 2 gousses de vanille 4 jaunes d'oeufs 60 g de sucre un peu de kirsch. Description des données (ingrédients) à manipuler Le résultat : transformation des données initiales Traitement Description de la marche à suivre pour obtenir le résultat
7 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Programme = séquence d'actions Le programme principal décrit la séquence d'actions qui vont être exécutées. Le programme est écrit uniquement avec les termes ou les conventions autorisées dans le langage. Début Programme Action1 Action2.... Fin Programme
8 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Action nommée ou procédure Afin de rendre le programme plus lisible on peut nommer une séquence d'actions (ou procédure) Cette procédure peut être appelée depuis le programme principal ou depuis d'autres procédures Début Programme appeler Action1 Action2.... Fin Programme procédure Action1.... Fin Procédure
9 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Structure d'un programme Programme = DONNEES + TRAITEMENTS Un programme doit toujours modifier des données sinon il ne fait rien Programme Description des données: Description des traitements début fin
10 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Comment décrire les données ? Une donnée est désignée par un nom –EX: lait, oeuf, farine, roue, nombre de roues, age, taille,... Une donnée est caractérisée par une valeur : –Ex: Taille : 170 cm –DateNaissance : 21 Janvier 1975 –Age : 22 ans –Prénom : Nestor Une donnée peut être constante ou variable.
11 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Données constantes ou variables ? CONSTANTES : DateNaissance, Prénom –Donnée dont la valeur ne varie jamais pendant le déroulement des traitements VARIABLES : Age, Taille –Donnée dont la valeur peut varier pendant le déroulement des traitements
12 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Déclaration de constantes en Javascript // Déclaration des constantes Pi = 3.14; // valeur de la constante Pi NbDeRoues = 4; // nombre de roues Nom de la constante Ni blanc, ni caractères spéciaux (é,è,à,...) Sensible au majuscules (case-sensitive) Valeur de la constante Pi = 3.14 ; Symbole = Symbole ; termine chaque déclaration
13 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Traduction des données en informations machine Programme Source Description des données: Description des traitements début fin Programme Exécutable Les données doivent pouvoir être traduites en informations manipulables par la machine Les traitements doivent pouvoir être traduits en instructions de la machine Programmation Programmeur
14 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Format des données élémentaires L'unité d'information pour la machine est l'octet. Comment traduire une donnée en une suite d'octets ? 1. Adopter un code de représentation 2. Choisir un format (nombre d'octets) un nombre Entier Code binaire Deux octets un caractère Une chaine de caractères Une valeur logique ABA Dépend de la longueur de la chaine Code ASCII, UNICODE true Un octet Convention VRAI = FAUX = A Code ASCII, UNICODE Un octet
15 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Nécessité de décrire le type des données variables Pour pouvoir être traduite en informations manipulable par la machine, il est nécessaire de typer les données variables : Description des variables Age : un entier EstPlein : un logique (vrai ou faux) Nom : une chaine A chaque variable déclarée, on réserve une zone de la mémoire correspondant à la taille nécessaire au codage de l'information mémoire
16 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 56 Notion de Variable Emplacement "virtuel" dans lequel est stocké provisoirement une valeur A Valeur Emplacement Nom de la variable
17 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Chaque variable ne peut contenir que des valeurs d'un certain type A Enveloppe type Logique true B Enveloppe type Entier 356 C Enveloppe type Chaîne Il était une fois, il y a très très longtemps
18 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Caractéristiques d'une variable Une variable est caractérisée par : un nom –exemple : Hauteur un type. exemples de types de base : –entier (en Pascal : integer)(en Javascript : Number) –réel (en Pascal : real)(en Javascript : Number) –logique (en Pascal : boolean)(en Javascript : Boolean) –texte (en Pascal : string)(en JavaScript : String) une valeur qui peut varier selon le déroulement du programme –exemple : 123
19 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Etapes à suivre 1.Créer ( =déclarer) la variable –var ENTIER minimum 2.Mettre une valeur (=Affecter) dans la variable (La valeur doit être de même type que la variable) –minimum 955 ; 1.Utiliser la valeur contenue dans la variable –circonference minimum ; minimum type entier 356 minimum type entier 356 circonference type entier 356
20 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Déclaration des variables // Déclaration des variables var Diametre ; // Diametre est un entier var Nom, Prenom ; // Nom et Prenom sont des chaînes Lexique Diamètre : un entier Nom, Prénom : des chaines en notation algorithmique en Javascript (langage faiblement typé)
21 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Affectation de variables Diametre = 4 Diametre 4{mettre 4 dans diametre} Diametre Diametre + 1{ajouter 1 à diametre} Circonference Pi * Diametre{calculer la circonference} en notation algorithmique en Javascript Partie Gauche Toujours le nom d'une variable Partie Droite Une expression dont le résultat est compatible avec le type de la variable Symbole = affectation ATTENTION : RISQUE DE CONFUSION AVEC L'EGALITE
22 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Lecture d'une variable diametre = prompt ("Quel diamètre ?", 0) ; lire (Diamètre){mettre dans diamètre la valeur saisie} en notation algorithmique en Javascript Partie Gauche Nom de la variable à lire (dans laquelle sera mis le résultat) Instruction de lecture Message à afficher Valeur proposée
23 Copyright - Jean-Philippe Pernin - DIP - Université Stendhal - Grenoble 3 Ecriture d'une variable alert (diametre) ; ecrire (Diamètre){Afficher à lécran la valeur contenue dans diamètre} en notation algorithmique en Javascript Instruction d'écriture alert Nom de la variable à écrire