Vous êtes sur la page 1sur 23

Théorie « C »

Introduction

Langage machine

Ce langage est une suite de 1et de 0 en binaire, il était codé en hexadécimal. Il est
propre au micro processeur et n’est pas transportable. Avec ce type de langage on
peut tout programmer.

Langage assembleur

Une instruction en langage assemble équivaut à une instruction en langage


machine.
|ZAP| I,ZERO
|AP|J,C
On peut tout faire avec ce type de langage.

Langage évolués

Ils sont apparu vers les années 60-70, ils ont grandement facilité la tâche du
programmeur. Le C fut inventé par Denis Ritchie et Bryant Kenningham(1968).Le
premier UNIX a été entièrement programmé en C. Le grand avantage de se langage
est sa portabilité.

Langage de 4éme génération

JAVA, .net, windev, pour un développement très facile d’application graphique.

Les types de programmation

• Les langages procéduraux (C, cobol)


• La programmation orienté objet (JAVA)
• La programmation web (HTML,XML,PHP,…)

1
1 Chapitre un : Premier pas

1.1 Exemple de programme C

Soit écrire un programme qui calcule la surface d’un cercle en fonction de son rayon.

1.1.1 Illustration

1.1.2 Le programme

1.1.3 Vocabulaire(en fonction du programme précédent)

Directive de pré-compilation : #include…..


Fonction : printf, scanf,…
Instruction : surface=3 ;

2
Mots clé : int , main, void, float,… (ils sont réservé à usage
privé à ne pas utiliser comme variable.)
Identificateur : rayon, surface, printf, scanf,….(Ils ne peuvent jamais
commencer par un chiffre.)
Operateur : +,=,*,%
Constante : 3.1415
Masque de saisie et affichage : %f
Séquence d’échappement : \n
Délimiteur :;
Caractère neutralisateur :\

1.2 Identificateur

• Différence entre majuscule et minuscule, il faut utiliser les minuscules


• Le premier caractère doit être une lettre
• Un identificateur peut être composé de lettre et/ou de chiffre et/ou _
underscore

1.3 Les données

Les variables : –int(4bytes)

-float(4bytes)

-char(1bytes)

Les constantes :

• Entière décimal (4bytes) :0,1,753,-78


• Entière octales (4bytes) :00,01,01361,0-11 précédé la
valeur par un zéro pour signaler que l’on est en octal
• Entière hexadécimal (4bytes) :0x0,0x1,0x2F1,-0x4E
• Réelle (4bytes) :0.,43.7,2E_8,-78.7
• Caractère :’a’ , ‘A’, ‘3’

printf(« %d »,’A’) ; il va afficher le numéro du caractère asci

printf(« %c »,’A’) ; il va afficher la lettre A

3
Exercice : écrire un programme c répondant à l’illustration suivante.

4
2 Chapitre deux : les types de variables
2.1 Rappel sur les systèmes de numérotations

2.1.1 Tableau des variables

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
0110 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 : 1) représentez le contenu de a en binaire et en hexa.

2) représentez le contenu de car1 et car2 en binaire et en hexa.

5
1) a=78 ; 4E

a 0000 0000 0100 1110

0 0 4 E

2) car1 0100 0011

4 3

car2 0110 1111

6 F

2.2 Rappel sur entier en mémoire

2.2.1 Notion de complément à 2

Soit 56(10) devant être codifié dans une variable de type short int.

56(10)= 38(16)

0000 0000 0011 1000

0 signifie nombre positif ou nul +56

Soit -56(10) devant être codifié dans une varialbe de type short int.

-56(10) = -38(16)

6
+56(10) 0000 0000 0011 1000

Cple à 1 1111 1111 1100 0111

+1 1

__________________________

Cple à 2 1111 1111 1100 1000

1 signifie que c'est un nombre négatif

Exercice: 1) représentez le contenu de a et b en binaire et en hexa.

2) représentez le contenu de car1 et car2 en binaire et en hexa.

1) a 0000 0000 0100 1110

0 0 4 E

+78

b 120(10) 0000 0000 0111 1000

Cple à 1 1111 1111 1001 0111

7
+1 1

____________________________

b -120(10) 1111 1111 1100 1000

2) car1= 0101 1111

car1= 95 5F

car2= 1000 0010

car2=130 82

2.3 Les types de variables


2.3.1 Introduction

DONNEE

VARIABLE CONSTANTE

Doit être déclarée Ne doit pas être déclarée

A) La déclaration permet de fixer:

• Le type de donnée (short in a;)


• Et parfois une valeur initiale
(short int a=7;)

B) Le type de donnée permet de fixer:

• l'ensemble des valeurs admissibles


• le nombre de bytes en RAM
• les opérateurs qu'on peut appliquer

8
C) Format de déclaration:

<type> <var1> [,var2……]

Int a;

Int c, b;

On peut ajouté un qualificateur de type

short in a;

short a;

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

ect…….

car=127; 0111 1111

__________________________

car=-128; 1000 0000

car=-127; 1000 0001

ect…….

car=-1; 1000 0000

9
Expérience 1

Il affichera de 0 à 127 à -128 jusque -1.

Expérience 2

10
Il va afficher indéfiniment 0 à 128 jusque -127 car la valeur algébrique de c ne peut
jamais égaler la condition de 256 puisque le char ne le permet pas.

2.3.2.2 Le type unsigned char

Dans un contexte ASCII, rien ne change.

11
Dans un contexte arithmétique son domaine s’étend de 0 à 255 puisqu’on ne tiens
plus comte du bit de signe.

1er version

tot [ 4bytes]

unsigned

Avec le %d il tient compte du signe

car1 [00000000 00000000 00000000 00000000]

Avec le %d il tient compte du signe

car2 [00000000 00000000 00000000 11111111]

12
2ème version

La différence est que car1 et car2 est en char.

char

car1 [00000000 00000000 00000000 00000000]

char

car2 [00000000 00000000 00000000 111111111]

13
14
Exemples supplémentaires

C2-1

Affichage n°1

car1 [0100 0001] car2 [0110 0001]

4 1 base16 6 1 base16

Affichage n°2

car1 [0101 1010] car2 [0111 1010]

5 A base16 7 A base16

15
C2-2

Affichage n°1

car1 [0100 0001] car2 [0110 0001]

Affichage n°2

car1 [0101 1010] car2 [0111 1010]

16
2.3.3 Les variables entières

2.3.3.1 le type short ou short int

C2-3

Que s’affiche-t-il si on entre :

a) 5 enter, 10 enter

a= [0005] en hexa vaut 5 base10

b= [000A] en hexa vaut 10 base10

________________________________

tot= [000F] en hexa vaut 15 base10

17
b) -5enter, 5enter

a= [FFFB] en hexa vaut -5 base10

b= [0005] en hexa vaut 5 base10

________________________________

tot=[10000] en hexa vaut 0 base10

out car il ne tient pas dans le byte.

c) 32 767 enter, 2 enter

a= [7FFF] en hexa vaut 32 767 base10

b= [0002] en hexa vaut 2 base10

________________________________

tot=[8001] en hexa vaut -32 767 base10

[1000 0000 0000 0001]

chiffre négatif qui va s’afficher

18
2.3.3.2 Le type unsigned short ou unsigned short int

C2-4

e1

short [8000] 7FFF 32 767

negatif + 1 + 1

_________ ________

8000 32 768

u1

unsigned short [8000]

%hd -32 768

e1

%hu 32 768

%hu 32 768

u1

19
%hd -32 768

2.3.3.3 Le type int

2.3.3.4 Le type unsigned int

2.3.3.5 Le type long ou long int

2.3.3.6 Le type unsigned long ou unsigned long int

2.3.3.7 Quelques erreurs à éviter avec les entiers

A savoir

entier par entier entier

entier par réel réel

réel par entier réel

réel par réel réel

C2-5

20
z0 z1 z2 z3 z4

100 50 41 33 33

z1= z0/2 ;

100/2

50 zone tampon

z2= z0/2.4 ;

100/2.4

41.6666 zone tampon

z3= z0/3 ;

100/3

33 zone tampon

21
2.3.4 Les variables réelles

Il s’agit de la représentation en VFN (virgule, flottante, normalisé)

L’ordinateur calcule toujours faux en réel

Le zéro absolu n’existe pas.

2.3.4.1 Les variables de type float

2.3.4.2 Le double

2.3.4.3 Long double

2.3.5 Les séquences d’échappement

Fonction Echappement Code ASCII


Sonnerie \a 7
Backspace \b 8
Tabulation \t 9
Retour à la ligne \n 10
Retour chariot(debut ligne) \r 13
Null byte \0 0

C2-6

22
23