Académique Documents
Professionnel Documents
Culture Documents
de base
Les Concepts de base
Chapitre 1
Page 1/17
Faculté des Sciences de Gafsa
Plan du Chapitre
de base
Notion d’une variable
Notion de type :
Actions élémentaires
A – l’Affectation
B- la lecture:
C- l’Ecriture
Exemple
Structure générale d’un algorithme
Structures conditionnelles
- Structure conditionnelle simple
- Structure conditionnelle alternative
Exemple
Structure a choix multiple
Structure itérative
Les procédures et les fonctions
Les procédures
Les fonctions
Mohamed NIZAR© Semestre1. 2005
Contenu du chapitre
Introduction
C’est quoi un algorithme ?
Un algorithme, c’est une suite d’instructions, qui une fois exécutée correctement, conduit à un
résultat donné. Il occupe une place précise dans l’activité de programmation.
Page 2/17
Faculté des Sciences de Gafsa
Programme
Un programme est décrit selon un langage de programmation (un générateur de programme).
Exemple : Langage C, Pascal…etc.
de base
Analyse
L’étape de l’analyse est très important, elle permet de :
- Identifier les donnes du problème et les résultats a atteindre.
- Définir le type des variables qui vont contenir les donnes ainsi que les résultats.
- Définir la méthode (la suite des instructions) permettant de transformer les données en
résultats.
Cette notion nous permet de manipuler des valeurs sans nous préoccuper de l'emplacement
qu'elles occupent effectivement en mémoire. Elle possède effectivement un type et une valeur
Remarque
Une variable peut prend le même valeur durant l’exécution de tout l’algorithme. Dans ce cas on
l’appelle une constante.
Notion de type :
Les principaux types sont :
Entier, réel, caractère, booléenne
Les chaînes de caractères, les tableaux
Actions élémentaires
A – l’Affectation
Page 3/17
Faculté des Sciences de Gafsa
Le rôle de cette instruction consiste à placer une valeur dans une variable. Sa syntaxe
générale est de la forme:
de base
B ←3
C ← A+ B
A ← 2
C ← B-A
Remarque
La valeur ou le résultat de l'expression à droite du signe d'affectation doit être de même
type ou de type compatible avec celui de la variable à gauche.
B- la lecture:
Dans certains cas, nous pourrons être amenés à transmettre des informations (données) à
notre programme par l'intermédiaire d'un périphérique d'entrée comme le clavier. Cela sera réalisé
par l'instruction de lecture.
La forme générale de cette instruction est:
Lire (expression1, expression2, ...)
C- l’Ecriture
L’affichage de du résultat sur un périphérique de sortie est l’écran par défaut.
La syntaxe générale est la suivante :
Ecrire (expression1, expression2, ...)
Exemple :
Calculez le prix TTC d’un produit acheté en une quantité quelconque.
Analyse du problème
Mohamed NIZAR© Semestre1. 2005
PU : prix unitaire
Qtite : quantité
TTVA : taux TVA réel
Solution
Algorithme calcul
Variables
TTVA, PU, Qtite, PTTC : réel
Début
Ecrire (« donnez le prix unitaire : »)
Lire (PU)
Ecrire (« donnez la quantité : »)
Lire (Qtite)
Ecrire (« donnez TVA : »)
Lire (TTVA)
Page 4/17
Faculté des Sciences de Gafsa
de base
Si <condition> alors
Suite d’instructions
Finsi
Exemple
Si vous voulez accorder une remise de 5 % si le montant total a payer est supérieur a 100
Solution
Si PTTC > 100 alors
PTTC ← PTTC * 0.95
Finsi
Structure conditionnelle alternative
Syntaxe générale :
Si <condition> alors
Suite d’instructions 1
Sinon
Suite d’instructions 2
Finsi
Exemple
Si PTTC > 100 alors
PTTC ← PTTC * 0.95
Sinon
Si PTTC > 100 alors
PTTC ← PTTC * 0.95
Finsi
Mohamed NIZAR© Semestre1. 2005
Finsi
Page 5/17
Faculté des Sciences de Gafsa
Sinon
Suite d’instructions n+1
de base
1er cas : nombre d’itération connu a l’avance.
Dans ce cas vous utilisez un compteur pour contrôler la progression du traitement.
Syntaxe générale :
Pour <compteur> de Vi à Vf faire
Suite d’instructions
Fin pour
2eme cas : nombre d’itération inconnu
Dans ce cas vous utilisez une condition d’arrêt
- tantque
- répéter
I. La structure « Pour …. Faire ».
Syntaxe générale
<Séquence d'instructions>
Fin Pour
Principe de fonctionnement
Le compteur (variable de contrôle) prend la valeur initiale au moment d'accès à la boucle
puis, à chaque parcours, il passe automatiquement à la valeur suivante dans son domaine jusqu'à
atteindre la valeur finale (Figure 7) : Mohamed NIZAR© Semestre1. 2005
Page 6/17
Faculté des Sciences de Gafsa
Ecrire (i*10)
FinPour
Dans ce cas, le compteur i sera décrémenté après chaque parcours.
Exercice
Ecrire un algorithme qui lit un entier positif n puis affiche tous ses diviseurs.
Solution
Algorithme Diviseurs
Var
N, i : Entier
Début
Ecrire ("Entrer un entier positif : ")
Page 7/17
Faculté des Sciences de Gafsa
Lire (n)
Pour i de 1 à n Faire
Si (n Mod i = 0) Alors
de base
Solution
Algorithme Factoriel
Var
N, i, f: Entier
Début
Ecrire ("Entrer un entier positif : ")
Lire (n)
Fß1
Pour i de 1 à n Faire
Fßf*i
FinPour
Ecrire (n, " ! = ", f)
Fin
<Séquence d'instructions>
Jusqu'à < Condition >
Principe de fonctionnement
La séquence d’instructions est exécutée une première fois, puis l’exécution se répète jusqu’à ce
que la condition de sortie soit vérifiée.
Une boucle « Répéter » s’exécute toujours au moins une fois (figure 8).
Mohamed NIZAR© Semestre1. 2005
Page 8/17
Faculté des Sciences de Gafsa
Remarques
1- Contrairement à une boucle « Pour » dans une boucle « Répéter », l’initialisation et
l’avancement du compteur doivent être gérés manuellement par le programmeur.
2- Dans une boucle « Répéter », il faut toujours s’assurer que la condition de sortie sera
vérifiée après un nombre fini de parcours. Sinon, c’est une boucle infinie comme dans le
cas suivant : c ß "A"
Répéter
Ecrire (c)
Jusqu'à (c > "Z")
Exercice
Mohamed NIZAR© Semestre1. 2005
Réécrire l’algorithme diviseurs en remplaçant la boucle « Pour » par une boucle « Répéter ».
Solution
Algorithme Diviseurs
Var
N, i : Entier
Début
Ecrire ("Entrer un entier positif : ")
Lire (n)
I ß1
Répéter
Si (n Mod i = 0) Alors
Ecrire (i, "est un diviseur de ", n)
Finsi
ißi+1
Jusqu'à (i > n)
Page 9/17
Faculté des Sciences de Gafsa
Fin
Exercice
Réécrire l’algorithme Factoriel en remplaçant la boucle « Pour » par une boucle « Répéter ».
de base
Iß1
Fß1
Répéter
Fßf*i
Ißi+1
Jusqu'à (i > n)
Ecrire (n, " ! = ", f)
Fin
III. La structure « TantQue … Faire »
Syntaxe générale
TantQue <Condition> Faire
<Séquence d'instructions>
Fin Tantque
Principe de fonctionnement
Le traitement est exécuté aussi longtemps que la condition est vérifiée. Si dés le début cette
condition est fausse, le traitement ne sera exécuté aucune fois.
Une boucle « Tantque » peut s’exécuter 0, 1, ou n fois (Figure 9).
Exemple
Iß1
Tantque (i ≤ 5) Faire
Ecrire (i*10)
Fin Tantque
Exercice
Réécrire l’algorithme diviseurs en remplaçant la boucle « Pour » par une boucle « Répéter ».
Solution
Page 10/17
Faculté des Sciences de Gafsa
Algorithme Diviseurs
Var
de base
Finsi
ißi+1
Fin Tantque
Fin
Exercice
Réécrire l’algorithme factoriel en remplaçant la boucle « Répéter » par une boucle « Tantque ».
Solution
Algorithme Factoriel
Var
N, i, f: Entier
Début
Ecrire ("Entrer un entier positif : ")
Lire (n)
Iß1
Fß2
Tantque (I ≤ n) Faire
Fßf*i
Ißi+1
Fin Tantque
Ecrire (n, " ! = ", f)
Fin
Page 11/17
Faculté des Sciences de Gafsa
Les procédures
Une procédure est une structure de programme autonome qui permet d'effectuer une tâche bien
Procédure Trait
Var
I:entier
de base
Début
Pour i de 1 à 12 Faire
Ecrire (" – ")
Fin Pour
Fin
L'appel de la procédure Trait de fait comme suit:
Algorithme Proc
Const.
Titre = "Multimédia"
Début
Ecrire ("Titre")
Trait
Fin
Remarques
1. La structure d'une procédure est analogue à celle d'un algorithme. Elle possède une entête, une
partie déclarative et un corps.
2. Pour appeler une procédure simple, il suffit d'écrire le nom de cette procédure.
3. Une ressource locale (privée) est déclarée dans une procédure et ne peut être utilisée qu'à
l'intérieur de celle-ci.
Exemple: i est une variable locale à la procédure trait.
4 Une ressource globale (publique) est déclarée au début de l'algorithme. Elle 'peut être utilisée
dans le corps principal de l'algorithme ou par les différents modules.
. Exemple: titre est une constante globale.
Il est fortement recommandé d'utiliser autant que possible des variables locales pour rendre les
modules plus autonomes et par conséquent utilisables dans d'autres programmes.
IV. Procédure paramétrée
Mohamed NIZAR© Semestre1. 2005
Lors de l'appel, il est souvent nécessaire d'échanger des informations entre la procédure et le
programme ou le module appelant. C'est le rôle des paramètres
A titre d'exemple, la procédure Trait de la l'algorithme suivant permet d'afficher un trait dont la
longueur effective est précisée lors de l'appel, ce qui permet de souligner n'import quel titre.
Procédure Trait (n: entier)
Var
I:entier
Début
Pour i de 1 à n Faire
Ecrire (" – ")
Fin Pour
Fin
L'appel de la procédure paramétrée Trait de fait comme suit:
Page 12/17
Faculté des Sciences de Gafsa
Algorithme Proc
Var
L : entier
de base
Fin
Remarques
1-l'entête d'une procédure paramétrée comporte, en plus du nom de la procédure, un liste des
paramètres formels (fictifs) sous la forme suivante:
Procédure nom_procédure (Pf1 : type1; Pf2 : type2; Pf3:type3…………..)
2-Pour appeler une procédure paramétrée, il faut écrire le nom de la procédure suivi d'une liste de
paramètres effectifs (réels) sous la forme suivante:
Nom_procédure (pef1, pef2,….)
Lors de l'appel, il faut respecter le nombre, l'ordre et le type des paramètres.
Exercice1 :
Ecrire une procédure ReptCar qui permet d'afficher un caractère un certain nombre de fois.
Solution
Procédure ReptCar (C : Caractère; n : entier)
Var
I: entier
Début
Pour i de 1 à n faire
Ecrire (c)
Fin Pour
Fin
Exercice 2
En faisant l'appel à la procédure précédente (de l'exercice 1) écrire un algorithme nommé affichage
qui permet d'afficher un certain nombre d'étoiles, supérieure à 100.
Solution
Mohamed NIZAR© Semestre1. 2005
Algorithme Affichage
Const
C = "*"
Var
N: entier
Début
Répéter
Ecrire (" Donner un nombre ")
Lire (n)
Jusqu'à (n>100)
RpetCar (c, n)
Fin
V. Modes de passages
Page 13/17
Faculté des Sciences de Gafsa
La substitution des paramètres fictifs aux paramètres formels s'appelle passage de paramètres.
Elle correspond à un transfert d'informations entre le programme ou le module appelant et la
Notons d'abord que les paramètres d'une procédure peuvent être de type donnée, résultat ou
donnée-résultat.
. Un paramètre donné est une information nécessaire pour réaliser une tâche. Il ne subit
aucun changement au cours de l'exécution de la procédure.
de base
. Un paramètre résultat est un aboutissement de l'action, sa valeur n'est pas significative
avant le début de l'exécution de la procédure.
. Un paramètre donnée-résultat est à la fois une donnée et un résultat, c'est à dire une
information dont la valeur sera modifiée par la procédure.
Le tableau suivant indique pour chaque type de paramètre le sens de transfert et le mode de
passage utilisé:
Type de paramètre Sens de transfert Mode de passage
Donnée Programme _ Procédure Par valeur
Résultat Programme <= Procédure Par variable
Donnée-Résultat Programme <=> Procédure (par adresse)
En algorithmique, le mot Var inséré devant un paramètre formel signifie que ce paramètre est
passé par variable (paramètre de type résultat ou donnée-résultat).
Exemple 1
Ecrire une procédure «puissance» qui calcule c = ab = a x a x ...xa (b fois) ; a et b étant des
entiers positifs.
Solution
Procédure puissance (a, b: entier; Var c:entier)
Var
I:entier
Début
C ß1
Pour i de 1 à b Faire
Cßc*a
Mohamed NIZAR© Semestre1. 2005
Fin pour
Fin
Exemple 2
Ecrire une procédure Permuter qui permet d'échanger les valeurs de 2 entiers a et b.
Solution
Procédure permuter (Var a, b: entier)
Var
X: entier
Début
Xßa
Aßb
bßx
Fin
Remarque
Page 14/17
Faculté des Sciences de Gafsa
Dans le mode de passage par valeur, les modifications effectuées sur le paramètre formel
n'affectent pas la valeur du paramètre effectif (la procédure travaille sur une copie de la variable)
alors que dans le mode de passage par variable, toute modification sur le paramètre formel affecte
de base
A ß a + 100
B ß b + 100
Ecrire (" a = ", a, " b = ", b)
Fin
Algorithme Paramètre
Var
I, j: entier
Début
Iß1
Jß2
Transmission (i,j)
Fin
A la fin d'exécution de cet algorithme, on aura comme résultat:
A=101 b=102
I=1 j=102
Les fonctions
Une fonction est une procédure particulière qui admet un seul paramètre résultat de type
simple (entier, réel, caractère, etc.).
Une fonction possède un type qui est celui de son résultat.
2. Structure d'une fonction
Fonction Nom_Fonc«paramètres formels» : Type
<Déclarations>
Début
<Séquence d'instructions>
Nom_Fonc ß résultat
Fin
Mohamed NIZAR© Semestre1. 2005
Remarques
1. Le nom de la fonction joue un double rôle, c'est à la fois l'identifiant de la fonction et une
variable locale.
2. Dans une fonction, le passage de tous les paramètres se fait par valeur (tous les paramètres
sont des données).
Exemple
Ecrire une fonction« min» qui retourne le minimum de 2 entiers a et b.
Solution
Fonction min (a, b : Entier) : Entier
Page 15/17
Faculté des Sciences de Gafsa
Var
C : Entier
Début
de base
La récursivité
La récursivité est une technique de programmation alternative à l’itération qui permet de trouver,
lorsqu’elle est bien utilisée, des solutions très élégantes a un certain nombre de problèmes.
Une procédure ou fonction est dite récursive si son corps contient un ou plusieurs appels a elle-
même.
Procédure occurrence (paramètres)
Début
……
Occurrence (valeurs)
…
Fin
Utiliser la récursivité revient à définir :
- une solution pour un ensemble de cas de base (sans utiliser d’appels récursifs)
- une solution dans le cas plus simples. Cette relation doit permettre d’arriver à un cas de
base en un nombre fini d’étapes.
Etude d’un exemple : la fonction factorielle
Solution itérative :
Fonction facto (n : entier) : entier
Variables
N, i, f : Entier
Début
Fß1
Pour i de 2 a n faire
Fßf*i
FinPour
Facto ß F
Fin
Mohamed NIZAR© Semestre1. 2005
Solution récursive
La relation de récurrence est définie par :
0! =1
n ! = n * (n - 1) !
Cette relation donne la fonction récursive suivante :
Fonction facto (n : entier) : entier
Variables
N, i, f : Entier
Début
Si n=0 alors
Facto ß 1
Sinon
Facto ß n * Facto (n- 1)
Page 16/17
Faculté des Sciences de Gafsa
FinPour
Fin
de base
La fonction de fibonacci
La relation de récurrence est définie par :
F0 = 1
F1 = 1
Fn = F (n-1) + F (n-2) pour n > 1
Solution itérative
Fonction fibo (n : entier) : entier
Variables
I, fn, fn1, fn2 : entier
Debut
Fn1 ß 1
Fn2ß 1
Pour I de 2 a n faire
Fn ß fn1 + fn2
Fn2 ß fn1
Fn1 ß fn
Finpour
Fibo ß fn
Fin
Fin
On remarque que la fonction effectue deux appels, donc pour les valeurs importantes de n on aura
des temps d’exécution importants (attente du résultat)
Page 17/17