Vous êtes sur la page 1sur 38

Langage C

Dr. Ing Mohamed Anis MASTOURI


Plan

 Notions de base
 Lecture et écritures des données
 Les structures alternatives et repetitives
 Les tableaux
 Les chaînes de caractères

Dr. Ing Mohamed Anis Mastouri


Plan

 Notions de base
 Lecture et écritures des données
 Les structures alternatives et repetitives
 Les tableaux
 Les chaînes de caractères

Dr. Ing Mohamed Anis Mastouri


Ch1. Notions de base
1. Introduction:

 Le langage C est un langage évolué et structuré, assez proche du


langage machine destiné à des applications de contrôle de
processus (gestion d'entrées/sorties, applications temps réel ...).
 Les compilateurs C possèdent les taux d'expansion les plus faibles
de tous les langages évolués

Dr. Ing Mohamed Anis Mastouri


 2. Identification des fichiers
*.C : fichiers source
*.OBJ: fichiers compilés (versions objet)
*.EXE: fichiers compilés et liés (versions exécutables)
*.LIB: bibliothèques de fonctions précompilées
*.H: fichiers en-tête (header files)

Dr. Ing Mohamed Anis Mastouri


 Exemple
 Pour pouvoir utiliser ces fonctions mathématiques, le programme a
besoin de la bibliothèque:
MATH.LIB

 On doit donc inclure le fichier en-tête correspondant dans le code


source de notre programme à l'aide de l’instruction:
#include <math.h>

Dr. Ing Mohamed Anis Mastouri


Les étapes d’exécution

Dr. Ing Mohamed Anis Mastouri


3. La fonction main
 a. Définition
 La fonction main est la fonction principale des programmes en C:
Elle se trouve obligatoirement dans tous les programmes.
L'exécution d'un programme entraîne automatiquement l'appel de la
fonction main.
Définition du programme principal en langage algorithmique
programme <NomProgramme>
| <déclarations>
| <instructions>
fprogramme

Définition de la fonction main en C


main()
{
<déclarations>
<instructions>
return 0;
}

Dr. Ing Mohamed Anis Mastouri


 b. Résultat de main
 Tout programme devrait retourner une valeur comme code d'erreur à
son environnement. Par conséquent, le type résultat de main est
toujours int. En général, le type de main n'est pas déclaré
explicitement, puisque c'est le type par défaut.
 Généralement on termine les programmes par l'instruction:
return 0;
 qui indique à l'environnement que le programme s'est terminé avec
succès, sans anomalies ou erreurs fatales.

Dr. Ing Mohamed Anis Mastouri


 c. Paramètres de main
 Si la liste des paramètres de la fonction main est vide, il est d'usage
de la déclarer par ().

4. Les variables
 Les variables contiennent les valeurs qui sont utilisées pendant
l'exécution du programme. Les noms des variables sont des
identificateurs quelconques

Dr. Ing Mohamed Anis Mastouri


 Les identificateurs
 Les noms des fonctions et des variables en C sont composés d'une suite de
lettres et de chiffres. Le premier caractère doit être une lettre. Le symbole '_'
est aussi considéré comme une lettre.
 L'ensemble des symboles utilisables est donc:
{0,1,2,...,9,A,B,...,Z,_,a,b,...,z}
 Le premier caractère doit être une lettre (ou le symbole '_') .
 C distingue les majuscules et les minuscules, ainsi:
'Nom_de_variable' est différent de 'nom_de_variable'
 La longueur des identificateurs n'est pas limitée, mais C distingue
'seulement' les 31 premiers caractères.
 Exemples

Dr. Ing Mohamed Anis Mastouri


5. Les commentaires
 Un commentaire commence toujours par les deux symboles '/*' et se

termine par les symboles '*/'.


 Exemples
 /* Ceci est un commentaire correct */

Dr. Ing Mohamed Anis Mastouri


Exemple :
#include <stdio.h>
main() /* Notre premier programme en C */
{
printf("hello, world\n");
return 0;
}

Dr. Ing Mohamed Anis Mastouri


6. Les types simples:
6.1. Les types entiers
 Avant de pouvoir utiliser une variable, nous devons nous intéresser à

deux caractéristiques de son type numérique:


(1) le domaine des valeurs admissibles
(2) le nombre d'octets qui est réservé pour une variable
 Le tableau suivant résume les caractéristiques des types numériques

entiers de C :

définition description domaine min domaine max nombre d'octets


char caractère -128 127 1
short entier court -32768 32767 2
int entier standard -32768 32767 2
long entier long -2147483648 2147483647 4

Dr. Ing Mohamed Anis Mastouri


 6.2. Les types rationnels:
 En informatique, les rationnels sont souvent appelés des 'flottants'.

Ce terme vient de 'en virgule flottante' et trouve sa racine dans la


notation traditionnelle des rationnels :
<+|-> <mantisse> * 10<exposant>
<+|-> est le signe positif ou négatif du nombre
<mantisse> est un décimal positif avec un seul chiffre devant la virgule.
<exposant> est un entier relatif

Dr. Ing Mohamed Anis Mastouri


 Exemple : 1.25003*10-12

 En C, nous avons le choix entre trois types de rationnels: float,


double et long double.
définition précision mantisse domaine min domaine max nombre d'octets
float simple 6 3.4 * 10-38 3.4 * 1038 4
double double 15 1.7 * 10-308 1.7 * 10308 8
long double suppl. 19 3.4 * 10-4932 1.1 * 104932 10

 min et max
représentent les valeurs minimales et maximales positives. Les
valeurs négatives peuvent varier dans les mêmes domaines.
 Mantisse
indique le nombre de chiffres significatifs de la mantisse.

Dr. Ing Mohamed Anis Mastouri


6.4. La déclaration des variables simples

<Type> <NomVar1>,<NomVar2>,...,<NomVarN>;
Exemple :
Int compteur, X, Y; float hauteur, largeur; double masse; char touche;

 Il est possible aussi d'initialiser les variables lors de leur déclaration:

int MAX = 1023;


char TAB = '\t';
float X = 1.05e-4;

Dr. Ing Mohamed Anis Mastouri


7. Les opérateurs
 Opérateurs connus :
 Opérateurs arithmétiques : +, -, *, /, % (modulo, reste d'une div entière).
 Opérateurs logiques : && (and), || (or), ! (not).
 Opérateurs de comparaison : == (égal à), != (différent de), <, <=, >, >=
 Opérations logiques
 Les résultats des opérations de comparaison et des opérateurs logiques
sont du type int:
 - la valeur 1 correspond à la valeur booléenne vrai
 - la valeur 0 correspond à la valeur booléenne faux
 Les opérateurs logiques considèrent toute valeur différente de zéro comme
vrai et zéro comme faux:
 Exemple :
 32 && 2.3 1
 !65.34 0
 0||!(32 > 12) 0

Dr. Ing Mohamed Anis Mastouri


 Opérateurs d’affectation :
 <NomVariable> = <Expression>; Exemple :
 Avec les constantes : pi = 3.14 ;
 Avec les variables : a=b ;
 Avec les valeurs des expressions : AIRE = PI*pow(R,2);
 MOYENNE = (A+B)/2;
 Pour la plupart des expressions de la forme:
 expr1 = (expr1) op (expr2)
 Il existe une formulation équivalente qui utilise un opérateur
d'affectation:
 expr1 op= expr2

Dr. Ing Mohamed Anis Mastouri


 Opérateurs d'incrémentation et de décrémentation :
Les affectations les plus fréquentes sont du type:
I=I+1 et I=I-1
En C, nous disposons de deux opérateurs inhabituels pour ces
affectations

X = I++ passe d'abord la valeur de I à X et incrémente après


X = I-- passe d'abord la valeur de I à X et décrémente après
X = ++I incrémente d'abord et passe la valeur incrémentée à X
X = --I décrémente d'abord et passe la valeur décrémentée à X
Exemple
Supposons que la valeur de N est égal à 5:
Incrém. postfixe: X = N++;Résultat: N=6 et X=5
Incrém. préfixe: X = ++N; Résultat: N=6 et X=6

Dr. Ing Mohamed Anis Mastouri


 Les priorités des opérateurs

 Dans chaque classe de priorité, les opérateurs ont la même priorité.


Si nous avons une suite d'opérateurs binaires de la même classe,
l'évaluation se fait en passant de la gauche vers la droite dans
l'expression.
Dr. Ing Mohamed Anis Mastouri
 Exemple :
A *= B += 5 donne A= 27 pour A=3 et B=4

Pour A=1 et B=4, l'expression !--A==++!B sera évaluée comme suit:

Dr. Ing Mohamed Anis Mastouri


8. Les expressions et les instructions
 - Expressions :
Les constantes et les variables sont des expressions.
Les expressions peuvent être combinées entre elles par des
opérateurs et former ainsi des expressions plus complexes.
Les expressions peuvent contenir des appels de fonctions et elles
peuvent apparaître comme paramètres dans des appels de fonctions.
 Exemples

i =0
i++
X=pow(A,4)
printf(" Bonjour !\n")
a=(5*x+10*y)*2
(a+b)>=100
position!=limite

Dr. Ing Mohamed Anis Mastouri


 Instruction :
Une expression comme I=0 ou I++ ou printf(...) devient une instruction, si elle est suivie
d'un point-virgule.
Exemples
i=0;
i++;
X=pow(A,4);
printf(" Bonjour !\n");
a=(5*x+10*y)*2;
 Évaluation et résultats
En C toutes les expressions sont évaluées et retournent une valeur comme résultat:
(3+2==5) retourne la valeur 1 (vrai)
A=5+3 retourne la valeur 8
Remarque :
Comme les affectations sont aussi interprétées comme des expressions, il est possible
de profiter de la valeur rendue par l'affectation:
Exemple : ((A=sin(X)) == 0.5)

Dr. Ing Mohamed Anis Mastouri


9. Les fonctions arithmétiques standard

 Les fonctions suivantes sont prédéfinies dans la bibliothèque


standard <math>. Pour pouvoir les utiliser, le programme doit
contenir la ligne:
 #include <math.h>

 Remarque :
 Les arguments et les résultats des fonctions arithmétiques sont du
type double.

Dr. Ing Mohamed Anis Mastouri


Dr. Ing Mohamed Anis Mastouri
Remarque:
Il est possible de convertir explicitement une valeur en un type
quelconque en forçant la transformation à l'aide de la syntaxe:
(<Type>) <Expression>
Exemple
char A=3;
int B=4;
float C;
C = (float)A/B;

Dr. Ing Mohamed Anis Mastouri


 Exercice 1:
 Modifiez le programme 'hello world' de façon à obtenir le même
résultat sur l'écran en utilisant plusieurs fois la fonction printf.

Dr. Ing Mohamed Anis Mastouri


Ex1.sol
Voici une des solutions possibles:
#include <stdio.h>
/* Notre premier programme en C */
main()
{
printf("hello, ");
printf("world");
printf("\n");
return 0; }

Dr. Ing Mohamed Anis Mastouri


Exercice 2:
 Ci-dessous, vous trouvez un simple programme en C. Essayez de
distinguer et de classifier autant que possible les éléments qui
composent ce programme (commentaires, variables, déclarations,
instructions, etc.)

Dr. Ing Mohamed Anis Mastouri


Ex2.sol
 Commande au compilateur: #include<stdio.h>
pour pouvoir utiliser les fonctions printf et scanf.
 Fonction main
n'a pas de paramètres (la liste des paramètres est vide) et
fournit par défaut un résultat du type int (à l'environnement).
 Commentaires (/*…*/).
 Variables utilisées:
NOMBRE, SOMME, COMPTEUR déclarées comme entiers (type
int).
 Fonctions utilisées:
printf, scanf de la bibliothèque <stdio>

Dr. Ing Mohamed Anis Mastouri


Exercice 3:
 Evaluer les expressions suivantes en supposant
a=20 b=5 c=-10 d=2 x=12 y=15
 Notez chaque fois la valeur rendue comme résultat de l'expression et
les valeurs des variables dont le contenu a changé.

Dr. Ing Mohamed Anis Mastouri


Exercice3.sol

Dr. Ing Mohamed Anis Mastouri


Exercice 4:
 Essayez le programme suivant et modifiez-le de façon à ce qu'il
affiche:
AB,
l'hypoténuse d'un triangle rectangle de côtés A et B,
la tangente de A en n'utilisant que les fonctions sin et cos,
la valeur arrondie (en moins) de A/B,
la valeur arrondie (en moins) à trois positions derrière la virgule de
A/B.

Dr. Ing Mohamed Anis Mastouri


Dr. Ing Mohamed Anis Mastouri
Exercice 4. sol

Dr. Ing Mohamed Anis Mastouri


Dr. Ing Mohamed Anis Mastouri
Exercice 5:
 Ecrire un programme en C qui permet d’échanger les valeurs de 3
entiers saisis au clavier (valeur de B en A, valeur de C en B, valeur
de A en C).

 Ex5.sol:
#include <stdio.h>
int main()
{
Int A,B,C,X;
X=A;
A=B;
B=C;
C=X;
return 0;
}

Dr. Ing Mohamed Anis Mastouri

Vous aimerez peut-être aussi