Académique Documents
Professionnel Documents
Culture Documents
SMI-3
DÉPARTEMENT INFORMATIQUE
•Présence
• Prises de notes de cours
• Diffusion de l’information:
Responsable de la section
facebook : Dept Info FSA
Contact: lahmyed.redouan@gmail.com
• http://pise.info/algo/
• Rappel
• Tableaux (statiques et dynamiques)
• Pointeurs
• Fonctions et procédures
• La récursivité
• Fichiers, Enregistrements et Structures
• Notions sur des structures de données élementaires
• La complexité
• Preuves d’algorithmes
• Tas et tri par tas ,
• Compression de données
Définition 01
• Un algorithme représente une séquence
d’instructions (Actions), logiquement ordonnées, qui
permet de résoudre un problème donné.
Algorithme Problème à
Résoudre
d’actions (instructions) Résoudre
Corps (Instructions)
La partie des instructions (Entrées, Traitement et
Sorties)
Remarques
Les variables doivent être déclarées avant d’être utilisées
Remarques
Un identificateur est affecté à un seul objet. On peut jamais utiliser le même identificateur pour deux
variables ou constantes différentes.
Doit commencer par une lettre alphabétique
Doit être différent des mots réservés du langage (par exemple en C: int, float, long, else, for, if,
return, …)
La longueur du nom doit être inférieure à la taille maximale spécifiée par le langage utilisé
Réponse
• 12x : n’est valide, puisqu’il commence par un caractère numérique.
Doit être : x12
• Prix Unitaire : n’est pas valide, puisqu’il contient un espace. Doit
être : PrixUnitaire ou Prix_Unitaire.
• Hauteur-Mur : n’est pas valide, puisque il contient le signe « -
»(moins). Doit être : Hauteur_Mur.
• a1 : est valide
• a?b : n’est pas valide, puisqu’il contient le caractère « ? ». Doit être
: ab.
Donnée Type
“ Bienvenue au Maroc ”
-300
“8”
25.68
“@”
Vrai
“Faux”
Donnée Type
“ Bienvenue au Maroc ” Chaine de caractères
-300 Entier
25.68 Réel
Vrai Booléen
Variable: Une donnée dont le contenu peut être modifié par une action durant
l'éxécution d'un algorithme.
Constante: Une donnée fixe qui ne varie pas durant l'éxécution d'un algorithme.
Syntaxe:
Constante NOM_DE_LA_CONSTANTE = Valeur
Exemple:
Constante PI = 3.14
Constante Nbr_Mois = 12
Affectation
Entrées / Sorties (Lire-Ecrire)
Opérateurs arithmétiques (binaires & unaires)
Opérateurs Booléens
Opérateurs relationnels (de comparaison)
Opérateurs sur les chaînes
Exemple:
A ← "FSA" C ← 10
B←3 C ← 2<5
A ← "FSA" C ← 10
B←3 C ← 2<5
Variables
Instructions A B C D
B←2
C ← B +10
A←4
D←A
B← B * D
Variables
Instructions A B C D
B←2 2
C ← B +10 2 12
A←4 4 2 12
D←A 4 2 12 4
B← B * D 4 8 12 4
Syntaxe:
ECRIRE (Variable)
ECRIRE (" Message")
ECRIRE ("Message" ,
Variable)
De manière générale :
ECRIRE (V1 , V2 , … , Vn)
Exemples :
ECRIRE (A)
ECRIRE (" bonjour " )
ECRIRE (" le périmètre = " , P )
Pr. Redouan Lahmyed ALGORITHMIQUE 2 23
Instruction d’écriture
Nom ← "Ali"
Ecrire ("Nom")
Ecrire (Nom)
Ecrire ("Nom", Nom)
Nom ← "Ali"
Signifie affiché sur l'écran le message (Nom)
Ecrire ("Nom") Signifie affiché sur l'écran le contenu de la
Ecrire (Nom) variable Nom (Ali)
Ecrire ("Nom", Nom) Signifie affiché sur l'écran le message (Nom)
+ le contenu de la variable Nom (Nom Ali)
Syntaxe:
LIRE (Variable)
Exercice:
Nous voulons écrire un algorithme qui calcule l'aire d'un cercle
1- Donner les instructions de déclaration.
2- Donner les instructions qui demandent à l'utilisateur de taper les valeurs
des données.
3- Donner les instructions de traitement.
4- Donner les instructions qui permettent d'afficher le résultat.
Algorithme Aire_Cercle
Variables Rayon, Surface : Réel
Constante Pi = 3.14
Début
Ecrire ("Veuillez entrer la valeur du rayon de cercle :")
Lire (Rayon)
Surface ← Rayon * Rayon * Pi
Ecrire ("L'aire de cercle est : ", Surface)
Fin
Rappel:
o La division de deux entiers est un entier. 15/2=7
o Le modulo est le reste d’une division entière. 15%2=1
Exemple:
o X++ = X+1
o ++X = X+1
o Y-- = Y-1
o --Y = Y-1
Algorithme Unaire
Variables A : Entier
Début
A←1
Ecrire (++A)
Ecrire (A++)
Ecrire (A)
Fin
Algorithme Unaire
Variables A : Entier
Début
A←1 Resultat:
Ecrire (++A)
Ecrire (A++)
2
Ecrire (A)
Fin
Algorithme Unaire
Variables A : Entier
Début
A←1 Resultat:
Ecrire (++A) 2
Ecrire (A++)
Ecrire (A)
2
Fin
Algorithme Unaire
Variables A : Entier
Début
A←1 Resultat:
Ecrire (++A) 2
Ecrire (A++) 2
Ecrire (A)
Fin
3
C1 C2 C1 ET C2 C1 C2 C1 OU exclusif C2
VRAI VRAI VRAI VRAI VRAI FAUX
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX
Algorithme Comparaison
Variables A , B , C : Entier
Début
A←5
B←5
C ← 10
Ecrire (A = B)
Ecrire (A = C)
Fin
Algorithme Comparaison
Variables A , B , C : Entier
Début
A←5
B←5 Resultat:
C ← 10
Ecrire (A = B)
Ecrire (A = C)
1
Fin
Algorithme Comparaison
Variables A , B , C : Entier
Début
A←5
B←5 Resultat:
C ← 10
Ecrire (A = B) 1
Ecrire (A = C)
0
Fin
Exemples :
A ← " Faculté "
B ← " des sciences"
C←A&B
La variable C vaut : " Faculté des sciences"
Algorithme TXT
Variables txt1 , txt2 , txt3 , txt4 : chaine des caractères
Début
txt1 ← "FSA"
txt2 ← " SMI"
txt3 ← "FSA SMI3"
txt4 ← txt1 & txt2
Ecrire (" txt1 ")
Ecrire (txt4 != txt3)
Fin
Structures élémentaires:
Structures conditionnelles
Simple : Si ... Alors ... Fin Si
Alternative : Si ... Alors ... Sinon ... Fin Si
Alternative SI imbriquée (plus de deux choix)
à choix multiples : Selon
Structures répétitives
Les boucles Pour
Les boucles Tant que
Les boucles répéter... jusqu’à
Structures de contrôle
conditionnelles
Syntaxe:
SI (condition) Alors
Instructions
FINSI
Si la condition vaut Vrai alors le bloc d'instructions sera exécuté, si non il sera ignoré
Algorithme Factoriele
Variables F , n , i : Entier
Début
Ecrire (" Veuillez entrer le dividende")
Lire (A)
Ecrire (" Veuillez entrer le diviseur")
Lire (B)
Si B != 0 Alors
Ecrire (" Le résultat est : " , A / B)
Fin Si
Fin
Exercice:
Ecrire un algorithme qui permet de calculer le maximum de deux nombres
réels saisies par l'utilisateur.
Algorithme Maximum
Variables A , B , Max : Réel
Début
Ecrire (" Entrez les valeurs de A et de B.")
Lire (A , B)
Max ← A
Si Max < B Alors
Max ← B
Fin Si
Ecrire (" la valeur maximale est : " , Max)
Fin
Syntaxe:
Non Condition Oui
SI (Condition) ALORS
bloc 1 d'instructions vérifiée
SINON
bloc 2 d'instructions
Séquence 22
Instructions Instructions
Séquence1 1
FINSI
Début
Ecrire (" Veuillez entrer le dividende")
Lire (A)
Ecrire (" Veuillez entrer le diviseur")
Lire (B)
Si B != 0 Alors
Ecrire (" Le résultat est : " , A / B)
Sinon
Ecrire (" La division par 0 est impossible " )
Fin Si
Fin
Exercice:
Ecrire un algorithme qui permet de demander un nombre entier à
l'utilisateur, et l'informe ensuite si ce nombre est pair ou impair.
Début
Ecrire (" Programme qui détermine la nature d'un nombre : ")
Ecrire (" Veuillez entrer le nombre")
Lire (A)
Si (A % 2 =0) Alors
Ecrire (" Le nombre est pair ")
Sinon
Ecrire (" Le nombre est impair ")
Fin Si
Fin
Si (condition1) alors
instructionsA
Sinon
Si (condition2) alors
instructionsB
Sinon
instructionsC
Finsi
Finsi
Exemple:
Ecrire un algorithme qui permet de demander un nombre entier à l'utilisateur, et
l'informe ensuite si ce nombre est positif ou négatif.
Début
Ecrire (" Programme qui détermine la nature d'un nombre : ")
Ecrire (" Veuillez entrer le nombre")
Lire (A)
Si A > 0 Alors
Ecrire (" Le nombre est positif ")
Sinon
Si A < 0 Alors
Ecrire (" Le nombre est negatif ")
Sinon
Ecrire (" Le nombre est nul ")
Fin Si
Fin Si
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 54
Structure conditionnelle - Structure alternative
imbriquée (multiple choix)
Exercice:
Ecrire un algorithme qui permet de demander un nombre entier entre 0 et 2 à
l'utilisateur, et affiche leur nom.
Syntaxe:
variable
Selon (variable)
Cas val_1 : inst_1
Cas val_2 : inst_2 val_1 val_2 val_n Sinon
... inst_1 inst_2 .... inst_n inst_d
Cas val_n : inst_n
Sinon : inst_d
FinSelon
Algorithme Nom_chiffre
Variables n : Entier
Début
Ecrire ("Donnez votre chiffre entre 0 et 2")
Lire (n)
Selon (n)
Fin Selon
Fin
Pr. Redouan Lahmyed ALGORITHMIQUE 2 58
Structures élémentaires
instructions
Cpt← Cpt+Pas
Algorithme Table_Multiplication
Variables N , i : Entier
Début
Ecrire (" Saisir un nombre entier")
Lire (N)
Pour i =1 à 10 Pas de 1
FinPour
Fin
Faux
Tant que (Condition) Condition
Bloc d’instructions
Vrai
FinTantque
instructions
La condition est évaluée avant chaque itération;
Si la condition est vraie, on exécute le bloc
d’instructions puis, on retourne pour re-tester la condition.
Si elle est vraie, on ré-exécute le bloc d’instructions et ainsi de suite;
Si la condition est fausse, on sort de la boucle sans exécuter le bloc d’instructions.
Algorithme Somme
Variables Somme , i : Entier
Début
i←0
S←0
Tant que ( i <= 100 )
Somme ← Somme + i
i←i+1
FinTantque
Fin
Algorithme Somme_Clavier
Variables S , Val : Entier
Début
S←0
Répéter
Lire(Val)
S ← S + Val
Jusqu’à (Val != 0)
Fin
Les tableaux
Tableaux
Exemple:
Exemple:
Affectation de la note 14 à l'étudiant num 1 :
Exemple:
Affectation de la note 14 à l'étudiant num 1 : N [ 0 ] ← 14
Exemple:
Utilisation de la lecture pour saisir la note de
l'étudiant num 2
Exemple:
Utilisation de la lecture pour saisir la note de Lire (N [ 1 ])
l'étudiant num 2
Exemple:
Utilisation de la lecture pour saisir la note du
dernier étudiant :
Exemple:
Utilisation de la lecture pour saisir la note du Lire (N [ 499 ])
dernier étudiant :
Exemple:
Affichage de la note du dernier étudiant de la liste :
Exemple:
Affichage de la note du dernier étudiant de la liste : Ecrire (N [ 499 ])
T [0] ← 8
T [1] ← T [0] - 3
T [2] ← T [1] * T [0]
T [3] ← 20
Tableau T [ 5 ] : entier
Tableau T [ 5 ] : entier
T [0] ← 8
T [1] ← T [0] - 3
T [3] ← 20
T [0] ← 8
T [1] ← T [0] - 3
T [3] ← 20
T [0] ← 8
T [1] ← T [0] - 3
T [3] ← 20
T [0] ← 8
T [1] ← T [0] - 3
T [3] ← 20
T [0] ← 8
T [1] ← T [0] - 3
T [3] ← 20
T [0] ← 8
T [1] ← T [0] - 3
T [3] ← 20
Exercice:
Début
Pour i = 0 à 317 Pas de 1
Ecrire (" Donner la note de l'étudiant num “, i+1 , " : ")
Lire (N [ i ])
FinPour
S <- 0
Pour i = 0 à 317 Pas de 1
S <- S + N [ i ]
FinPour
M <- S / 318
Ecrire (" La moyenne est : “, M)
Fin
Exercice:
Tableaux
Lire ( T [ i ] [ j ] )
FinPour
FinPour
Ecrire ( T [ i ] [ j ] )
FinPour
FinPour
Exercice:
DÉPARTEMENT INFORMATIQUE