Académique Documents
Professionnel Documents
Culture Documents
Il y a une différence entre étudier et rester à côté de ses notes. Beaucoup de gens pensent
faire la première action en faisant la deuxième, du fait que les deux ont la même apparence, mais
n‟ ont pas le même résultat.
Gabin NDAY-A-MANDE MULOPWE
La réussite est liée à la patience mais elle dépend également de beaucoup de bonne volonté.
Gabin NDAY
=J. GIRERD=
Langue : Français
Pré-requis :
V. OBJECTIFS ET COMPETENCES
PROFIL DU FORME A LA LICENCE (LMD) : Analyste programmeur
OBJECTIF GENERAL
Ce cours initie les étudiants aux concepts, au raisonnement et aux
méthodes de la programmation informatique, ainsi qu‟ à la résolution des
problèmes par l‟ approche algorithmique.
OBJECTIFS SPECIFIQUES
VI. CONTENU
1. Introduction (4h)
2. Conception d‟ un algorithme (4 h)
3. Les variables et les constantes (8 h)
4. Les entrées et les sorties (4 h)
5. Les structures de contrôle (4 h)
6. Les tableaux (4 h)
7. Les sous- programmes (4 h)
X. INFORMATIONS ADDITIONNELLES
Matériels pédagogiques :
- Ordinateur muni d‟ un système d‟ exploitation Vista, Windows
7 ou Windows 8.
INTRODUCTION
1. Généralités
Il est défini comme une procédure de calcul bien définie qui prend en
entrée une valeur, ou un ensemble de valeurs, et qui donne en sortie une valeur, ou un
ensemble de valeurs. Un algorithme est donc une séquence d‟ étapes de calcul qui
transforment l‟ entrée en sortie.
1
Cours d’Algorithmique I
3. Niveau d’abstraction
2
Cours d’Algorithmique I
3
Cours d’Algorithmique I
4
Cours d’Algorithmique I
• Il est possible de décomposer le passage de ces données vers ces résultats en une
suite d‟ opérations élémentaires dont chacune peut être exécutée par une machine.
5
Cours d’Algorithmique I
Par ailleurs, un algorithme bien conçu, doit répondre aux cinq caractéristiques
suivantes :
FINITUDE : Il doit avoir un point d‟ arrêt. Un nombre d‟ étapes bien connu,
PRECISION : Il doit être sûr du résultat obtenu. Pour cela, chaque instruction
doit être spécifiée,
6
Cours d’Algorithmique I
Enoncé du problème
Analyse
Algorithme
Codage
Compilation
Programme exécutable
Exécution
Résultat
Une erreur syntaxique est une faute d‟ orthographe ou de grammaire. Elle est
commise dans la phase de codage et elle est signalée par le compilateur quand il ne sait
pas interpréter une instruction du programme source afin de la traduire dans le langage
Une erreur sémantique est une faute très grave qui est due à une mauvaise
avons un programme exécutable mais qui ne répond pas aux attentes du client, d‟ où
NB : chaque programme (algorithme) devra avoir un nom et doit avoir trois parties :
L‟ entête
La partie déclarative
Le corps du programme.
7
Cours d’Algorithmique I
EXEMPLES
Solution 1
a.
• ACTIONS EN ENTREE
- Avoir les deux nombres
• TRAITEMENTS A EFFECTUER
- Calculer la somme de deux nombres
• RESULTATS A AFFICHER
- Afficher la somme de deux nombres
b.
- Lire le premier nombre
- Lire le deuxième nombre
- Calculer la somme de deux en additionnant le premier nombre au deuxième
nombre
- Afficher la somme obtenue
Solution 2
a.
• ACTIONS EN ENTREE
- Avoir le coût d‟ achat de la marchandise
- Avoir le prix de vente de la marchandise
• TRAITEMENTS A EFFECTUER
8
Cours d’Algorithmique I
- Calculer le bénéfice
• RESULTATS A AFFICHER
- Afficher le bénéfice
b.
- Lire le coût d‟ achat de la marchandise
- Lire le prix de vente de la marchandise
- Calculer le bénéfice en soustrayant du prix de vente le coût d‟ achat -
Afficher le bénéfice obtenu
Solution 3
a.
• ACTIONS EN ENTREE
- Avoir les cotes
• TRAITEMENTS A EFFECTUER
- Tester les cotes
9
Cours d’Algorithmique I
• RESULTATS A AFFICHER
- Admettre le candidat avec dispense des épreuves d‟ enseignement général du
deuxième groupe
- Admettre le candidat sans dispense
- Eliminer le candidat
b.
- Lire la note obtenue aux épreuves d‟ enseignement général
- Tester si la cote lue est inférieure ou égale à 20
- Lire la note obtenue aux épreuves d‟ enseignement professionnel
- Tester si la cote lue est inférieure ou égale à 20
- Tester si la cote obtenue aux épreuves d‟ enseignement général est égale ou
supérieure à 10 et si la cote obtenue aux épreuves d‟ enseignement
professionnel est supérieure ou égale à 8
Si oui : Admettre le candidat à passer les épreuves du second groupe
Nous constatons que le candidat qui est admis dans le deuxième peut ou ne pas avoir
de dispense. Par conséquent nous aurons à tester pour le candidat ayant réussi au premier
groupe si il peut avoir une dispense. Ainsi, nous aurons : c.
- Lire la note obtenue aux épreuves d‟ enseignement général
- Tester si la cote lue est inférieure ou égale à 20
- Lire la note obtenue aux épreuves d‟ enseignement professionnel
- Tester si la cote lue est inférieure ou égale à 20
- Tester si la cote obtenue aux épreuves d‟ enseignement général est égale ou
supérieure à 10 et si la cote obtenue aux épreuves d‟ enseignement
professionnel est supérieure ou égale à 8
Si oui :
- Tester si la cote obtenue aux épreuves d‟ enseignement général est égale ou
supérieure à 12
10
Cours d’Algorithmique I
Solution 4
• ACTIONS EN ENTREE
- Avoir l‟ ancienneté
- Avoir le nombre d‟ enfants
- Avoir le salaire brut du mois de novembre
• TRAITEMENTS A EFFECTUER
- Tester l‟ ancienneté
- Tester le nombre d‟ enfants
- Calculer la prime
• RESULTATS A AFFICHER
- Afficher la prime de l‟ agent
11
Cours d’Algorithmique I
Solution 5
• ACTIONS EN ENTREE
- Avoir la commande
- Avoir le stock
- Avoir l‟ état du client (Membre ou non membre)
• TRAITEMENTS A EFFECTUER
- Traiter la commande
• RESULTATS A AFFICHER
- Rédiger le bon de livraison
- Emballer l‟ article
- Placer la commande en attente et avertir le service des adhésions
- Placer la commande en attente pour un traitement ultérieur Faites la suite.
12
Cours d’Algorithmique I
Lors de l‟ exécution d‟ un programme, nous constatons qu‟ une valeur peut être
utilisée plusieurs fois et parfois à des moments différents. Par exemple :
- La longueur d‟ une maison peut être utilisée pour calculer le périmètre, pour
calculer la superficie.
- Le prix unitaire d‟ un article peut être utilisé pour calculer le prix total (en
faisant quantité multipliée par le prix unitaire), il peut encore être utilisé pour
calculer le prix total de la facture (en faisant la sommation des prix totaux
des articles achetés)
Une variable est considérée comme une boîte que le programme va repérer
par un nom collé dessus. Pour avoir accès au contenu de la boîte, il suffit de la designer
par son nom.
Physiquement, dans la mémoire de la machine, une VARIABLE est un
emplacement repéré par une adresse binaire.
13
Cours d’Algorithmique I
placée à l‟ intérieur ne peut pas changer. C'est-à-dire le contenu de cette zone mémoire
ne varie pas (ne change pas) tout au long du processus
Dans tous les cas la valeur de pi sera toujours de 3.1416 et ne change pas de
valeurs peut importe le lieu, la grandeur du cercle,…
En considérant une variable comme étant une boîte, nous remarquerons que la
boîte devra au préalable se retrouver dans la mémoire avant d‟ y mettre une quelconque
information. Ceci veut dire : « la première de chose à faire avant de pouvoir utiliser une
variable serait de la CREER et de lui ATTRIBUER un nom, c‟ est ce qu‟ on appelle « LA
DECLARATION DES VARIABLES ». Cette opération doit se faire au début de
l‟ algorithme ».
En PASCAL, la déclaration des variables se fait de la même manière et
respecte les mêmes principes qu‟ en algorithmique.
a. Nom de la variable
Pour nommer une variable, chaque langage a ses lois. D‟ une manière générale,
nous observons les règles suivantes :
Un nom de variable peut comporter les lettres et les chiffres (de A
à Z, de a à z, de 0 à 9),
Il doit toujours commencer par une lettre,
Il exclut la plupart des signes de ponctuation ( ? , . ; : !...) des
caractères spéciaux (¨, ^, *, ~, - ,+ , « , » , „, = , %, …) des symboles
(#, @, &, (, ), /, π, Ω, ∑, λ, β, θ, £, $, …) et des accents sur les
lettres (é, è, à, ê, â, û, î, ù, ï,…),
Il ne doit pas avoir le caractère blanc « espace »,
Il peut admettre le caractère blanc souligné uniquement ( _ ).
Il est préférable de ne pas utiliser les accents sur les différentes
lettres.
Nombre Nombre-entier
14
Cours d’Algorithmique I
Exemple :
Ecrire la suite d‟ instructions qui nous permet de calculer et d‟ afficher la somme
de deux nombres lus au clavier.
- Lire le premier nombre
- Lire le deuxième nombre
- Calculer la somme de deux en additionnant le premier nombre au deuxième
nombre - Afficher la somme obtenue
-
Solution.
Dans la première action on a besoin d‟ un nombre qu‟ on peut appeler Nbre1
Dans la deuxième action on a besoin d‟ un nombre qu‟ on peut appeler Nbre2
Dans la troisième action on a besoin de trois variables le Nbre1, le Nbre2 et la Som
Dans la quatrième action on a besoin de la variable Som Ainsi, on aura :
- Lire Nbre1
- Lire Nbre2
- Calculer Som égal Nbre1 plus Nbre2
- Afficher la Som
b. Type de la variable
b. 1. Type de la variable en algorithmique
Le type permet de préciser quelle sorte de valeur, la variable peut contenir.
Ceci permet au processeur de réserver dans la mémoire de la machine un espace suffisant
pour contenir cette valeur.
15
Cours d’Algorithmique I
1. Type numérique
Pour ce type, nous avons pour les entiers :
OCTET (byte) : ce type prend les entiers qui peuvent être codés sur un
octet soit 8 bits.
28 = 256 de 0 à 255
ENTIER SIMPLE : ce type prend les entiers qui peuvent être codés sur
2 octets soit 16 bits
216 = 65536 de 0 à 65535.
ENTIER LONG : ce type prend des entiers qui peuvent être codés sur 4
octets soit 32 bits.
232 = 4.294.967.296 de 0 à 4.294.967.295.
NB : Lorsque nous avons des valeurs positives et négatives, le premier bit de chaque
type sera consacré au signe (1 pour les valeurs positives et 0 pour les valeurs
négatives).
Pour ce type, nous avons :
PLAGE
TYPE NUMERIQUE
0 à 255 Octet non signé
16
Cours d’Algorithmique I
2. Types alphanumériques
Ces types nous permettent de stocker ou désigner les valeurs qui sont des
lettres ou des caractères, des signes de ponctuations, l‟ espace ou même de chiffres.
Nous avons :
CARACTERE : qui ne contient qu‟ un seul caractère,
CHAINE ( ) : peut contenir plusieurs caractères. Le nombre des caractères
est à préciser dans les parenthèses.
NB
1.
Toutes les valeurs de type caractère ou chaîne seront représentées toujours
dans les guillemets,
Ex : ‟ ‟ SALEM‟ ‟ , ‟ ‟ Je suis informaticien‟ ‟ , „„1200‟ ‟
Si dans un algorithme un nom est entouré des guillemets, il est considéré
comme une valeur dans le cas contraire, il est considéré comme une variable
3. Type booléen
Ce type ne manipule que des variables qui ne peuvent prendre que 2 valeurs
logiques du genre vrai ou faux, oui ou non.
Ces notions abstraites de vrai ou faux peuvent être représentées par tout ce
qu‟ on veut : true et false, 0 et 1, oui et non, masculin et féminin,…
Une variable déclarée de ce type occupe un seul bit en mémoire.
4. Type Date
Ce type est utilisé pour des valeurs du type date telles que la date du jour,
une date d‟ entrée de la marchandise.
17
Cours d’Algorithmique I
18
Cours d’Algorithmique I
Exemple 1
NB
Exemple :
2. Lorsque nous avons plus d‟ une variable qui ont le même type à déclarer
dans un algorithme, nous pouvons les écrire sur une même ligne en les
séparant par des virgules. Il en est de même pour le programme PASCAL.
19
Cours d’Algorithmique I
Si la déclaration est considérée comme une réservation, ceci veut dire qu‟ une
fois la variable déclarée, il ne reste qu‟ à l‟ utiliser c'est-à-dire lui ATTRIBUER une valeur
ou lui AFFECTER une valeur.
L’affectation est une opération qui consiste à attribuer à une variable une
valeur.
Syntaxe
Exemple:
20
Cours d’Algorithmique I
NB
Exemple :
Contre exemple :
En ALGORITHMIQUE En TURBO PASCAL 7.0
Variable somme, Som : Réel Var somme, Som : Real ;
Prix, prixUnit : Entier Prix, prixUnit : Integer ;
Nom, NomPropre : Chaine(7) Nom, NomPropre : String[7] ;
Prix 150,38 Prix := 150,38 ;
Nom « Tantale Joviale » Nom := „Tantale Joviale‟ ;
21
Cours d’Algorithmique I
en PASCAL, les guillemets sont remplacés par les cotes („ „) les apostrophes.
Exemple :
3. La valeur à affecter dans une variable peut être le résultat d‟ une expression.
Dans ce cas, l‟ expression se trouvant à droite du signe d‟ affectation devra
d’abord être évaluée avant de faire l‟ affectation.
Exemple 1:
En ALGORITHMIQUE En TURBO PASCAL 7.0
Variable A, B, C : Reel Var A, B, C : Single;
A 3,56 A := 3,56;
B 8 B := 8;
C A*B C := A * B;
Exemple 2:
Pour tout emplacement mémoire tel que sa valeur ne doit pas changée tout au
22
Cours d’Algorithmique I
Exemple :
Exemple :
23
Cours d’Algorithmique I
A « 12 » A :=‟ 12‟ ;
B A B := A ;
C 89 C := 89 ;
D 12+3.14*C D := 12+3.14*C ;
La valeur trouvée à la résolution d‟ une expression doit être du même type que
la variable se trouvant à gauche du signe d‟ affectation.
1. Opérateurs numériques
Ce sont les opérateurs appliqués sur les valeurs numériques. Nous avons :
+ + Pour l‟ addition
- - Pour la soustraction
* * Pour la multiplication
/ / Pour la division
Mod Mod le modulo ou le reste de la division modulaire
^ou ** Pour la puissance
DIV ou \ DIV Pour la division entière
NB
24
Cours d’Algorithmique I
2. Opérateur alphanumérique
Cet opérateur agit sur les valeurs du type chaîne de caractère ou caractère,
et permet de faire concaténation des chaînes. Nous avons :
3. Opérateurs de comparaison
Ces opérateurs s‟ appliquent sur les valeurs du type numérique, sur les valeurs
du type alphanumérique et sur les valeurs du type date.
4. Opérateurs logiques
Ces opérateurs agissent sur des valeurs booléennes (Vrai, Faux), (True,
False), (1, 0). Ces opérateurs sont :
OU OR Ou logique
ET AND Et logique
25
Cours d’Algorithmique I
1) Opérateur OU (OR)
2) Opérateur ET (AND)
ET est Vrai si toutes les valeurs de l‟ expression sont vraies, et ET est faux
si au moins l’une des valeurs de l‟ expression est fausse. La table de vérité de l‟ opérateur
ET se présente de la manière suivante :
A (A ET B) (A AND B) B
VRAI VRAI VRAI
NON est Vrai si la valeur booléenne est fausse, et NON est Faux si la
valeur booléenne est vraie. La table de vérité de l‟ opérateur NON se présente de la
manière suivante :
NON A A
VRAI FAUX
FAUX VRAI
4) Opérateur (XOR)
XOR est Vrai si toutes les valeurs de l‟ expression sont vraies, et XOR est
26
Cours d’Algorithmique I
faux si toutes les valeurs de l‟ expression sont fausses. La table de vérité de l‟ opérateur
XOR se présente de la manière suivante :
A (A XOR B) B
D‟ une manière générale, dans une expression, les opérateurs suivent la priorité suivante
:
=, <, >, <=, >=, <> =, <, >, <=, >=, <>
III.1. Introduction
Dans un ordinateur, nous trouvons plusieurs sortes d‟ unités parmi lesquelles
nous pouvons citer :
Les unités de sortie,
Les unités d‟ entrée, et
L‟ unité de traitement.
Flux des informations
en entrée
Unité
d’entrée
HOMME Unité de
traitement
Unité de
sortie
27
Cours d’Algorithmique I
La valeur qui sera lue au clavier sera affectée directement à la variable qui est placée
à côte au mot LIRE.
On peut lire plusieurs valeurs avec une seule instruction de lecture. De ce fait, les
différentes variables seront séparées les unes des autres par des virgules. Syntaxe
:
28
Cours d’Algorithmique I
LIRE < Variable1>, < Variable2>,…, < VariableN > Read(Variable1, Variable2,…,VariableN)
ReadLn(Variable1, Variable2,…,VariableN)
Exemple 1 :
Exemple2 :
valeurs à l‟ utilisateur au travers une unité de sortie. L‟ unité de sortie par défaut est le
Syntaxe :
En ALGORITHMIQUE En TURBO PASCAL 7.0
ECRIRE < Valeur> Write(Valeur);
WriteLn(Valeur);
Rmqs
29
Cours d’Algorithmique I
Lorsqu‟ on affiche une valeur qui était contenue dans une variable, la
variable ne perd pas cette valeur.
Comme pour la lecture, on peut écrire plusieurs valeurs avec une seule
instruction ECRIRE, dans ce cas, les différentes valeurs seront
séparées par des virgules.
La syntaxe serait :
N.B
La commande ReadLn permet à l‟ utilisateur de lire une valeur qui sera utilisée par le
programme comme la commande Read. ReadLn provoque le retour à la ligne, c'est-à-dire
le curseur passe à la ligne suivante. Lorsqu‟ aucune variable n‟ est affectée à la commande,
il suffit de presser la touche ENTREE ou ENTER.
30
Cours d’Algorithmique I
Tout pseudo- code ou tout algorithme a trois parties qui sont aussi en
séquence. Il en ai de même d‟ un programme PASCAL. Nous avons :
31
Cours d’Algorithmique I
en un mot et, il a les mêmes caractéristiques que celui d‟ une variable. Il sera toujours
précédé du mot « ALGORITHME » pour l‟ écriture en langage algorithmique ou «
PROGRAM » en langage PASCAL.
Syntaxes :
Exemples
En ALGORITHMIQUE En TURBO PASCAL 7.0
ALGORITHME Calcul_du_salaire PROGRAM Calcul_du_salaire ;
ALGORITHMEb. L GestionStock PROGRAM GestionStock ;
ALGORITHME triangledepascal10 PROGRAM triangledepascal10 ;
a
partie déclarative
Cette partie contiendra la déclaration de toutes les variables que nous avons à utiliser
dans l‟ algorithme (confert point II.3 syntaxe de la déclaration d‟ une variable page 17).
c. Le corps de l’algorithme
NOM DE L’ALGORITHME
DECLARATION
INITIALISATION
EXECUTION
32
Cours d’Algorithmique I
Entête
Partie déclarative
Début
Corps du programme
Fin
Remarque : L‟ indentation c‟ est un décalage des instructions par rapport à la marge
gauche. Elle permet la lisibilité de l‟ algorithme ou du programme.
Exemple : soit à écrire un algorithme qui lit le nombre des étudiants et le nombre des
étudiantes de G1 INFO A et qui affiche la somme de ces 2 nombres avec un
message les étudiants de G1 INFO sont au nombre de X »
Algorithme NOMBREETUDIANT
Variable nbreetM, nbreetF, som : entier
Début
Som 0
Ecrire « saisir le nombre des étudiants et des étudiantes »
En ALGORITHMIQUE Lire nbreetM, nbreetF
Som som + nbreetM + nbreetF
Ecrire « les étudiants de G1 INFO sont au nombre de », Som Fin
PROGRAM NOMBREETUDIANT ;
Var nbreetM, nbreetF, som : Integer;
BEGIN
Som :=0 ;
En TURBO PASCAL 7.0 WriteLn („saisir le nombre des étudiants et des étudiantes‟ ) ;
ReadLn (nbreetM, nbreetF);
Som := som + nbreetM + nbreetF;
WriteLn („les étudiants de G1 INFO sont au nombre de‟ , Som) ;
End.
33
Cours d’Algorithmique I
Cette structure permet d‟ effectuer des choix selon des critères ou (des
conditions) que le programmeur a fixés. Ces instructions se comportent comme un
aiguillage à deux ou plusieurs branches. Selon qu‟ un critère est satisfait ou non,
l‟ exécution du programme se poursuivra dans une branche ou dans une autre.
2. nous ayons plusieurs instructions à exécuter lorsque la condition est vraie (ou
fausse). De ce fait en TURBO PASCAL, nous devons placer le mot BEGIN avant
la première instruction et le mot END après la dernière instruction. Nous aurons
:
34
Cours d’Algorithmique I
if (condition) Then
Si (condition) alors Begin
InstructionVraie1 Instructionvraie1 ;
InstructionVraie2 InstructionVraie2 ;
InstructionVraieN InstructionVraieN ;
End
Sinon Else
InstructionFausse1 Begin instructionFausse1
InstructionFausse2 ; InstructionFausse2
InstructionFaussen ;
Finsi
InstructionFaussen ;
End;
3. Il peut arriver que nous ayons une instruction de SI (IF) possédant ALORS
(THEN) sans avoir le SINON (ELSE).
35
Cours d’Algorithmique I
5. nous ayons des structures alternatives imbriquées (les unes à l‟ intérieur des
autres).
36
Cours d’Algorithmique I
Exemple 2 : Soit une loi de délibération : « un étudiant réussi si il a plus ou moins 50% et
moins de 3 échecs. »
37
Cours d’Algorithmique I
d‟ instructions) tant que la condition à l‟ entrée de la boucle est vérifiée ; dès que celle-ci
Remarques
i 1 i :=1 ;
Tantque (i <= 10) Faire WHILE i<=10 DO
Somme Somme +1 Begin
i i+1 Somme := Somme + 1 ;
Fintantque i := i + 1 ;
Ecrire Somme end;
Write(Somme);
38
Cours d’Algorithmique I
Exemple :
• La variable utilisée dans la condition doit être utilisée avant l‟ entrée dans la
boucle (initialisée), et doit être utilisée dans au moins une instruction de la
boucle.
Fintantque
Variable i incrémentée
Ecrire Somme
Exemple :
39
Cours d’Algorithmique I
La boucle POUR est une structure itérative par excellence. Elle est
utilisée lorsque nous connaissons le nombre de fois que nous devons répéter la
séquence d‟ instructions se trouvant à l‟ intérieur de la boucle.
40
Cours d’Algorithmique I
En pascal, lorsqu‟ il n‟ a qu‟ une seule instruction à exécuter dans la boucle FOR, on écrit :
FOR<VariableCompteur> :=<ValeurInitiale> TO/DOWNTO <ValeurFinale> DO
Instruction;
<VariableCompteur> : c‟ est la variable qui prendra les différentes valeurs
comprises entre la valeur initiale et la valeur finale.
<ValeurFinale> :c‟ est la dernière valeur que la variable compteur doit avoir pour
pouvoir exécuter les instructions se trouvant dans la
boucle.
41
Cours d’Algorithmique I
ValeurFinale – ValeurInitiale + 1
Remarques
• La présence de la variable compteur est indispensable dans la boucle POUR.
• Nous pouvons utiliser plusieurs boucles POUR imbriquées. Dans ce cas, les
différentes boucles doivent avoir chacune une variable compteur dont le nom
est différent des autres.
Exemple :
Finpour j
Finpour i
REPETER REPEAT
Instruction1 Instruction1 ;
… …
InstructionN InstructionN ;
JUSQUA <Condition> UNTIL <Condition> ;
La condition est évaluée après l‟ exécution du corps de la boucle : si sa
42
Cours d’Algorithmique I
valeur est FAUX, le corps de la boucle est exécuté à nouveau puis la condition est
réévaluée, et si elle a la valeur VRAI, on exécute l‟ instruction qui suit JUSQUA.
Exemple : Ecrire un algorithme qui calcule la somme de 10 nombres entiers lus au clavier
avec la boucle TANTQUE et avec la boucle REPETER
Boucle BEGIN
DEBUT i
TANTQUE 1 i := 1 ;
Som 0 Som :=0 ;
TANTQUE (i <= 10) FAIRE Lire Nbre While (i <=10) do
Som Som + Nbre
Begin
i i+1
FINTANTQUE Read(Nbre) ;
Ecrire Som Som :=Som + Nbre ;
FIN i :=i+1 ;
end ;
Writeln (Som) ;
End.
PROGRAM SOMMEDIX ;
ALGORITHME SOMMEDIX VAR Som, Nbre : Integer ;
VARIABLE Som, Nbre : Entier i : i : Byte ;
Octet
43
Cours d’Algorithmique I
• Clrscr ; cette instruction permet d‟ effacer tout l‟ écran et placer le curseur en haut
à gauche de l‟ écran.
• DelLine ; cette instruction efface la ligne courante, c'est-à-dire celle qui contient le
curseur.
• InsLine ; cette instruction insère une ligne vide à la position courante du curseur.
• TextBackground(X) ; cette instruction fait le choix d‟ une couleur de fond pour le
texte qui sera tapé par la suite. X est le numéro de la couleur (de 0 à 15).
• TextColor(X) ; cette instruction fait le choix d‟ une couleur pour le texte qui sera
affiché par la suite.
• TextColor(x + blink) ; choix d‟ une couleur pour le texte qui sera affiché en mode
clignotant.
44
Cours d’Algorithmique I
• FloodFill (x, y, border) ; cette instruction rempli une surface fermée identifiée par
sa couleur de bordure. La couleur de remplissage sera celle choisie par un SetColor ou
un SetFillStyle.
• Bar(x1, y1, x2, y2) ; construit un rectangle plein aux coordonnées indiquées. L‟ axe
des x étant croissant de gauche à droite et celui des y croissant de haut en bas.
• Line(x1, y1, x2, y2) ; construit une ligne débutant au point de coordonnées (x1, y1)
et se terminant au point de coordonnées (x2, y2).
Un tableau est un ensemble de données qui sont toutes de même type, les
différentes données possèdent un identificateur unique appelé nom du tableau, et se
différencient les unes des autres, dans ce tableau, par leur numéro d’indice.
Le nom d‟ un tableau a les mêmes propriétés que le nom d‟ une variable (Voir
page14 Nom de la variable).
Les tableaux les plus fréquemment utilisés sont à une dimension (vecteurs,…)
ou à deux dimensions (matrices, tableaux à double entrée) mais il est tout à fait possible
de définir des tableaux à trois, quatre, cinq dimensions voire plus.
45
Cours d’Algorithmique I
cases repérées par leurs indices. Par conséquent, dans un tableau on ne peut jamais
trouver deux cases qui portent le même indice.
1 2 3 4 … n-2 n-1 n
1
2
….
m-2 m-
1
Le contenu d‟ une case sera repéré en utilisant le nom du tableau, suivi des
coordonnées de la case dans le tableau.
Exemple :
TAB( i ) est un élément se trouvant à l‟ indice i du tableau se nommant TAB
TABLEAU( i , j ) représente le contenu de la case située à la ligne i et à la
colonne j du tableau nommé TABLEAU
V.2. Déclaration des tableaux
Comme pour les variables simples, avant d‟ utiliser un tableau il est nécessaire
de le déclarer. Quatre éléments fondamentaux définissent un tableau :
Son nom qui sera un identificateur choisi en respectant les règles
usuelles de dénomination des variables,
Le nombre de ses dimensions,
Sa taille, autrement dit les valeurs maximales de ses indices, Le type
de données qu‟ il contient.
46
Cours d’Algorithmique I
Exemple :
47
Cours d’Algorithmique I
La déclaration d‟ un tableau à
trois dimensions dont la
première dimension a une
longueur de 985, la deuxième
dimension a une longueur de
32, et la troisième dimension à
COTE(1 : 985, 1 : 32, 1 : 80) : Reel COTE : Array[1..985,1 :32,1 :80] of Real ;
une longueur de 80. Le tableau
se nomme COTE.
Dans un algorithme, tout élément d‟ un tableau peut être utilisé comme une
simple variable. Par conséquent, les différentes opérations telles que : l‟ affectation, la
lecture, l‟ écriture, l‟ utilisation dans une expression à l‟ aide d‟ opérateurs).
Syntaxe :
Exemple :
48
Cours d’Algorithmique I
Une application, surtout si elle est longue, a toutes les chances de devoir
procéder aux mêmes traitements, ou à des traitements similaires, à plusieurs endroits de
son déroulement. Par exemple, la saisie d‟ une réponse par oui ou par non, peuvent être
répétés dix fois à des moments différents de la même application, pour dix questions
différentes.
La solution serait d‟ opter pour une autre stratégie, qui consiste à séparer
ce traitement du corps du programme et à regrouper les instructions qui le composent en
un module séparé. Il ne restera alors plus qu'à appeler ce groupe d'instructions, qui
n'existe donc désormais qu‟ une seule fois dans le programme à chaque fois qu‟ on en a
besoin.
Ceci a pour conséquence :
1. d‟ apporter la lisibilité,
49
Cours d’Algorithmique I
• Lorsqu‟ on appelle la fonction, on doit lui préciser quel message elle doit
afficher avant de lire la réponse,
• La fonction doit être « prévenue » qu‟ elle recevra un message, et être capable
de le récupérer pour l‟ afficher.
VI.3. Sous-procédures
50
Cours d’Algorithmique I
Les fonctions sont des cas particuliers des sous-procédures. Les sous-
procédures qui ne renvoient aucune valeur, comme ceux qui renvoient plusieurs valeurs, il
faut donc avoir recours non à la forme particulière et simplifiée (la fonction), mais à la
forme générale (la sous-procédure).
Parlons donc de ce qui est commun aux sous-procédures et aux fonctions,
mais aussi de ce qui les différencie. Voici comment se présente une sous-procédure :
• Une fonction se caractérise par les mots-clés Fonction et FinFonction, une
sousprocédure est identifiée par les mots-clés Procedure et FinProcedure.
• Lorsqu'une fonction est appelée, la valeur qu‟ elle retourne doit toujours être
affectée à une variable ou intégrée dans le calcul d'une expression.
• L'appel à une procédure, lui, est au contraire toujours une instruction autonome.
51
Cours d’Algorithmique I
EXERCICES
4. A partir du rayon d‟ un cercle lu, écrire une suite d‟ instructions qui nous permet
de calculer et d‟ afficher la surface et la circonférence de ce cercle.
5. Même question que le précédent (si le rayon est exprimé en mètre, calculer cette
surface et cette circonférence en décimètre, et en centimètre).
7. Ecrire l‟ algorithme du traitement qui permet de saisir 100 nombres entiers dans
un tableau à une dimension ; puis qui affiche la somme et la moyenne de ces 10
nombres.
8. Ecrire un algorithme du traitement qui permet de saisir 100 nombres entiers dans
un tableau à une dimension, puis qui recherche et affiche la valeur minimale entrée
dans ce tableau. L‟ affichage affichera également l‟ indice auquel se trouve ce
minimum.
10. Etant donnés l‟ âge du père et celui de son fils, écrire un programme qui calcule et
affiche après combien de temps l‟ âge du père sera le double de celui de son fils.
52
Cours d’Algorithmique I
11. Etant donné la diagonale d‟ un carré, écrire un programme qui calcule et affiche la
surface et le périmètre de ce carré.
12. Etant donné un nombre entier positif, écrire un programme qui calcule et affiche
la racine carrée de son dernier chiffre.
13. Etant donné un nombre entier positif, écrire un programme qui calcule et affiche
la racine carrée de son premier chiffre.
14. Etant donnée un nombre entier positif, écrire un algorithme qui vérifie si ce
nombre est du rang des unités, des dizaines, des centaines ou autre.
19. Etant donné la hauteur d‟ un triangle équilatéral, écrire un programme qui calcule
et affiche la base et la surface.
20. Etant donné les côtes obtenues par un élève aux deux premiers contrôles, on
demande d‟ écrire un programme qui affiche à l‟ écran le message
a. « rattrapage » si les deux côtes sont inférieures à 10 ;
b. «attention» si une seule des deux côtes est < à 10 ;
c. « ok » dans les autres cas.
21. Etant donné un nombre, écrire un programme qui affiche dans l'ordre inverse les
chiffres qui composent ce nombre.
22. Etant donné un nombre, écrire un programme qui calcule et affiche de combien de
chiffres ce nombre est composé.
53
Cours d’Algorithmique I
23. Etant donné une suite de n nombres, écrire un algorithme qui vérifie si cette suite
est une progression géométrique ou pas.
25. Ecrire un programme qui, étant donné un montant d‟ un capital placé dans un compte
d‟ épargne et le taux d‟ intérêt (en %) pratiqué par la caisse où ce capital est placé,
on demande de concevoir un programme qui calcule et affiche l‟ intérêt obtenu et
la valeur acquise par ce capital au bout d‟ un an.
28. Etant donné le nombre d‟ élève, soit n, d‟ une classe et la suite des cotes obtenues
en anglais par les n élèves, on demande de concevoir un programme qui donne pour
résultats le pourcentage de cotes inférieures à 10 obtenus par ces élèves.
29. Etant donné une suite de n chiffres, on demande d‟ écrire un programme qui soit
affiche le message « pas de zéro » si la suite ne contient aucun zéro, soit s‟ il s‟ y
trouve au moins un zéro, indique le nombre de zéros que contient cette suite et la
position du dernier zéro rencontré.
30. Un client achète 5 articles différents dans un magasin, les quantités de chaque
article ainsi que les prix étant données par la caissière. On demande d‟ écrire un
programme qui calcule et affiche les montants correspondant à chaque article ainsi
que le montant total à payer.
31. Etant donnée le salaire horaire et le nombre d‟ heures prestées chaque jour de la
semaine (5 jours) par un ouvrier, on demande de concevoir un programme qui
détermine le nombre d‟ heures de prestations normales, le nombre d‟ heures
supplémentaires et le salaire brut de la semaine de cet ouvrier, sachant que les
heures supplémentaires (au-delà de 8 heures par jour) sont payés 50 % plus cher
que les heures de prestations normale.
54
Cours d’Algorithmique I
32. Etant donnée une suite de nombre (différents de 0) dont la fin est signalée par
zéro, on demande de concevoir un programme qui détermine et affiche de combien
de nombres la suite est constituée (non compris le zéro final)
33. Lors d‟ une enquête d‟ opinion préalable aux élections législatives, on a demandé à
un échantillon d‟ électeurs s‟ ils pensaient voter pour le candidat Dubois. Les seules
réponses possibles des électeurs interrogées étaient :
d. Ne sait par encore pour qui voter : ce type de réponse est codé 0 ;
e. Votera sûrement pour le candidat Dubois : ce type de réponse est codé 1 ;
f. Votera sûrement pour un autre candidat : ce type de réponse est codé 2.
Etant donné les réponses codées des électeurs interrogés, on demande d‟ écrire
un programme qui calcule et affiche les pourcentages respectifs d‟ électeurs
hésitants, d‟ électeurs acquis aux candidats Dubois, d‟ électeurs acquis à un autre
candidat.
On suppose que l‟ utilisateur terminera le dépouillement de cette enquête en
communiquant un code négatif.
34. Etant donné une suite de 10 nombres, on demande d‟ écrire un algorithme capable
:
- D‟ inscrire cette suite dans un tableau ;
- D‟ afficher chaque élément du tableau ainsi constitué en le faisant précéder de
la valeur de son indice.
35. On considère deux matrices 3X3 notée V et W. les coefficients de chacune de ces
deux matrices seront notés V( i , j ) et W( i , j ). Ecrire un algorithme qui permet
de calculer puis afficher la matrice Z= V+W.
36. Même exercice cette fois ci en calculant le produit des deux matrices.
37. Soit un tableau K ayant 68 éléments. Transférer les éléments positifs de K dans
un tableau KPOSITIF et les éléments négatifs de K dans un tableau KNEGATIF
39. Soit un tableau TAB possédant 25 éléments. Ranger dans le même tableau les
éléments dans l‟ ordre inverse.(le premier élément doit être le dernier).
55
Cours d’Algorithmique I
40. Ecrire un algorithme qui transfère les éléments d‟ un tableau T1 dans un tableau
T2 selon le principe suivant : Les éléments de rang impair sont rangés dans T2 en
ordre inverse en commençant par la fin de T2 et les éléments de rang pair de T1
sont rangés dans le même ordre.
42. Soit un tableau à deux dimensions contenant des nombres quelconques. Remplacer
les valeurs initiales des éléments d‟ un rectangle inclus dans ce tableau par des
zéros. Le rectangle est déterminé par sa longueur, sa hauteur et les coordonnées
du coin supérieur gauche.
43. Etant donné un tableau de n éléments et un nombre X. Ecrire un algorithme capable
:
• D‟ afficher le message « l‟ élément X n‟ est pas dans le tableau » si X n‟ est
pas parmi les éléments du tableau ;
• D‟ afficher la position de l‟ élément X dans le cas où il est parmi les éléments
du tableau.
45. Ecrire un programme qui permet d‟ ajouter un élément dans un tableau de taille
20.
47. Ecrire un programme qui renvoie le plus grand élément des éléments d‟ un tableau.
48. Ecrire un programme qui calcule et affiche l‟ écart entre le plus grand élément
d‟ un tableau et le plus petit.
49. Etant donné une suite de n nombres, écrire un algorithme qui vérifie si cette suite
est une progression arithmétique ou pas.
56
Cours d’Algorithmique I
57
Cours d’Algorithmique I
58