Vous êtes sur la page 1sur 9

Introduction à la programmation C

Cours n°1
Introduction à la – Généralité sur l’informatique
• Qu’est que la programmation ?
programmation C • Différents langages de programmation
• Environnement de programmation
Fabien Calcado – Linux : la console
• Commandes de bases UNIX
• Compiler un programme
Email: fabien.calcado@isty.uvsq.fr – Représentation et stockage de l’information
• Exprimer des nombres en base 2, 10, 16, etc.
• Passage d’une base à l’autre

Fabien Calcado
CPI1 – In 1001 – ISTY 2017/2018 1 CPI1 – In 1001 – ISTY 2016/2017 2

Introduction à la programmation C Introduction à la programmation C


Programmation
Système informatique – Algorithme
• Séquence bien définie d’opérations (calcul, manipulation de
– Ensemble de moyens coopérant pour permettre un données, etc.) permettant d’accomplir une tâche en un nombre
traitement automatique de l’information fini d’opérations
• Partie matérielle dite « hardware » » Moyen pour le programmeur de présenter son approche du problème à
• Partie logicielle dite « software » d'autres personnes
» En principe il reste indépendant de toute implémentation
Utilisateur – Programme
• Réalisation dans un langage (de programmation) particulier
Programme utilisateur d’un algorithme destiné à être exécuté de manière automatique
software
Données Données
Système d’exploitation Traitements
en entrée en sortie

Hardware Matériel (ordinateur & périphériques) Données


intermédiaires
Fabien Calcado Fabien Calcado
CPI1 – In 1001 – ISTY 2016/2017 3 CPI1 – In 1001 – ISTY 2016/2017 4
Introduction à la programmation C Introduction à la programmation C

Cycle de développement d’un programme Différents langages de programmation


– Analyse – L’ordinateur ne comprends que le langage binaire {0,1}
• Définition du problème • 011101000100011  Besoin de langages simplifiés qui
– Conception (algorithme) seront ensuite traduits en langage machine (ou binaire)
• Définition précise des données, des traitements et de leur – Langages dits de « haut niveaux »
séquencement • Plus proche de notre langue, au sens général, donc
» Un algorithme doit être indépendant du langage de programmation cible beaucoup plus facile à utiliser
– Implémentation (codage ou programmation) » Quelques exemples : C, C++, Java, Visual Basic…

• Traduction et réalisation des données et des algorithmes dans – Qu’est que le code source ?
le langage de programmation cible • Le code de votre programme écrit dans un langage de haut
» Langage cible pour nous  Langage C niveau
» C’est donc ce code source que vous écrivez et qui sera traduit en
– Test
langage binaire
• Vérification du bon fonctionnement du programme

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 5 CPI1 – In 1001 – ISTY 2016/2017 6

Introduction à la programmation C Introduction à la programmation C

Comment écrire du code source ? Passage du langage haut niveau au langage machine
– A l’aide d’un éditeur de texte – Comment le traduire ?
• Coloration syntaxique, complétion automatique, Indentation • A l’aide d’un programme nommé compilateur
automatique • L’opération de traduction se nomme la compilation
– IDE (Integrated Development Environment) » Il existe un compilateur différent pour chaque langage
• Programme regroupant un ensemble d’outils pour le – Qu’obtient-on après la compilation ?
développement de logiciels • Le compilateur crée un programme binaire nommé
» Editeur de texte, compilateur, outils automatique de fabrication et l’exécutable (d’où une extension .exe sous windows)
souvent un débogueur
• Le compilateur analyse le code source pour voir s'il est
correct, au niveau de la syntaxe, et le traduit s'il n'y a pas
d'erreurs
» Une erreur  pas d’exécutable (attention à ne pas lancer l’ancienne
version de l’exécutable ensuite !)
» Error ≠ warning (avertissement)

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 7 CPI1 – In 1001 – ISTY 2016/2017 8
Introduction à la programmation C Introduction à la programmation C

Du code source à son exécution (schéma simplifié)


Environnement de programmation
Création d’un fichier « source.c » écrit à l’aide – Sous Linux (Ubuntu)
Source C
d’un éditeur de texte • Geany (IDE)
– Création de programmes en mode « console »
Transcription du contenu du fichier source en • Facile à programmer donc idéale pour commencer
langage machine (compilateur = programme) » contrairement aux programmes en mode « fenêtre »
Compilation
• Sous windows on a l’habitude des fenêtres
Exemple : gcc
» Le mode console existe mais est « caché »  invité de commande

Programme Fichier pouvant être exécuté par la machine


exécutable (possède une extension .exe uniquement
sur Microsoft Windows)

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 9 CPI1 – In 1001 – ISTY 2016/2017 10

Introduction à la programmation C Introduction à la programmation C


Environnement de programmation La console, à quoi ça ressemble ?
– Travailler sous Windows avec le même environnement
• Installation d’une machine virtuelle Linux – Ubuntu et du
« player » de machine virtuelle Oracle VM VirtualBox

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 11 CPI1 – In 1001 – ISTY 2016/2017 12
Introduction à la programmation C Introduction à la programmation C
Les commandes de bases UNIX
– La commande « pwd » (print working directory) Les commandes de bases UNIX
• Permet d’afficher le chemin du répertoire courant – La commande « mkdir » (make directory) permet de créer
Nom de l’utilisateur un nouveau répertoire
Nom de l’ordinateur
Commande tapée par l’utilisateur

Résultat de la commande
– La commande « ls » (list)
• Permet d’afficher le contenu du répertoire courant

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 13 CPI1 – In 1001 – ISTY 2016/2017 14

Introduction à la programmation C Introduction à la programmation C

Les commandes de bases UNIX Les commandes de bases UNIX


– Taper le nom d’un programme permet de le lancer – La commande « cd » (change directory) permet de
• Lancement de geany avec le fichier source mon_programme.c changer de répertoire
» Tant que le fichier n’est pas sauvegardé il n’existe pas • le chemin du répertoire peut être absolue ou relatif
• La ligne se termine par le caractère « & » afin de garder la main • La tabulation permet d’effectuer une complétion
sur la console • Les deux points permettent de remonter au répertoire parent

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 15 CPI1 – In 1001 – ISTY 2016/2017 16
Introduction à la programmation C Introduction à la programmation C

Les commandes de bases UNIX


Compiler et exécuter un programme sous Geany
– Le programme « gcc » permet de compiler un fichier
Compiler Exécuter Résultat de l’exécution
contenant du code source (C)
• Le nom par défaut de l’exécutable est « a.out »
• Il est possible de changer le nom avec l’option « –o » de gcc
suivie du nom souhaité
– Pour lancer un exécutable : « ./ » suivie de son nom

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 17 CPI1 – In 1001 – ISTY 2016/2017 18

Introduction à la programmation C Introduction à la programmation C

Représentation des informations Représentation des informations


– Donnée de base est le bit (Binary Digit) – Représentation d’un nombre N en base X
• Transistor : passant ou bloqué • N est un nombre
– Toutes les informations (nombres, caractères ou • X est la base de représentation
instructions) sont une combinaison de 0 et 1 • di est le digit à la position « i »
• La base de représentation du codage de l’information est » dn est le digit de poids fort
la base 2 » dm est le digit de poids faible
• Une chaîne de 8 bits est appelée un octet (byte)
» Le bits le plus à droite est qualifié de bit de poids faible ou LSB
(Least Significant Bit)
» Le bits le plus à gauche est qualifié de bit de poids fort ou MSB
(Most Significant Bit )

0110 0111
MSB LSB
Fabien Calcado Fabien Calcado
CPI1 – In 1001 – ISTY 2016/2017 19 CPI1 – In 1001 – ISTY 2016/2017 20
Introduction à la programmation C Introduction à la programmation C

Représentation des informations Représentation des informations


– Base décimale (base 10) – Base hexadécimale (base 16)
• Chiffre 0, 1, 2, 3, 4, 5, 6, 7, 8 et 9 • Chiffre 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

197510 = 1x103 + 9x102 + 7x101 + 5x100


197510 = 7x162 + Bx161 + 7x160
(197510 = 1000 + 900 + 70 + 5)
197510 = 7x256 + 11x16 + 7x1
– Base binaire (base 2)
• Chiffre 0 et 1 197510 = 1792 + 176 + 7
Digit à la position 2 Digit à la position 1
1310 = 1x23 + 1x22 + 0x21 + 1x20
(1310 = 8 + 4 + 0 + 1)

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 21 CPI1 – In 1001 – ISTY 2016/2017 22

Introduction à la programmation C Introduction à la programmation C


Méthodes de conversion ( base 10 vers base 2 ou 16) Méthodes de conversion ( base 10 vers base 2 ou 16)
– Méthode des soustractions – Méthode des divisions successives
• Exprimez 1310 en base 2 24 = 16 • N est divisé par X jusqu’à obtenir un quotient égal à 0
23 = 8 » La conversion est obtenu en notant les restes de chacune des divisions
13 – 8 = 5 ; 5 – 4 = 1 ; 1 – 1 = 0 ;
22 = 4 effectuées depuis la dernière division jusqu’à la première

 1310 = 11012 21 = 2 • Exemple de conversion de 23510 en base 2


20 = 1 235 2
• Exprimer 197510 en base 16 1 117 2
LSB 1 58 2
1975 – 256*1 = 1719 ; …… ; 1975 – 256*7 = 183 ; 163 = 4096 0 29 2
1 14 2
183 – 16*1 = 167 ; …… ; 183 – 16*11 = 7 ; 162 = 256 0 7 2
161 = 16 1 3 2
7 – 1*1 = 6 ; …… ; 7 – 1*7 = 0 ;  23510 = 111010112 1 1 2
160 = 1 1 0
 197510 = 07B716
Fabien Calcado Fabien Calcado
MSB
CPI1 – In 1001 – ISTY 2016/2017 23 CPI1 – In 1001 – ISTY 2016/2017 24
Introduction à la programmation C Introduction à la programmation C

Méthodes de conversion ( base 2 ou 16 vers base 10) Méthodes de conversion ( base 2 vers base 16 et vice
– Conversion de 010101102 en base 10 versa)
– Un ensemble de n bits permet de représenter 2n chiffres
00101112 = 0x26 + 0x25 + 1x24 + 0x23 + 1x22 + 1x21 + 1x20 compris entre les valeurs 0 et 2n-1
00101112 = 16 + 4 + 2 +1 • Un nombre codé sur 8 bits représente 256 (28) valeurs et
l’intervalle est [ 0 , 255 ]
00101112 = 2310
– Les chiffres de la base 16 permettent de représenter 16
chiffres (0-F)  4 bits
– Exemple base 16  base 10 • Passer de la base 16 à la base 2 revient à remplacer chacun
des chiffres en base 16 par son équivalent binaire sur 4 bits
0CB316 = 0x163 + 12x162 + 11x161 + 3x160 • Passer de la base 2 à la base 16 s’effectue en découpant la
0CB316 = 3072 + 176 + 3 chaîne binaire en paquet de 4 bits et en remplaçant chaque
paquet par leur équivalent dans la base 16
0CB316 = 325110

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 25 CPI1 – In 1001 – ISTY 2016/2017 26

Introduction à la programmation C Introduction à la programmation C

Méthodes de conversion ( base 2 vers base 16 et vice Représentation des nombres signés
versa) – La représentation s’effectue selon une chaîne binaire
– Conversion base 2 vers base 16 d’une longueur fixée à n bits
• On parlera de représentation des nombres signés sur 8 bits,
00101112 = (0001 0111)2 16 bits ou 32 bits
00101112 = ( 1 7 )16 – Plusieurs conventions existent
00101112 = 1716 • Par le constructeur de la machine
• Par le programmeur (type)
– Conversion base 16 vers base 2
» Unsigned char  8 bits non signé
A916 = ( A 9 )16 » char  complément à 2 sur 8 bits

A916 = (1010 1001)2


A916 = 101010012

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 27 CPI1 – In 1001 – ISTY 2016/2017 28
Introduction à la programmation C Introduction à la programmation C

Représentation des nombres signés Représentation des nombres signés


– Convention de la valeur signée – Convention du complément à 2 (complément vrai)
• Soit la chaîne de n bits : bn-1 … b1 b0 • Un nombre négatif exprimé sur n bits est représenté en
» Le bit de poids fort ( bn-1 ) est le bit de signe : 0 si positif et 1 si négatif prenant le complément à 2 de son équivalent positif
» Les autres bits ( bn-2 … b0 ) codent la valeur absolue • Exemples
» Intervalle des valeur en base 10 est [ – (2n-1-1) , + (2n-1-1) ] » + 7710 sur 8 bits : 010011012 (pas de différence ! )

8 bits  [ - 127 , + 127 ] » - 7710 sur 8 bits : 10110011 2

• Exemples
» + 7710 sur 8 bits : 010011012
7710 = 010011012
» - 7710 sur 8 bits : 110011012 10110010 Complément à 1 (opération NON binaire)
• Remarques + 1
» Il y a deux représentations du zéro (positif et négatif)
- 7710 = 10110011 Complément à 2
» Réalisation d’une opération de soustraction nécessite un circuit
particulier, différent de celui permettant la réalisation des additions

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 29 CPI1 – In 1001 – ISTY 2016/2017 30

Introduction à la programmation C Introduction à la programmation C


Représentation des nombres signés Représentation des nombres signés
– Convention du complément à 2 (complément vrai) – Remarques sur la convention compléments à 2
• Le bit de poids fort joue le rôle du bit de signe • Une seule représentation du zéro 000000002 sur 8 bits
• Exemples • Intervalle des valeurs sur n bits est [ - 2n-1, 2n-1 - 1 ]
» Convertir 110011002 en base 10
• Sur 8 bits [100000002 , 011111112 ] soit [ -12810 , 12710 ]
110011002 » 100000002 complémenté à 2 donne 100000002, par convention c’est -12810

00110011 Complément à 1 (opération NON binaire) • Ne nécessite pas de circuit dédié pour effectuer une soustraction
» Soustraire un nombre A à un nombre B revient à additionner au nombre B le
+ 1 complément à 2 du nombre A
00110100 Complément à 2
Convention de la valeur signée Convention complément à 2
001101002 = 1x25 + 1x24 + 0x23 + 1x22 + 0x21 + 0x20 0011 = 3 0011 = 3
001101002 = 32 + 16 + 4 + 1100 = -4 + 1100 = -4
001101002 = 5210  110011002 = - 5210 1111 = -7 1111 = -1
Fabien Calcado Fabien Calcado
CPI1 – In 1001 – ISTY 2016/2017 31 CPI1 – In 1001 – ISTY 2016/2017 32
Introduction à la programmation C Introduction à la programmation C

Représentation des nombres flottants (norme IEEE 754) Représentation des nombres flottants (norme IEEE 754)
– Format général – Codage spéciaux
• Signe : bit de poids fort (1 positif et 0 négatif) • Zéro : exposant de -12710 et une mantisse égale à 0
• Exposant décalé » Le signe est quelconque
• Mantisse • +/- l’infinie : exposant de 12810 et une mantisse égale à 0
– Nombre flottants simple précision (32 bits) • NaN (Not a Number) : exposant de 12810 et mantisse non nulle
» Par exemple le résultat d’une division par 0
• 1 bit de signe , 8 bits pour exposant , 23 pour la mantisse
• Valeur du nombre : (-1)s x M x 2(E-127)
– Nombre flottants double précision (64 bits)
• 1 bit de signe , 11 bits pour exposant , 52 pour la mantisse
• Valeur du nombre : (-1)s x M x 2(E-1023)

Fabien Calcado Fabien Calcado


CPI1 – In 1001 – ISTY 2016/2017 33 CPI1 – In 1001 – ISTY 2016/2017 34

Vous aimerez peut-être aussi