~~NOTOC~~ ======Algorithme (S) 5ème====== Pour piloter le fonctionnement de nombreux objets techniques, on fait appel à des programmes. Mais avant de écrire un programme sur l'ordinateur, il faut réfléchir au problème à résoudre et trouver la solution à appliquer. Un programme ne pourra fonctionner correctement que s'il a été réfléchi et prévoit tous les cas de fonctionnement possible. **Compétences :** * CT 1.3 – CT 2.5 – CT 2.7 - DIC 1.5 : Imaginer des solutions pour produire des objets et des éléments de programmes informatiques en réponse au besoin. * CT 3.1 - OTSCIS 2.1 : Exprimer sa pensée à l’aide d’outils de description adaptés : croquis, schémas, graphes, diagrammes, tableaux. * CT 4.2 – CT 5.5 - IP 2.3 : Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs. **J’ai acquis la compétence si : ** * Je sais ce qu'est un algorithme et les règles qu'il respecte. * Je sais écrire sous forme d'algorithme la solution d'un problème informatique simple. Nous allons étudier ici l'algorithme qui est la parti la plus importante de la programmation. L'algorithme est la solution du problème. Il fonctionnera avec n'importe quel langage de programmation. =====Les étapes de la programmation===== "Écrire un algorithme" est la 1ère étape de ce qui mis bout à bout permettra à un ordinateur d'exécuter une tâche. {{ :cours:etapesprogrammation.png?400 |}} Pour utiliser un programme informatique afin résoudre un problème à l'aide d'un microcontrôleur ou d'un ordinateur, il faut : * **Définir l'algorithme**. Il permet, en français, d'expliquer la solution permettant de résoudre le problème et de vérifier que tous les cas de fonctionnement aient été prévus. Si l'algorithme ne fonctionne pas le programme ne pourra pas fonctionner. * **Traduire l'algorithme en un programme**. En fonction du type de problème et du matériel disponible, l'algorithme doit être traduit dans un des nombreux langages de programmation disponibles. C'est une manière normalisée et compréhensible par tous les programmeurs (de n'importe quel pays) d'exprimer la solution. * **Interpréter ou compiler le programme en code machine** le programme, bien que normalisé, est toujours un langage humain. Un programme déjà existant permet toutefois l'effectuer une nouvelle traduction en la seule chose compréhensible par l'ordinateur, une suite de 0 et 1, le code machine. **Programmer comporte 3 étapes :** * **Résoudre et expliquer le problème** à l'aide d'un langage textuel ou graphique dans le langage natif du programmeur : **L'algorithme ou organigramme** * **Traduire l'algorithme** en un des nombreux langages de programmation existant afin de le mettre sous une forme normalisée et internationale : **Le programme** * **Compiler le programme** dans la langue des ordinateurs (0 et 1) : **Le code machine** =====Algorithme===== * Un **algorithme** s'exprime dans le langage textuel naturel au programmeur * Il n'est pas réellement un programme mais une méthode à suivre adaptée au problème * Il utilise des pseudo instructions (faire, répéter ..., si ... alors ... sinon ...) pour exprimer chaque action * Il est structuré grâce à des indentations (décalages en début de lignes) dans le but d'être plus facilement lisible et compréhensible. Une recette de cuisine est un algorithme. ===Problème exemple=== __Je veux compter de 0 à 20, 2 par 2 (+2)__ - Mettre un compteur à 0 (condition de début) - Répéter jusqu'à ce que le compteur soit >20 (condition de fin). [20 fait parti du comptage d'où compteur>20 pour que le comptage s'arrête] - .... Dire la valeur du compteur (communiquer les résultats) - .... Faire l'opération compteur + 2 (Comptage 2 par 2) - Dire "J'ai fini !" //Tout ce qui est décalé "indenté" (3 et 4) doit être répété jusqu'à la fin.// **Un algorithme est une méthode générale pour atteindre la solution d'un problème.** C'est une suite finie et non ambigüe d’opérations simples permettant de résoudre le problème. Il est exprimé **en langage naturel** (pour nous en français) et en respectant certaines règles comme l'**indentation**. =====Organigramme===== Un algorithme peut être représenté graphiquement sous la forme d'un **organigramme**. Pour comprendre son déroulement, il suffit de suivre les flèches qui relient les blocs. Chaque forme de bloc correspond à un type d'instruction. {{ :cours:compteur_organigramme.png?300|}} ===Problème exemple=== __Je veux compter de 0 à 20, 2 par 2 (+2)__ * Les rectangles indiquent les actions internes au programme (affectation de variable, calcul ...) * Les parallélogramme indiquent une entrée/sortie d'information * Les losanges indiquent les conditions/choix et disposent de 2 sorties (vrai ou faux) * Les flèches indiquent le sens de lecture. Une flèche qui remonte signale une répétition. \\ **Un organigramme est aussi une méthode générale pour atteindre la solution d'un problèmes.** Il est exprimé **sous une forme plus graphique** mais toujours en français et en respectant **certaines règles**. =====Autre exemple===== L'algorithme du thermostat qui régule le chauffage peut être écrit de la manière suivante. Ci dessous sa traduction graphique (organigramme) et textuelle (algorithme). {{ :cours:algorithme_chauffage.png?400 |}} 01 Mettre la chaudière à l'arrêt pour des raisons de sécurité 02 Éteindre le voyant de chauffage 03 Répéter indéfiniment 04 Lire la valeur de CONSIGNE 05 Lire la sonde de TEMPÉRATURE 06 Si TEMPÉRATURE < CONSIGNE alors 07 Mettre la chaudière en marche 08 Allumer le voyant de chauffage 09 Sinon 10 Arrêter la chaudière 11 Éteindre le voyant de chauffage * **variables** : Lignes 4 et 5 la valeur de la CONSIGNE et de la TEMPÉRATURE sont rangées dans 2 variables. * **répétitions** : Lignes 3 le programme est répété indéfiniment à partir d'ici jusqu'à son arrêt (coupure énergie). * **conditions** : Si TEMPÉRATURE < CONSIGNE j'exécute les lignes 07 et 08 ; Sinon j'exécute les lignes 10 et 11. Après la ligne 8 ou 11 le programme continuerai à la ligne 12 qui n'existe pas, il reprend donc à la boucle ligne 3 qu'il a mémorisé. =====Pour aller plus loin===== Si j'ai correctement pensé la solution de mon problème informatique et si je l'ai correctement rédigé, n'importe qui qui lit mon algorithme ou organigramme doit arriver à un résultat correct quelles que soit les données. * [[https://jean-rostand.ecollege.haute-garonne.fr/lectureFichiergw.do?ID_FICHIER=32833|Fiche ressource algorigramme PDF]] * [[wpfr>Algorithme]] sur Wikipédia * [[https://jean-rostand.ecollege.haute-garonne.fr/lectureFichiergw.do?ID_FICHIER=32832|Exercices d'entraînement PDF]]