Algorithmique et programmation Un algorithme, c'est une méthode. Une façon systématique de procéder pour faire quelque chose : trier des objets, situer des villes sur une carte, multiplier deux nombres, extraire une racine carrée, chercher un mot dans le dictionnaire… Définition (Larousse): (latin médiéval algorithmus, latinisation du nom du mathématicien persan Al-Khwa-Rizm (Bagdad, 780 – 850), avec influence du grec arithmos, nombre) Ensemble de règles opératoires dont l'application permet de résoudre un problème énoncé au moyen d'un nombre fini d'opérations. Un algorithme peut être traduit, grâce à un langage de programmation, en un programme exécutable par un ordinateur.
Quelques points importants : Un algorithme décrit un traitement sur un ensemble fini de données de nature simple (nombres ou caractères), ou plus complexes (données structurées) est constitué d’un ensemble fini d’actions composées d’opérations ou actions élémentaires. doit toujours se terminer après un nombre fini d’opérations. nécessite un langage clair (compréhension) structuré (enchaînements d’opérations) non ambiguë, universel (indépendants du langage de programmation choisi)
Cycle de développement Problème à résoudre Problème spécifique Algorithme Programme Résultat
Cycle de développement Problème à résoudre Problème spécifique Algorithme Programme Résultat ANALYSE : Phase de réflexion qui permet • D'identifier précisément le problème • D'identifier les caractéristiques du problème à traiter • données • résultats • cas particuliers • traitement,... • De découper le problème en une succession de taches simples et distinctes (sous-problèmes).
Cycle de développement Problème à résoudre Problème spécifique Algorithme Programme Résultat Conception : Suite des opérations a mettre en œuvre pour obtenir un résultat a partir de données Faire ressortir la logique de la résolution du problème Proche mais indépendant des langages de programmation Obtenir le résultat correct quelles que soient les valeurs des données
Cycle de développement Problème à résoudre Problème spécifique Algorithme Programme Résultat Codage : Programme: Un ou plusieurs fichiers texte contenant des instructions permettant de résoudre le problème posé, écrites dans un langage informatique (ex:JAVA, C, FORTRAN, COBOL, BASIC,...). Remarque: certains sous-programmes peuvent être stockes dans des fichiers annexes au programme bibliothèque de fonctions Programmation: Traduction du langage algorithmique en langage de programmation.
Cycle de développement Problème à résoudre Problème spécifique Algorithme Programme Résultat Test : Compilation: Transformation en langage machine d’un programme écrit en langage de programmation. ⇒ Utilisation d’un compilateur: ex dev C++ Crée le fichier contenant le programme exécutable. Exécution: L’ordinateur effectue les instructions du programme.
Structure d’un algorithme déclaration des variables début instructions ...... fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; début écrire"Quel est votre nom?"; lire nom; salutation← "Bonjour"+nom; écrire salutation; fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; // déclaration des variables Début Écrire « Quel est votre nom? »; lire nom; salutation← « Bonjour » + nom; écrire salutation; Fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; // déclaration des variables Début //préparation du traitement Écrire « Quel est votre nom? »; lire nom; salutation← « Bonjour » + nom; écrire salutation; Fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; // déclaration des variables Début //préparation du traitement Écrire « Quel est votre nom? »; // affichage d’une chaine lire nom; //lecture d’une chaine salutation← « Bonjour » + nom; Fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; // déclaration des variables Début //préparation du traitement Écrire « Quel est votre nom? »; // affichage d’une chaine lire nom; //lecture d’une chaine salutation← « Bonjour » + nom; //traitement et affectation écrire salutation; Fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; // déclaration des variables Début //préparation du traitement Écrire « Quel est votre nom? »; // affichage d’une chaine lire nom; //lecture d’une chaine salutation← « Bonjour » + nom; //traitement et affectation écrire salutation; //Présentation du résultat : //affichage d’une chaine Fin
Structure d’un algorithme Exemple: on veut écrire un algorithme permettant de saluer une personne qui donne son nom. Spécification du problème: Données: nom de la personne résultat: afficher 'bonjour' suivi du nom principe: saisir le nom, créer le message, puis l'afficher Algorithme Chaîne nom, salutation; // déclaration des variables Début //préparation du traitement Écrire « Quel est votre nom? »; // affichage d’une chaine lire nom; //lecture d’une chaine salutation← « Bonjour » + nom; //traitement et affectation écrire salutation; //Présentation du résultat : //affichage d’une chaine Fin //fin du traitement
Les variables • Les variables stockent les données traitées par les instructions. • Une variable est caractérisée par : • son nom • son type • sa valeur (variable au fur et à mesure des instructions) • Un programme peut utiliser autant de variables que nécessaire. Elles sont stockées en mémoire à une certaine adresse. • Une variable peut être vue comme une boîte, portant un nom, qui contient une valeur dont on connaît le type.
Les variables Dans un algorithme, choisir pour les noms de variables : • un nom compose de lettres et éventuellement de chiffres • un nom expressif, par exemple : - chaine, requête1... pour une chaine de caractères - n, a, b, compteur, nbOperations, longueur... pour un entier - x, y, température pour un réel - estEntier, testEntier, trouvé... pour un booléen • un nom assez court (il faut l‘écrire !) • éviter les noms réserves : pour, tant que, si... Dans un programme : • éviter les lettres accentuées et la ponctuation • être expressif et lisible : - est_entier ou estEntier plutot que estentier Votre code sera relu, par vous ou par d'autres...
Les variables Quelques exemples... a x 1variable solution%1 solution1 reel unReel a/b s1_4_Xt
Les variables Quelques exemples... a : nom valide x : nom valide 1variable : nom non valide solution%1 : nom non valide solution1 : nom valide reel : nom non valide unReel : nom valide a/b : nom non valide s1_4_Xt : nom valide
Les variables Types de variables : Détermine les opérations utilisables sur la variable Quelques types : réel ex. : 1.3, 4.0,π , entier ex. : 1, 2, -10, ... booléen vrai, faux caractères ex. : 'a', 'b', 'A', '1', ' !', ... chaîne ex. : "Bonjour", "Merci !", "1.3", "vrai", ...
Les variables Une variable doit être déclarée : une fois et une seule avant toute utilisation Syntaxe : type nom_de_variable; Il est possible de déclarer plusieurs variables de même type sur une même ligne, en séparant les noms de variables par une virgule Syntaxe : type nom_de_variable_1, nom_de_variable_2;
Les variables L'affectation change la valeur d'une variable : • a ← 5 : - la variable a prend la valeur 5 - la valeur précédente est perdue (“écrasée”)
Les variables L'affectation change la valeur d'une variable : • a ← 5 : - la variable a prend la valeur 5 - la valeur précédente est perdue (“écrasée”) • a ← b : - la variable a prend la valeur de la variable b - la valeur précédente de a est perdue (“écrasée”) - la valeur de b n'est pas modifiée - a et b doivent être de même type (ou de types compatibles)
Les variables Attention! Exemples réel x,y,z ; début Fin • Lors d'une déclaration de variable, aucune valeur n'est affectée à la variable, • Une variable doit être affectée avant d'être utilisée dans une expression. Exemples réel x,y,z ; début x 1; z x+y; Fin
Les variables Attention! Exemples réel x,y,z ; début Fin • Lors d'une déclaration de variable, aucune valeur n'est affectée à la variable, • Une variable doit être affectée avant d'être utilisée dans une expression. Exemples réel x,y,z ; début x 1; z x+y; // problème: y n’a pas de valeur Fin
Les variables Exemples Quelles sont les valeurs successives prises par les variables X et Y suite aux instructions suivantes : X Y X 1 ; Y -4 ; X X+3 ; X Y-5 ; Y X+2 ; Y Y-6 ;
Les variables Exemples Quelles sont les valeurs successives prises par les variables X et Y suite aux instructions suivantes : X Y X 1 ; 1 Y -4 ; -4 X X+3 ; 4 X Y-5 ; -9 Y X+2 ; -7 Y Y-6 ; -13
Instructions d’entrée / sortie Saisir au clavier et Afficher à l'écran lire Affecte à une variable la valeur lue au clavier, c.à.d. une valeur saisie au clavier par l'utilisateur. écrire Affiche (à l'écran) la valeur d'une variable, d'une constante, ... Exemple 1 : début écrire "Bonjour tout le monde" ; fin
Instructions d’entrée / sortie Saisir au clavier et Afficher à l'écran lire Affecte à une variable la valeur lue au clavier, c.à.d. une valeur saisie au clavier par l'utilisateur. écrire Affiche (à l'écran) la valeur d'une variable, d'une constante, ... Exemple 1 : début écrire "Bonjour tout le monde" ; Fin Exemple 2: chaîne unNom; unNom "Bob"; écrire "Bonjour"; écrire unNom; écrire "!"; fin
Instructions d’entrée / sortie Saisir au clavier et Afficher à l'écran lire Affecte à une variable la valeur lue au clavier, c.à.d. une valeur saisie au clavier par l'utilisateur. écrire Affiche (à l'écran) la valeur d'une variable, d'une constante, ... Exemple 3 : chaîne unNom; entier unAge; début écrire "Quel est ton nom ?"; lire unNom ; écrire "Quel est ton âge ?"; lire unAge ; écrire "Bonjour"; écrire unNom; écrire "tu as "; écrire unAge; écrire "an(s) !"; fin
Opérateurs • Similaires aux opérateurs en mathématiques • Permettent d'effectuer des opérations arithmétiques, booléennes, ou sur des chaînes. Exemple + nombre : addition, chaîne : concaténation - nombre : soustraction * nombre : multiplication / réel : division div entier : division entière mod entier : reste de la division entière (modulo) ==, <, <=, >, >= nombre : égalité et, ou, non booléen : 'et', 'ou', 'non' logique
Opérateurs Ordre évaluation • Que vaut : 3 + 4 * 5 ? Règles d'évaluation : MEFIEZ-VOUS ! de nombreux détails diffèrent selon les langages informatiques. • évaluation des expressions entre parenthèses (et des appels de fonctions) • priorité des opérateurs - (unaire) puis * / puis + -(soustraction) • évaluation de gauche à droite si même priorité
INSTRUCTIONS CONDITIONNELLES Syntaxe si (condition) alors instructions ; sinon finsi • évaluer la condition (expression booléenne) • en fonction de la valeur (vraie ou fausse), exécuter l’instruction du alors ou du sinon • continuer avec les instructions après le finsi
INSTRUCTIONS CONDITIONNELLES exemple
INSTRUCTIONS CONDITIONNELLES Conditionnelles emboitées
INSTRUCTIONS CONDITIONNELLES Sélection sur choix multiples : Lorsqu’il y a plus de 2 choix possibles, l’instruction selon que permet une écriture plus lisible: selon que variable valeur : instructions … autres: instructions
INSTRUCTIONS CONDITIONNELLES exemple: Selon que abréviation "M" : écrire " Monsieur " "Mme" : écrire " Madame " "Mlle" : écrire " Mademoiselle " autres: écrire " Monsieur, Madame "
INSTRUCTIONS CONDITIONNELLES exemple: selon que abréviation "M" : écrire " Monsieur " "Mme" : écrire " Madame " "Mlle" : écrire " Mademoiselle " autres: écrire " Monsieur, Madame " Équivalent de : si abréviation = "M " alors écrire " Monsieur " sinonsi abréviation = "Mme " alors écrire " Madame " sinonsi abréviation = "Mlle" alors écrire " Mademoiselle " sinon écrire " Monsieur, Madame " finsi
INSTRUCTIONS CONDITIONNELLES Une condition est une comparaison. C’est-à-dire qu’elle est composée de trois éléments une valeur un opérateur de comparaison une autre valeur Opérateurs logiques > < == ≥ ≤ NON
INSTRUCTIONS CONDITIONNELLES Conditions composées OU ET Exemple si vacances et soleil alors écrire « allons à la plage » finsi