Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION
• Langage machine • Langage assembleur
101110011101111011 1 instruction lang. machine =
001001110010100110 1 instruction assembleur
Propres au microprocesseur |ZAP|I, ZERO
i=c
On peut TOUT faire (TOUT |APZ|I, C
programmer) On peut TOUT programmer
• Langages évolués • Langages de 4ème génération
C – Pascal – Basic JAVA
.NET
Système – Math – Débutant WINDEV
Cobol – RPG… PowerBuilder
Gestion …
C : D. Ritchie
• B. Kerningham (1968)
Le 1er UNIX a été programmé en C
Portabilité des programmes
• Les types de programmation
Les langages procéduraux (C,
Cobol)
La prog. orientée objet (JAVA)
La programmation web (XML ,
PHP, HTML,…)
1
1.2. Identificateurs
• Le C fait la différence entre MAJ et min.
• Le premier caractère doit être une lettre
• Un ID peut-être composé de lettres et/ou de chiffres et/ou de _ (underscore)
1.3. Les données
• Les variables
2
CHAPITRE 2 : LES TYPES DE VARIABLES
2.1 Rappel
Binaire Octal Hexa Décimal
0000 00 0 0
0001 01 1 1
0010 02 2 2
0011 03 3 3
0100 04 4 4
0101 05 5 5
0110 06 6 6
0111 07 7 7
1000 10 8 8
1001 11 9 9
1010 12 A 10
1011 13 B 11
1100 14 C 12
1101 15 D 13
1110 16 E 14
1111 17 F 15
Exercice :
Représentez le contenu de a : -en binaire
-en hexa
Représentez le contenu de car1 et car2 : -en binaire
-en hexa
Code source :
Représentations : a=78 ;
4E
a = 0000 0000 0100 1110
0 0 4 E
C=43(16) car1 = 0100 0011
111=6F(16) car2 = 0110 1111
3
2.2 Rappel sur entiers en mémoire
Notion de complément à 2 :
Soit 56(10) devant être codifié dans une variable de type short int.
0000 0000 0011 1000
0 nombre positif ou nul +56
56(10)=38(16)
Soit -56(10) devant être codifié dans une variable de type short int.
0038
+FFC7
10000
Ejecté car
Exercice :
4
Représentez le contenu de car1 et car2 : -en binaire
-en hexa
car1 = 0101 1111
5 F
car2 = 1000 0010
8 2
car1 = 95 5F
car2 = 130 82
Binaire
1000 0010
0111 1101 c à 1
+ 1
0111 1110 c à 2
7 E 126
DONNEE
VARIABLE CONSTANTE
5
2.3.2 Les variables caractères
2.3.2.1 Le type char
Pourquoi de -128 à 127 ?
char car ;
car=0 ; //0000 0000
car=1 ; //0000 0001
car=2 ; //0000 0010
… …
car=127; //0111 1111
car=-128; //1000 0000
… …
Expérience
Qu’afficheront les programmes suivants ?
a)
b)
6
0000
3 bytes 1 byte
car2 = 0000 0000 0000 0000 0000 0000 1111 1111
3 bytes 1 byte
01
FE
+1
FF -1
b) Idem mais car1 et car2 sont en char
car1 = 0000 0000 0000 0000 0000 0000 0000 0000
3 bytes 1 byte
car2 = 1111 1111 1111 1111 1111 1111 1111 1111
F F F F F F F F
00 00 00 00 00 00 00 00
+1
00 00 00 00 00 00 00 01
Affichage :
0
0
4294967295
-1
-1
Exemples supplémentaires :
C2-1
0100 0001 car1 0110 0001 car2
4 1 6 1
car1=A car2=a
Affichage n°1: car1 : A car2 : a
Affichage n°2: car1 : Z car2 : z
7
2.3.3 Les variables entières
2.3.3.1 Le type short ou short int
C2-3
Que se passe-t-il si on entre :
a) 5 b) -5 c) 32.767
10 5 2
a) 0005 5 a : 5<cr>
000A 10 b : 10<cr>
000F 15 15
b) FFFB -5 a : -5<cr>
0005 5 b : 5<cr>
1 0000 0 0
Affichage :
-32.768 32.768 -32.768 32.768
0
8
C2-5
100 50 41 33 ?
z0 z1 z2 z3 z4
z1=z0/2 ; z2=z0/2.4 ;
100/2 100/2.4 ;
50 41.666…
z3=z0/3 ; z4=z1/z2*z3 ;
100/3 50/41*33
33 1
33
Affichage :
Le résultat : 100 50 41 33
Z4 = 33
2.3.4 Les variables réelles
• Il s’agit de la représentation en VFN (Virgule Flottante Normalisée)
• L’ordinateur calcule toujours faux en réel
• Le 0 absolu n’existe pas
2.3.4.1 Le type float
2.3.4.2 Le type double
2.3.4.3 Le type long double
TYPE NB BYTES EN CONSTANTE MASQUE DOMAINE ALGÉBRIQUE
RAM
char 1 ‘Z’ %c ou %d -128->0->127
unsigned char 1 ‘Z’ %u ou %d 0->255
short int 2 %hd -32.768->0->32.767
unsigned shor int 2 %hu 0->65.535
2 pour 16 bits -2.147.483.648->0->
int 7, 0x45 %d ou %i
4 pour 32 bits 2.147.483.647
unsigned int " 56u, 0x45u %u 0->4.294.967.296
long int 4 56, 0x45 %ld Même qu’int
unsigned long int 4 56u, 0x45u %lu Même qu’unsigned
-3.4x1038->1.17x10-38->
float 4 6.7, 3.0 %f
1.17x10-38->3.4x1038
-1.79x10-308->-2.22x10-308->
double 8 %lf
2.22x10-308->1.797x10308
-1.02x10-4923->-3.37x10-4932
long double 12 %Lf
->3.37x10-4932->1.02x104932
9
2.3.5 Les séquences d’échappement
C2-6
Cours de langage
De programmation
C2-7
V1) float a b res
15.9 3.0 5.3
res= a / b;
réel réel
15.9 3.0
5.3
Affichage :
5.300000
V2) float a b
15.9 3.0
short int res
5
res= a / b;
réel réel
15.9 3.0
réel
Affichage :
5
10
C2-8
V1) float a
15.3
5.1
Affichage :
5
V2) float a res
15.3 5.1
short int b
3
res= a / b;
réel entier
15.3 3.0
5.1
Affichage :
5.100000
C2-9
short a b c d
3 4 1 1
double t x y
2.0 1.0 1.3333
c= b / a; x= b / a;
entier entier entier entier
4 3 4 3
1 1
11
y= b / t; x= 1.0* b / a
entier réel réel entier entier
4 2.0
4.0
1.3333
1.33333
y= b / a * 1.0 ; d= 1.0* b / d;
1 4.0
C2-10
V1) short x
3
float a
12.48
char b
4
x= a / b;
réel char
3.12
12
V2) short x
0
float a
12.48
char b
52
x= a / b;
réel char
2.500000
Affichage :
2.500000
V2) short a
5
float res
2.5
res=a / 2;
entier entier
2
Affichage :
2.000000
13
CHAPITRE 3 : LES OPÉRATEURS
3.1 L’affectation =
constante
Identificateur = variable
expression
Exemple :
x=4 ; 4=x ; NON
y=z ; x+2=y-5 ; NON
y=a+b/4 ; int a=b=3 NON
x= y= 3 ;
i=2
i=2
14
d) Remarque: Cette expression est syntaxiquement correcte
a= x++ - -- y ;
Soit x y a
a= x++ - -- y ;
1 2
3
20 6
4
14
Exemple :
x=x*3 ; x*=3 ;
x=x-3 ; x-=3 ;
x=x+3 ; x+=3 ;
x=x/3 ; x/=3 ;
x=x%3 ; x%=3 ;
z=x*3%a ; z*=3%a ;
C3-2
int a b
10 3
float x y
12.5 2.0
char c1 c2
‘P’ ‘T’
Affichage :
13 7 30 3 1
14.5 10.5 25.0 6.25
80 164 169 217
15