Vous êtes sur la page 1sur 144

- ALGORITHMIQUE ET PROGRAMMATION -

1
– ALGORITHMIQUE ET PROGRAMMATION -

2
– ALGORITHMIQUE ET PROGRAMMATION -

L’algorithmique est un terme d’origine arabe, hommage à Al Khawarizmi (780-850)


auteur d’un ouvrage décrivant des méthodes de calculs algébriques.

Un algorithme est un ensemble de règles opératoires rigoureuses, ordonnant à un processeur


d’exécuter dans un ordre déterminé une succession d’opérations élémentaires, pour résoudre un problème
donné. C’est un outil méthodologique général qui ne doit pas être confondu avec le programme proprement
dit.

3
– ALGORITHMIQUE ET PROGRAMMATION -

Un algorithme peut être :

1. Représenté graphiquement par un organigramme.

2. Écrit sous forme littérale avec un langage algorithmique.

4
– ALGORITHMIQUE ET PROGRAMMATION -

Forme graphique (organigramme)

La représentation graphique permet une lecture aisée des algorithmes mais présente
toutefois l’inconvénient de consommer une place importante. Les opérations dans un
organigramme sont représentées par les symboles dont les formes sont normalisées. Ces
symboles sont reliés entre eux par des lignes fléchées qui indiquent le chemin. C’est ainsi
qu’on a :

5
– ALGORITHMIQUE ET PROGRAMMATION -

Forme graphique (organigramme)

6
– ALGORITHMIQUE ET PROGRAMMATION -

Un algorithme a à peu près toujours la même organisation générale. Trois grandes


parties se distinguent :
1. L’en-tête de l’algorithme
2. Partie déclaration
3. Le corps de l’algorithme :partie traitement

7
– ALGORITHMIQUE ET PROGRAMMATION -

8
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple : Créer un algorithme pour calculer la moyenne de 3 notes


Forme littérale :

9
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple : Créer un algorithme pour calculer la moyenne de 3 notes


Forme graphique :

10
– ALGORITHMIQUE ET PROGRAMMATION -

• Les données sont des informations nécessaires au déroulement d’un algorithme. On distingue
deux catégories : les constantes et les variables.

• Une constante est une donnée fixe qui ne varie pas durant l’exécution d’un algorithme. Une
constante est caractérisée par son nom et sa valeur (fixe)

Syntaxe de déclaration d’une constante :

Constante Nom_Constante ← valeur ;


Exemple :
Constante Pi ←3,14 ;
Constante B ← 6 ;
Constante Mois ← ’Mars’ ;

11
– ALGORITHMIQUE ET PROGRAMMATION -

• Une variable est un objet dont le contenu peut être modifié par une action
durant l’exécution d’un algorithme. Une variable est caractérisée par son nom,
sa valeur et son type.

Syntaxe de déclaration d’une variable :

Variable Nom_Variable :Type ;


Exemple :
Variable nbr_élèves : entier ;
Variable note : réel ;
Variable Prénom : chaines de caractères ;
Variable A : logique ;
Variable Opérateur : caractère ;

12
– ALGORITHMIQUE ET PROGRAMMATION -

•Entier : sert à manipuler les nombres entiers positifs ou négatifs. (Ex : Variables a, b, c : entier ;)
• Réel : sert à manipuler les nombres à virgule. (Ex : Variables r, s : réel ;)
•Caractère : permet de manipuler les caractères alphabétiques et numériques. (Ex : Variable code :
caractère ;)
• Chaîne : sert à manipuler les chaînes de caractères. (Ex : Variable Nom_prenom : chaîne ;)
• Logique : utilise les expressions logiques : (Vrai ou Faux). (Ex : Variable absent : logique ;)

13
– ALGORITHMIQUE ET PROGRAMMATION -

Exemples :

14
– ALGORITHMIQUE ET PROGRAMMATION -

Exemples :

• ’32’ est différent de 32 parce que 32 est trente deux par contre ’32’ représente la suite des
caractères 3 et 2.
• Une variable de type numérique ne peut pas recevoir une chaine de caractères ou logique.

15
– ALGORITHMIQUE ET PROGRAMMATION -

L’affectation est une opération qui consiste à attribuer une valeur à une variable. Elle est
représentée par une flèche orientée à gauche.

Syntaxe d’affectation :

Variable ← valeur ou expression ;


Exemple :

A←2 ; (la variable A reçoit la valeur 2) ;


B ←A+2 ;(la variable B reçoit le contenu de A plus 2.)
Nom←’Ali’ ;( la variable Nom reçoit la valeur Ali. )

16
– ALGORITHMIQUE ET PROGRAMMATION -

Exercice :
Soient trois variables A, B et C tels que :

• A est de type entier.


• B est de type chaine de caractères.
• C est type logique.

1. Déclarer les variables A, B et C dans ce cas ?


2. Cocher une bonne réponse :

A←1; A ← ’Al hoceima’ ;


B ←3 ; B ←A ; B ←’Management’
C ← 10 ; C ← 2<5 ; C ← 2<-1 ;

17
– ALGORITHMIQUE ET PROGRAMMATION -

Exercice :
Compléter le tableau suivant :

18
– ALGORITHMIQUE ET PROGRAMMATION -

La lecture est une instruction qui permet de lire des données tapées au clavier.

Syntaxe :

Lire (variable1) ;
Lire (variable1, variable2,. . . ) ;
Exemple :

• Lire (nombre) ;
• Lire (nom, prénom, âge) ;

19
– ALGORITHMIQUE ET PROGRAMMATION -

L’écriture est une instruction qui permet d’afficher le contenu d’une variable ou/et
un message sur l’écran .

Syntaxe :

Ecrire(variable) ;
Ecrire(’Message’) ;
Ecrire(’Message’, variable) ;
Exemple :

• Ecrire(A) ; // afficher sur l’écran le contenu de la variable A.


• Ecrire(’Hello World !’) ; //afficher sur l’écran le message : Hello World !

20
– ALGORITHMIQUE ET PROGRAMMATION -

Une expression arithmétique peut être composée d’opérateurs, d’opérandes et


de parenthèses.
• Les opérateurs arithmétiques usuels sont :

+ : addition.
- : soustraction.
* : multiplication.
/ : division.
ˆ : puissance.
Div : Division entière.
Mod ou % (modulo) : Reste de la division entière

21
– ALGORITHMIQUE ET PROGRAMMATION -

Une expression arithmétique peut être composée d’opérateurs, d’opérandes et de parenthèses.

Une opérande peut être :

• Un nom d’une variable ou une constante de type numérique : Pi * R * R


• Une valeur numérique : 5 + 12.3

• Une expression logique simple est une comparaison entre deux expressions arithmétiques.
• Les opérateurs de comparaison usuels sont : > ,= , <, >= ,<=, …

22
– ALGORITHMIQUE ET PROGRAMMATION -

• Lorsqu’un algorithme devient long, il est conseillé d’ajouter des lignes de commentaires dans
l’algorithme, c’est-à-dire des lignes qui ont pour but de donner des descriptions sur les instructions
effectuées.

• On a deux manières de définir les commentaires :

// commentaire sur une seule ligne.


/* commentaire sur une ou plusieurs lignes */

• Un commentaire n’est jamais exécutable et ne perturbe plus l’exécution du programme !


-32

23
– ALGORITHMIQUE ET PROGRAMMATION -

1. Établir la liste des données en entrée, la liste des données en sortie et les liens
entre elles.

2. Construire un chemin de résolution qui permet d’obtenir les données en sortie


à partir des données en entrée : schéma de résolution informatique.

3. Décrire le schéma de résolution en termes d’instructions élémentaires acceptées par ordinateur :


l’algorithme.

4. Chaque instruction se termine par un point virgule ; .

5. La virgule est un séparateur des variables. On peut avoir plusieurs instructions sur une même
ligne séparées par un point virgule

24
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

Ecrire un algorithme permet de permuter les valeurs de deux variables x et


y. c’est-à-dire la valeur de x sera donnée à y et celle de y sera donnée à x.

Solution :

1. Identification des données d’entrées et de sorties


• Donnée en entrées : x et y
• Données en sorties : x et y échangées
2. Chemin de résolution
• Donner une valeur à x ;
• Donner une valeur à y ;
• Échanger les valeurs de x et y ;
• Afficher x et y.
3. Traduire le chemin en algorithme

25
– ALGORITHMIQUE ET PROGRAMMATION -

26
– ALGORITHMIQUE ET PROGRAMMATION -

Ecrire un algorithme qui calcule la somme et le produit de deux


données numériques .

27
– ALGORITHMIQUE ET PROGRAMMATION -

28
– ALGORITHMIQUE ET PROGRAMMATION -

29
– ALGORITHMIQUE ET PROGRAMMATION -

Le langage C a été conçu en 1972 par Dennis Richie et Ken Thompson, chercheurs aux Bell Labs, afin de
développer un système d’exploitation UNIX . En 1978, Brian Kernighan et Dennis Richie publient la
définition classique du C dans le livre The C Programming language .Le C devenant de plus en plus
populaire dans les années 80, plusieurs groupes mirent sur le marché des compilateurs comportant des
extensions particulières. Actuellement, de nombreux langages plus modernes comme C++, C], Java et PHP
ou Javascript ont repris une syntaxe similaire au C et reprennent en partie sa logique. C offre au
développeur une marge de contrôle importante sur la machine (notamment sur la gestion de la mémoire).

30
– ALGORITHMIQUE ET PROGRAMMATION -

La constante :
• Elle ne change jamais de valeur pendant l’exécution d’un programme. Elle est généralement stockée
dans la mémoire morte d’une machine.

• Il n’y a pas d’allocation mémoire, mais on peut affecter à un identificateur (Nom)


une valeur constante par l’instruction # define

Syntaxe :
# define <identificateur> <valeur>
# define PI 3.14

31
– ALGORITHMIQUE ET PROGRAMMATION -

Variable :

• Les variables contiennent les valeurs utilisées pendant l’exécution du programme


• Déclarer une variable, c’est prévenir le compilateur qu’un nom va être utilisé pour designer un
emplacement de la mémoire.
• Les noms des variables sont des identificateurs.
• Toute variable doit être déclarée avant les instructions et son type spécifié dès la déclaration
Syntaxe :
<type> <identificateur 1>,..,<identificateur n> ;

32
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

33
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :
• Le type : Détermine la taille de la variable et les opérations pouvant être effectuées.

• L’identificateur : C’est le nom affecté à la variable, le nombre de caractères peut être limité, cela
dépend du compilateur utilisé. L’identificateur d’une variable doit toujours être écrit de la même façon :
Mon_Identificateur # mon_identificateur # MON_IDENTIFICATEUR.

• Les seuls caractères autorisés pour les noms (identificateur) de variables sont :
• lettres NON accentuées ;
• chiffres ;
• caractères souligné " _ ".

34
– ALGORITHMIQUE ET PROGRAMMATION -

Le tableau suivant résume les types simples prédéfinis en C :

35
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

float rayon ; /*Déclaration de réel*/


int i,j ; /*Déclaration d’entier*/
char t ; /*Déclaration de caractère*/
double pi ; /*Déclaration de réel double*/

36
– ALGORITHMIQUE ET PROGRAMMATION -

L’opérateur d’affectation :
• Il permet de modifier la valeur d’une variable.
• L’affectation est toujours effectuée de la droite vers la gauche
• Le programme commence par évaluer la valeur de l’expression puis l’affecte avec
le signe = à la variable par son identificateur.

Syntaxe :
<identificateur> = <expression> ;

37
– ALGORITHMIQUE ET PROGRAMMATION -

L’opérateur d’affectation ( Exemple):

38
– ALGORITHMIQUE ET PROGRAMMATION -

La fonction d’affichage printf() permet d’afficher des messages et/ou des valeurs de
variables sous différents formats.

Syntaxe :
printf ("Format",identificateur1, ....,identificateur n) ;

39
– ALGORITHMIQUE ET PROGRAMMATION -

Le format :
• indique comment vont être affiché les valeurs des variables. Il est composé de texte et de codes d’affichage
suivant le type de variable.
Exemple :

40
– ALGORITHMIQUE ET PROGRAMMATION -

Codes d’affichage :

41
– ALGORITHMIQUE ET PROGRAMMATION -

Important :

Au début d’un programme utilisant les fonctions d’affichage et de saisie il est nécessaire
d’écrire # include <stdio.h>, car toutes les fonctions sont déclarées dans ce fichier d’en-tête.
Exemple :

Le programme affiche :
La valeur de a est 1, celle de b est 2, et celle de c est 3.

42
– ALGORITHMIQUE ET PROGRAMMATION -

On peut aussi mettre des codes de contrôles :

43
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

Le programme affiche :

Salut je suis
etudiant a la FSTH
A bientot

44
– ALGORITHMIQUE ET PROGRAMMATION -

A. La fonction scanf() permet de saisir des valeurs de variables formatées à partir du clavier.

B. Comme printf() elle est composée d’un format et des identificateurs de variables à saisir.

C. A la différence de printf(), le format ne peut contenir de texte, il est juste composé du format des
valeurs à saisir.

Syntaxe :
scanf(<"Format">,&identificateur1, ...., &identificateurn) ;

45
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

46
– ALGORITHMIQUE ET PROGRAMMATION -

Remarques :

• 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.

• Les codes d’affichage pour printf deviennent les codes d’entrée pour scanf().

• Pour l’utilisation de scanf() il faut inclure le fichier stdio.h au début du programme.

47
– ALGORITHMIQUE ET PROGRAMMATION -

Remarques :

48
– ALGORITHMIQUE ET PROGRAMMATION -

La fonction putchar() permet d’afficher un caractère à l’écran.

Syntaxe :
putchar(identificateur1) ;
Exemple :

49
– ALGORITHMIQUE ET PROGRAMMATION -

La fonction getchar() permet de saisir un caractère au clavier.

Syntaxe :
identificateur1 = getchar() ;
Exemple :

50
– ALGORITHMIQUE ET PROGRAMMATION -

Les opérateurs de calcul :

Les opérateurs de calcul permettent de modifier mathématiquement la valeur d’une


variable.

51
– ALGORITHMIQUE ET PROGRAMMATION -

Les opérateurs d’assignation :

• Ces opérateurs permettent de simplifier des opérations telles que "ajouter une valeur dans une
variable et stocker le résultat dans la variable".
• Avec les opérateurs d’assignation il est possible d’écrire x = x+2 sous la forme suivante x+=2

52
– ALGORITHMIQUE ET PROGRAMMATION -

Les opérateurs d’incrémentation :

• Ce type d’opérateur permet de facilement augmenter ou diminuer d’une unité une


variable.
variable

53
– ALGORITHMIQUE ET PROGRAMMATION -

Les opérateurs de comparaison :

54
– ALGORITHMIQUE ET PROGRAMMATION -

Les opérateurs logiques (booléens) :

55
– ALGORITHMIQUE ET PROGRAMMATION -

56
– ALGORITHMIQUE ET PROGRAMMATION -

Les structures de contrôle définissent la suite dans laquelle les instructions sont
effectuées. Dans ce chapitre, nous allons voir comment les instructions de sélection
connues fonctionnent en algorithmique et en C. Ces structures sont utilisées pour décider
de l’exécution d’un bloc d’instruction : est ce-que ce bloc est exécuté ou non. Ou bien
pour choisir entre l’exécution de deux blocs différents.

57
– ALGORITHMIQUE ET PROGRAMMATION -

Une instruction de choix simple contient un seul bloc d’instructions. Selon une condition (expression
logique), on décide est-ce-que le bloc d’instructions est exécuté ou non.
Si la condition est vraie, on exécute le bloc, sinon on ne l’exécute pas. La syntaxe d’un
test alternatif simple est comme suit :

58
– ALGORITHMIQUE ET PROGRAMMATION -

Organigramme d’une instruction de choix simple :

59
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

Écrire un algorithme qui demande un entier (A) à l’utilisateur, teste si ce nombre


est positif (A>= 0) et affiche "positif".

60
– ALGORITHMIQUE ET PROGRAMMATION -

Solution :
Organigramme :

61
– ALGORITHMIQUE ET PROGRAMMATION -

Algorithme :

62
– ALGORITHMIQUE ET PROGRAMMATION -

En C, l’alternative se code par le mot-clé if (si), et la condition doit obligatoirement être entre
parenthèses. Le bloc d’instructions est soit un bloc C mis entre accolades, soit (déconseillé) une unique
instruction qui n’a pas besoin d’accolades.
La traduction du l’exemple ci-dessus en langage C est :

63
– ALGORITHMIQUE ET PROGRAMMATION -

Un test double contient deux blocs d’instructions : on est amené à décider entre le premier bloc ou le
second. Cette décision est réalisée selon une condition (expression logique ou booléenne) qui peut être vraie
ou fausse. Si la condition est vraie on exécute le premier bloc, sinon on exécute le second. La syntaxe d’un test
alternatif double est comme suit :

64
– ALGORITHMIQUE ET PROGRAMMATION -

Organigramme d’une instruction double :

65
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

Écrire un algorithme qui demande un entier (A) à l’utilisateur, teste si ce nombre est
positif (A >= 0) ou non, et affiche "positif" ou "négatif".

66
– ALGORITHMIQUE ET PROGRAMMATION -

Solution :
Organigramme :

67
– ALGORITHMIQUE ET PROGRAMMATION -

Algorithme :

68
– ALGORITHMIQUE ET PROGRAMMATION -

En C, l’alternative se code par les mots-clés if (si) et else (sinon), et la condition doit obligatoirement
être entre parenthèses. Le bloc d’instructions est soit un bloc C mis entre accolades, soit (déconseillé) une
unique instruction qui n’a pas besoin d’accolades. L’instruction else (sinon) permet de programmer une
exécution alternative lorsque la condition suivant if n’est pas réalisée.
La traduction de l’exemple ci-dessus en langage C est :

69
– ALGORITHMIQUE ET PROGRAMMATION -

Plusieurs structures conditionnelles peuvent être imbriquées, si bien que dans une structure peut
(peuvent) figurer une ou plusieurs structure(s) conditionnelle(s), et les tests peuvent avoir un degré
quelconque d’imbrications.

Syntaxe :

70
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

Écrire un algorithme qui demande un entier à l’utilisateur, teste si ce nombre est strictement positif, nul
ou strictement négatif, et affiche ce résultat.

71
– ALGORITHMIQUE ET PROGRAMMATION -

Solution :
Organigramme :

72
– ALGORITHMIQUE ET PROGRAMMATION -

Algorithme :

73
– ALGORITHMIQUE ET PROGRAMMATION -

La traduction de l’exemple ci-dessus en langage C est la suivante :

74
– ALGORITHMIQUE ET PROGRAMMATION -

Lorsque l’imbrication des alternatives devient importante, l’utilisation de la structure à choix multiple
devient nécessaire. Une structure de choix permet, en fonction de plusieurs conditions de type booléen,
d’exécuter des traitements différents selon les valeurs que peut prendre une même variable.
Syntaxe :

75
– ALGORITHMIQUE ET PROGRAMMATION -

• V1, ..., Vn sont des constantes de type scalaire (entier, réel, caractère ...)
• Les instructions i est exécutée si V = V i (on quitte ensuite le selon)
• "autre cas " est exécutée si quelque soit i, V 6 ≠ Vi

Exemple :

Ecrire un algorithme qui, suivant la valeur entrée, affiche le mois correspondant.


(ex : 1 -→ janvier, 2 -→ février, ...)

76
– ALGORITHMIQUE ET PROGRAMMATION -

Solution :
Algorithme :

77
– ALGORITHMIQUE ET PROGRAMMATION -

La traduction de l’exemple ci-dessus en langage C est la suivante :

78
– ALGORITHMIQUE ET PROGRAMMATION -

• Exercice 1 :
Dans une entreprise, le calcul des jours de congés payés s’effectue de la manière
suivante :
— Si une personne est entrée dans l’entreprise depuis moins d’un an, elle a droit
à deux jours de congés par mois de présence, sinon à 28 jours au moins.
— Si c’est un cadre et s’il est âgé d’au moins 35 ans et si son ancienneté est
supérieure à 3 ans, il lui est accordé 2 jours supplémentaires.
— S’il âgé d’au moins 45 ans et si son ancienneté est supérieure à 5 ans, il lui
est accordé 4 jours supplémentaires, en plus des 2 accordés pour plus de 35 ans.

Ecrire un algorithme (et un programme en C) qui calcule le nombre de jours de congés à partir de l’âge,
l’ancienneté et l’appartenance au collège cadre d’un employé.

79
– ALGORITHMIQUE ET PROGRAMMATION -

80
– ALGORITHMIQUE ET PROGRAMMATION -

La plupart des langages de programmation contiennent des instructions capables de répéter le même
traitement plusieurs fois. Ce sont ces instructions qui sont décrites dans ce chapitre, pour l’algorithmique et
le langage C. On distingue trois boucles différentes :

1. tant que....faire
2. répéter....jusqu’à
3. pour....faire

Nous allons voir qu’en termes d’expressivité, elles ont strictement le même pouvoir (i.e. elles permettent
de faire exactement la même chose). Cependant, la convention veut qu’on les utilise dans des contextes
différents.

81
– ALGORITHMIQUE ET PROGRAMMATION -

Une boucle se compose de quatre éléments essentiels :

A. Un bloc d’instruction : qui sera exécuté un certain nombre de fois ;


B. Une condition : comme pour les instructions de test. Cette condition porte sur au moins une variable,
que l’on appellera la variable de boucle. Il peut y avoir plusieurs variables de boucle pour une seule boucle.
C. Une initialisation : qui concerne la variable de boucle. Cette initialisation peut être directement réalisée
par l’instruction de répétition, ou bien laissée à la charge du programmeur.
D. Une modification, qui concerne elle aussi la variable de boucle. Comme pour l’initialisation, elle
peut être intégrée à l’instruction de répétition, ou bien laissée à la charge du programmeur

82
– ALGORITHMIQUE ET PROGRAMMATION -

Boucle tant que...faire

La boucle "tant que" permet de répéter l’exécution d’un bloc d’instructions tant
qu’une condition est vraie.

Syntaxe :

83
– ALGORITHMIQUE ET PROGRAMMATION -

Principe :

• L’algorithme arrive sur la ligne du TantQue et examine la condition.


• Si la condition est VRAI, l’algorithme exécute les instructions qui suivent jusqu’à FinTantQue.
• Il retourne ensuite sur la ligne du TantQue, procède au même examen, et ainsi de suite.
• Si la condition prend la valeur FAUX, l’exécution est arrêtée. L’organigramme suivant illustre le
fonctionnement de la boucle tant que...faire

84
– ALGORITHMIQUE ET PROGRAMMATION -

Organigramme de la boucle tant que...faire

85
– ALGORITHMIQUE ET PROGRAMMATION -

• Le nombre d’itérations dans une boucle TantQue n’est pas connu au moment d’entrée dans la boucle.
Il dépend de l’évolution de la valeur de condition.

• Une des instructions du corps de la boucle doit absolument changer la valeur de condition de vrai à faux
(après un certain nombre d’itérations), sinon le programme tourne indéfiniment (Risque d’une boucle
infinie).

• Boucle infinie : boucle dont la condition ne change jamais, ce qui provoque un nombre infini de répétitions.
Il s’agit généralement d’une erreur d’exécution

86
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple d’une boucle infinie :

87
– ALGORITHMIQUE ET PROGRAMMATION -

Exercice :

Ecrire un programme qui lit au clavier un entier N et qui calcule la série suivante :

S=1+2+3+......+N

88
– ALGORITHMIQUE ET PROGRAMMATION -

Solution :

89
– ALGORITHMIQUE ET PROGRAMMATION -

En C While signifie " Tant que ". On dit donc à l’ordinateur " Tant que la condition
est vraie, répète les instructions entre accolades ".

Syntaxe :

Tant que condition est vérifiée les instruction 1,..,n sont exécutée. Si condition est
fausse au départ, les instructions ne seront jamais exécutée.
90
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :
on reprend le même exemple traité précédemment en faisant maintenant recours à l’instruction " while
«

91
– ALGORITHMIQUE ET PROGRAMMATION -

Syntaxe :

92
– ALGORITHMIQUE ET PROGRAMMATION -

Toutes les instructions écrites entre Répéter et jusqu’à sont exécutées au moins une fois et leur exécution
est répétée jusqu’à ce que la condition placée derrière " jusqu’à " soit fausse. L’organigramme suivant
illustre le fonctionnement de la boucle Répéter...jusqu’à :

93
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :
on reprend le même exemple traité précédemment en faisant maintenant recours à la boucle Répéter
...jusqu’à

94
– ALGORITHMIQUE ET PROGRAMMATION -

L’équivalent de Répéter ... Jusqu’à en C est : Do...while

Syntaxe :

La boucle do...while fonctionne comme la boucle while, à un petit détail près : elle s’exécutera toujours
au moins une fois, alors qu’une boucle while peut ne pas s’exécuter aucune fois si la condition est fausse dès le
départ .

95
– ALGORITHMIQUE ET PROGRAMMATION -

L’équivalent de Répéter ... Jusqu’à en C est : Do...while


Exemple :
Même exemple traité précédemment en faisant maintenant recours à l’instruction " do...while «

96
– ALGORITHMIQUE ET PROGRAMMATION -

Cette boucle est utile surtout quand on connaît le nombre d’itérations à effectuer.
Syntaxe :

97
– ALGORITHMIQUE ET PROGRAMMATION -

L’organigramme suivant illustre le fonctionnement de la boucle Pour...Faire :

98
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple 1 :

• Ecrire un algorithme qui affiche le message "Bonjour à tous" 100 fois. Au lieu d’écrire l’instruction :
écrire("Bonjour à tous") ; 100 fois. On utilise
plutôt une boucle :

99
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple 2 :

Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul.

100
– ALGORITHMIQUE ET PROGRAMMATION -

Solution :

101
– ALGORITHMIQUE ET PROGRAMMATION -

• L’ équivalent de la boucle Pour...faire en C est la boucle for

• Une boucle for se décompose en trois parties (ou trois clauses) :

◦ Une expression et/ou une déclaration qui sera le plus souvent l’initialisation d’une variable ;
◦ Une condition ;
◦ Une seconde expression, qui consistera le plus souvent en l’incrémentation
d’une variable.

102
– ALGORITHMIQUE ET PROGRAMMATION -

Syntaxe :

• <initialisation> : séparées par une point virgule, ces instruction définissent les
initialisations de la boucle.
• <test_de_boucle> : expression qui doit être égale à " faux " pour stopper la boucle
• <incrémentation/décrimentation> : séparées par point virgule, elles définissent
la séquence d’instructions à réaliser entre deux itérations (avant d’effectuer l’évaluation de
<test_de_boucle>)
103
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple 1 :

programme C qui affiche le message "Bonjour à tous" 100 fois.

Solution :

104
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple 2 :
Calcul de x à la puissance n où x est un réel non nul et n un entier positif ou nul.

Solution :

105
– ALGORITHMIQUE ET PROGRAMMATION -

• Le choix de la structure de contrôle itérative adéquate dépend du problème à résoudre.

• En effet, si le nombre de répétitions est connu, il est conseillé d’utiliser la boucle for
• Par contre, si le nombre d’itérations varie de 1 à n, il est recommandé d’utiliser la boucle do...while

• Enfin si le nombre d’itérations varie de 0 à n, il est possible d’utiliser la boucle while

106
– ALGORITHMIQUE ET PROGRAMMATION -

La figure suivante résume tous ces cas.


cas

107
– ALGORITHMIQUE ET PROGRAMMATION -

108
– ALGORITHMIQUE ET PROGRAMMATION -

Les fonctions, assez proches de la notion mathématique correspondante. est un algorithme


qui peut être utilisé dans d’autres algorithmes. Elle peut récupérer des informations via ses
paramètres, et ne peut retourner qu’une seule information à l’algorithme qui l’appelle, en
utilisant l’instruction « RETOURNER ».

109
– ALGORITHMIQUE ET PROGRAMMATION -

Argument : information envoyée à une fonction par un algorithme appelant.


La valeur de l’information est ensuite récupérée dans la fonction par un paramètre.

110
– ALGORITHMIQUE ET PROGRAMMATION -

Paramètre : Un paramètre contient une valeur provenant d’un algorithme appelant


et peut être utilisé à l’intérieur d’une fonction.

111
– ALGORITHMIQUE ET PROGRAMMATION -

RETOURNER : le mot clef « RETOURNER » permet de renvoyer une information


de la fonction à l’algorithme appelant.

Dès qu’une information est retournée, la fonction arrête sa mise en œuvre et


l’algorithme appelant reprend la sienne.

112
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple de fonctions en pseudo-code :

113
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple de fonctions en pseudo-code retournant un résultat:

114
– ALGORITHMIQUE ET PROGRAMMATION -

Quand une fonction ne renvoie pas de résultat, on le précise, à la fois dans l’en-tête et dans
sa déclaration, à l’aide du mot-clé void.

Par exemple, voici l’en-tête d’une fonction recevant un argument de type int et ne
fournissant aucune valeur :

void fonction (int n) {


}
115
– ALGORITHMIQUE ET PROGRAMMATION -

Le langage C autorise la récursivité des appels de fonctions. Celle-ci peut prendre deux
aspects :
● récursivité directe : une fonction comporte, dans sa définition, au moins un appel à elle-même,
● récursivité croisée : l’appel d’une fonction entraîne celui d’une autre fonction qui, à son tour,
appelle la fonction initiale.

116
– ALGORITHMIQUE ET PROGRAMMATION -

exemple :

une fonction calculant une factorielle de manière récursive :

117
– ALGORITHMIQUE ET PROGRAMMATION -

118
– ALGORITHMIQUE ET PROGRAMMATION -

Un tableau est un type de variable permettant de stocker plusieurs valeurs de n’importe quel
type simple (Entier, Chaine de caractères ou Booléen) ou complexe (Tableau ou Objet).

Syntaxe :

type_d_un_element nom_tableau [NB_ELEMENTS] ;

119
– ALGORITHMIQUE ET PROGRAMMATION -

N.B :

NB_ELEMENTS doit être une constante (par exemple 100) ou une constante symbolique définie
par #define. Mais NB_ELEMENTS ne peut pas être une variable ou une constante définie avec le mot ‐clé
const.

– tab[0] est le premier élément du tableau tab ; on dit que c’est l’élément d’indice 0.
– tab[i] est le (i+1)ème élément du tableau (c’est l’élément d’indice i) ;

120
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

121
– ALGORITHMIQUE ET PROGRAMMATION -

La boucle for est très utilisée pour « balayer » tous les éléments d'un tableau. Pour éviter des
dépassements aux effets imprévisibles, la syntaxe employée pour la boucle for doit être :

for ( i=0 ; i < nb_elts ; i++)

122
– ALGORITHMIQUE ET PROGRAMMATION -

Définition de tableaux multidimensionnels

Dans la définition d'un tableau à deux dimensions, la première paire de crochets contient le nombre de
lignes, la deuxième paire de crochets précise le nombre de colonnes.

int mat[nbr_lignes] [nbr_colonnes];

123
– ALGORITHMIQUE ET PROGRAMMATION -

tableaux multidimensionnels
Exemple :

124
– ALGORITHMIQUE ET PROGRAMMATION -

Initialisation, stockage en mémoire

L'initialisation d'un tableau à deux dimensions s'effectue en mettant en évidence les deux « sous ‐tableaux »
qui représentent les lignes :

int mat[3][4] = { { 0,1,2,3 }, { 4,5,6,7 }, { 8,9,10,11 } } ;

ce qui équivaut à l’écriture plus lisible :

125
– ALGORITHMIQUE ET PROGRAMMATION -

Accès à un élément : mat[lig][col]


Exemple : Un programme avec un tableau à deux dimensions

126
– ALGORITHMIQUE ET PROGRAMMATION -

127
– ALGORITHMIQUE ET PROGRAMMATION -

Définition d'un pointeur

Considérons les définitions suivantes :


int* AdrEntier ;
double* AdrReel ;
l’écriture int* signifie que AdrEntier est une variable dont le contenu est l'adresse d'une variable entière,
tandis que AdrReel contient l'adresse d'une variable réelle.
On dit que AdrEntier est un pointeur sur un entier et AdrReel un pointeur sur un réel .

128
– ALGORITHMIQUE ET PROGRAMMATION -

Soit un pointeur ptr et une variable var définis par :


int var ;
int* ptr ;

ptr = &var ; /* à présent, ptr pointe sur var */


*ptr = 13 ;

signifie : mettre la valeur 13 dans la « variable pointée par ptr »

129
– ALGORITHMIQUE ET PROGRAMMATION -

130
– ALGORITHMIQUE ET PROGRAMMATION -

Les fichiers permettent de stocker ou de lire des données sur un support permanent tel que le
disque dur. Les données sont mémorisées sous la forme d'une suite d'octets.

131
– ALGORITHMIQUE ET PROGRAMMATION -

On peut choisir entre deux modes d'accès : binaire ou texte .

– fichier rempli en mode binaire : Les données ne peuvent être lues/écrites que par programme. Pour
lire/écrire dans un fichier binaire, il existe deux fonctions rapides à utiliser ( fread, fwrite).

– fichier rempli en mode texte : chaque information est stockée sous la forme d’une succession de codes
ASCII. Les données du fichier peuvent être créées ou consultées par l'utilisateur à l'aide d'un éditeur de texte.

- Un fichier texte est un cas particulier de fichier binaire : on peut donc le manipuler en accès binaire, avec
les fonctions de lecture/écriture binaires ( fread, fwrite). Mais on utilise surtout des fonctions
d’entrée/sortie dites "formatées" (fprintf, fgets, fscanf,...).

132
– ALGORITHMIQUE ET PROGRAMMATION -

Quel que soit le type d'accès envisagé, binaire ou texte, il faut suivre la même procédure :

– ouvrir le fichier (fonction fopen) ; on indique le nom du fichier et les détails de l'accès envisagé.

– lire ou écrire dans le fichier : on utilise les fonctions autorisées par l'accès choisi (binaire ou texte).

– fermer le fichier (fonction fclose).

133
– ALGORITHMIQUE ET PROGRAMMATION -

Tout fichier du disque dur sera associé, une fois ouvert, à une variable de type FILE*, qui doit être
préalablement définie par :

FILE* fic ;

La variable fic est un pointeur sur un objet de type FILE (le type FILE est un modèle de structure défini
dans stdio.h) et on l'appelle le « pointeur de fichier ».

fic donne accès à diverses informations concernant le fichier, en particulier la position actuelle du
« curseur de position » associé au fichier. Le programmeur n'a pas à connaître ces informations qui seront
utilisées par les fonctions : il n'a qu'à fournir le pointeur de fichier aux fonctions de manipulation de fichier.

134
– ALGORITHMIQUE ET PROGRAMMATION -

Tout fichier du disque dur sera associé, une fois ouvert, à une variable de type FILE*, qui doit être
préalablement définie par :

FILE* fic ;

La variable fic est un pointeur sur un objet de type FILE (le type FILE est un modèle de structure défini
dans stdio.h) et on l'appelle le « pointeur de fichier ».

fic donne accès à diverses informations concernant le fichier, en particulier la position actuelle du
« curseur de position » associé au fichier. Le programmeur n'a pas à connaître ces informations qui seront
utilisées par les fonctions : il n'a qu'à fournir le pointeur de fichier aux fonctions de manipulation de fichier.

135
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple :

FILE* fopen( char* filename, char* mode) ;


-filename est le nom physique du fichier, chemin éventuellement inclus. Par exemple, "data.txt" ou "c:\ \tmp\
\data.txt".
-mode est une chaîne de 2 ou 3 caractères (par exemple, "wb" ou "rt"), qui indique le mode d'accès choisi et
le type de travail possible, choisis parmi :
- r (Read) : lecture seulement. Le curseur est positionné au début du fichier. Le fichier doit déjà exister
- w (Write) : écriture seulement. Le curseur est positionné au début du fichier. Celui ‐ci est créé s'il n'existe
pas, son ancien contenu est écrasé s'il existe ;
- a (Append) : écriture seulement. Le curseur est positionné à la fin du fichier. Celui ‐ci est créé s'il n'existe
pas. C'est le mode à utiliser pour compléter un fichier existant ;

136
– ALGORITHMIQUE ET PROGRAMMATION -

- r+ : écriture et lecture. Le curseur est positionné au début du fichier. Le fichier doit déjà exister. Ce mode
est peu utilisé.
- w+ : écriture et lecture. Le curseur est positionné au début du fichier. Le fichier est créé s'il n'existe pas, son
ancien contenu est écrasé s'il existe. Ce mode est peu utilisé.
- a+ : écriture et lecture. Le curseur est positionné à la fin du fichier. Celui ‐ci est créé s'il n'existe pas. Ce
mode est peu utilisé.
- b (Binaire) ou t (Text) : cette lettre placée en deuxième position indique si le fichier doit être accédé en mode
texte ou en mode binaire.
mode vaudra par exemple "wt" (fichier texte créé avec accès en écriture seulement) ou "a+b" (fichier binaire
avec accès en lecture et écriture).

137
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple : Ouverture d'un fichier texte (création)

138
– ALGORITHMIQUE ET PROGRAMMATION -

Il est indispensable de fermer un fichier avant la fin du programme qui l'utilise pour éviter la perte de
données. Cette fermeture se fait très simplement à l'aide de la fonction fclose, à laquelle on fournit le pointeur
du fichier à fermer :

fclose( fic ) ;

139
– ALGORITHMIQUE ET PROGRAMMATION -

Quel que soit le type de fichier (binaire ou texte), l'accès en mode binaire se fait par les
fonctions fread et fwrite, qui permettent de lire ou d'écrire des suites d'octets.

Il existe aussi des macros getc et putc (ou des fonctions équivalentes fgetc et fputc) qui permettent de lire ou
d'écrire un caractère dans un fichier, qu'il soit binaire ou texte.

140
– ALGORITHMIQUE ET PROGRAMMATION -

Rappelons qu'un fichier texte peut être lu/écrit avec un éditeur (il est composé de caractères ASCII).

Les principales fonctions disponibles sont les suivantes :

fprintf( fichier, codes formats et texte, valeurs );


fscanf ( fichier, codes formats, adresses );
fgets( ptr_chaine, longueur_max, fichier ); /* lecture d'une chaîne */
fputs( ptr_chaine, fichier ); /* écriture d'une chaîne */
fgetc( fichier ); /* lecture d'un caractère */
fputc( fichier, caractere ); /* écriture d'un caractère */

141
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple : Ecriture dans un fichier en mode texte

142
– ALGORITHMIQUE ET PROGRAMMATION -

Exemple : Lecture du fichier texte précédent avec fscanf

143
– ALGORITHMIQUE ET PROGRAMMATION -

-Damien Berthet & Vincent Labatut, Algorithmique & programmation en langage

C, Université Galatasaray Faculté d’ingénierie et de technologie,Supports de cours, Volume 1, Période 2005-


2014.

-Claude delanoy, programmer en langage C, cours et exercices corrigés, EYROLLES, 5e édition 2009.

-Jacques Jorda & Abdelaziz M’zoughi, Mini manuel d’architecture de l’ordinateur Broché, 2012.

-Robert Strandh &Irène. Architecture de l’ordinateur Portes logiques, circuits combinatoires, arithmétique
binaire, circuits séquentiels et mémoires. Exemple d’architecture. Collection : Sciences Sup, Dunod, mai
2005.
2005

144

Vous aimerez peut-être aussi