Introduction au langage C

publicité
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 !
Téléchargement