INFORMATIQUE Introduction au langage C Julien VILLEMEJANE A travers ce cours ● Acquisiton de l'information ➔ ➔ ➔ ● Fonctionnement d'un système à processeur ➔ ➔ ● ➔ L'algorithmique comme langue universelle Choix du langage de programmation Le langage C ➔ ➔ ➔ 2 Fonctionnement d'un ordinateur / Processeur généraliste Fonctionnement d'un système embarqué / Microcontroleur Différents langages ➔ ● Le rôle de l'électronique Pourquoi le numérique ? Traitements de données numériques Un choix raisonné et raisonnable Les étapes de développement d'une application A quoi ça ressemble un programme en langage C ? Introduction au langage C / Julien VILLEMEJANE Acquisition de l'information ➔ ➔ ➔ Le rôle de l'électronique Pourquoi le numérique ? Traitements de données numériques Acquisition de l'information Le rôle de l'électronique ● Dans la nature, l'évolution continue des grandeurs ➔ ● Acquisition de grandeurs analogiques à l'aide de capteurs ➔ ➔ 4 Température, pression, luminosité… Signal de sortie analogue à la grandeur considérée Mise en forme du signal pour pouvoir l'exploiter Introduction au langage C / Julien VILLEMEJANE Acquisition de l'information Le rôle de l'électronique ● Dans la nature, l'évolution continue des grandeurs ➔ ● Acquisition de grandeurs analogiques à l'aide de capteurs ➔ ➔ ● Signal de sortie analogue à la grandeur considérée Mise en forme du signal pour pouvoir l'exploiter Comment transporter cette information ? ➔ 5 Température, pression, luminosité… Sur longue distance : perte d'information Introduction au langage C / Julien VILLEMEJANE Acquisition de l'information Vers le numérique ● Passage au numérique ➔ ➔ 6 Echantillonnage / Conversion Transmission numérique / Protocoles Introduction au langage C / Julien VILLEMEJANE CODAGE BINAIRE Acquisition de l'information Traitement des données numériques ● Deux types d'informations en numérique ➔ ➔ ● Plusieurs types de données : ➔ ➔ ● Différents types de systèmes numériques selon le type de données et l'application Nécessité de coder ces informations ➔ 7 Non numériques : caractères… Numériques : entiers, réels... Traitement par des systèmes numériques ➔ ● Instruction Donnée Normes de codage associées aux différentes unités de calculs Introduction au langage C / Julien VILLEMEJANE Comment fonctionne un système à processeur ? ➔ ➔ Fonctionnement d'un ordinateur Processeur généraliste Fonctionnement d'un système embarqué Microcontroleur Système à processeur Quels sont les systèmes numériques existants ? 9 Introduction au langage C / Julien VILLEMEJANE Système à processeur Quels sont les systèmes numériques existants ? ● ● 10 Processeur généraliste Microcontroleur 1A1S 1A1S et 1A2S Introduction au langage C / Julien VILLEMEJANE Système à processeur Processeur généraliste ● Processeur : unité de calculs précablés qui exécute des instructions séquentiellement sur des données ➔ ➔ ● Contient généralement : ➔ ➔ ➔ ➔ 11 Aussi appelé CPU – Central Processing Unit Grand nombre d'instructions précablées (environ 2000 instructions) Une unité de calcul arithmétique et logique (ALU) Une unité de controle Une horloge Des registres de stockage Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans un PC ? 12 Introduction au langage C / Julien VILLEMEJANE Système à processeur Et le système d'exploitation dans tout ça ? ● Ordinateur souvent multi-tâches ➔ ➔ 13 Du point de vue de l'utilisateur Mais processeur mono-tâche !! Introduction au langage C / Julien VILLEMEJANE Système à processeur Et le système d'exploitation dans tout ça ? ● Ordinateur souvent multi-tâches ➔ ➔ ➔ ● Exécution séquentielle !! Système d'exploitation = chef d'orchestre ! ➔ 14 Du point de vue de l'utilisateur Mais processeur mono-tâche !! Gestion des ressources : ➔ Processeur : allocation, ordonnancement ➔ Mémoire vive : allocation, swap ➔ Entrées / Sorties ➔ Exécution des applications ➔ Gestion des droits d'accès ➔ Gestion des fichiers Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans l'embarqué ? ● 15 Lancement du programme d'atterrissage Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans l'embarqué ? ● ● 16 Lancement du programme d'atterrissage Processeur généraliste souvent non temps réel Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans l'embarqué ? 17 Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans l'embarqué ? 18 Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans l'embarqué ? 19 Introduction au langage C / Julien VILLEMEJANE Système à processeur Et dans l'embarqué ? ● 20 Système embarqué : architecture matérielle spécifique combinée à un programme permettant d'interagir rapidement avec l'environnement Introduction au langage C / Julien VILLEMEJANE Système à processeur Microcontroleur ● Microcontroleur : unité de calcul séquentielle précablée ➔ ➔ ● Intègre : ➔ ➔ 21 Exécution d'une séquence d'instructions spécifique et en boucle Interaction avec l'extérieur à l'aide d'entrées/sorties réactives Des zones mémoires spécifiques Des modules de traitement de l'information et de télécommunications Introduction au langage C / Julien VILLEMEJANE Système à processeur Microcontroleur ● 22 De multiples applications Introduction au langage C / Julien VILLEMEJANE Différents langages ➔ ➔ L'algorithmique comme langue universelle Choix du langage de programmation Algorithme vs Programme Des algorithmes partout ! ● Des algorithmes depuis tout petit ➔ ➔ 24 S'habiller, se laver... Faire un puzzle, monter un meuble... Introduction au langage C / Julien VILLEMEJANE Algorithme vs Programme Un algorithme, c'est quoi ? ● ● La lecture et l'exécution d'un algorithme permet de résoudre un problème donné et d'en trouver la solution Moyen pour présenter une approche du problème à d'autres personnes ➔ ➔ ➔ Compréhensible par n'importe qui De haut niveau d'abstraction Précis, concis, structuré ALGORITHME ≠ PROGRAMME ● Nombreux langages de programmation ➔ ➔ 25 Nécessité d'une base commune : l'algorithmique Indépendant de tout langage Introduction au langage C / Julien VILLEMEJANE Algorithme vs Programme A quoi sert un programme ? ● Un programme est la traduction d'un algorithme dans un langage de programmation adapté ➔ ● Traitement de données pour fournir un résultat Deux types de problèmes peuvent être résolus : ➔ ➔ Décidables : 24 est-il décomposable ? Calculables : trouver le PDCD de 56 et 42 SEQUENTIELS 26 Introduction au langage C / Julien VILLEMEJANE Différents langages Choix du langage de programmation ● Langage compilé ➔ ➔ ➔ ● Langage interpreté ➔ ➔ 27 Peu portable Très rapide car directement exécuté sur le calculateur Propriété intellectuelle Très portable Lent à l'exécution car interprété par un logiciel tiers Introduction au langage C / Julien VILLEMEJANE Différents langages Choix du langage de programmation ● Langage compilé ➔ ➔ ➔ ● Langage interpreté ➔ ➔ 28 Peu portable Très rapide car directement exécuté sur le calculateur Propriété intellectuelle Très portable Lent à l'exécution car interprété par un logiciel tiers Introduction au langage C / Julien VILLEMEJANE ● Hybride Différents langages Choix du langage de programmation 29 Introduction au langage C / Julien VILLEMEJANE Différents langages Choix du langage de programmation http://rmdiscala.developpez.com/ 30 Introduction au langage C / Julien VILLEMEJANE Différents langages Choix du langage de programmation ● Les plus utilisés actuellement http://www.tiobe.com/ 31 Introduction au langage C / Julien VILLEMEJANE Le langage C ➔ ➔ ➔ Un choix raisonné et raisonnable Les étapes de développement A quoi ça ressemble du C ? Le langage C Un choix raisonné et raisonnable Créé au début des années 1970 ● ➔ ➔ Dennis Ritchie / Brian Kernighan Développement d'un système d'exploitation UNIX Langage multiplateforme ● ➔ ➔ Windows, Mac, Linux... Compilateurs disponibles pour de nombreux processeurs/microcontroleurs Langage intermédiaire ● ➔ ➔ ● Haut niveau : compréhensible par l'être humain Bas niveau : suffisamment proche de la machine pour accèder à des fonctions de bas niveau du processeur/microcontroleur Manipulation de données ➔ ➔ ➔ ➔ 33 Stockées dans des espaces mémoires Case élémentaire : 1 octet (8 bits) Connue par la machine par son adresse Connue par le programmeur par son nom Introduction au langage C / Julien VILLEMEJANE Le langage C Un choix raisonné et raisonnable ● Langage encore très répandu ➔ ➔ ➔ ➔ ➔ 34 Rapidité d'exécution Protection intellectuelle du code source Traitement de données Flux de données important Systèmes embarqués Introduction au langage C / Julien VILLEMEJANE Le langage C Les étapes de développement ● Processus de développement en 2 phases ● Phase de résolution ➔ ➔ ➔ ➔ 35 ● Compréhension du problème Ebauche d'une solution Solution détaillée / Algorithme Essais pas à pas avec des données Introduction au langage C / Julien VILLEMEJANE Phase de mise en œuvre ➔ ➔ ➔ ➔ Traduction dans un langage Ecriture du programme Correction syntaxique Essais avec des données Le langage C A quoi ça ressemble du C ? #include <stdio.h> #include <stdlib.h> int main(){ int a = 3 ; int k = 5 ; double c = 0 ; c = a * k / 2; printf(''Résultat =%lf \n'', c); c = 3.0 * 3.3; printf(''Résultat =%lf \n'', c); return 0; } 36 Introduction au langage C / Julien VILLEMEJANE Le langage C A quoi ça ressemble du C ? #include <stdio.h> #include <stdlib.h> int main(){ int a = 3 ; int k = 5 ; double c = 0 ; ● c = a * k / 2; printf(''Résultat =%lf \n'', c); c = 3.0 * 3.3; printf(''Résultat =%lf \n'', c); return 0; } 37 Introduction au langage C / Julien VILLEMEJANE Par rapport au python ➔ ➔ ➔ Bloc d'instructions entre { } Indentation = meilleure lisibilité Variables typées !