~~NOTOC~~ ======Les programmes (B->D) 4è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. =====Les langages de programmation===== Il existe de nombreux **langages de programmation** (Basic, Java, Python, PHP, C, SCRATCH ...) utilisables par l'être humain et chacun adaptés à un type de problème 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. * Le BASIC en 1964 et SCRATCH aujourd'hui ont été inventés pour les débutants * JAVA en 1990 est destiné à permettre à un programme de fonctionner sur tout type de plateforme (Windows, Linux, Android ...) * PHP en 1994 est un langage spécialisé pour créer des sites Internet dynamiques. * C en 1970 pour écrire les systèmes d'exploitation des ordinateurs. Avec ses dérivés, il est très utilisé pour les automatismes et microcontrôleurs utilisant directement les entrées sorties machine. Certain langages, comme SCRATCH, peuvent être graphiques et utiliser la technique des blocs pour faciliter leur utilisation par les débutants. =====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 programmes se composent d'instructions, généralement dérivées de mots anglais, et utilisent une syntaxe qu'il faut respecter pour leur écriture. Certains langages utilisent une programmation par blocs graphiques (SCRATCH, BLOCKLY ...). Les programmes 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 informatiques (claviers, écran ...) mais aussi les capteurs (entrée) et actionneurs (sortie) des objets. * **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. Au collège, nous programmerons avec des langages graphiques par bloc (SCRATCH et mBloc). =====Exemple 1===== Ce programme SCRATCH est la traduction de l'algorithme convertissant un nombre décimal en nombre binaire. {{ :cours:img_prog_scratch.jpg?600 |}} Il nécessite 3 variables (NOMBRE, SEUIL et RÉPONSE) pour manipuler les données utiles : * NOMBRE = nombre décimal à convertir * SEUIL = valeur décimale de la colonne du tableau binaire * RÉPONSE = nombre binaire calculé Le déroulement est le suivant : - Il demande la saisie du nombre à convertir et le range dans la variable NOMBRE. Il contrôle si la valeur saisie est dans les limites d'un octet sinon il signale l'erreur et arrête tout. - Il initialise les 2 autres variables utiles à leur valeur de départ. - Il répète la séquence d'instructions principale 8 fois. - En fonction du test "NOMBRE < SEUIL" il met à jour RÉPONSE et NOMBRE. - Il met à jour SEUIL pour traiter la colonne suivante. - Il affiche le résultat lorsque les 8 boucles ont été effectuées. =====Exemple 2===== Ce programme JavaScript est la traduction du même algorithme dans un langage textuel. {{ :cours:img_prog_js.jpg?600 |}} Les variables sont définies avec "var". En plus des opérateurs arithmétiques classiques, il existe un opérateur pour incrémenter "++" (+1) et un pour concaténer "." (ajouter à la suite). Les boucles le sont avec "for" (on indique la condition de départ, de fin et à chaque répétition). Les conditions avec "if ... else ...". Il existe des fonctions (bloc d'instructions prédéfinies) comme "prompt (...)" entrer une valeur et "print (...)" sortir une valeur. La syntaxe impose des ";" en fin d'instruction et des crochet pour les regrouper en bloc (l'indentation n'est pas nécessaire en JavaScript mais rend le programme plus lisible). Les lignes commençant par 2 barres obliques à gauche sont des commentaires sans effets sur le programme mais très utiles pour les programmeurs. =====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