~~NOTOC~~ ======Les programmes (S) 5ème====== Une fois que la solution au problème informatique a été trouvée, il va falloir la communiquer à l'ordinateur ou au système embarqué afin qu'il puisse l'utiliser en temps que programme. Ce dernier, beaucoup plus rapide et fiable que l'être humain pourra alors montrer son intérêt en résolvant les problèmes de ses utilisateurs. **Compétences :** * 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 programme et les types de bloc qu'il utilise. * Je sais traduire sous forme de programme un algorithme. =====Le programme===== {{ :cours:etapesprogrammation.png?400 |}} Un **programme informatique** est un ensemble d'opérations normalisées destinées à être exécutées par un ordinateur. C'est la traduction de l'algorithme. Il n'existe qu'un langage (**le code machine**) compréhensible par l'ordinateur. Il faudra donc un **interpréteur** (traduction ligne par ligne) ou un **compilateur** (traduction en 1 seule fois) pour passer du langage de programmation au code machine. =====Les langages de programmation===== Les langages de programmation sont adaptées à un type de programmation donné. * **C++** pour les applications système, * **Java** pour les applications plateforme, * **PHP** pour les sites Internet, * **Scratch** et **Python** pour les débutants ... Certain langages, comme SCRATCH et ses dérivés, sont graphiques et utilisent la technique des blocs pour faciliter leur utilisation par les débutants. Les langages textuels, se composent d'instructions, généralement dérivées de mots anglais, et utilisent une syntaxe qu'il faut respecter pour leur écriture. Ils sont plus difficiles d'utilisation mais plus performants. Il existe de nombreux **langages de programmation** (Java, Python, PHP, C, SCRATCH ...) utilisables par l'être humain et chacun adaptés à un type de problèmes particuliers. Tous les langages utilisent des **variables**, des **boucles**, des **conditions**, des **instructions** générales. \\ Un **sous-programme** est une suite d'instructions spécifiées, écrit à coté du programme principal et généralement utilisé plusieurs fois dans le programme principal. {{ :cours:blocs_scratch.jpg?150|}} Au collège, nous programmerons avec des langages graphiques par bloc (SCRATCH, Blockly et mBloc). ====Scratch==== Scratch, comme tous les langages, se composent principalement de : * **variables** (entité mémoire) destinée à stocker une information modifiable. * **boucles** qui répètent (un nombre de fois ou jusqu'à ce qu'une condition soit validée) une série d'instructions, * **conditions** (vrai ou faux) qui exécutent ou pas une série d'instruction, * **d'instruction de traitement** sur des variables (données ou informations), * **d'instruction d'entrée sortie** (lecture ou écriture) d'information vers les périphériques (claviers, écran ...). * **sous-programme** qui permettent d'écrire une seule fois une partie de code utilisée plusieurs fois dans le programme ou une partie ayant un fonctionnement indépendant. ====La traduction de notre problème==== {{ :cours:compteur_scratch.png?400 |}} ===L'algorithme=== - Mettre un compteur à 0 - Répéter jusqu'à ce que le compteur soit > 20 - .... Dire la valeur du compteur - .... Faire l'opération compteur + 2 - Dire j'ai terminé ===Le programme utilise=== * une variable : COMPTEUR * une boucle : répéter jusqu’à * des opérateurs : > et + * des instructions : Dire, Faire, Mettre =====Exemple de programme avec Blockly===== Ce programme BLOCKLY est la traduction de l'algorithme du thermostat de chauffage vu précédemment. ==== Préparation de la liste des broches et des variables==== * Il utilise 4 broches pour les capteurs et les actionneurs * C.4 pour connecter le bouton de consigne de température (capteur) * C.5 pour connecter la sonde de température (capteur) * C.0 pour connecter la commande de chaudière (actionneur) * C.2 pour connecter le voyant de chauffage (actionneur) * Il nécessite 2 variables pour manipuler les données utiles : * varA pour contenir la valeur de CONSIGNE (variable) * varB pour contenir la valeur de TEMPÉRATURE (variable) ====Traduction de l'algorithme==== Le nom des capteurs, actionneurs et variables seront remplacé par leur équivalent du programme. \\ Le déroulement est le suivant : {{ :cours:project-s.png?250|}} - La chaudière (C.0) est arrêtée (désactivée). - Le voyant (C.2) est éteint (désactivé). - Le programme se répète à partir de là. - Lecture de la CONSIGNE dans varA. - Lecture de la température dans varB. - En fonction du test "TEMPÉRATURE (varB) < CONSIGNE (varA)" il démarre le chauffage. - La chaudière (C.0) est démarrée (activée). - Le voyant (C.2) est allumé (activé). - Sinon il l'arrête - La chaudière (C.0) est arrêtée (désactivée). - Le voyant (C.2) est éteint (désactivé). =====Pour aller plus loin===== Pour résoudre un problème informatique, je dois d'abord trouver et écrire l'algorithme qui convient. Ensuite, je le traduit dans un langage de programmation que je connais pour que l'ordinateur puisse l'utiliser. Enfin, je l'exécute directement avec l'interpréteur pour les langages tels SCRATCH et JavaScript ou je le compile en un programme exécutable (logiciel) pour les langages de haut niveau. * [[https://scratch.mit.edu|scratch.mit.edu]] Le site se SCRATCH pour s'entrainer à programmer * [[https://ide.mblock.cc|ide.mblock.cc]] Le site de mBlock pour programmer des objets * [[https://chrome.google.com/webstore/detail/picaxe-blockly/hhdlapnjifkkcpghcapopejopnbpapnb?hl=fr-FR|L'application PICAXE BLOCKLY]] pour programmer les circuits PICAXE * [[wpfr>Liste de langages de programmation]] existants ou obsolètes sur Wikipédia