Présenté par : Ilhame Ezzyne
Une suite ordonnée et finie d'instructions précises permettant de résoudre un problème
Mathématicien perse du 9ème siècle
PGCD
Plus Grand Commun Diviseur
Algèbre
Résolution d'équations
Astronomie
Calculs astronomiques
Le mot "algorithme" vient de la latinisation de son nom : "Algoritmi"
Structure la pensée et améliore le raisonnement
Méthode systématique pour analyser et résoudre
Fondement de tous les langages de programmation
Présent dans tous les domaines technologiques
Améliore l'efficacité et les performances
Chaque instruction doit être claire et sans ambiguïté
Respect strict des règles et de la logique
Applicable à une classe de problèmes similaires
Optimisation du temps et des ressources
Produit toujours le résultat attendu
Comprendre les opérations et relations logiques
Décomposer un problème complexe en sous-problèmes
Identifier les éléments essentiels d'un problème
Développement progressif des compétences
Exercices et mise en application constante
Produit le résultat correct
Facilement compréhensible
Se termine en temps fini
Utilise les ressources optimalement
Résout une classe de problèmes
Comportement prévisible
Fournit toujours la bonne réponse pour toutes les entrées valides
Utilise le minimum de temps et d'espace mémoire
Code clair et bien documenté, facile à comprendre
Divisé en modules réutilisables et maintenables
Comprendre et définir clairement le problème à résoudre
Définir les données d'entrée et de sortie
Diviser le problème en sous-problèmes plus simples
Élaborer la logique et les étapes de résolution
Écrire l'algorithme dans un langage de programmation
Vérifier que l'algorithme fonctionne correctement
Améliorer les performances et l'efficacité
Description en français courant
Notation structurée et standardisée
LIRE age
SI age ≥ 18 ALORS
ÉCRIRE "Majeur"
SINON
ÉCRIRE "Mineur"
FINSI
Représentation graphique avec symboles
ALGORITHME nom_algorithme
VAR
variable1 : type
variable2 : type
DÉBUT
instructions...
FIN
ALGORITHME Moyenne
VAR
note1, note2, moyenne : réel
DÉBUT
ÉCRIRE "Entrez la première note : "
LIRE note1
ÉCRIRE "Entrez la deuxième note : "
LIRE note2
moyenne ← (note1 + note2) / 2
ÉCRIRE "La moyenne est : ", moyenne
FIN
VAR
nom_variable : type
age : entier
prix : réel
nom : chaîne
valide : booléen
La flèche ← indique qu'on assigne une valeur à une variable
age ← 25
nom ← "Marie"
pi ← 3.14159
actif ← VRAI
surface ← longueur * largeur
resultat ← a + b * c
compteur ← compteur + 1
moyenne ← somme / nombre
// Échanger a et b
temp ← a
a ← b
b ← temp
Permet de saisir des données depuis l'utilisateur
LIRE variable
LIRE nom
LIRE age, salaire
Permet d'afficher des informations à l'utilisateur
ÉCRIRE "message"
ÉCRIRE variable
ÉCRIRE "Age: ", age
ALGORITHME Salutation
VAR
nom : chaîne
age : entier
DÉBUT
ÉCRIRE "Comment vous appelez-vous ? "
LIRE nom
ÉCRIRE "Quel âge avez-vous ? "
LIRE age
ÉCRIRE "Bonjour ", nom, " ! Vous avez ", age, " ans."
FIN
Vrai si les deux conditions sont vraies
(age ≥ 18) ET (permis = VRAI)
(note ≥ 10) ET (note ≤ 20)
Vrai si au moins une condition est vraie
(jour = "samedi") OU (jour = "dimanche")
(age < 12) OU (age > 65)
Inverse la valeur booléenne
NON (age < 18)
NON connecté
💡 Utilisez des parenthèses pour clarifier l'ordre d'évaluation
| A | B | A ET B |
|---|---|---|
| VRAI | VRAI | VRAI |
| VRAI | FAUX | FAUX |
| FAUX | VRAI | FAUX |
| FAUX | FAUX | FAUX |
| A | B | A OU B |
|---|---|---|
| VRAI | VRAI | VRAI |
| VRAI | FAUX | VRAI |
| FAUX | VRAI | VRAI |
| FAUX | FAUX | FAUX |
| A | NON A |
|---|---|
| VRAI | FAUX |
| FAUX | VRAI |
SI condition ALORS
instructions si vraie
SINON
instructions si fausse
FINSI
ALGORITHME VerificationAge
VAR
age : entier
DÉBUT
ÉCRIRE "Entrez votre âge : "
LIRE age
SI age ≥ 18 ALORS
ÉCRIRE "Vous êtes majeur"
SINON
ÉCRIRE "Vous êtes mineur"
FINSI
FIN
SI note ≥ 10 ALORS
ÉCRIRE "Réussi"
FINSI
SI note ≥ 16 ALORS
ÉCRIRE "Très bien"
SINON
SI note ≥ 14 ALORS
ÉCRIRE "Bien"
SINON
SI note ≥ 12 ALORS
ÉCRIRE "Assez bien"
SINON
SI note ≥ 10 ALORS
ÉCRIRE "Passable"
SINON
ÉCRIRE "Insuffisant"
FINSI
FINSI
FINSI
FINSI
SELON variable FAIRE
CAS valeur1 : instructions1
CAS valeur2 : instructions2
CAS valeur3 : instructions3
DEFAUT : instructions par défaut
FIN SELON
SELON operation FAIRE
CAS "+" : resultat ← a + b
CAS "-" : resultat ← a - b
CAS "*" : resultat ← a * b
CAS "/" :
SI b ≠ 0 ALORS
resultat ← a / b
SINON
ÉCRIRE "Erreur : division par zéro"
FINSI
DEFAUT : ÉCRIRE "Opération inconnue"
FIN SELON
SI (age ≥ 18) ET (permis = VRAI) ALORS
ÉCRIRE "Peut conduire"
SINON
ÉCRIRE "Ne peut pas conduire"
FINSI
SI (jour = "samedi") OU (jour = "dimanche") ALORS
ÉCRIRE "C'est le week-end !"
SINON
ÉCRIRE "Jour de semaine"
FINSI
SI ((age ≥ 12) ET (age ≤ 17)) OU (statut = "etudiant") ALORS
ÉCRIRE "Tarif réduit"
SINON
ÉCRIRE "Tarif normal"
FINSI
ALGORITHME CalculRemise
VAR
montant, remise, montantFinal : réel
typeClient : chaîne
fidelite : booléen
DÉBUT
ÉCRIRE "Entrez le montant : "
LIRE montant
ÉCRIRE "Type de client (normal/premium/vip) : "
LIRE typeClient
ÉCRIRE "Client fidèle ? (VRAI/FAUX) : "
LIRE fidelite
// Calcul de la remise
SI typeClient = "vip" ALORS
remise ← 20 // 20% pour les VIP
SINON
SI typeClient = "premium" ALORS
remise ← 15 // 15% pour les premium
SINON
remise ← 5 // 5% pour les clients normaux
FINSI
FINSI
// Bonus fidélité
SI (fidelite = VRAI) ET (montant ≥ 100) ALORS
remise ← remise + 5 // +5% pour les fidèles
FINSI
montantFinal ← montant * (1 - remise/100)
ÉCRIRE "Remise : ", remise, "%"
ÉCRIRE "Montant final : ", montantFinal, "€"
FIN
TANTQUE condition FAIRE
instructions
FIN TANTQUE
VAR
compteur : entier
DÉBUT
compteur ← 1
TANTQUE compteur ≤ 10 FAIRE
ÉCRIRE compteur
compteur ← compteur + 1
FIN TANTQUE
ÉCRIRE "Terminé !"
FIN
RÉPÉTER
instructions
JUSQU'À condition
VAR
note : réel
DÉBUT
RÉPÉTER
ÉCRIRE "Entrez une note (0-20) : "
LIRE note
SI (note < 0) OU (note > 20) ALORS
ÉCRIRE "Note invalide !"
FINSI
JUSQU'À (note ≥ 0) ET (note ≤ 20)
ÉCRIRE "Note valide : ", note
FIN
POUR variable DE valeur_initiale À valeur_finale FAIRE
instructions
FIN POUR
// Avec pas personnalisé
POUR variable DE début À fin PAS increment FAIRE
instructions
FIN POUR
POUR i DE 1 À 10 FAIRE
ÉCRIRE i
FIN POUR
POUR i DE 10 À 1 PAS -1 FAIRE
ÉCRIRE i
FIN POUR
// Nombres pairs
POUR i DE 2 À 20 PAS 2 FAIRE
ÉCRIRE i
FIN POUR
ALGORITHME CalculMoyenne
VAR
nombreNotes, i : entier
note, somme, moyenne : réel
DÉBUT
// Demander le nombre de notes
RÉPÉTER
ÉCRIRE "Combien de notes ? (1-20) : "
LIRE nombreNotes
JUSQU'À (nombreNotes ≥ 1) ET (nombreNotes ≤ 20)
somme ← 0
// Saisir et additionner les notes
POUR i DE 1 À nombreNotes FAIRE
RÉPÉTER
ÉCRIRE "Note ", i, " (0-20) : "
LIRE note
SI (note < 0) OU (note > 20) ALORS
ÉCRIRE "Note invalide !"
FINSI
JUSQU'À (note ≥ 0) ET (note ≤ 20)
somme ← somme + note
FIN POUR
// Calculer et afficher la moyenne
moyenne ← somme / nombreNotes
ÉCRIRE "Moyenne : ", moyenne
// Appréciation
SI moyenne ≥ 16 ALORS
ÉCRIRE "Très bien !"
SINON
SI moyenne ≥ 14 ALORS
ÉCRIRE "Bien !"
SINON
SI moyenne ≥ 10 ALORS
ÉCRIRE "Réussi"
SINON
ÉCRIRE "Échec"
FINSI
FINSI
FINSI
FIN
Sous-algorithme qui exécute des actions
PROCÉDURE AfficherMessage(message : chaîne)
DÉBUT
ÉCRIRE "*** ", message, " ***"
FIN
// Appel
AfficherMessage("Bienvenue !")
Sous-algorithme qui retourne une valeur
FONCTION Carre(nombre : réel) : réel
DÉBUT
RETOURNER nombre * nombre
FIN
// Utilisation
resultat ← Carre(5)
ÉCRIRE "5² = ", resultat
Copie de la variable
FONCTION Test(x : entier)
Accès direct à la variable
PROCÉDURE Echanger(VAR a, b : entier)
Un même sous-algorithme peut être utilisé plusieurs fois dans différents contextes
Décomposition du problème en modules indépendants et gérables
Code plus clair et mieux structuré, facile à comprendre et maintenir
Modifications localisées, tests et débogage simplifiés
// Au lieu de répéter ce code plusieurs fois...
SI (nombre < 0) OU (nombre > 100) ALORS
ÉCRIRE "Erreur : nombre invalide"
RETOURNER FAUX
FINSI
// Créez une fonction :
FONCTION EstValide(nombre : réel) : booléen
DÉBUT
SI (nombre < 0) OU (nombre > 100) ALORS
ÉCRIRE "Erreur : nombre invalide"
RETOURNER FAUX
SINON
RETOURNER VRAI
FINSI
FIN
// Et utilisez-la :
SI EstValide(nombre) ALORS
// Traitement...
FINSI
// Tableau 1D
notes : TABLEAU[1..10] DE réel
// Tableau 2D
matrice : TABLEAU[1..5, 1..5] DE entier
// Tableaux avec constantes
CONSTANTE MAX_ELEVES = 30
eleves : TABLEAU[1..MAX_ELEVES] DE chaîne
// Affecter des valeurs
notes[1] ← 15.5
notes[2] ← 12.0
// Lire depuis le clavier
POUR i DE 1 À 5 FAIRE
ÉCRIRE "Note ", i, " : "
LIRE notes[i]
FIN POUR
// Parcourir et afficher
POUR i DE 1 À 5 FAIRE
ÉCRIRE "Note ", i, " : ", notes[i]
FIN POUR
PageRank de Google
Classe les pages web selon leur pertinence et popularité
Netflix, Spotify, YouTube
Algorithmes de recommandation basés sur vos préférences
Algorithme de Dijkstra
Calcul du plus court chemin entre deux points
RSA, AES, Blockchain
Sécurisation des données et transactions
Machine Learning, Deep Learning
Reconnaissance vocale, vision par ordinateur, ChatGPT
Trading algorithmique
Analyse de marché, gestion de risques, transactions automatiques
🌍 Impact global : Ces algorithmes traitent des milliards de données chaque seconde et influencent notre quotidien !
Un algorithme est une suite d'instructions précises pour résoudre un problème
Variables, conditions (SI), boucles (POUR, TANTQUE, RÉPÉTER)
Analyse → Décomposition → Conception → Test → Optimisation
Correction, Efficacité, Lisibilité, Modularité
Pseudo-code structuré et standardisé
Omniprésents dans notre quotidien numérique
Comme pour un sport, l'algorithmique se maîtrise par la pratique quotidienne
Divisez les problèmes complexes en sous-problèmes plus simples
Schématisez votre réflexion avec des organigrammes ou des diagrammes
Étudiez les algorithmes existants pour comprendre différentes approches
Vérifiez votre algorithme avec différents jeux de données
La persévérance est clé : chaque erreur est une occasion d'apprendre
Privilégiez la compréhension des concepts plutôt que l'apprentissage par cœur
N'hésitez pas à poser vos questions !
"La programmation informatique est un art, car elle applique des connaissances accumulées au monde, car elle nécessite des compétences et de l'ingéniosité, et surtout parce qu'elle produit des objets de beauté."