Vous êtes sur la page 1sur 31

Algorithmique et Programmation :

Langage C
Aicha Ben Jrad
Section : 1ère année EEA

A.U 2021/2022
Introduction

❑ Le C est un langage de programmation impératif et généraliste;


❑ Conçu en 1972 dans les "Bell Laboratories" afin de développer le
système d'exploitation UNIX;
❑ Se situe entre les langages dits évolués et le langage machine
➢ Qualifié de langage de bas niveau très "près" de la machine
❑ Utilisé pour les systèmes d'exploitation, le développement de logiciel, et
le hardware.
❑ Langage sensible à la case
❑ Langage compilé
2
La compilation

Définition:
La compilation est un traitement qui permet de transformer
un code source en un code binaire, de manière à obtenir un
fichier exécutable à partir d'un fichier source.

❑ Code source : un programme exprimé dans un langage de programmation


et compréhensible par un humain;
❑ Code binaire : un programme exprimé en langage machine, et exécutable
par l'ordinateur;
❑ La compilation est réalisée par un programme appellé Compilateur
3
La compilation

La compilation se décompose en 4 phases successives :


❑ Précompilation : consiste à transformer et compléter le code
source , i.e., remplacement de chaînes de caractères, inclusion
d'autres fichiers source, etc.;
❑ Compilation : traduit le fichier généré par l'étape de
précompilation en assembleur;
❑ Assemblage : consiste à transformer le code assembleur en un
fichier binaire, appellé fichier objet;
❑ Edition des liens: consiste à rassembler dans un seul fichier
binaire tout le code binaire nécessaire à l'exécution du
programme, i.e., fichier executable.
4
La compilation

5
Exemples de compilateurs ...

❑ GNU GCC (GNU Compiler Collection) : pré-installé sous


UNIX/Linux;

❑ MinGW (Minimalist GNU pour Windows)

❑ Microsoft Visual C++

6
Structure générale d'un programme C

❑ Un programme C est composé de deux parties :

❑ Partie de déclarations : cette partie sert à déclarer les


directives de pré-compilation, les variables globales ainsi que
les déclarations des fonctions (sous-programmes).
❑ Partie de traitement : cette partie contient la définition des
fonctions. Elle comporte toujours au moins une fonction
appelée fonction principale. Cette fonction est appelée main.

7
Structure générale d'un programme C
<Directives de pré-compilation>
<Déclarations de variables> Partie de déclarations
<Déclaration des sous-programmes>


int main(int argc, char** argv)
{
<Déclarations de variables locales>
Instruction_1 ;
Partie traitement
Instruction_2 ;

}
8 …
Lisibilité d'un programme
❑ Lisibilité du programme : propriété d'un programme à être
facilement compris par une personne qui ne l'a pas forcément
écrit.
Une bonne lisibilité favorise la maintenabilité
❑ Commentaire : un texte exprimé en langage naturel (par exemple
en français ou en anglais) et dont le but est d'expliquer le
fonctionnement du programme à un programmeur.
➢ Commentaire ligne : // ceci est un commentaire
➢ Commentaire bloc : commence par /* et se termine par */
❑ Indentation : décalage introduit en début de ligne pour aligner
horizontalement certaines lignes du code source.
9
Directives de pré-compilation

❑ Les directives de pré-compilations sont des instructions particulières


traitées lors de la première étape du processus de compilation:
✓ Doit être précédée du caractère #
✓ Ne pas être terminée par un point-virgule.

❑ On s'intéresse dans ce cours aux deux directives :


✓ #include : permet de faire référence à des programmes écrits
dans d’autres fichiers :
o Syntaxe : #include <xxxx.h> ou #include "xxxx.h"
✓ #define : permet de définir des constantes symboliques :
✓ Syntaxe : #define XXXX valeur
10
Variables

❑ En C, toute variable doit faire l'objet d'une déclaration avant


d'être utilisée.
❑ Déclaration d'une variable :
<type_var> <nom_var_1> [, <nom_var_2>, ...] ;

Exemple :
#include <stdio.h>
int main ()
{
int i ; /* déclare une variable i de type entier */
char c ; /* déclare une variable c de type caractère */
Return 0 ;
11
}
Variables

❑ Les variables ont une portée limitée, i.e., qu'elles existent


seulement dans une portion bien définie du programme.

❑ Variable globale : accessible dans toutes les fonctions (et donc


tous leurs blocs) définies après la déclaration de la variable;

❑ Variable locale : n'est accessible qu'à l'intérieur du bloc où elle a


été définie;

12
Types de données

Type entiers du C:
Nombre de valeurs Intervalle de
Type Description Octets Modificateur
possibles définition
unsigned [0, 28]
char charactère 1 28 = 256
signed [-27, 27-1]
unsigned [0, 216]
short Entier court 2 22x8 = 65 536
signed [-215, 215 - 1]
unsigned [0, 232]
int Entier 4 24x8 = 4294967296
signed [-231, 231 - 1]
unsigned [0, 232]
long Entier long 4 24x8 = 4294967296
signed [-231, 231 - 1]

❑ La fonction sizeof(expression) où expression = type ou variable


13
Types de données

Type réels du C:
Partie entière Partie décimale
Type Description Octets
(p) (q)
float Flottant 4 23 bits 8 bits
double Flottant double précision 8 52 bits 11 bits
long double Flottant quadruple précision 10 64 bits 15 bits

14
Caractères

❑ Les caractères (lettres, chiffres, symboles de ponctuation, etc.)


ne sont pas numériques par nature;

❑ Chaque caractère manipulé par un programme informatique est


représenté par une valeur numérique spécifique;

❑ La correspondance entre caractère et valeur numérique se fait à


l'aide d'une table d'encodage qui associe à chaque caractère une
valeur entière. Codage ASCII

15
Caractères

16
Caractères

❑ Les caractères spéciaux de mise en page les plus fréquents :

\n retour à la ligne
\t tabulation horizontale
\b retour arrière
\r retour chariot

17
Constantes

❑ Une constante est une valeur qui apparaît littéralement dans le


code source d'un programme;
❑ Peuvent être de 4 types : entier, flottant (nombre réel), caractère
ou chaîne de caractères;
❑ Constante de type caractère : se met entre apostrophes, e.g.,
'A', '2', ';', etc.
❑ Constante de type chaîne de caractères : se met entre
guillemets, e.g., "Langage c";

❑ Cas particulier : '\\', '\'', "\""


18
Constantes

❑ Une variable peut être déclarée comme une constante, i.e., elle
garde la même valeur pendant toute la durée du programme

❑ Déclaration d'une constante :


const <type_var> <nom_variable> = <valeur> ;
Exemple :
#include <stdio.h>
int main ()
{
const int NB_PIECE = 10 ;
char c = 'A' ;

}
19
Opérateurs

Affectation:
❑ En C, l'affectation est un opérateur à part entière. Elle est
symbolisée par le signe '='.
✓ Identificateur
✓ Constante
Syntaxe : variable = expression
✓ Expression arithmétique
✓ Expression logique
❑ Le terme de gauche peut être une variable simple ou un élément
d'un tableau;
❑ Conversion de type implicite;
20
Opérateurs

Opérateurs arithmétiques :
Les opérateurs arithmétiques classiques sont l'opérateur
unaire (-) (changement de signe) et les opérateurs binaires :

+ addition
- soustraction
* multiplication
/ division
% reste de la division (modulo)

21
Opérateurs

Opérateurs de comparaison :
> strictement supérieur
>= supérieur ou égal Syntaxe :
< strictement inférieur
expression1 <op> expression2
<= inférieur ou égal
== égal
!= différent

❑ La valeur rendue de la comparaison est de type int : 1 si la


condition est vraie et 0 sinon.
22
Opérateurs

Opérateurs logiques :
&& et logique
|| ou logique
! négation logique

Syntaxe :
expression1 <op1> expression2 <op2> … expressionN

❑ L'expression se fait évaluée de gauche à droite

23
Opérateurs

Opérateurs d'affectation composée:


+= -= *= /= %=

Syntaxe :
expression1 <op>= expression2

équivalent à

expression1 = expression1 <op> expression2

24
Opérateurs

Opérateurs d'incrémentation et de décrémentation :


✓ Opérateurs d'incrémentation : ++
✓ Opérateurs de décrémentation : --
Syntaxe :
variable <op>
ou
<op> variable
Exemple : int i = 2, j , h;
i++ ;
j = ++i ;
h = j--
25
Opérateurs

Opérateur de conversion de type :


L'opérateur de conversion de type, appelé cast, permet de modifier
explicitement le type d'une variable ou une expression
Syntaxe :
(type) expression
Exemple :
int main ()
{
int i = 3, j = 2;
printf("%f \n",(float)i/j);
}
26
Opérateurs

Opérateur adresse :
L'opérateur d'adresse & appliqué à une variable retourne
l'adresse mémoire de cette variable.

Syntaxe :
&<nom_variable>

27
Les fonctions d'entrée/sortie classique

❑ Fonctions de la librairie standard stdio.h (Standard Input/


Output) utilisées avec les unités classiques d'entrée/sortie: le
clavier et l'ecran;

❑ L'appel à la librairie se fait par le directive de pré-compilation :

#include <stdio.h>

28
Les fonctions d'entrée/sortie classique

Fonctions d'écriture :
❑ Fonction printf : une fonction d'impression formatée;
Syntaxe :
printf("<format>",<expr1>, ..., <exprN>);
Où <format> = le texte à afficher + les spécifications de format
correspondant à chaque expression, e.g., %d pour un entier.

❑ Fonction putchar : cette fonction permet d'écrire un caractère sur la


sortie standard;
Syntaxe : putchar(caractère) ;
29
Les fonctions d'entrée/sortie classique

Fonctions de lecture :
❑ Fonction scanf : permet de saisir des données au clavier et de les
stocker aux adresses spécifiées par les arguments de la fonctions;
Syntaxe :
scanf("<format>", <arg1>, ...,<argN>);
Où <format> = format dans lequel les données lues sont converties, e.g.,
%d pour la lecture d'un entier.
❑ Fonction getchar : cette fonction permet de lire un caractère depuis
l'entrée standard. Elle retourne la constante EOF en cas d'erreur;
Syntaxe : <nom_variable> = getchar() ;
30
Les fonctions d'entrée/sortie classique

Les spécifications de format :


Symbole Type
%i ou %d int
%u unsigned int
%li ou %ld long
%lu unsigned long
%f float
%lf double
%Lf long double
%c char
%s char* (chaîne de caractères)
31

Vous aimerez peut-être aussi