Vous êtes sur la page 1sur 38

École

Na)onale Polytechnique
1ère année Classes Préparatoires
Année 2018/2019

Ma)ère
Informa)que 2

Chapitre I
Introduc0on au langage C

Préparé et présenté par Dr. Meziane Tani I.


Introduc0on
Énoncé du problème

Spécifica-on

Cahier des charges

Analyse

Algorithme

Traduc-on
Langage de
Programme (Codes sources) Programma0on
C, Java, Pascal, …
Compila-on
Programme exécutable Étapes de réalisa-on
(00011010100…...011011000) d’un programme

Tests et modifica-ons
Dr. Meziane-Tani I. 2
Le langage C
•  Début des année 70 par D.Ritchie et B.W.Kernighan

•  Inspiré de deux autres langages plus anciens : B et BCPL

•  Un langage toujours très u0lisé car c’est un langage évolué


(de haut niveau) qui reste quand même le plus rapide au
niveau de l’exécu)on.

•  Facile à apprendre : comparé aux autres langages de


programma)on, il dispose de peu d’instruc)ons et les
structures de données sont réduites.

Dr. Meziane-Tani I. 3
Compila0on
•  Compilateur : un programme qui permet de traduire un code
source écrit dans un langage de programma)on en un autre
langage informa)que.

•  Chaque langage de programma)on dispose de son compilateur.

•  Un programme écrit en langage C a besoin d’un compilateur C pour


être traduit en un programme écrit en langage binaire.

•  La traduc)on en langage binaire est nécessaire pour l’exécu)on du


programme sur un microprocesseur.

•  Le compilateur C le plus u)lisé est : GNU GCC Compiler.

Dr. Meziane-Tani I. 4
Compila0on et édi0on des liens

Edi0on des
Compila0on
liens

Fichier Fichier
Fichier Objet
code source exécutable

Fichiers des librairies


Dr. Meziane-Tani I. 5
Structure d’un programme C
/* Importa)on des librairies */
#include <math.h>

/* Déclara)on des variables externes */
int x;

/* Le corps du programme ou Fonc)on Principale */
int main()
{
x=sqrt(4); // sqrt : fonc-on racine carrée en C.
return 0;
} Dr. Meziane-Tani I. 6

Importa0on des librairies
•  L’u)lisa)on de librairies facilite la programma)on.

•  Le langage C comme d’autres langages de programma)on dispose d’une


série de fonc)ons préalablement intégrée dans le compilateur.

•  Une librairie est un fichier comportant plusieurs fonc)ons du même type.


Exemple : la librairie mathéma)que.

•  Les fichiers de type librairie possèdent une extension « .h ». Exemple :


math.h

•  Il suffit d’importer une librairie pour pouvoir u)liser les fonc)ons qui sont
implémentée à l’intérieur.
Exemple : en important math.h, on peut u)liser des fonc)ons telles que :
sin, cos, sqrt, pow,… etc.

Dr. Meziane-Tani I. 7
Librairies standards
•  Pour importer une librairie en C :

#include <nom_librairie.h>

•  Cehe importa)on est aussi appelée : Direc-ve du préprocesseur.

•  Les librairies standards en C sont :


–  stdio.h : con)ent les fonc)ons d’entrées/sor)es
–  math.h : con)ent des fonc)ons mathéma)ques
–  float.h : des fonc)on permehant de manipuler les réels
–  )me.h : des fonc)ons de manipula)on des dates et du temps.
–  …

Dr. Meziane-Tani I. 8
Prérequis
•  En C, chaque instruc)on (déclara)on, affecta)on, lecture,
écriture…) doit se terminer par un point-virgule : « ; » .
–  Exemples :
•  int i;
•  int i, j;
•  x = x+1;

•  Un ensemble d’instruc)ons faisant par)e du même bloc
(fonc)on, boucle, test,…) est délimité entre deux
accolades : { .... }.
–  Exemple :
if (x < 0)
{
y = -1;
} Dr. Meziane-Tani I. 9
Déclara0on de variables
Algorithmique
Langage C

Nom_variable : Type_variable Type_variable Nom_variable;



Exemples : Exemples :

Variable i : En)er int i;
j=0:En)er int j=0;
k, l, m : En)ers int k, l, m;

Dr. Meziane-Tani I. 10
Types standards
Algorithmique Langage C Intervalle de valeurs
En)er int (2 octets) [-32768, 32767]
short (4 octets) [-2147483648 ,
2147483647]
long (4 ou 8 octets) [-232 , 232-1 ]
Ou [-264 , 264-1 ]
Réel float (4 octets) [3.4*10-38, 3.4*1038]
double (8 octets) [1.7*10-308, 1.7*10308]
Booléen Non existant /
Caractère Char (1 octet) [-128, 127]
Chaîne de caractères Non existant /

Remarque : Le type long dépend du type de machine. Par défaut, il est sur 32 bits.
Sur certaines machines il est codé sur 64 bits.

Dr. Meziane-Tani I. 11
Types standards non signés

Pour des en)ers non signés, le mot clé « unsigned » est ajouté devant le type.

Type Intervalle de valeurs


unsigned int (2 octets) [0, 65535 ]
unsigned short (4 octets) [0, 4294967295]
unsigned long (4 ou 8 octets) [0, 232-1] ou [0, 264-1]
unsigned Char (1 octet) [0, 255]

Dr. Meziane-Tani I. 12
Déclara0on de constantes
Langage C

Algorithmique Const Type iden-ficateur = valeur;



Constante iden-ficateur ç valeur : type
Ou bien

#define iden-ficateur valeur
Exemple :

Constante PI ç 3.14 : réel Exemples :

Const float PI=3.14;

#define PI 3.14;

Dr. Meziane-Tani I. 13
Fonc0on Main (1/2)
•  La fonc)on Main représente le corps du
programme. C’est le point de départ d’exécu)on
d’un programme.
Commentaire
Début et Fin int main()
{
/* Ici des instruc-ons … */
return 0;
}

•  La fonc)on main dans sa défini)on du


compilateur C doit retourner un résultat de type
en)er. Par défaut, le résultat retourné est 0.
Dr. Meziane-Tani I. 14
Fonc0on Main (2/2)
•  À l’intérieur de la fonc)on Main, on peut
trouver :
–  Des instruc)ons de lecture/écriture
–  Des instruc)ons d’affecta)on
–  Des structures alterna)ves
–  Des structures répé))ves
–  Des appels d’autres fonc)ons
–  …

•  Mais aussi :
–  Des déclara)ons de variables internes!
Dr. Meziane-Tani I. 15
L’écriture en C
•  L’écriture ou l’affichage à l’écran en C se fait en
u)lisant la fonc)on : prin1()

•  prin1() : permet de faire un affichage formaté,


c’est à dire en spécifiant le format (en)er, réel,
chaîne de caractères…) de la donnée à afficher.

•  La fonc)on prin1() est une fonc)on prédéfinies


dans la librairie « stdio.h »

Dr. Meziane-Tani I. 16
prin1()
•  La fonc)on prinZ() permet d’afficher :
–  Un message à l’écran
–  Le résultat d’une variable
–  Un message plus le résultat d’une ou de plusieurs variables.

•  Exemple : prin1(‘’Hello ENP!’’);

•  Pour l’affichage d’une variable, le format de cehe variable


doit être spécifié.

•  Exemples : prin1(‘’%d’’, x);


prin1(‘’Le résultat de %d * %d est %d’’, x, y, x*y);

Formats des variables x, y et le résultat de x*y 17


Dr. Meziane-Tani I.
prin1()
- Format de variables -
Format Symbole
En)er %d, %i
caractère %c
chaîne de caractères %s
unsigned %u
Réel (virgule fixe) %f, %F
double %e, %E

Remarque :
-  Il est possible de spécifier la taille (nombre de caractères) d’affichage de la donnée.
-  La taille est donnée entre % et le caractère spécifiant le format.

Exemples :

%5d : Affiche un en)er sur 5 chiffres.
%4.3f : Affiche un réel avec 4 chiffres avant la virgule et 3 après.
Dr. Meziane-Tani I. 18
La lecture en C
•  La lecture de données au clavier en C se fait
en u)lisant la fonc)on « scanf() ».

•  scanf() effectue une lecture formatée des


données.

•  scanf() est une fonc)on définie dans la libraire


« stdio.h »
Dr. Meziane-Tani I. 19
scanf()
•  La fonc)on scanf() permet de lire une donnée au clavier en
précisant son format.

•  Il n’est pas possible d’afficher un message dans le scanf().

–  Exemple : scanf(‘’%d’’, &i);


•  Le symbole « & » est indispensable. Il permet d’accéder à l’adresse
de la variable « i ».

•  Les formats de données u)lisés dans prinZ() sont valables aussi


pour le scanf() et il est aussi possible de spécifier la taille des
données à lire.

–  Exemple : scanf(‘’%4d’’, &i);


Dr. Meziane-Tani I. 20
Affecta0on
•  L’affecta)on en C u)lise le symbole « = ».
•  Ce symbole remplace le « ← » de l’algorithmique.
–  Exemples :
•  a = 5;
•  z = x+y;
•  x = sqrt(4);

•  Les règles d’u)lisa)on de l’affecta)on (y compris


celles rela)ves aux priorités des opérateurs) en
algorithmique s’appliquent en programma)on C.

Dr. Meziane-Tani I. 21
Type Opérateur Symbole Symbole

Opérateurs addi)on
Algo
+
en C
+
soustrac)on - -
Opérateurs
Arithmé0ques mul)plica)on * *
division / /
modulo % %
puissance ^ pow()
Est égal = ==
Est différent ≠ !=

Opérateurs de Est inférieur < <
comparaison Est supérieur > >
Est inférieur ou égal ≤ <=

Est supérieur ou égal ≥ >=

Inverse NON !
Opérateurs Et ET &&
logiques Dr. Meziane-Tani I. 22
Ou OU ||
Structures alterna0ves (Tests)
1.  Alterna)ve simple
–  if … {}

2.  Alterna)ve complète


–  if … {} else {}

3.  Alterna)ve imbriquée


–  Plusieurs « if » imbriquées.
–  L’instruc)on « switch case »

Dr. Meziane-Tani I. 23
Alterna0ve simple

Algorithmique Langage C

Si Condi-on alors if (Condi-on)


/* Séquence d’instruc-ons */ {
Finsi /* Séquence d’instruc-ons */
}

Remarque :
Comme pour l’algorithmique, si à l’intérieur du test il y a une seule
instruc)on alors les accolades ne sont pas indispensables.

Exemple :

if (x == 0)
prin‚(‘’x est nul. ‘’);
Dr. Meziane-Tani I. 24
Alterna0ve complète

Algorithmique Langage C

if (Condi-on)
Si Condi-on alors {
/* Séquence d’instruc-ons 1 */ /* Séquence d’instruc-ons 1 */
Sinon } else
/* Séquence d’instruc-ons 2 */ {
Finsi /* Séquence d’instruc-ons 2 */
}

Dr. Meziane-Tani I. 25
Alterna0ve imbriquée
- Si imbriqués - Langage C
Algorithmique if (Condi-on 1)
{
Si Condi-on 1 alors if (Condi-on 2)
Si Condi-on 2 alors {
/* Séquence d’instruc-ons 1 */ /* Séquence d’instruc-ons 1 */
Sinon } else
/* Séquence d’instruc-ons 2 */ {
Finsi /* Séquence d’instruc-ons 2 */
Sinon }
Si Condi-on 3 alors } else
/* Séquence d’instruc-ons 3 */ {
Sinon if (Condi-on 3)
/* Séquence d’instruc-ons 4 */ {
Finsi /* Séquence d’instruc-ons 3 */
Finsi } else
{
/* Séquence d’instruc-ons 4 */
}
Dr. Meziane-Tani I. 26
}
Alterna0ve imbriquée
- Switch … case … -
Algorithmique Langage C

SELON switch (var)


{
Condi)on 1 : Ac)on 1 case const1 : /*Traitement 1*/
break;
Condi)on 2 : Ac)on 2
case const2 : /*Traitement 2*/
... break;
...
Condi)on n : Ac)on n
case constn : /*Traitement n*/
SINON : ac)on_sinon break;
default : /*Traitement par défaut*/
FINSELON
}

Dr. Meziane-Tani I. 27
Switch .. Case …
- Exemple -
switch (op) Déclara0ons :
{ char op;
case ‘+ ’ : z = x+y; int x, y, z;
break;

case ‘-’ : z = x – y;
break;
case ‘*’ : z = x*y;
break;
case ‘/’ : z = x/y;
break;
default : prin‚(‘’Opéra)on non valide’’);

}

Dr. Meziane-Tani I. 28
Structures répé00ves
1)  TantQue … faire ... FinTantQue
while ... { … }
2)  Répéter ... Jusqu’à
do {...} while ...
3)  Pour ... de ... à ... pas... faire ... FinPour
for(...;...;...){....}

Dr. Meziane-Tani I. 29
while … {...}
Algorithmique Langage C

TantQue Condi-on Faire while (Condi-on)


/* Séquence d’instruc-ons */ {
FinTantQue /* Séquence d’instruc-ons */
}

Dr. Meziane-Tani I. 30
do {...} while …

Algorithmique Langage C

Répéter do {
/* Séquence d’instruc-ons */ /* Séquence d’instruc-ons */
Jusqu’à Condi-on } while (Condi-on);

Remarque :
-  « Do…While » n’est pas exactement équivalente à « Répéter ... Jusqu’à
»
-  La condi)on qui suit le mot clé while est l’inverse de la condi)on dans
Répéter.
-  C’est la même condi)on qui serait u)lisée avec une bouche TantQue.
Dr. Meziane-Tani I. 31
for(...;...;...){....}
Algorithmique
Pour Compteur de Ini-ale à Finale Pas Valeur_Pas Faire
/* Séquence d’instruc-ons */
FinPour
Langage C

for(Compteur = Ini-ale; Compteur <= Finale ; Compteur = Compteur + Valeur_Pas)


{
/* Séquence d’instruc-ons */
}
Exemples :

for(i=0; i < N; i=i+1) for(i=0; i < N; i++)


{ Ou {
/* Séquence d’instruc-ons */ /* Séquence d’instruc-ons */
} }
Dr. Meziane-Tani I. 32
Les tableaux
1. Déclara0on : Algorithmique

Variable nom_tableau[nombre_elements]: type_elements


Langage C

type_elements nom_tableau[nombre_elements];
Exemple : Déclarer un tableau de 100 en)ers
int T[100];
2. Manipula0on :
En C, les éléments du tableau commencent toujours pas l’indice 0.
Pour accéder à une case du tableau : T[indice]
Exemples : T[0], …, T[i], … ,T[N-1]
Dr. Meziane-Tani I. 33
Les tableaux à deux dimensions
1. Déclara0on : Algorithmique

Variable nom_tableau[nb_lignes,nb_colonnes]: type_elements


Langage C

type_elements nom_tableau[nb_lignes][nb_colonnes];
Exemple : Déclarer une matrice de 10 lignes et de 20 colonnes
int T[10][20];
2. Manipula0on :

Pour accéder à la case qui se trouve à la ligne i et la colonne j :


T[i][j]
Dr. Meziane-Tani I. 34
Tableaux
- Remarque -
•  Il est possible de déclarer un tableau en ini)alisant les éléments qui le
composent.

•  Exemples :
1.  Déclarer un tableau de 4 en)ers dont les valeurs ini)ales sont nulles
int T[]={0,0,0,0};
=> Il n’est pas nécessaire de préciser que le nombre d’éléments est 4.

2.  Déclarer une matrice de 2 lignes et de 3 colonnes. 0 0 0
1 1 1
int T[][3]={ {0,0,0}, {1,1,1} };
=> Il n’est pas nécessaire de préciser que le nombre de lignes est 2.
=> Le nombre de colonnes est obligatoire.

Dr. Meziane-Tani I. 35

Les enregistrements / structures
•  Créer un enregistrement consiste à créer un
nouveau type de données.

•  Pour créer un nouveau type de données en C,


le mot clé « typedef » est u)lisé.

•  Les enregistrements en C sont appelés


structures et le mot clé « struct » est u)lisé.
Dr. Meziane-Tani I. 36
Structures

Algorithmique Langage C

Nom_Enregistrement : Enregistrement typedef struct


Nom_Champ_1 : Type_Champ_1 {
Nom_Champ_2 : Type_Champ_2 Type_Champ_1 Nom_Champ_1;
… Type_Champ_2 Nom_Champ_2;
Nom_Champ_n : Type_Champ_n …
FinEnregistrement Type_Champ_n Nom_Champ_n;
} Nom_Enregistrement;

Dr. Meziane-Tani I. 37
Structures
Exemple
Définir un type de structure Personne:

typedef struct Déclara)on d’une variable P de type Personne :


{
char Nom[50]; Personne P;
char Prenom[50];
int Age;
} Personne;

U)lisa)on de la variable P :
Lecture Ecriture
scanf(‘’%s‘’, P.Nom); prin1(‘’Nom : %s\n ‘’, P.Nom);
scanf(‘’%s‘’, P.Prenom); prin1(‘’Prénom : %s\n ‘’, P.Prenom);
scanf(‘’%d ‘’, &P.Age); prin1(‘’Age : %d\n ‘’, P.Age);

Dr. Meziane-Tani I. 38