Académique Documents
Professionnel Documents
Culture Documents
Objectif:
Apprendre les concepts de base de l'algorithmique et de la
programmation
Plan:
ALGO/ SABOUNDJI 1
Etapes de ralisation dun programme
Enonc du problme
Spcification
Cahier des charges
Analyse
Algorithme
Traduction en langage
Programme source
Compilation
Programme excutable
Tests et modifications
Version finale et rsultats
ALGO/ SABOUNDJI 3
Reprsentation dun algorithme
ALGO/ SABOUNDJI 4
Notions et instructions de
base
ALGO/ SABOUNDJI 5
Notion de variable
Dans les langages de programmation une variable sert
stocker la valeur dune donne
ALGO/ SABOUNDJI 6
Choix des identificateurs (1)
Le choix des noms de variables est soumis quelques
rgles qui varient selon le langage, mais en gnral:
Un nom doit commencer par une lettre alphabtique
exemple valide: A1 exemple invalide: 1A
doit tre constitu uniquement de lettres, de chiffres et du
soulignement _ (Eviter les caractres de ponctuation et les
espaces) valides: SMIP2007, SMP_2007 invalides:
SMP 2005,SMI-2007,SMP;2007
doit tre diffrent des mots rservs du langage (par exemple
en Java:
Java int, real, begin ,end , else ,
ALGO/ SABOUNDJI 7
Choix des identificateurs (2)
Conseil: pour la lisibilit du code choisir des noms
significatifs qui dcrivent les donnes
manipules
exemples: TotalVentes2015, Prix_TTC, Prix_HT
ALGO/ SABOUNDJI 8
Types des variables
ALGO/ SABOUNDJI 9
Dclaration des variables
Rappel: toute variable utilise dans un programme doit
avoir fait lobjet dune dclaration pralable
En pseudo-code, on va adopter la forme suivante pour la
dclaration de variables
Variables liste d'identificateurs : type
Exemple:
Variables i, j,k : entier
x, y : rel
OK: boolen
ch1, ch2 : chane de caractres
Remarque: pour le type numrique on va se limiter aux
entiers et rels sans considrer les sous types
ALGO/ SABOUNDJI 10
Linstruction daffectation
laffectation consiste attribuer une valeur une variable
(a consiste en fait remplir o modifier le contenu d'une zone mmoire)
Ex valides: i 1 j i k i+j
x 10.3 OK FAUX ch1 "SMI"
ch2 ch1 x 4 x j
ALGO/ SABOUNDJI 11
Quelques remarques
ALGO/ SABOUNDJI 12
Exercices simples sur l'affectation (1)
Variables A, B, C: Entier
Dbut
A3
B7
AB
B A+5
CA+B
CBA
Fin
ALGO/ SABOUNDJI 13
Exercices simples sur l'affectation (2)
Donnez les valeurs des variables A et B aprs excution des
instructions suivantes?
Variables A, B : Entier
Dbut
A1
B2
AB
BA
Fin
ALGO/ SABOUNDJI 14
Exercices simples sur l'affectation (3)
Ecrire un algorithme permettant dchanger
les valeurs de deux variables A et B
ALGO/ SABOUNDJI 15
Expressions et oprateurs
Une expression peut tre une valeur, une variable ou une
opration constitue de variables relies par des oprateurs
L'valuation de l'expression fournit une valeur unique qui est le
rsultat de l'opration
Les oprateurs dpendent du type de l'opration, ils peuvent
tre :
des oprateurs arithmtiques: +, -, *, /, % (modulo), ^ (puissance)
des oprateurs logiques: NON, OU, ET
des oprateurs relationnels: =, , <, >, <=, >=
des oprateurs sur les chanes: & (concatnation)
Une expression est value de gauche droite mais en tenant
compte de priorits
ALGO/ SABOUNDJI 16
Priorit des oprateurs
^ : (lvation la puissance)
* , / (multiplication, division)
% (modulo)
+ , - (addition, soustraction)
ALGO/ SABOUNDJI 17
Les instructions d'entres-sorties: lecture et
criture (1)
Les instructions de lecture et d'criture permettent la
machine de communiquer avec l'utilisateur
La lecture permet d'entrer des donns partir du clavier
ALGO/ SABOUNDJI 18
Les instructions d'entres-sorties: lecture et
criture (2)
L'criture permet d'afficher des rsultats l'cran (ou de
les crire dans un fichier)
ALGO/ SABOUNDJI 19
Exemple (lecture et
criture)
Ecrire un algorithme qui demande un nombre entier
l'utilisateur, puis qui calcule etaffiche le double de ce
nombre
Algorithme Calcul_double
variables A, B : entier
Dbut
crire("entrer le nombre ")
lire(A)
B 2*A
crire("le double de ", A, "est :", B)
Fin
ALGO/ SABOUNDJI 20
Exercice (lecture et criture)
Ecrire un algorithme qui vous demande de saisir votre nom
puis votre prnom et qui affiche ensuite votre nom complet
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chane de caractres
Dbut
crire("entrez votre nom")
lire(Nom)
crire("entrez votre prnom")
lire(Prenom)
Nom_Complet Nom & Prenom
crire("Votre nom complet est : ", Nom_Complet)
Fin
ALGO/ SABOUNDJI 21
Tests: instructions conditionnelles (1)
ALGO/ SABOUNDJI 22
Tests: instructions conditionnelles (2)
La partie Sinon n'est pas obligatoire, quand elle n'existe pas
et que la condition est fausse, aucun traitement n'est ralis
Si condition alors
instruction ou suite d'instructions1
Finsi
ALGO/ SABOUNDJI 23
Exemple (SiAlors
Sinon)
Algorithme AffichageValeurAbsolue (version1)
Variable x : rel
Dbut
Ecrire (" Entrez un rel: )
Lire (x)
Si (x < 0) alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin
ALGO/ SABOUNDJI 24
Exemple (SiAlors)
Algorithme AffichageValeurAbsolue (version2)
Variable x,y : rel
Dbut
Ecrire (" Entrez un rel: )
Lire (x)
y x
Si (x < 0) alors
y -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin
ALGO/ SABOUNDJI 25
Exercice (tests)
Ecrire un algorithme qui demande un nombre entier
l'utilisateur, puis qui teste etaffiche s'il est divisible par
3
Algorithme Divsible_par3
Variable n : entier
Dbut
Ecrire " Entrez un entier: "
Lire (n)
Si (n mod 3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin
ALGO/ SABOUNDJI 26
Conditions composes
Une condition compose est une condition forme de
plusieurs conditions simples relies par des oprateurs
logiques:
ET, OU, OU exclusif (XOR) et NON
Exemples :
x compris entre 2 et 6 : (x > 2) ET (x < 6)
ALGO/ SABOUNDJI 27
Tables de vrit
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX
C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
ALGO/ SABOUNDJI
Tests imbriqus
Les tests peuvent avoir un degr quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
ALGO/ SABOUNDJI 29
Tests imbriqus: exemple 1
Variable n : entier
Dbut
Ecrire ("entrez un nombre: ")
Lire (n)
Si (n < 0) alors
Ecrire ("Ce nombre est ngatif")
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
ALGO/ SABOUNDJI 30
Tests imbriqus: exemple 2
Variable n : entier
Dbut
Ecrire ("entrez un nombre: ")
Lire (n)
Si (n < 0) alors Ecrire ("Ce nombre est ngatif")
Finsi
Si (n = 0) alors Ecrire ("Ce nombre est nul")
Finsi
Si (n > 0) alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Remarque : dans la version 2 on fait trois tests systmatiquement
alors que dans la version 1, si le nombre est ngatif on ne fait
qu'un seul test
Conseil : utiliser les tests imbriqus pour limiter le nombre de tests
et placer d'abord les conditions les plus probables
ALGO/ SABOUNDJI 31
Tests imbriqus: exercice
Le prix de photocopies dans une reprographie varie selon le
nombre demand: 0,5 Da la copie pour un nombre de
copies infrieur 10, 0,4Da pour un nombre compris entre
10 et 20 et 0,3Da au-del.
ALGO/ SABOUNDJI 32
Tests imbriqus: corrig de l'exercice
ALGO/ SABOUNDJI 33
Instructions itratives: les boucles
Les boucles servent rpter l'excution d'un groupe
d'instructions un certain nombre de fois
ALGO/ SABOUNDJI 34
Les boucles Tant que
TantQue (condition)
instructions condition Vrai instructions
FinTantQue
Faux
ALGO/ SABOUNDJI 35
Les boucles Tant que : remarques
Le nombre d'itrations dans une boucle TantQue n'est pas
connu au moment d'entre dans la boucle. Il dpend de
l'volution de la valeur de condition
ALGO/ SABOUNDJI 36
Boucle Tant que : exemple1
Contrle de saisie d'une lettre majuscule jusqu ce que le
caractre entr soit valable
Variable C : caractre
Debut
Ecrire (" Entrez une lettre majuscule ")
Lire (C)
TantQue (C < 'A' ou C > 'Z')
Ecrire ("Saisie errone. Recommencez")
Lire (C)
FinTantQue
Ecrire ("Saisie valable")
Fin
ALGO/ SABOUNDJI 37
Boucle Tant que : exemple2
Un algorithme qui dtermine le premier nombre entier N tel
que la somme de 1 N dpasse strictement 100
version 1
Variables som, i : entier
Debut
i0
som 0
TantQue (som <=100)
i i+1
som som+i
FinTantQue
Ecrire (" La valeur cherche est N= ", i)
Fin
ALGO/ SABOUNDJI 38
Les boucles Pour
Pour compteur allant de initiale finale par pas valeur
du pas
instructions
FinPour
i initiale
Vrai
i n'a pas atteint finale instructions i i + pas
Faux
ALGO/ SABOUNDJI 39
Les boucles Pour
Remarque : le nombre d'itrations dans une boucle Pour est
connu avant le dbut de la boucle
Pas est un entier qui peut tre positif ou ngatif. Pas peut ne
pas tre mentionn, car par dfaut sa valeur est gal 1. Dans
ce cas, le nombre d'itrations est gal finale - initiale+ 1
ALGO/ SABOUNDJI 40
Droulement des boucles Pour
1) La valeur initiale est affecte la variable compteur
b) Si compteur est <= finale dans le cas d'un pas positif (ou si
compteur est >= finale pour un pas ngatif), instructions
seront excutes
ALGO/ SABOUNDJI 41
Boucle Pour : exemple1
Calcul de x la puissance n o x est un rel non nul et n
un entier positif ou nul
Variables x, puiss : rel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss 1
Pour i allant de 1 n
puiss puiss*x
FinPour
Ecrire (x, " la puissance ", n, " est gal ", puiss)
Fin
ALGO/ SABOUNDJI 42
Boucle Pour : exemple1
Calcul de x la puissance n o x est un rel non nul et n un
entier positif ou nul (version 2 avec un pas ngatif)
ngatif
Variables x, puiss : rel
n, i : entier
Debut
Ecrire (" Entrez respectivement les valeurs de x et n ")
Lire (x, n)
puiss 1
Pour i allant de n 1 par pas -1
puiss puiss*x
FinPour
Ecrire (x, " la puissance ", n, " est gal ", puiss)
Fin
ALGO/ SABOUNDJI 43
Boucle Pour : remarque
Il faut viter de modifier la valeur du compteur (et de
finale) l'intrieur de la boucle. En effet, une telle
action :
perturbe le nombre d'itrations prvu par la boucle Pour
rend difficile la lecture de l'algorithme
prsente le risque d'aboutir une boucle infinie
ALGO/ SABOUNDJI 44
Lien entre Pour et
TantQue
La boucle Pour est un cas particulier de Tant Que (cas o le nombre
d'itrations est connu et fix) . Tout ce qu'on peut crire avec Pour
peut tre remplac avec TantQue (la rciproque est fausse)
FinPour
peut tre remplac par : compteur initiale
(cas d'un pas positif) TantQue compteur <= finale
instructions
compteur compteur+pas
FinTantQue
ALGO/ SABOUNDJI 45
Lien entre Pour et TantQue: exemple
Calcul de x la puissance n o x est un rel non nul et n un entier
positif ou nul (version avec TantQue)
TantQue
Variables x, puiss : rel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss 1
i1
TantQue (i<=n)
puiss puiss*x
i i+1
FinTantQue
Ecrire (x, " la puissance ", n, " est gal ", puiss)
Fin
ALGO/ SABOUNDJI 46
Rpter
Les boucles
jusqu
Rpter
instructions instructions
Jusqu' condition
Faux
condition
Vrai
ALGO/ SABOUNDJI 47
Boucle Rpter jusqu : exemple
Un algorithme qui dtermine le premier nombre entier N tel que la
somme de 1 N dpasse strictement 100 (version avec rpter
jusqu')
ALGO/ SABOUNDJI 48
Choix d'un type de boucle
Si on peut dterminer le nombre d'itrations avant l'excution
de la boucle, il est plus naturel d'utiliser la boucle Pour
ALGO/ SABOUNDJI 49