Vous êtes sur la page 1sur 17

Faculté des Sciences de Gafsa

Cours Algorithmique et Structure

Chapitre I : Les Concepts


de données
Langage Pseudo - Pédagogique

de base
Les Concepts de base
Chapitre 1

Les Concepts de base

Enseignant: Mohamed NIZAR

Mohamed NIZAR© Semestre1. 2005

Les Concepts de base

Page 1/17
Faculté des Sciences de Gafsa

Plan du Chapitre

Chapitre I : Les Concepts


Introduction
Programme
Analyse
Structure générale d’un algorithme

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

Problème ------------------ algorithme --------------- programme

Chapitre I : Les Concepts


Analyse programmation

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.

Données Algorithme Resultats

Structure générale d’un algorithme

Un algorithme comporte les éléments suivants :


- Une entête la ou il y a le nom de l’algorithme.
- Une partie réservée pour la déclaration des types, des constantes et des variables.
- Le corps de l’algorithme.
Il a comme structure générale :
Algorithme <nom de l’algorithme>
Déclaration des constantes
Déclaration des types
Déclaration des variables
Début
Corps de l’algorithme
Fin
Notion d’une variable
Une variable est un identificateur qui sert à repérer un emplacement donné de la mémoire centrale.
Mohamed NIZAR© Semestre1. 2005

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:

Chapitre I : Les Concepts


Variable ← Expression
Une expression peut être :
- Une valeur.
- Un résultat.
Exemples
Quelles seront les valeurs des variables A, B et C après l'exécution des instructions suivantes:
A← 5

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

PTTC ← (PU * Qtite) + ((PU * Qtite) * TTVA)


Ecrire (« prix a payer : », PTTC)

Chapitre I : Les Concepts


Fin
Structures conditionnelles
- Structure conditionnelle simple
Il est utilise lorsqu’il y a une ou plusieurs conditions sur les traitements au niveau de l’algorithme.
La structure générale est la suivante :

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

Structure a choix multiple


Structure générale
Selon <sélecteur> faire
Valeur1 : suite d’instructions 1
Valeur2 : suite d’instructions 2
Valeur3 : suite d’instructions 3
…….

Page 5/17
Faculté des Sciences de Gafsa

Sinon
Suite d’instructions n+1

Chapitre I : Les Concepts


Finselon
Exemple
Afficher le nom du jour de la semaine selon un entier saisi par le clavier.
Structure itérative
Utilité de cette structure :
Exécuter le même traitement un certain nombre de fois

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

Pour Compteur de Valeur_initial à Valeur_Final Faire

<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

Chapitre I : Les Concepts


de base
Figure 7. Schéma d'exécution d'une boucle" Pour"
Exemple
Pour i de 1 à 5 Faire
Ecrire (i*10)
Fin Pour
Cette boucle affiche respectivement les nombres 10, 20, 30,40 et 50.
Remarques
1- Une boucle« pour» peut être exécutée 0, 1 ou n fois.
2- On ne peut utiliser la boucle « pour» que si on connaît au préalable combien de fois le traitement
sera exécuté (valeur finale - valeur initiale + 1).
3- Dans une boucle «pour », l'évolution du compteur peut se faire dans le sens décroissant comme
dans l'exemple suivant:
Pour i de 5 à 1 [pas = -1] Faire
Ecrire (i*lO)
Fin Pour
Cette boucle affiche respectivement les nombres 10, 20, 30, 40 et 50.
Remarques
1- une boule « Pour » peut être exécutée 0, 1 ou n fois.
2- On peut utiliser la boule « Pour » que si on connaît au préalable combien de fois le
traitement sera exécuté (valeur finale – valeur initiale +1).
3- Dans une boucle « pour », l’évolution du compteur peut de faire dans le sens décroissant
comme dans l’exemple suivant :
Pour i de 5 à 1 [pas = -1] Faire
Mohamed NIZAR© Semestre1. 2005

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

Chapitre I : Les Concepts


Ecrire (i, "est un diviseur de ", n)
Finsi
FinPour
Fin
Exercice
Ecrire un algorithme qui lit un entier positif n puis calcule et affiche son factoriel selon la formule n!
= 1 x 2 x ... x n.

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

II. La structure « Répéter… Jusqu'à »


Syntaxe Générale
Répéter

<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

Chapitre I : Les Concepts


de base
Exemple
iß1
Répéter
Ecrire (i*10)
Ißi+1
Jusqu'à (i > 5)

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

Chapitre I : Les Concepts


Solution
Algorithme Factoriel
Var
N, i, f: Entier
Début
Ecrire ("Entrer un entier positif : ")
Lire (n)

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

Mohamed NIZAR© Semestre1. 2005

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

Chapitre I : Les Concepts


N, i : Entier
Début
Ecrire ("Entrer un entier positif : ")
Lire (n)
I ß1
Tantque (I ≤ n) Faire
Si (n Mod i = 0) Alors
Ecrire (i, "est un diviseur de ", n)

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

Mohamed NIZAR© Semestre1. 2005

Les procédures et les fonctions

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

Chapitre I : Les Concepts


précise et qui peut transmettre un certain nombre de résultats.
Exemple:

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

Chapitre I : Les Concepts


Titre : chaîne
Début
Ecrire (Titre)
Lire (Titre)
Lß Long (Titre)
Ecrire (Titre)
Trait (L)

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

Chapitre I : Les Concepts


procédure appelée.

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

Chapitre I : Les Concepts


également le paramètre effectif correspondant (la procédure travaille sur la copie originale).
Exercice
Faire la trace d'exécution de l'algorithme suivant:
Procédure transmission (a: entier; Var b: entier)
Début

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

Chapitre I : Les Concepts


Si (a < = b) Alors
cßa
Sinon
cßb
FinSi
Min ß c
Fin

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

Chapitre I : Les Concepts


Performance de la récursivité
Les problèmes de mémoire et de rapidité sont les critères qui permettent de faire le choix entre la
solution itérative te la solution récursive.
Pour le calcul de la fonction factorielle, les différences entre les deux solutions ne se voient pas
trop. Pour l’utilisation de la mémoire, il y aura dépassement dans les calculs avant la saturation de
la mémoire.

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

La solution récursive vient immédiatement de cette relation :


Fonction Fibo (n : Entier) : Entier
Début
Si (n=0) ou (n=1) alors
Fibo ß 1
Sinon
Fibo ß Fibo (n-2) – Fibo (n-1)
Finsi
Mohamed NIZAR© Semestre1. 2005

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