Académique Documents
Professionnel Documents
Culture Documents
les instructions.
PARTIE 1
Algorithme Langage C
1. Introduction PROGRAMME nomprogramme [directives au préprocesseur]
Le codage d'un algorithme en langage C consiste à utiliser ce dernier pour Déclarations de variables globales Déclarations de variables globales
écrire un programme correspondant exactement à l'algorithme à coder. nom_du_programme
Cette opération est assez facile si l'algorithme respecte les conventions DEBUT {
étudiées précédemment.
Déclarations de variables locales Déclarations de variables locales
2. Structure d'un programme en langage C
Instructions du programme Instructions du programme
L'algorithmique et le langage C sont tous deux des langages structurés. Ils FIN }
sont donc sur ce plan très voisins.
Le bloc de programme de l'algorithmique se traduit immédiatement en C Un programme en langage C est constitué d’une ou plusieurs fonctions.
par une paire d'accolades.
Cette fonction s'appelle main. C'est un nom de fonction particulier qui
signifie « principal ». main est la fonction principale de votre programme,
Algorithme Langage C c'est toujours par la fonction main que le programme en C commence.
DEBUT {
Algorithme Langage C
FIN } PROGRAMME nomprogramme [directives au préprocesseur]
Déclarations de variables globales Déclarations de variables globales
Comme en algorithmique, des paires d'accolades peuvent être imbriquées, int main()
mais ne se chevauchent jamais. DEBUT {
Les expressions et les instructions sont définies comme en algorithmique
: Déclarations de variables locales Déclarations de variables locales
• Une expression est un ensemble d'identificateurs et d'opérateurs
formant une phrase évaluable. Instructions du programme
Instructions du programme
return 0 ;
• Une expression suivie d'un point-virgule est une instruction et
les opérateurs classiques de l'algorithmique existent tous en FIN }
langage C.
1
Le préprocesseur ou pré-compilateur est un utilitaire qui traite le fichier Le type chaine de caractères n’existe pas en langage C. Il faut savoir que
2
source avant le compilateur. Le mot include en anglais signifie « inclure le langage c, n’est pas prédisposé à manipuler les chaînes de caractère.
» en français. Ces lignes demandent d'inclure des fichiers au projet, c'est- Pour le langage c, une chaîne de caractère est un tableau à une seule
à-dire d'ajouter des fichiers pour la compilation. Ces fichiers existent déjà, colonne, rempli de caractères : une chaîne de caractères est une suite de
des fichiers source tout prêts. On les appelle des bibliothèques ou aussi de caractères (char), le tout étant terminé par un caractère supplémentaire de
librairies. code « null », soit en ASCII à 00. Cela permet simplement à votre
Les directives du préprocesseur commencent par #, et se terminent par un ordinateur de savoir quand s'arrête la chaîne ! donc une chaîne de
retour à la ligne et pas de point-virgule ( ; ) caractères n'est rien d'autre qu'un tableau de type char. Par exemple,
Exemple l’expression char prenom[7] désigne un tableau dont l’identificateur est
prenom et dont la taille est (6 + 1).
#include <stdio.h> /*déclare les fonctions qui gèrent les entrées sorties, …*/
#include <stdlib.h> /*déclare les fonctions qui effectuent les conversions des nombres, …*/
#include <math.h> /*déclare les fonctions mathématiques de base, …*/ S A M U E L
int main() Ce tableau pourra contenir un prénom de 6 caractères au maximum.
{
Déclarations de variables locales 4. Déclaration des variables
Instructions du programme
return 0 ; Une variable doit être définie par le programmateur dans une déclaration,
} où l'on indique le nom que l'on désire lui donner, son type (char, int, float,
...) pour que le compilateur sache combien de mémoire il doit lui réserver
et les opérateurs qui peuvent lui être associés, mais aussi comment elle
La ligne return 0 indique qu'on arrive à la fin de la fonction main et
doit être gérée (visibilité, durée de vie, ...). Les variables sont définies par
demande de renvoyer la valeur 0. En pratique, 0 signifie « tout s'est bien
le type suivi de l'identificateur.
passé » et n'importe quelle autre valeur signifie « erreur ».
Exemple
3. Les données d'un programme en langage C int nombre ;
float resultat ;
Les types de base du langage C sont les caractères (char), les entiers (int) float x,y ;
et les nombres en virgule flottante ou réel (float), ainsi que les tableaux. Pour déclarer des variables de type chaîne de caractères, rappelez-vous
qu’avec des chaînes de caractères, on travaille avec un tableau à une seule
Algorithme Langage C colonne (de façon simplifiée). On va donc devoir déclarer un tableau, qui
Caractère char devra être :
Entier int - nommer
Réel float
- dimensionner
- typer
2
On aura une instruction du genre : 7. L'affectation
3
type nom_tableau [nombre_caractères_maximum+1]
En C, l'affectation est un opérateur à part entière. Elle est symbolisée par
Exemple : le signe =. Sa syntaxe est la suivante :
int main() += -= *= /= %=
{
int i, j = 2; Pour tout opérateur op, l'expression
float x = 2.5; expression1 = expression1 op expression2
i = j + x;
x = x + i; est équivalente à
}
affecte à x la valeur 6.5 (et non 7), car dans l'instruction i = j + x;, expression1 op= expression2
l'expression j + x a été convertie en entier.
Toutefois, avec l'affection composée, expression1 n'est évaluée qu'une
9. Les opérateurs relationnels seule fois.
Exemple
> strictement supérieur
>= supérieur ou égal
Algorithme Langage C
< strictement inférieur x=x+y;
<= inférieur ou égal x ← x+ y ;
est équivalente à
== égal x += y ;
x←x-y;
!= différent x = x- y ; ou x -= y ;
x←x/y;
x = x/y ; ou x /= y ;
x←x%y;
x = x%y ; ou x %= y ;
4
11. Les opérateurs d'incrémentation et de décrémentation 12. Les initialisations de variables.
5
On doit souvent incrémenter ou décrémenter une variable. Le langage C Deux solutions sont possibles :
offre 2 opérateurs (unaires) pour effectuer ces opérations :
L'initialisation après déclaration. L'initialisation lors de la déclaration.
• ++ : incrémentation de 1 /* Déclaration */ /* Déclaration et Initialisation */
int i; int i=2;
• -- : décrémentation de 1 int main()
{ int main()
Les opérateurs d'incrémentation ++ et de décrémentation -- s'utilisent aussi /* Initialisation */ {
bien en suffixe (i++) qu'en préfixe (++i). Dans les deux cas la variable i
sera incrémentée, toutefois dans la notation suffixe la valeur retournée sera i=2; . /* les autres instructions */
l'ancienne valeur de i alors que dans la notation préfixe se sera la nouvelle. /* les autres instructions */ }
return 0 ;
Exemple 1 sur la pré-incrémentation/pré-décrémentation : }
.
return 0 ;
l'instruction : a = ++b; est équivalente à :
5
Les fonctions printf et scanf permettent d'afficher ou de lire Exemple :
6
simultanément plusieurs informations de type quelconque. scanf ("%d", &x);
a. La fonction d'affichage. scanf ("%d %d ", &x, &y);
scanf ("%c %f ", &rep, &nombre);
Elle permet d'afficher des messages et/ou des valeurs de variables sous
différents formats Le symbole & est obligatoire devant les identificateurs car scanf attend
des adresses et non des valeurs, sauf devant un identificateur de chaîne
de caractères.
Algorithme Langage C
#include <stdio.h>
Programme saisie int main()
DEBUT {
Var x : entier ; int x;
A : réel ; float A;
SAISIR x ; scanf ("%d", &x);
SAISIR A ; scanf ("%f", &A);
Les descripteurs de format ou code d'affichage sont décrits dans le FIN return 0 ;
}
tableau suivant : #include <stdio.h>
Programme saisie int main()
Type Format
Entier décimal %d
DEBUT {
Entier Octal %o Var x : entier ; int x;
Entier Hexadécimal
%x
A : réel ; float A;
(minuscules) SAISIR x,y ; scanf ("%d%f",&x,&A);
Entier Hexadécimal
(majuscules)
%X FIN return 0 ;
Entier Non Signé %u }
Caractère %c #include <stdio.h>
Chaîne de caractères %s Programme affichage
int main()
Flottant (réel) %f Var x : entier ;
{
Scientifique %e DEBUT
int x=0;
Long Entier %ld x←0;
Long entier non signé %lu printf ("vous avez le No %d",x) ;
Afficher (vous avez le No ",x)
Long flottant %lf return 0 ;
FIN
}
Programme affichage #include <stdio.h>
b. La fonction de saisie. Var age : entier ; int main()
moy : réel ; {
Elle permet de saisir des valeurs de variables formatées à partir du clavier. DEBUT int age=15;
x ← 15 ; float moy=12.5;
Comme printf elle est composée d'un format et des identificateurs de moy ← 12,5 ; printf ("à %d vous avez %f",age,moy)
variables à saisir. A la différence de printf, le format ne peut contenir de Afficher("à ",age,"vous avez", moy) ; return 0 ;
FIN }
texte, il est juste composé du format des valeurs à saisir.
6
c. Lecture et écriture des caractères Ou
7
En C, Pour afficher un caractère sur l’écran, l’instruction (AFFICHER ou #include <stdio.h>
#include <stdio.h>
Normalement, ce deuxième code est censé vous demander une lettre et
vous l'afficher, et cela deux fois. A l’exécution, Vous entrez une lettre,
int main( ) d'accord, mais… le programme s'arrête de suite après, il ne vous demande
pas la seconde lettre ! On dirait qu'il ignore le second scanf.
{
char maLettre ;
En fait, quand vous entrez du texte en console, tout ce que vous tapez est
printf("Entrer une lettre :") ; stocké quelque part en mémoire, y compris l'appui sur la touche Entrée
scanf("%c", &maLettre) ; (\n).
printf("\nTres bien, vous avez entre %c", maLettre); Ainsi, la première fois que vous entrez une lettre (par exemple C) puis que
vous appuyez sur Entrée, c'est la lettre C qui est renvoyée par le scanf.
return 0;
Mais la seconde fois, scanf renvoie le \n correspondant à la touche Entrée
}
que vous aviez pressée auparavant !
7
Pour afficher le contenu d’une variable de type tableau de char
8
dont
#include <stdio.h>
#include <stdlib.h>
l’identificateur est nom par exemple, on fait :
return 0 ;
#include <stdio.h> }
int main()
{
char nom[20], prenom[20], ville[25] ;
On peut aussi mettre des codes de contrôles dans un programme C :
printf("quelle est votre ville : ") ;
gets(ville); Code de contrôle Signification
\n Nouvelle ligne
printf("donnez votre nom: ") ;
\a Bip code ascii 7
scanf("%s", nom) ; \r Retour chariot
printf("donnez votre prenom: ") ; \b Espace arrière
scanf("%s", prenom) ; \t Tabulation
\f Saut de Page
printf("bonjour cher %s %s qui habitez %s ", prenom, nom, ville) ; \\ Antislash
\" Guillemet
return 0 ; \' Apostrophe
\'0' Caractère nul
}
\0ddd Valeur octale (ascii) ddd
\xdd Valeur hexadécimale dd
Exemple
#include <stdio.h>
void main()
{
printf("Salut je suis:\n\t Le roi \n\t\t A bientôt\a");
}
9
L’exécution donnera
10
#include <stdio.h>
Salut je suis int main ()
Le roi {
A bientôt (Plus un Bip sonore) int i, n;
printf ("Entrer un nombre positif:");
scanf("%d",&n);
if(n > 0)
14. Les instructions de contrôle {
printf ("%d ",n);
printf ("est un nombre positif");
a. L'alternative simple }
return 0;
• Pour une seule instruction se traduit par }
b. L'alternative complète
if (Condition)
instruction ; • Pour une seule instruction se traduit par
10
• Pour plusieurs instructions (bloc d’instructions) se traduit : 11
if (Condition) c. L'alternative imbriquée
{
#include <stdio.h>
les instructions ; int main ()
} {
float moyenne;
else printf ("donnez la valeur de la moyenne :");
scanf ("%f", &moyenne);
{ if (moyenne < 10)
printf (" mention ajourne \n");
les autres instruction ; else
} if (moyenne < 12)
printf ("mention passable \n");
else
Exemple if (moyenne < 14)
printf ("mention assez bien\n");
else
#include <stdio.h> if (moyenne <16)
int a,b; printf ("mention bien\n");
int main() else
{ printf ("mention tres bien\n");
return 0;
/* Saisie de a et de b */ }
printf("Donnez les valeurs de a et de b ");
scanf("%d %d",&a,&b);
/* Structure SI ALORS SINON */
if (a>b) 15. L'instruction de condition multiple : switch
{
printf("a=%d est supérieur à b=%d",a,b);
printf("\n"); La construction algorithmique appelée sélection ou choix multiple
} (SELON ou SUIVANT)
else
{
printf("a=%d est inférieur ou égal à b=%d",a,b);
printf("\n"); switch ExpressionEntiere
} {
return 0 ; case valeur1 : instruction1;
}
break;
case valeur2 : instruction2;
break;
...
default : instructionParDéfaut;
}
11
12
#include <stdio.h> #include <stdio.h>
int main ()
int main () {
{ int note ;
char reponse[5];
printf ("1: saisie des données \n"); printf ("donnez une valeur comprise entre 0 et 20 :");
printf ("2: calcul sur les données \n"); scanf ("%d", ¬e);
printf ("3: afficher un récapitulatif \n"); while ((note<0) || (note>20))
printf ("q: quitter le programme \n"); scanf ("%d", ¬e);
scanf ("%s", reponse);
switch (reponse[0]) // SELON la valeur de la première case du tableau printf ("Bravo, la valeur est acceptable");
{
case '1' : printf ("les instructions de saisie du programme\n");
break; return 0;
case '2' : printf ("les instructions de calcul du programme\n"); }
break;
case '3' : printf (" instructions pour récapitulatif du programme\n");
break;
case 'q' : • Pour plusieurs instructions (un bloc d’instructions)
case 'Q' : printf (" fin du programme\n");
}
while (condition)
return 0 ;
} {
les instructions ;
16. Les boucles
}
a. La boucle While
#include <stdio.h>
TantQue (condition) instruction FinTantQue int main ()
{
int note ;
Devient :
• Pour une seule instruction printf ("donnez une valeur comprise entre 0 et 20 :");
scanf ("%d", ¬e);
while ((note<0) || (note>20))
while (condition) {
printf ("donnez une valeur comprise entre 0 et 20 :");
instruction ; scanf ("%d", ¬e);
}
return 0;
}
12
b. La boucle do … While
13
#include <stdio.h>
Cette boucle n’est pas exactement celle que nous avons étudiée en int main ()
{
algorithmique (REPETER instructions… JUSQU’A (condition)). int note ;
printf ("donnez une valeur comprise entre 0 et 20 :");
En C, Il s’agit de la boucle FAIRE … Tant Que (condition) scanf ("%d", ¬e);
do
{
• Pour une seule instruction printf ("donnez une valeur comprise entre 0 et 20 :");
scanf ("%d", ¬e);
}
do while ((note<0) || (note>20));
#include <stdio.h>
• Pour une seule instruction
int main ()
{ for (identificateur = ValeurInitiale; identificateur < ValeurFinale ; identificateur +=increment)
int note ; instruction ;
printf ("donnez une valeur comprise entre 0 et 20 :");
scanf ("%d", ¬e); #include <stdio.h>
do int main ()
scanf ("%d", ¬e); {
while ((note<0) || (note>20)); int i, n;
printf ("Entrer un nombre pour entier positif:");
printf ("Bravo, la valeur est acceptable"); scanf("%d",&n);
return 0;
} printf ("\nles nombres pairs de 0 à %d sont :",n);
for (i=0 ; i <= n ; i+=2)
printf("%d ",i);
• Pour plusieurs instructions return 0;
do }
{
Les instructions ;
}
while (condition) ;
/*Remarquez ce ; pour marquer la fin de l’instruction */
13
• Pour plusieurs instructions
14
for (identificateur = ValeurInitiale; identificateur < ValeurFinale ; identificateur +=increment)
{
Les instructions ;
}
#include <stdio.h>
int main ()
{
int i, n;
}
return 0;
}
14