Vous êtes sur la page 1sur 162

I.

Introduction à la programmation

Pour résoudre un problème donné par


l’informatique, l’utilisateur de l’ordinateur
doit mettre au point un programme et le
faire exécuter par la machine.

 L’ordinateur se chargera de traiter les


instructions du programme et restituer les
résultats demandés en fonction des données
qui lui sont fournies.
2
I. Introduction à la programmation

C’est quoi un programme en informatique ?

Un programme est une succession logique


et ordonnée d’instructions.

C’est quoi la programmation en informatique ?

La programmation est l’ensemble des


taches qui permettent d’élaborer un
programme
3
I. Introduction à la programmation
C’est quoi un langage de programmation?
Un langage de programmation est un
ensemble d'instructions et de règles
syntaxiques compréhensible par
l'ordinateur.

 Un programme c’est donc la traduction


d'un algorithme dans le langage de
programmation utilisé.
4
I. Introduction à la programmation
Démarche à suivre pour la résolution en
informatique est donc:

Analyse du
Traduction
problème

Problème Algorithme Programme

Recherche des outils


De l’algorithme dans un
de résolution et
langage compréhensible
décomposition en
par la machine 5
étapes élémentaires
I. Introduction à la programmation
C’est quoi un algorithme?
Un algorithme est un moyen de
description des étapes à suivre pour
résoudre un problème.
Ce qu’il faut savoir d’un algorithme
1. L’ordre de ces opérations et leur enchaînement
est très important.

2. L’algorithme ne doit pas être confondu avec le


langage de programmation proprement dit.
6
I. Introduction à la programmation
Objectifs de l’algorithmique

L’objectif de l’algorithmique est de


permettre une bonne analyse du problème
afin de proposer une meilleure solution.

Celle-ci doit être correcte, rapide, et


moins couteuse en utilisant un ensemble de
techniques de programmation.

7
I. Introduction à la programmation
Environnement d’un algorithme
L’environnement d’un algorithme est
constitué de:

Des objets d’entrée (OE)


Des objets de sortie(OS)
Des objets constants(OC)
Des objets intermédiaires(OI)

8
I. Introduction à la programmation
Environnement d’un algorithme

Objets Constants
(OC)

Objets Objets de
d’Entrée ALGORITHME Sortie
(OE) (OS)

Objets Intermédiaires
(OI)
9
I. Introduction à la programmation

Exemple1: Calcul de la quantité Q donnée


par la formule suivante:

a-b
Q=
2.c+b

10
I. Introduction à la programmation
Qu’est ce qu’un bon algorithme ?
Un bon algorithme est un schéma de
résolution possédant les caractéristiques
suivantes:
Correct
Précis
Rapide
Efficace
Clair et lisible
Résistant
11
I. Introduction à la programmation
Conclusion:
Un algorithme est constitué:

D’un ensemble d’objets appelé


environnement de l’algorithme,

D’un ensemble d’actions agissant sur cet


environnement
Exemple 2: algorithme de calcul de la somme de
deux nombres réels. 12
II. Outils de base de l’algorithmique

Ordinateur ?

Un ordinateur est une machine constituée


d’un ensemble de composants électroniques
destinés à accepter des données, leurs faire
subir certaines transformations selon un
cheminement bien précis et restituer les
résultats souhaités.

13
II. Outils de base de l’algorithmique
Schéma simplifié d’un PC

Une mémoire de données(MD)


Une mémoire d’instructions(MI)
Un compteur d’instructions(CI)
Une unité centrale(UC)
Un organe d’entrée(OE)
Un organe de sortie(OS)

14
II. Outils de base de l’algorithmique
Notion d’objets
On a vu qu’un algorithme est constitué d’un
ensemble fini d’objets appelé environnement, d’un
ensemble d’actions permettant de traiter ces
objets. Différentes formes d’un objet:
Objet constant
Objet variable
Caractéristiques d’un objet:
Son identificateur
Sa valeur 15
Son type
II. Outils de base de l’algorithmique
Identificateur d’un objet
Un identificateur est un nom symbolique que
nous attribuons à l’objet. Il est représenté par une
suite quelconque de caractères et doit obéir aux
exigences suivantes:
Il doit commencer obligatoirement par une
lettre
La suite des caractères peut être composée soit
de lettres non accentuées(a…z, A…Z), soit de
chiffres(0…9), soit du caractère de
soulignement (_).
Il ne doit contenir ni espace ni caractères16
spéciaux
II. Outils de base de l’algorithmique
Exemples d’identificateur
Identificateurs corrects:
• Temps, calcul_vectoriel, mois1, a23a2

Identificateurs incorrects:
• 1temps, calcul vectoriel, a23/a2

NB: de préférence, le nom d’un identificateur


est choisi en rapport avec le rôle de l’objet pour
faciliter la lecture de l’algorithme.
Exemple: nombres d’employés d’une entreprise
17
II. Outils de base de l’algorithmique
Valeur d’un objet
C’est le contenu courant d’un objet. Ce contenu
peut être:
Constant: s’il ne peut être modifier par les
instructions de l’algorithme tout au long de
son exécution.

Variable: dans le cas contraire.

18
II. Outils de base de l’algorithmique
Type d’un objet
Le type d’un objet constitue la nature de l’objet.
C’est l’ensemble des valeurs qui peuvent être
prises par cet objet.
Types de données en programmation

En programmation, on peut classer les types de


données en trois grandes familles:
Les booléens
Les numériques
Les textes 19
II. Outils de base de l’algorithmique
Type booléen
Le type booléen correspond à un ensemble de
deux états logiques(vrai, faux).
Operateurs applicables au type booléen
L’ensemble des operateurs qu’on peut appliquer
à ces valeurs logiques est:
ET
OU
NON
Pour simplifier la représentation, on assimile à
vrai la valeur (1) et faux la valeur(0). 20
II. Outils de base de l’algorithmique
Type Numérique
Le type numérique correspond à des intervalles
de l’ensemble des entiers relatifs(Z) et l’ensembles
des nombres réels( R).
Operateurs applicables au type numérique
Operateurs Signification Exemple
+ Addition R=a+b
- Soustraction R=a-b
* Multiplication R=a*b
/ Division R=a/b si b!=0
^ Evaluation en puissance Y=a^n
DIV Division entière 7 DIV2 = 3
21
MOD Reste d’une division 13 MOD 5 = 3
ENT Partie entière d’un réel ENT(15,36) = 15
II. Outils de base de l’algorithmique
Type Texte
Le type texte correspond à l’ensemble des
chaines de caractères.
Une chaines de caractère est constituée de
caractères de différents types qui peuvent être:

Des lettres de l’alphabet(A…Z, a…b)


Des chiffres(0…9)
Un espace
Des codes d’opérations(+, -, *, /….)
Des caractères de ponctuations(,-;-.-…)
Des caractères spéciaux(&, #, {, [ , @....) 22
II. Outils de base de l’algorithmique
Exemple Type Texte
Chaines de caractères:
‘’bonjour à tous ’’ , ‘’a/b32’’, ‘’algorithmique ’’
Relation d’ordre
• ‘’A’’<‘’a’’: le code numérique lié à ‘’A’’ est inferieur
au code numérique lié à ‘’a’’.
• ‘’A’’ < ‘’C’’
• ‘’2003’’ > ‘’2002’’
• ‘’2006’’ < ‘’86’’ : le code numérique lié au premier
caractère ‘’2’’ de la chaine ‘’2002’’ est inferieur au
code numérique liée à ‘’8’’ de la chaine ‘’86’’. 23
II. Outils de base de l’algorithmique
Operateurs applicables au type texte
On peut appliquer plusieurs opérations sur les
valeurs texte. Parmi celles-ci, citons la plus
utilisée: la concaténation ( // ).
Exemple

‘’Bonjour ’’ // ‘’les étudiants’’ a pour résultat:


‘’Bonjour les étudiants’’

24
II. Outils de base de l’algorithmique
Operations de relation entre les objets
On peut appliquer entre deux objets de même
type une opération de relation dont le résultat est
une valeur booléenne: vrai ou faux.

Operations Symbole
Strictement inferieur à <
Strictement supérieur à >
Inferieur ou égal à <=
Supérieur ou égal à >=
Egal à =
25
Différent de <>
II. Outils de base de l’algorithmique
Exemple
X, Y : deux valeurs entières.
La valeur de X est 32, celle de Y est 25
•Les expressions suivantes donnent un résultat
vrai:
(Y<X), (X>=Y), (X<>Y)
•Les expressions suivantes donnent un résultat
faux:
(Y=X), (X<Y)

Remarque: par convention, pour les valeurs de


type booléen: Faux<Vrai 26
II. Outils de base de l’algorithmique
Structure d’un algorithme
Un algorithme comprend 2 parties:
•Une partie déclaration de tous objets utilisés
par l’algorithme,
•Une partie exécutable contenant toutes les
instructions permettant d’agir sur ces objets.
Tous les objets constants sont décrits par leurs
noms et leurs valeurs et précédés d’un mot réservé
‘’CONST’’
Tous les objets variables sont décrits ensuite
par leurs noms et types et précédés d’un mot 27
réservé ‘’VAR’’
II. Outils de base de l’algorithmique
Exemple
CONST
Annee_cours=2012;
Taille_min=1.65;
Reponse=‘’oui’’;

VAR
Nom, prenom : chaînes de caractères;
Age : entier
Etat_civil : booléen

28
II. Outils de base de l’algorithmique
Présentation d’un algorithme
Algorithme nom_algorithme;

(*Declaration*)
Const

nom_de_const=valeur_de_const;

Var

Nom_var : nom_type_var;

Début

(*Corps de l’algorithme*)
(*Actions*)
29
Fin
II. Outils de base de l’algorithmique
Remarques
Mots réservés: les algorithmes utilisent un certain
nombre de mots réservés. Le programmeur ne peut pas
les utiliser comme identificateurs.
Exemple: algorithme, const, var, début, fin, lire, ecrire, si,
alors, sinon, cas, tantque, faire, répéter, jusqu’à, pour,
procédure, fonction, tableau…

Commentaires: ce sont des textes explicatifs de


certains passages afin d’expliquer des traitements
complexes et aider à la maintenance de l’algo.
Les commentaires se présentent sous forme de texte mis
entre les deux symboles suivants: (* et *)
30
II. Outils de base de l’algorithmique
Remarques
Séquentialité: Dans un algorithme, les instructions sont
exécutées séquentiellement dans l’ordre de leurs saisies.
Cette ‘’séquentialité’’ est assurée par le point virgule qui
doit se placer à la fin de chaque instruction.

31
II. Outils de base de l’algorithmique
Organigramme
Un organigramme est une représentation schématique
d’un algorithme mettant en valeur sa structure. Il permet
de mieux présenter les différents modules de traitement et
d’expliquer la succession des opérations d’un travail.

32
II. Outils de base de l’algorithmique
Symbole Signification
Séquence:
Marque le passage d’une action à
une autre.

Test et décision:
Marque un choix conditionnel
d’une action à exécuter suivant
Oui Non que la condition CND est vérifiée
CND
ou non

Variante de l’alternative:
Sélecteur Selon la valeur de la variable
sélecteur, on va se brancher vers
l’exécution de l’instruction
correspondante.
33
II. Outils de base de l’algorithmique
Symbole Signification
Opération calcul:
Modifie une variable par l’affectation
X=… d’une nouvelle valeur.

Instruction d’entrée ou de sortie:


Entrée de donnée standard à partir
de clavier ou sortie de donnée
standard vers l’écran.

Sortie disque magnétique:


sortie de donnée non standard dans
un fichier dans la disquette ou le
disque dur.

34
II. Outils de base de l’algorithmique
Symbole Signification
Sortie Listing:
sortie de donnée non standard :
document sur listing en utilisant une
imprimante.

Début: démarrage d’un traitement


Début

Fin: fin d’un traitement

Fin

35
II. Outils de base de l’algorithmique
Exemple: traduction schématique de l’algorithme de
Calcul du périmètre d’un cercle.
Début

Lire(R)

P=2*3.14*R

Ecrire(P)

Fin
36
III. Les Instructions de base en Algorithmique

Les instructions élémentaires en algorithmiques


sont au nombre de trois:

l’affectation

Les instructions d’entrée de données

Les instructions de sortie de données

38
III. Les Instructions de base en Algorithmique

l’affectation
L’opération affectation permet d’assigner une
valeur à un objet.
Elle est représentée en algorithmique par une
flèche orientée de droite vers le gauche.

Syntaxe

identificateur_objet valeur
39
III. Les Instructions de base en Algorithmique

Possibilités:
Le membre droit d’une affectation(valeur) peut
être soit:
Une variable de même type que identificateur_objet
Exemple: V A

Une constante de même type que identificateur_objet


Exemple: V 6

Une expression dont l’évaluation produit un résultat


final de même type que identificateur_objet
Exemple: V 3*A+2*B-1 40
III. Les Instructions de base en Algorithmique
Conditions:
Une affectation est exécutable si et seulement si:
1. Le membre gauche de l’affectation (id_objet) est une
variable déclarée. Il doit correspondre à une case
mémoire qui peut recevoir une valeur.
Par conséquent les écritures suivantes n’ont pas de sens:
8 A; A+B C;
2. La partie droite de l’affectation représente une
quantité bien définie. C-à-d une structure possédant
une valeur ou ayant une évaluation qui fournit une
valeur résultat.
Par conséquent la deuxième affectation dans l’exemple
suivant n’est pas exécutable: 41

A 6; … V 1/A;
III. Les Instructions de base en Algorithmique
3. Les types de deux parties de l’affectation sont les
mêmes.
Par conséquent la deuxième affectation dans l’exemple
suivant n’est pas exécutable:

Var
A: entier;
C: caractère;
Début
A 6;

C A;
fin
42
III. Les Instructions de base en Algorithmique

Remarques:

 l’affectation détruit complètement et définitivement le


contenu précédent de la variable affectée si elle en avait
un,

 La déclaration d’une variable n’affecte aucune valeur à


la variable.

43
III. Les Instructions de base en Algorithmique

Les instructions d’entrée/sortie


 Un algorithme doit en général acquérir des données sur
un périphérique et fournir en conséquence des résultats
sur un autre périphérique.

 Pour réaliser ces taches fondamentales en prog. On a


donc besoin de deux opérations distinctes: Lire & Ecrire

Lire(V): qui permet d’affecter à la variable(V), la valeur lue


sur le périphérique d’entrée.
Ecrire(V1): qui permet de transférer la valeur(V1) vers le
périphérique de sortie.

44
III. Les Instructions de base en Algorithmique
Remarques:
 L’identificateur(V) doit être une variable déclarée.
Par conséquent les écritures suivantes n’ont pas de sens:
lire(6);
lire(A+B);

 La valeur de (V1) peut être soit:


 Une variable déclarée: Exemple: Ecrire(A);
 Une Constante : Exemple: Ecrire(6);
 Une expression : Exemple: Ecrire(3*A+2*B-1);

 Un algorithme doit être interactif, c-à-d. qu’il doit choisir


le langage qui va s’instaurer entre l’utilisateur et la
machine. Exemple: Algorithme de calcul de S=A+B; 45
III. Les Instructions de base en Algorithmique
Remarques:
 On peut avoir avec la même instruction ‘’Ecrire’’
l’affichage d’un ou plusieurs et d’une ou
plusieurs variables.

 Exemple:
Ecrire(‘la somme des deux nombres’, a, ‘et’ ,b,
‘est:’, S);

si a=2 et b=5, l’instruction ci-dessus s’exécutera


ainsi:
la somme des deux nombres 2 et 5 est: 7 46
IV. Instructions conditionnelles et alternatives
Introduction
Tous les algorithme que l’on a vu jusqu’à
présent, ont un enchainement d’exécution
des instructions séquentiel et linéaire du
début à la fin.

Mais dans de nombreuses applications,


on exige une exécution par morceau ou des
répétitions d’un même bloc d’instructions.

C’est le rôle des primitives de base structurées. 47


IV. Instructions conditionnelles et alternatives

On distingue deux grandes familles de


primitives:

Les primitives de choix qui permettent


de choisir les instructions à exécuter selon
les valeurs courantes de certaines variables;

elles sont de 2 types:


 les instructions conditionnelles
 Les instructions alternatives
48
IV. Instructions conditionnelles et alternatives

Les primitives d’itérations qui sont


utilisées lorsque l’on souhaite exécuter
plusieurs fois le même traitement.

Note: les notions de choix et d’itération sont


deux notions fondamentales de
l’algorithmique.
49
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
1. L’instruction Si…Alors…Finsi
Syntaxe:
Si condition Alors
instruction(ou suite d’instructions);
Finsi
Organigramme:
L’instruction sera exécutée si
oui et seulement si la condition
Condition
est vérifiées.

non
Instruction
50
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
Exemple 1:

Si ‘’il pleut’’ Alors


‘’je prends mon parapluie’’;
Finsi

Exemple 2:
Valeur absolue d’un nombre réel: X

Algo + Organigramme

51
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
2. L’instruction Si…Alors…Sinon…Finsi.
Syntaxe:
Si condition Alors
instruction1;
Sinon
instruction2;
Finsi
Organigramme:
oui non
Condition

Instruction Instruction
1 2
52

L’instruction1 est exécutée si la condition est vérifiée si non c’est


l’instruction2 qui sera exécutée.
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
Exemple 3:
Si ‘’il fait beau’’ Alors
‘’vous pouvez sortir en pique-nique’’;
Sinon
‘’Vous restez chez vous’’;
Finsi

Exemple 4:

Ecrire un algo qui permet d’afficher la valeur absolue de la


différence entre deux nombres réels saisis au clavier.

53
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
3. Imbrication de Si
Dans de nombreuses applications, on peut avoir
plusieurs cas d’exécution selon différentes
conditions.
Il faut donc exprimer beaucoup de Si les un à la
suite des autres pour englober tous les cas.
 Un Si peut être exprimer à la suite d’un Alors
d’un autre Si et/ou à la suite de son Sinon

54
IV. Instructions conditionnelles et alternatives

Exemple 5:

Un moniteur d’auto-école veut apprendre à un


candidat au permis de conduire ce qu’il faut faire
dans croisement avec feu. Il y’a trois possibilités:

Si le feu est vert, le candidat peut passer,


Si le feu est orange, le candidat doit ralentir et
préparer pour s’arrêter
Si le feu est rouge, le candidat doit s’arrêter.

Proposer un algorithme de résolution de ce 55

problème.
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
4. La primitive ‘’ Cas’’
Etude de cas: algo afficher jour de la semaine
ave si…alors…sinon…

Syntaxe:
Cas variable
valeur_1: instruction_1;
valeur_2: instruction_2;
………. : ……………….;
valeur_N: instruction_N;
Sinon
Instruction_par_defaut; 56

Fincas
IV. Instructions conditionnelles et alternatives
Instructions conditionnelles
4. La primitive ‘’ Cas’’
Organigramme:
Variable

Valeur_1 Valeur_2 Valeur_N Sinon

Instru_1 Instru_2 …….. Instru_N Instru_PD

La machine aura le choix parmi N valeurs.


57
L’instruction qui sera exécutée es celle qui correspond à la valeur
courante de la variable testée.
IV. Instructions conditionnelles et alternatives
Remarques

Les choix sont exclusifs l’un de l’autre(une même valeur


ne peut entrainer deux traitements différents).
Par contre deux valeurs différentes peuvent entrainer un
même traitements.
Les valeurs peuvent se présenter sous forme d’intervalle.
Si la variable n’est égale à aucune des valeurs testées,
c’est Instruction_par_defaut qui est exécutée.
L’instruction par défaut n’est pas obligatoire.
La variable de sélection doit être déclarée, et ne doit
avoir qu’un type discret(entier ou caractère mais réel).
58
IV. Instructions conditionnelles et alternatives

Exemple:
Algorithme salut;
Var
heure : entier;
Début
lire(heure);
cas heure
6, 7, 8, 9, 10, 11,12 : Ecrire(‘Bonjour’);
13…18 : Ecrire(‘Bon après-midi’);
sinon
Ecrire(‘Bonsoir’);
Fincas
Fin 59
IV. Instructions conditionnelles et alternatives

Exemple:

Reprenons l’algo afficher jour.

60
V. Instructions répétitives( les boucles)

Les primitives itératives constituent des


boucles qui répètent l’exécution d’un même bloc
d’instructions un certains nombre de fois. Ce
nombre est soit précisé à l’avance soit il dépendra
de l’évolution de l’action algorithmique effectuée
par le bloc répéter.

Pour que la structure d’une boucle soit correcte,


il faut qu’elle soit composée de quatre blocs
élémentaires à savoir:

61
V. Instructions répétitives( les boucles)

1. Bloc d’initialisation de la boucle: il sert de


départ des itérations,
2. Bloc de processus itératif ou corps de la boucle:
il contient toutes les instructions à répéter à
chaque itération,
3. Bloc de progression ou de régression de
l’indice: c’est un compteur qui fait évoluer la
boucle.
4. Bloc de test de continuation: il effectue le
contrôle pour décider la continuation ou l’arrêt
de la récurrence.
62
V. Instructions répétitives( les boucles)
Instructions répétitives
En programmation, on distingue deux grands
types de boucles:

1. Cas où le nombre d’itération n’est pas


connu à l’avance :
Le nombre d’itérations du corps de la boucle n’est
pas connu à l’avance, mais il dépend de la
réalisation d’une certaine condition au cours du
traitement.
63
V. Instructions répétitives( les boucles)

A-le nombre d’itération n’est pas connu à l’avance

On distingue deux types d’instructions:

1. Le teste de contrôle est effectué au début de la


boucle.
2. Le teste de contrôle est effectué à la fin de la
boucle.

64
V. Instructions répétitives( les boucles)

L’instruction Tantque…faire…FinTantque
Syntaxe:
Tantque condition de continuation Faire
Actions(Instructions)
FinTantque

Les instructions seront exécutées tant que la


condition est vérifiée.

65
V. Instructions répétitives( les boucles)
Organigramme:

Non
CND

Oui

Instructions

Sortie de la boucle

Le test est effectué à l’entrée de la boucle, donc les


66
instruction peuvent être exécutées zéro fois si la condition
est fausse à l’entrée de la boucle.
V. Instructions répétitives( les boucles)

Remarque
Dans le corps de la boucle(instructions), au moins
une instruction doit obligatoirement faire évoluer
les valeurs des variables testées dans la condition.
Sinon la boucle sera infinie(C-à-d qu’elle ne
s’arrête jamais).
Exemple 1: Algorithme Boucle_infinie;
Var
A:réel;
Début
A 6;
Tantque A< 10 Faire
Ecrire(A);
67
FinTanque
Fin
V. Instructions répétitives( les boucles)
Exemple 2:
Ecrire un algorithme permettant de lire une suite de
nombres réels sur le clavier. Le dernier élément à
lire est Zéro.
L’algorithme doit afficher le plus petit élément de la
suite ainsi que la somme des éléments.

Algo + Organigramme

68
V. Instructions répétitives( les boucles)

L’instruction Répéter…jusqu’à
Syntaxe:
Répéter
Actions(Instructions);
Jusqu’à condition

Les instructions délimitées par Répéter et


Jusqu’à seront exécutées jusqu’à ce que la
condition soit vérifiée.

69
V. Instructions répétitives( les boucles)
Organigramme:

Instructions Le test est effectué à la fin


de la boucle, donc les
instructions sont exécutées
Non au moins une fois même si
CND
la condition est fausse dès
Oui l’entrée de la boucle.

Sortie de la boucle
70
V. Instructions répétitives( les boucles)
Exemple 2:
Ecrire un algorithme permettant de calculer la
somme et la moyenne des N permiers nombres
entiers.
S = 1+2+3+4+…+N

71
V. Instructions répétitives( les boucles)

B- le nombre d’itération est connu à l’avance


Lorsque le nombre d’itération est connu à
l’avance, on utilise l’instruction :
Pour…Faire…FinPour
Pour variable de contrôle borne1 à borne2 Faire
Actions(Instructions);
FinPour

Lorsque borne1 est inferieur à borne2, il s’agit


d’une boucle progressive(incrémentation). Dans le
cas contraire, il s’agit d’une boucle
régressive(décrémentation). 72
V. Instructions répétitives( les boucles)
Organigramme:

I B1 à B2
Les instructions seront
répétées un nombre
connu de fois .
Instructions

Sortie de la boucle

73
V. Instructions répétitives( les boucles)

Remarques
1. La variable de contrôle doit être déclarée,

2. La valeur de la variable de contrôle à la sortie


de la boucle est la valeur finale(borne2)

3. Le contenu de la variable de contrôle est


exploité par une instruction, mais celle-ci ne
peut pas le changer.

74
V. Instructions répétitives( les boucles)
Etapes d’exécution de la boucle Pour
1. Affectation de borne1 à la variable de contrôle,

2. Comparaison de la variable de contrôle à


borne2, si elle est supérieure alors fin de la
boucle,

3. Sinon exécution des instructions de la boucle,

4. Incrémentation de la variable de contrôle,

5. Aller à l’étape 2. 75
V. Instructions répétitives( les boucles)
Organigramme Début
des étapes:
I=B1

Oui
I>B2

Non

Instructions

I=I+1

76

Fin
V. Instructions répétitives( les boucles)
Exemple
Ecrire un algorithme permettant de calculer le
factoriel d’un nombre entier positif N.
N!=1*2*3*…*N

Algo + Organigramme

77
V. Instructions répétitives( les boucles)

Exercices d’application:

a) Écrire un algorithme qui calcule la somme


des nombres entiers de 0 à 50.
b) Écrire un algorithme qui calcule le produit
des nombres entiers de 1 à 7
c) Écrire un algorithme qui calcule la somme
des 20 premiers nombres impairs.
d) Écrire un algorithme qui calcule la somme
des 20 premiers nombres pairs.
78
VI. Les Variables Dimensionnées( Les tableaux)
Introduction et problématique
On a utilisé, jusqu’à présent, dans les chapitres
précédents que les variables qui prennent un
emplacement unique dans la mémoire de types
standards.

Mais, dans de nombreuses applications, nous


aurons besoins de regrouper plusieurs données
dans une seule variable et dans un ordre
particulier.

79
VI. Les Variables Dimensionnées( Les tableaux)

Exemple1: Considérons 50 valeurs réelles(les


notes des élèves d’une classe par exemple). Pour
loger ces valeurs de même types, même nature et
qui vont subir, sans doute le même traitement, il
faut déclarer 50 variables différentes ,
‘’dispersées’’ dans un ordre quelconque à
l’intérieur de la mémoire de l’ordinateur.

Supposons maintenant qu’on doit gérer les


notes de tous les étudiants de l’UNC.

Combien de variables il nous faudra ????? 80


VI. Les Variables Dimensionnées( Les tableaux)

Cette méthode présente des inconvénients à


savoir:
Difficultés d’accéder rapidement à la note d’un
étudiant donné.

Pour lire ces 50 notes sur le clavier, il faut 50


lignes, minimum, de programmation(lecture de
données) ce qui va rendre les algorithmes très
longs et parfois impossibles.

La même chose pour les opérations d’écritures


de ces données sur l’écran. 81

…
VI. Les Variables Dimensionnées( Les tableaux)

Solution
On a la possibilité de réunir toutes ces valeurs
dans une seule variable dite structurée et
composée de 50 cases juxtaposées et de même
‘’dimension’’ car elles vont recevoir des données
de même type. Cette variable s’appelle: un
tableau qu’on peut représenter par le schéma le
suivant.

T[1] T[2] T[3] T[4] T[48] T[49] T[50]


14 12.5 13.50 10.25 11.5 18 15.25
82

50
VI. Les Variables Dimensionnées( Les tableaux)

Définition d’un tableau

Un tableau est une variable structurée,


contentant plusieurs composantes champs tels
que tous les champs sont de même type.

83
VI. Les Variables Dimensionnées( Les tableaux)

Tableau à une dimension

Une donnée de type tableau est constituée d’un


nombre de données élémentaires de même type de
base ou type d’éléments.

Chaque élément est directement accessible au


moyen d’un indice.

La déclaration d’un tableau doit donc préciser le


type d’éléments T2 et le type d’indice T1.
84
VI. Les Variables Dimensionnées( Les tableaux)

Syntaxe:
Var
T:tableau[T1] de T2

On a ainsi déclaré une variable T d’un nouveau


type appelé type tableau. Cette variable
contiendra un certain nombre de cases de type
T2(quelconque). Ce nombre est défini par type T1

85
VI. Les Variables Dimensionnées( Les tableaux)
Exemple2:
Var
A:tableau[1…20] de réels;
Dans cet exemple:
 le type T1 est un intervalle d’entiers allant de
1 à 20.
Le type T2 représente les réels.

La Variable A est un tableau de 20 cases


destinées pour accepter des nombres réels.

86
VI. Les Variables Dimensionnées( Les tableaux)
On accède à un élément via son indice.
Exemple3:
A[3]23.50;
Lire(A[6]);
Ecrire(A[8]);
Y3*A[i]+1;
Cas général:
Var
T:tableau[borne_sup..borne_sup] de réels;

Le tableau T contient(borne_sup-borne_inf+1)
éléments. 87
VI. Les Variables Dimensionnées( Les tableaux)

Exemple 4:
Ecrire un algorithme permettant d’entrer cinq
valeurs réelles au clavier, les stocker dans un
tableau, calculer leur somme et les afficher avec
leur somme à l’écran.
Algorithme tableau_somme;
Var
V: tableau[1…5] de réels;
S : réel;
i: entier;
Début
(*Lecture des elements du tableau*)
Pour i  1 à 5 Faire
Ecrire(‘Entrer élément N°’, i); 88
Lire(V[i]);
Finpour i
VI. Les Variables Dimensionnées( Les tableaux)
(* Calcul de la somme des éléments du tableau*)
S  0;
Pour i  1 à 5 Faire
S  S + V[i] ;
FinPour

(* Affichage des éléments du tableau*)


Pour i  1 à 5 Faire
Ecrire(‘l élément N°’, i, est:’, V[i]);
FinPour

Ecrire(‘la somme des éléments du tableau est’, S);

Fin

89
VI. Les Variables Dimensionnées( Les tableaux)
Quelques Algorithmes de traitement de Tableau
à une dimension
1. Ecrire un algorithme permettant de saisir et
d’afficher les N éléments d’un tableau.
2. Ecrire un algorithme permettant de faire la
somme, le produit et la moyenne des éléments
d’un tableau.
3. Ecrire un algorithme permettant de trouver le
minimum des éléments d’un tableau.
4. …

90
VI. Les Variables Dimensionnées( Les tableaux)
Tableaux à deux dimensions
Un tableau à deux dimension peut être
représenter comme une grille ayant un certain
nombre de lignes (première dimension) et un
certain nombre de colonnes (seconde dimension).
Syntaxe:
T: tableau[T1, T3] de T2

•T: la variable tableau à deux dimension


•T1: type indice de la première dimension(lignes) c-à-d
le nombre de ligne.
•T3: type indice de la deuxième dimension(colonne)
91
c-à-d le nombre de colonne.
•T2: type de base des éléments du tableau
VI. Les Variables Dimensionnées( Les tableaux)

Exemple:
Var
T: tableau[1..3, 1…4] d’entiers;

T sera donc un variable tableau à deux dimensions


de 3 lignes et 4 colonnes.

i/j 1 2 3 4
1 3 2 5 2
2 1 7 4 8
4 6 5 3 2

Remarque: les tableaux à deux dimensions ont une 92

Structure de tableau à deux lignes appelé: matrice.


VI. Les Variables Dimensionnées( Les tableaux)
Effets de la déclaration et utilisation

1. La déclaration d’un tableau implique la


réservation de la mémoire nécessaire.
2. Les tableaux sont stockés en mémoire ligne
par ligne.
3. L’accès à un élément du tableau à deux
dimensions est obtenu en précisant
l’identificateur de la variable et les deux
indices entre crochets: T[i,j]; i pour la ligne et j
pour la colonne. Dans l’exemple précédent:
T[2, 3] vaut 4. 93
VI. Les Variables Dimensionnées( Les tableaux)
Exemple d’application
Ecrire un algorithme permettant de saisir les
données d’un tableau à deux dimensions(10, 4) de
faire leur somme, produit et moyenne et de leur
afficher avec les résultats de calcul à l’écran.
Algorithme Tableau_deux_Dim
Var
T: tableau [1..10, 1..4] de réels;
i, j : entiers;
S,P,M : réels;
Début
(*Saisie des éléments du tableau*)
Pour i  1 à 10 Faire
Pour j  1 à 4 Faire
Ecrire(‘Entrer l élément T[ ‘ ,i’, ‘j,’]=‘); 94
Lire(T[i,j]);
FinPour j
FinPour i
VI. Les Variables Dimensionnées( Les tableaux)
(*Calcul de la somme, produit, et moyenne*)
S  0;
P  1;
Pour i  1 à 10 Faire
Pour j  1 à 4 Faire
S  S+T[i, j];
P  P*T[i,j];
FinPour j
FinPour i
M  S/40;
(*Affichage des éléments du tableau et des résultats*)
Pour i  1 à 10 Faire
Pour j  1 à 4 Faire
Ecrire(‘ L élément T[ ‘ ,i’, ‘j,’]=‘ T[i, j]);
FinPour j
FinPour i
Ecrire(‘la somme des éléments du tableau est:’, S);
Ecrire(‘Le produit des éléments du tableau est:’, P);
Ecrire(‘la moyenne des éléments du tableau est:’, M); 95
FIN
2 ème PARTIE

Le Langage C

99
I. Historique du langage C

Historique
Le langage C est né en 1972 dans les laboratoires de la
Bell Telephone (AT&T) des travaux de Brian
Kernighan et Dennis Ritchie.

Il a été conçu à l'origine pour l'écriture du système


d'exploitation UNIX (90-95% du noyau écrit en C).

Très inspiré des langages BCPL (Martin Richard) et B


(Ken Thompson), il se présente comme un ‘’super-
assembleur’’ ou ‘’assembleur portable’’

Il a été normalisé en 1989 par le comité X3J11 de


l'American National Standards Institute (ANSI). 100
I. Le langage C
Caractéristiques
Langage structure: conçu pour traiter les taches d'un
programme en les mettant dans des blocs.
Le C produit des programmes efficaces : il possède les
mêmes possibilités de contrôle de la machine que
l'assembleur.
Déclaratif : tout objet C doit être déclaré avant d'être
utilise.
Format libre : la mise en page des divers composants
d'un programme en C est totalement libre.
Modulaire : une application pourra être découpée en
modules qui pourront être compiles séparément.
Souple : peu de vérifications et d'interdits
Transportable : les entrées/sorties sont réunies dans 101
une librairie externe au langage.
II. Exemple de Programme en C

102
II. Création d’un programme en C

Nous avons généralement trois (3) grandes étapes de


création d’un programme C, à savoir:
1. L’édition: L’édition du programme (on dit aussi
parfois « saisie ») consiste à créer, à partir d’un clavier,
tout ou partie du texte d’un programme qu’on nomme
programme source ».
2. La Compilation: Elle consiste à traduire le
programme source (ou le contenu d’un fichier source)
en langage machine, en faisant appel à un programme
nommé compilateur
3. L’édition des liens: l’édition de liens consiste à créer
cz que l’on nomme un programme exécutable, c’est-à-
dire un ensemble autonome d’instructions en langage
machine. 103
III. Les Types de bases en C
Identificateurs en C

Les identificateurs nomment les objets C (fonctions,


variables…)
 C'est une suite de lettres ou de chiffres.
 Le premier caractère est obligatoirement une lettre.
 Le caractère _ (souligne) est considère comme une
lettre.
 le C distingue les minuscules des majuscules.
Exemple : carlu Carlu CarLu CARLU sont des
identificateurs valides et tous différents.
 La longueur de l'identificateur dépend de
l'implémentation.
104
III. Les Types de bases en C
Un identificateur ne peut pas être un mot réservé
du langage :

105
III. Les Types de bases en C
Les Types en C

Les types de base du langage C se répartissent


en trois grandes catégories:

1. Nombres entiers (mot-clé int),

2. Nombres flottants (mot-clé float ou


double),

106
3. Caractères (mot-clé char) ;
III. Les Types de bases en C
Les Entiers
Avant de pouvoir utiliser une variable, nous devons nous
intéresser à deux caractéristiques de son type numérique:
Le domaine des valeurs admissibles.
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 :

nombre
définition description domaine min domaine max
d'octets
short entier court -32768 32767 2
entier
int -32768 32767 2
standard
long entier long -2147483648 2147483647 4
107
III. Les Types de bases en C
Les modificateurs: signed / unsigned
Si on ajoute le préfixe unsigned à la définition d'un type
de variables entières, les domaines des variables sont
déplacés comme suit:

domaine domaine nombre


définition description
min max d'octets
unsigned
caractère 0 255 1
char
unsigned
entier court 0 65535 2
short
unsigned int entier standard 0 65535 2
unsigned
entier long 0 4294967295 4
long 108
III. Les Types de bases en C
Remarques

En principe, on peut dire que :


sizeof(short) <= sizeof(int) <= sizeof(long)

Ainsi sur certaine architecture on peut avoir :


short = 2 octets, int = 2 octets, long = 4 octets

Et sur d'autre :
short = 2 octets, int = 4 octets, long = 4 octets

109
III. Les Types de bases en C
Les types rationnels (Les flottants)
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
est un décimal positif avec un seul chiffre
<mantisse>
devant la virgule.
<exposant> est un entier relatif

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


float, double et long double. Dans le tableau ci-
dessous, vous trouverez leurs caractéristiques: 110
III. Les Types de bases en C

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.

Déf. Mantisse Dom. min Dom. max Nbre d‘Oct


float 6 3.4 * 10-38 3.4 * 1038 4
double 15 1.7 * 10-308 1.7 * 10308 8
Long
19 3.4 * 10-4932 1.1 * 104932 10
double

111
III. Les Types de bases en C
Les types Caractère
Notion de Caractère:
Comme la plupart des langages, C permet de manipuler
des caractères codés en mémoire sur un octet. Le code
l’ensemble des caractères représentables, dépend de la
machine concernée et du compilateur employé).
Néanmoins, on est toujours certain de disposer des
lettres (majuscules et minuscules), des chiffres, des signes
de ponctuation et des différents séparateurs (en fait, tous
ceux que l’on emploie pour écrire un programme !). En
revanche, les caractères nationaux (caractères
accentués ou ç) ou les caractères semi-graphiques
ne figurent pas dans tous les environnements.
112
III. Les Types de bases en C
Les types Caractère
Le type char représente un caractère parmi l'ensemble des
caractères du jeu de caractères de la machine. Le code des
caractères utilises n'est pas défini par le langage. Dans la
grande majorité des cas c'est le code ASCII.
Taille : 1 octet
 intervalle : -128 à +127 ou 0 à 255 suivant les
machines
Il peut être :
 signed char : intervalle de -128 _a 127.
 unsigned char : intervalle de 0 a 255.

Ces 2 derniers types rendent les programmes plus


portables. 113
IV. La déclaration des variables simples
Variables
Syntaxe de déclaration:
<Type> <Nom_Variable>;
<Type> <NomVar1>,<NomVar2>,...,<NomVarN>;
Exemples:
En Algo:
X, Y: entiers;
Somme, Moyenne : réels;
Touche: caractère;
En C:
int X, Y;
float Somme, Moyenne; 114

Char Touche;
IV. La déclaration des Constantes simples
Constantes
Syntaxe:
Const <Type_ident> <Ident> = <Valeur_Const>

Exemples:
Entiers:
Const int n = 20;

Réels:
Const float Pi = 3,14;
Caractères:
Const Reponse = ` O` ;
115
IV. Initialisation des variables

L‘’initialisation d’une variable en C peut se faire


soit lors de la déclaration de la variable soit après.
Exemples:
int i=1;

float Nbre, somme, moyenne=14.6;

Apres declararion
Int i;
.
.
. 116
i=1;
V. Les opérateurs standard en C
Les opérateurs connus
1. Opérateurs arithmétiques :
+ addition
- soustraction
* multiplication
/ division (entière et rationnelle!)
% modulo (reste d'une div. entière)

2. Opérateurs logiques :
&& et logique (and)
|| ou logique (or)
négation logique
!
(not) 117
V. Les opérateurs standard en C
Les opérateurs connus
1. Opérateurs de comparaison:
== égal à
!= différent de
<, <=, >, >= plus petit que, ...
Remarques
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


118
de zéro comme vrai et zéro comme faux:
V. Les opérateurs standard en C
Les opérateurs particuliers de C :
1. Les opérateurs d'affectation :

En pratique, nous retrouvons souvent des


affectations comme: i = i + 2
En C, nous utiliserons plutôt la formulation plus
compacte: i += 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
119
V. Les opérateurs standard en C
Les opérateurs particuliers de C :
+= ajouter à
-= diminuer de
*= multiplier par
/= diviser par

Avantages :
La formulation avec un opérateur d'affectation est
souvent plus près de la logique humaine: Un homme
dirait <<Ajoute 2 à I>> plutôt que <<Ajoute 2 à I et
écris le résultat dans I>> .
Les opérateurs d'affectation peuvent aider le
compilateur à générer un code plus efficient parce que
120
expr1 n'est évalué qu'une seule fois.
V. Les opérateurs standard en C
Les opérateurs particuliers de C :
1. 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:
I++ ou ++I pour l'incrémentation (augmentation d'une unité)
I-- ou --I pour la décrémentation (diminution d'une unité)

Les opérateurs ++ et -- sont employés dans les cas suivants:

121
V. Les opérateurs standard en C
Les opérateurs particuliers de C :
Les opérateurs ++ et -- sont employés dans les cas suivants:
1. Incrémenter/décrémenter une variable (p.ex: dans
une boucle). Dans ce cas il n'y a pas de différence entre
la notation préfixe (++I - -I) et la notation postfixe (I++
I- -).
2. Incrémenter/décrémenter une variable et en même
temps affecter sa valeur à une autre variable. Dans ce
cas, nous devons choisir entre la notation préfixe et
postfixe:

122
V. Les opérateurs standard en C
Les opérateurs particuliers de C :
oX = I++ passe d'abord la valeur de I à X et incrémente
après I

oX = I- - passe d'abord la valeur de I à X et décrémente


après I

oX = ++I incrémente d'abord I et passe la valeur


incrémentée à X

oX = - -I décrémente d'abord I et passe la valeur


décrémentée à X

123
V. Les opérateurs standard en C
Les opérateurs particuliers de C :
Exemple :
Supposons que la valeur de N est égale à 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

124
&
V. Les opérateurs standard en C

La priorité des opérateurs en C :


L'ordre de l'évaluation des différentes parties d'une
expression correspond en principe à celle que nous
connaissons des mathématiques.
Exemple:
Supposons pour l'instruction suivante: A=5, B=10, C=1
X = 2*A+3*B+4*C;
L'ordinateur évalue d'abord les multiplications:
2*A ==> 10 , 3*B ==> 30 , 4*C ==> 4
Ensuite, il fait l'addition des trois résultats obtenus:
10+30+4 ==> 44
A la fin, il affecte le résultat général à la variable:
X = 44
125
V. Les opérateurs standard en C
La priorité des opérateurs en C :
On dit alors que la multiplication a la priorité sur
l'addition et que la multiplication et l'addition ont la
priorité sur l'affectation. Si nous voulons forcer
l'ordinateur à commencer par un opérateur avec une
priorité plus faible, nous devons (comme en
mathématiques) entourer le terme en question par des
parenthèses.
Exemple :
Dans l'instruction: X = 2*(A+3)*B+4*C ; l'ordinateur
évalue d'abord l'expression entre parenthèses, ensuite les
multiplications, ensuite l'addition et enfin l'affectation.
(En reprenant les valeurs de l'exemple ci-dessus, le
résultat sera 164). 126
V. Les opérateurs standard en C
Classes de priorités :
Priorité 1 (la plus
()
forte):
Priorité 2: !, ++, - -
Priorité 3: *, /, %
Priorité 4: +, -
Priorité 5: <, <= , >, >=
Priorité 6: == !=
Priorité 7: &&
Priorité 8: ||
Priorité 9 (la plus
=, +=, - =, *=, /=, %=
faible):
127
V. Les opérateurs standard en C
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>
COMMANDE C EXPLICATION
exp(X) fonction exponentielle
log(X) logarithme naturel
log10(X) logarithme à base 10
pow(X,Y) X exposant Y
Sqrt(X) racine carrée de X
Fabs(X) valeur absolue de X
Floor(X) arrondir en moins
Ceil(X) arrondir en plus
128
reste rationnel de X/Y
Fmod(X,Y)
(même signe que X)
V. Les opérateurs standard en C

sin(X), cos(X), tan(X) sinus, cosinus, tangente de X


arcsin(X), arccos(X),
asin(X), acos(X), atan(X)
arctan(X)
sinus, cosinus, tangente
sinh(X), cosh(X), tanh(X)
hyperboliques de X
Remarques
Les arguments et les résultats des fonctions
arithmétiques sont du type double.

129
VI. Les entrées-sorties conversationnelles
Lire et écrire des données
La bibliothèque standard <stdio> contient un ensemble
de fonctions qui assurent la communication de la machine
avec le monde extérieur. Dans ce chapitre, nous allons en
discuter les plus importantes:

printf() : écriture formatée de données.


scanf() : lecture formatée de données.
putchar() : écriture d'un caractère.
getchar() : lecture d'un caractère.

130
VI. Les entrées-sorties conversationnelles
1. Écriture formatée de données:
printf()
La fonction printf est utilisée pour transférer du texte,
des valeurs de variables ou des résultats d'expressions
vers le fichier de sortie standard stdout (par défaut
l'écran).
Syntaxe:
printf("<format>",<Expr1>,<Expr2>, ... )
"<format>" : format de représentation.
 : variables et expressions dont les val<Expr1>,...
eurs sont à représenter.

131
VI. Les entrées-sorties conversationnelles
1. Écriture formatée de données
La partie "<format>" est en fait une chaîne de caractères
qui peut contenir:
Du texte, Des séquences d'échappement.
Des spécificateurs de format.
Les spécificateurs de format indiquent la manière dont
les valeurs des expressions <Expr1..N> sont imprimées.
La partie "<format>" contient exactement un
spécificateur de format pour chaque expression
<Expr1..N>.
Les spécificateurs de format commencent toujours par
le symbole % et se terminent par un ou deux caractères
qui indiquent le format d'impression.
132
VI. Les entrées-sorties conversationnelles
Spécificateurs de format pour printf() :
SYMBOLE TYPE IMPRESSION COMME

%d ou %i int entier relatif


%u int entier naturel (unsigned)
%o int entier exprimé en octal
entier exprimé en
%x int hexadécimal
%c int caractère
rationnel en notation
%f double décimale
rationnel en notation
%e double scientifique 133
%s char* chaîne de caractères
VI. Les entrées-sorties conversationnelles
1. Écriture formatée de données

134
Les structures conditionnelle et alternatives
1. La structure alternative
Les structures de contrôle définissent la suite
dans laquelle les instructions sont effectuées.

Constatons déjà que la particularité la plus


importante des instructions de contrôle en C est le
fait que les 'conditions' en C peuvent être des
expressions quelconques qui fournissent un
résultat numérique. La valeur zéro correspond à
la valeur logique faux et toute valeur différente
de zéro est considérée comme vrai.
135
Les structures conditionnelle et alternatives
If – else :::: si…sinon…finsi
Syntaxe:
if ( <expression> )
<bloc d'instructions 1>
else
<bloc d'instructions 2>

Si l'<expression> fournit une valeur différente de zéro,


alors le <bloc d'instructions 1> est exécuté.
 Si l'<expression> fournit la valeur zéro, alors le <bloc
d'instructions 2> est exécuté.

la partie <expression> peut désigner :


oUne variable d'un type numérique. 136

oUne expression fournissant un résultat numérique.


Les structures conditionnelle et alternatives
La partie <bloc d'instructions> peut désigner :
Un (vrai) bloc d'instructions compris entre accolades,
Une seule instruction terminée par un point-virgule.

137
Les structures conditionnelle et alternatives
if sans else :::: si…finsi
La partie else est facultative. On peut donc utiliser if de la
façon suivante:
if ( <expression> )
<bloc d'instructions>
Attention !
Comme la partie else est optionnelle, les expressions
contenant plusieurs structures if et if - else peuvent mener
à des confusions.
Exemple :
L'expression suivante peut être interprétée de deux façons:

138
Les structures conditionnelle et alternatives
if (N>0)
if (A>B) Pour N=0, A=1 et B=2 :
MAX=A; Dans la première interprétation, MAX
else
MAX=B; reste inchangé,
if (N<0) Dans la deuxième interprétation, MAX
if (A>B) obtiendrait la valeur de B.
MAX=A;
else
MAX=B;

Sans règle supplémentaire, le résultat de cette


expression serait donc imprévisible.

139
Les structures conditionnelle et alternatives
Convention :
En C une partie else est toujours liée au dernier if qui ne
possède pas de partie else. Dans notre exemple, C
utiliserait donc la première interprétation.
Solution :
Pour éviter des confusions et pour forcer une certaine
interprétation d'une expression, il est recommandé
d'utiliser des accolades { }.
Exemple :
if (N>0)
Pour forcer la deuxième
{
interprétation de if (A>B)
l'expression ci-dessus, MAX=A;
nous pouvons écrire: }
else
140
MAX=B;
Les structures conditionnelle et alternatives
if - else if - ... – else
if ( <expr1> )
<bloc1>
else if (<expr2>)
<bloc2>
else if (<expr3>) Les expressions <expr1> ...
<bloc3> <exprN> sont évaluées du haut
else if (<exprN>) vers le bas jusqu'à ce que l'une
<blocN> d'elles soit différente de zéro.
else <blocN+1> Le bloc d'instructions y lié est
alors exécuté et le traitement de la
commande est terminé.

141
Les structures conditionnelle et alternatives
Instruction switch :::: Cas
switch (expression)
{
case constante_1 : [ suite_d’instructions_1 ]
case constante_2 : [ suite_d’instructions_2 ]
..............
case constante_n : [ suite_d’instructions_n ]
[ default : suite_d’instructions ]
}

expression : expression entière quelconque,


 constante : expression constante d’un type entier
quelconque (char est accepté car il sera converti en int),
 suite d’instructions : séquence d’instructions 142
quelconques.
Les structures conditionnelle et alternatives
Les opérateurs conditionnels
Le langage C possède une paire d'opérateurs qui peut être
utilisée comme alternative à if - else et qui a l'avantage de
pouvoir être intégrée dans une expression:
Syntaxe:
<expr1> ? <expr2> : <expr3>

Si <expr1> fournit une valeur différente de zéro, alors


la valeur de <expr2> est fournie comme résultat.
Si <expr1> fournit la valeur zéro, alors la valeur de
<expr3> est fournie comme résultat.
143
Les structures conditionnelle et alternatives

Exemple :

La suite d'instructions :
if (A>B)
MAX=A;
else
MAX=B;

Peut être remplacée par:

MAX = (A > B) ? A : B;
Les structures conditionnelle et alternatives
Exercices d'application
Les Structures Répétitives ( Les Boucles)
En C, comme en Algorithmique nous disposons de
trois structures qui nous permettent la définition
de boucles conditionnelles:
1. la structure : while

2. la structure : do – while

3. la structure : for
Les Structures Répétitives ( Les Boucles)
While ::::: Tantque
La structure while correspond tout à fait à la structure
tantque du langage algorithmique.
Syntaxe:
while ( <expression> )
<bloc d'instructions>;
Tant que l'<expression> fournit une valeur différente
de zéro, le <bloc d'instructions> est exécuté.

Si l'<expression> fournit la valeur zéro, l'exécution


continue avec l'instruction qui suit le bloc d'instructions.

Le <bloc d'instructions> est exécuté zéro ou plusieurs
fois.
Les Structures Répétitives ( Les Boucles)
While ::::: Tantque
La partie <expression> peut désigner :
Une variable d'un type numérique,
Une expression fournissant un résultat numérique.
La partie <bloc d'instructions> peut désigner :
Un (vrai) bloc d'instructions compris entre accolades,
Une seule instruction terminée par un point-virgule.
Exemple 1 :
/* Afficher les nombres de 0 à 9 */
int I = 0;
while (I<10)
{
printf("%d \n", I);
I++;
}
Les Structures Répétitives ( Les Boucles)
do – while ::::: Repeter – jusqu’à
La structure do - while est semblable à la structure
while, avec la différence suivante :
while évalue la condition avant d'exécuter le bloc
d'instructions.
do - while évalue la condition après avoir exécuté le
bloc d'instructions. Ainsi le bloc d'instructions est
exécuté au moins une fois.
Syntaxe:
do
<bloc d'instructions>
while ( <expression> );
Les Structures Répétitives ( Les Boucles)
do – while ::::: Repeter – jusqu’à
Le <bloc d'instructions> est exécuté au moins une fois
et aussi longtemps que l'<expression> fournit une valeur
différente de zéro.
En pratique, la structure do - while n'est pas si
fréquente que while; mais dans certains cas, elle fournit
une solution plus élégante.
Une application typique de do - while est la saisie de
données qui doivent remplir une certaine condition:
Exemple 1 :
float N;
do
{
printf("Introduisez un nombre entre 1 et 10 :");
scanf("%f", &N);
} while (N<1 || N>10);
Les Structures Répétitives ( Les Boucles)
for ::::: Pour
La structure for en C et la structure pour en langage
algorithmique sont utilisées pour faciliter la
programmation de boucles de comptage. La structure for
en C est plus générale et beaucoup plus puissante.
Syntaxe:
for ( <expr1> ; <expr2> ; <expr3> )
<bloc d'instructions>
<expr1> est évaluée une fois avant le passage de la
boucle. Elle est utilisée pour initialiser les données de la
boucle.
<expr2> est évaluée avant chaque passage de la boucle.
Elle est utilisée pour décider si la boucle est répétée ou
non.
Les Structures Répétitives ( Les Boucles)
<expr3> est évaluée à la fin de chaque passage de la
boucle. Elle est utilisée pour réinitialiser les données de la
boucle.

Le plus souvent, for est utilisé comme boucle de comptage


:
for ( <init.> ; <cond. répétition> ; <compteur> )
<bloc d'instructions>

Exemple :
int I;
for (I=0 ; I<=20 ; I++)
printf("Le carré de %d est %d \n", I, I*I);
LES TABLEAUX
Introduction
Les tableaux sont certainement les variables
structurées les plus populaires. Ils sont disponibles dans
tous les langages de programmation et servent à résoudre
une multitude de problèmes. Dans une première
approche, le traitement des tableaux en C ne diffère pas
de celui des autres langages de programmation.

 Nous allons cependant voir plus loin (Les Pointeurs),


que le langage C permet un accès encore plus direct et
plus rapide aux données d'un tableau.

Les chaînes de caractères sont déclarées en C comme


tableaux de caractères et permettent l'utilisation d'un
certain nombre de notations et de fonctions spéciales.
LES TABLEAUX
Les tableaux à une dimension
Définition :
Un tableau (uni-dimensionnel) A est une variable
structurée formée d'un nombre entier N de variables
simples du même type, qui sont appelées les composantes
du tableau. Le nombre de composantes N est alors la
dimension du tableau.
LES TABLEAUX
Déclaration et mémorisation :
Déclaration de tableaux en algorithmique :
<TypeSimple> tableau <NomTableau>[<Dimension>]

Déclaration de tableaux en langage C :


<TypeSimple> <NomTableau>[<Dimension>];
Les noms des tableaux sont des identificateurs qui
doivent correspondre aux restrictions déjà vu sur les
identificateurs.
Exemples :
En Algo: En C:
entier tableau A[25]; int A[25];
réel tableau B[100]; float B[100];
booléen tableau C[10]; int C[10];
caractère tableau D[30]; char D[30];
LES TABLEAUX
Déclaration et mémorisation :
Mémorisation :
En C, le nom d'un tableau est le représentant de
l'adresse du premier élément du tableau. Les adresses des
autres composantes sont calculées (automatiquement)
relativement à cette adresse.
Exemple:
short A[5] = {1200, 2300, 3400, 4500, 5600};

Si un tableau est formé de N composantes et si une


composante a besoin de M octets en mémoire, alors le
tableau occupera de N*M octets
LES TABLEAUX
Exemple :
En supposant qu'une variable du type long occupe 4 octets
(c.-à-d: sizeof(long)=4), pour le tableau T déclaré par:
long T[15]; C réservera N*M = 15*4 = 60 octets en
mémoire.
Initialisation :
Lors de la déclaration d'un tableau, on peut initialiser
les composantes du tableau, en indiquant la liste des
valeurs respectives entre accolades.
Exemples :
int A[5] = {10, 20, 30, 40, 50};
float B[4] = {-1.05, 3.33, 87e-5, -12.3E4};
int C[10] = {1, 0, 0, 1, 1, 1, 0, 1, 0, 1};
Remarques
1. Il faut évidemment veiller à ce que le nombre de valeurs
dans la liste corresponde à la dimension du tableau.
LES TABLEAUX
2. Si la liste ne contient pas assez de valeurs pour toutes
les composantes, les composantes restantes sont
initialisées par zéro.
Réservation automatique :
Si la dimension n'est pas indiquée explicitement lors de
l'initialisation, alors l'ordinateur réserve automatiquement
le nombre d'octets nécessaires.
Exemples :
int A[] = {10, 20, 30, 40, 50}; réservation de 5*sizeof(int)
octets (dans notre cas: 10 octets)

float B[] = {-1.05, 3.33, 87e-5, -12.3E4}; réservation de


4*sizeof(float) octets (dans notre cas: 16 octets).
LES TABLEAUX
Exemples Récapitulatifs
LES TABLEAUX
Accès aux composantes :
En déclarant un tableau par: int A[5]; nous avons défini
un tableau A avec cinq composantes, auxquelles on peut
accéder par: A[0], A[1], ... , A[4].
Exemple:

Attention !
Considérons un tableau T de dimension N:
En C :
l'accès au premier élément du tableau se fait par : T[0]
l'accès au dernier élément du tableau se fait par : T[N-1]
En algorithmique :
 l'accès au premier élément du tableau se fait par : T[1]
l'accès au dernier élément du tableau se fait par : T[N]
LES TABLEAUX
Affichage et affectation :
Affichage du contenu d'un tableau:
int main()
{
int A[5];
int I; /* Compteur */
for (I=0; I<5; I++)
printf("%d ", A[I]);
printf("\n");
}
Remarques :
Avant de pouvoir afficher les composantes d'un tableau,
il faut évidemment leur affecter des valeurs.
Rappelez-vous que la deuxième condition dans la
structure for n'est pas une condition d'arrêt, mais une
condition de répétition!
LES TABLEAUX
Affectation:
int main()
{
int A[5];
int I; /* Compteur */
for (I=0; I<5; I++)
scanf("%d", &A[I]);
}
Remarques :
Comme scanf a besoin des adresses des différentes
composantes du tableau, il faut faire précéder le terme A[I]
par l'opérateur adresse '&'.
La commande de lecture scanf doit être informée du type
exact des données à lire. (Ici: %d ou %i pour lire des
valeurs du type int)
LES TABLEAUX
Les tableaux à deux dimensions
Définition :
En C, un tableau à deux dimensions A est à interpréter
comme un tableau (unidimensionnel) de dimension L dont
chaque composante est un tableau (unidimensionnel) de
dimension C.
On appelle L le nombre de lignes du tableau et C le
nombre de colonnes du tableau. L et C sont alors les deux
dimensions du tableau. Un tableau à deux dimensions
contient donc L*C composantes.
LES TABLEAUX

On dit qu'un tableau à deux dimensions est carré, si L


est égal à C. En faisant le rapprochement avec les
mathématiques, on peut dire que "A est un vecteur de L
vecteurs de dimension C", ou mieux: "A est une matrice
de dimensions L et C".
LES TABLEAUX
Exemple :
Considérons un tableau NOTES à une dimension pour
mémoriser les notes de 20 élèves d'une classe dans un
devoir:
int NOTE[20] = {45, 34, ... , 50, 48};

Vous aimerez peut-être aussi