Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Cours de langage de
programmation C
langage C
2
1 Généralités dur le langage C
Un programme est une suite d’instructions (opérations) que la machine peut exécuter
pour effectuer des traitements.
L'exécution d'un programme par l'ordinateur passe, en général, par les étapes suivantes :
Pour pouvoir effectuer un traitement donné, la machine doit donc disposer du programme
exécutable correspondant.
Ce programme doit se trouver en mémoire et doit être codé en binaire (langage machine).
Un langage de programmation est par définition différent du langage machine. Il faut donc le
traduire pour le rendre intelligible du point de vue du processeur
Les langages de programmation sont majoritairement de deux types : les langages interprétés
et les langages compilés.
Un programme écrit dans un langage dit compilé va être traduit une fois pour toutes par un
programme annexe : le compilateur, afin de générer un nouveau fichier qui sera autonome,
3
c'est-à-dire qui n'aura plus besoin d'un programme autre que lui pour s'exécuter (on dit
d'ailleurs que ce fichier est exécutable).
Exemples de langages compilés : Le langage C, le langage C++, le Cobol, etc.
Le langage C a été créé en 1972 par Denis Ritchie avec un objectif relativement limité : écrire
un système d’exploitation (UNIX).
Ses qualités opérationnelles l’ont très vite fait adopter par une large communauté de
programmeurs.
Le C est un langage compilé. Cela signifie qu’un programme C est décrit par un fichier texte,
appelé fichier source. Ce fichier n’étant évidemment pas exécutable par le processeur, il faut
donc le traduire en langage machine. Cette opération est effectuée par un programme appelé
compilateur.
Le C est un langage compilé (par opposition aux langages interprétés). il faut donc le traduire
en langage machine par un programme appelé compilateur. La compilation se décompose en
fait en 4 phases successives :
Edition du programme source (ou code source) à l’aide d’un éditeur (traitement de
textes). Le nom du fichier contenant le programme source a l’extension «.C » ou « .CPP
».
Editions de liens: c’est un outil qui crée le programme final (le fichier exécutable
d’extension « .exe »). Pour ce faire, il lie le fichier objet aux bibliothèques de langage C.
Les bibliothèques contiennent les instructions qui indiquent à l’ordinateur ce qu’il faut
faire. Ces instructions sont sélectionnées et exécutées en fonction des instructions
abrégées trouvées dans le code du fichier objet.
4
Exécution du programme : après l’étape de l’édition de liens vient l’étape d'exécution
du résultat. L’exécution vise principalement à démontrer que le programme fait ce que
vous voulez et de la manière que vous désirez. Lorsque le programme ne fonctionne pas,
vous devez revenir en arrière et corriger le code. Il est tout à fait possible de créer un
programme sans aucune erreur, puis de constater que le programme ne fonctionne pas (ne
donne pas le résultat désiré).
5
La deuxième méthode consiste à utiliser un environnement de développement intégré
(integrated development environment) abrévié en IDE. Il regroupe tous les outils dont
avez besoin pour programmer dans une unité compacte, terrifiante et intimidante.
L’utilisation d'un IDE résout également la multitude de problèmes liés à la configuration d'un
compilateur, à la configuration de l'éditeur de texte et à la mise en synergie de tous ces
éléments.
Dans ce cours, l’IDE utilisé sera Dev-C++ dont l’interface se présente ainsi :
Comme dans la plupart des langages, ils sont formés d’une suite de caractères choisis parmi
les lettres ou les chiffres, le premier d’entre eux étant nécessairement une lettre.
6
Un identificateur doit être composé indifféremment de lettres et chiffres ainsi que du
caractère de soulignement ( _ ) qui peut remplacer des espaces.
Seuls les 32 premiers caractères (parfois, uniquement les 8 premiers) sont significatifs
(pris en compte par le compilateur).
Un identificateur ne doit pas être un mot réservé (utilisé dans le langage C comme int,
char, …).
Exemples
« solution1 » est un identificateur valide (constitué de lettres et de 1)
« 1solution » n'est pas un identificateur valide.
« prix unitaire » n'est pas un identificateur valide (il contient un espace).
« prix_unitaire » est un identificateur valide.
« jour », « Jour »et « JOUR » sont 3 identificateurs différents
int n'est pas un identificateur valide. C'est un mot utilisé (mot clé) en C
7
décimale,
exponentielle.
La notation décimale doit comporter obligatoirement un point (correspondant à notre
virgule).
La partie entière ou la partie décimale peut être omise (mais, bien sûr, pas toutes les deux en
même temps !).
8
De plus, il est possible d’utiliser directement le code du caractère en l’exprimant, toujours à
la suite du caractère « antislash \ » :
soit sous forme octale,
soit sous forme hexadécimale précédée de x.
Voici quelques exemples de notations équivalentes, dans le code ASCII :
Remarque
Les constantes chaînes de caractères doivent être entourées de guillemets, par exemple
"bonjour"
Les opérateurs, délimiteurs et séparateurs en C sont formés à partir des divers caractères qui
ne sont pas utilisés par les identificateurs. La table ci-dessous indique toutes les séquences
utilisées :
9
On trouve, dans la table :
Etc.
[directives au préprocesseur]
[fonctions secondaires]
main()
{
<déclarations de variables>
<Instructions à exécuter>
10
Chapitre 1
d’entrées/sorties
11
Chapitre 1 : Les variables, valeurs et opérateurs
1 Les variables
Les variables sont les données que manipulera le programme lors de son exécution. Ces
variables sont rangées dans la mémoire vive de l’ordinateur. Les variables doivent être
déclarées au début du programme.
Tous les types cités auparavant peuvent être précédé par le qualificatif dits unsigned
(non signés) qui signifie qu’on peut stocker que des nombres positifs : unsigned int,
unsigned short, unsigned long, unsigned float, unsigned double, unsigned long double
Les unsigned sont des types qui ont le défaut de ne pas pouvoir stocker de nombres
négatifs, mais l'avantage de pouvoir stocker des nombres deux fois plus grands (int
peut représenter de -32 767 à 32 767, tandis qu’unsigned int va de 0 à 65 535).
12
Exemples
Les trois instructions suivantes sont des déclarations des variables :
int j, j, k;
int al, a2;
float x;
double xl, x2;
char a;
L’opérateur sizeof() renvoie le nombre d’octets réservés en mémoire pour chaque type
d’objet sur la plateforme utilisée.
Syntaxe
Taille_objet = sizeof(Type);
Exemple
n = sizeof(char);
Résultat : n=1
Syntaxe
typedef déclaration;
Exemple
En utilisant l’attribut const, nous pouvons indiquer que la valeur d’une variable ne change
pas au cours d’un programme
Syntaxe
13
Exemple
2 Les opérateurs
+ Addition
- Soustraction
* Multiplication
/ Division
% Reste de la division
Remarque
Le résultat d’une opération entre types différents se fait dans le type le plus haut. Les types
sont classés ainsi : char < int <long < float <double
Exemple
p1 * p2 + p3 * x
*
*
int + float
float
En C comme dans les autres langages, lorsque plusieurs opérateurs apparaissent dans une
même expression, les règles sont naturelles et rejoignent celles de l’algèbre traditionnelle.
a + b * c a + (b * c)
a * b + c % d (a * b) + (c % d)
-c % d (-c) % d
-a + c % d (- a) + (c % d)
-a / - b + c ((-a)/(-b))+c
-a / - (b + c) (-a)/(-(b+c))
14
2.2 Les opérateurs de conversion de type
Syntaxe
(<Type>) <Expression>;
Exemple
int A=3;
int B=4;
float C, D;
C = (float)A/B;
D = (float)(A/B+A);
Remarque
Le résultat de la comparaison est, non pas une valeur ”booléenne” prenant l’une des deux
valeurs vrai ou faux, mais un entier valant :
0 si le résultat de la comparaison est faux.
1 si le résultat de la comparaison est vrai.
15
Exemple
Exemple
i++ ⇒ i = i + 1
i-- ⇒ i = i - 1
Remarque
Exemple
16
3 Les instructions d’entrées-sorties
Syntaxe
Exemples
printf(”variable 1: ”);
Si des variables suivent la chaîne de caractères, on doit spécifier comment présenter ces
variables, autrement dit, on doit spécifier la chaine de formatage de ces variables
Forma Types signification
ts
%c Char Caractère
%s Char Chaîne de caractères
%d Int Entier signé
%u Unsigned int Entier non signé (positif)
%hd Short Entier court
%hu Unsigned short Entier court non signé
%ld Long int Entier long signé
%lu Unsigned long int Entier long non signé
%f Float Réel, notation avec le point décimal (ex:13.15)
%e Float Réel, notation exponentiel (ex : 0.123E+03)
%lf Double Réel en double précision avec le point décimal
%le Double Réel en double précision, notation exponentielle
17
Exemple
int i=l;
int j=2;
printf (“la somme de i et j est:\n”);
printf (“i = %d \t j= %d \n”,i,j);
la somme de i et j est:
ì = l j = 2
i+j = 3
Remarque
La fonction scanf() (de la bibliothèque stdio.h) permet de lire la valeur que l’utilisateur saisi
au clavier et de la stocker dans la variable donnée en argument.
Syntaxe
Exemple
char a;
int j;
float r;
scanf(”%c”,&a); /* saisie d’un caractère */
scanf(”%d”,&i); /* saisie d’un nombre entier en décimal */
scanf(”%f”,&r); /* saisie d’un nombre réel */
18
Exercice:
19
Chapitre 2
Les instructions de
contrôle
20
Chapitre 2 : Les instructions de contrôle
Les instructions de contrôle sont des instructions qui permettent de faire des tests et des
boucles dans un programme.
1. L’instruction if
2. L’instruction switch
3. L’instruction while
4. L’instruction do-while
5. L’instruction for
1.1 L’instruction if
if est une instruction qui permet d’effectuer un traitement selon la condition ou l’expression
logique.
Syntaxe
if (expression_logique)
{
bloc d’instructions_1;
}
else
{
bloc d’instructions_2;
}
Exemple
if (note_module <10)
printf(”Attention vous avez un rattrapage”);
else
printf(”vous avez validé le module”);
21
1.2 L’instruction if imbriquée
Syntaxe
if(expression_logique 1)
instruction 1;
else if (expression_logique 2)
instructions 2;
else
instruction 3;
Exercice
Ecrire un algorithme qui permet de résoudre l’équation du second degré ax2+bx+c, les trois
coefficients a, b, et c seront saisis au clavier avant le traitement.
Syntaxe
Switch(n)
{
Case constant_1: [suite_d’instructions_1]
Break;
Case constante_2: [suite_d’instructions_2]
Break;
…………………………………………………………………………………………………
case constante_n: [suite_d’instructions_n]
break;
Default: [suite_d’instructions]
}
Principe
22
Exemple
main()
{
int n ;
printf (“donnez un entier : “) ;
scanf (“%d”, &n) ;
switch (n)
{
case 0 : printf (“nul\n”) ;
break ;
case 1 : printf (“un\n”) ;
break ;
case 2 : printf (“deux\n”) ;
break ;
default : printf (“grand\n”) ;
}
printf (“ fin”) ;
}
Résultat 1
donnez un entier: 2
deux
fin
Résultat 2
donnez un entier : 25
grand
Fin
La structure while correspond tout à fait à la structure tant que du langage algorithmique.
Syntaxe
while (expression_logique)
{
bloc d’instructions
}
23
Principe
Exemple
int j = 1;
while (j < 10)
{
printf(”\n i = %d”, i);
i++;
}
Syntaxe
Do
{
bloc instructions
}
while (expression_logique);
int N;
do
{
printf(”Introduisez un nombre entre 1 et 10 :“);
scanf(” %d”, &N);
}
while (N < l ││ N > 10);
24
2.3 Instruction for
Syntaxe
for(initialisation; condition de
continuité; modification)
{
Bloc instructions
}
Exemples
Remarque
L’expression
Est équivalent à
Expression_1 ;
while (expression_2)
{
instructions ;
expression_3;
}
25
Exemple
La boucle suivante :
est équivalent à :
int j = 1;
while (j < 10)
{
printf(”\n i = %d “, i);
j++;
}
Exercice
Ecrire un programme qui calcul a n
Les deux premières s’emploient principalement au sein de boucles tandis que la dernière est
d’un usage libre
26
3.1 L’instruction break
Exemple
main()
{
int j;
for (j = 0; j < 5; i++)
{
printf(”i = %d \n”, i);
if (j == 3)
break;
}
printf(”valeur de j a la sortie de la boucle est : %d\n”, j) ;
}
Résultat
i = 0
i = 1
i = 3
valeur de i a la sortie de la boucle est : 3
Exemple
main()
{
int i;
for (i=0; i<5; i++)
{
if (j == 3)
continue;
printf(”i = %d \n”, i);
}
printf(”valeur de i a la sortie de la boucle est : %d \n”, i) ;}
27
Résultat
i = 0
i = 1
i = 2
ì = 4
valeur de i a la sortie de la boucle est : 5
Exemple
main ()
{
int j ;
for ( i=l ; i<=10 ; i++ )
{
printf(“debut iteration %d\n”, j);
printf(“bonjour\n”);
if ( i==3 ) goto sortie;
printf (“fin iteration %d\n”, i);
}
sortie : printf(“apres la boucle”) ;
}
Résultat
debut iteration 1
bonjour
fin iteration 1
debut iteration 2
bonjour
fin iteration 2
debut iteration 3
bonjour
apres la boucle
28