INTRODUCTION À L'ALGORITHMIQUE

Une approche pédagogique complète

Présenté par : Ilhame Ezzyne

Bienvenue

Sommaire

1 Introduction & Définitions
2 Concepts Fondamentaux
3 Méthodologie
4 Représentation
5 Éléments de Base
6 Structures de Contrôle
7 Les Boucles
8 Applications & Conclusion

QU'EST-CE QU'UN ALGORITHME ?

Une suite ordonnée et finie d'instructions précises permettant de résoudre un problème

Exemple : Préparer du thé ☕

1. Faire bouillir de l'eau
2. Mettre le sachet de thé dans la tasse
3. Verser l'eau chaude
4. Laisser infuser 3 minutes
5. Retirer le sachet
6. Ajouter du sucre (optionnel)

ORIGINE HISTORIQUE

Al-Khawarizmi (783-850)

Mathématicien perse du 9ème siècle

Ses contributions majeures :

📐

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"

IMPORTANCE DE L'ALGORITHMIQUE

🧠

Développement logique

Structure la pensée et améliore le raisonnement

🔧

Résolution de problèmes

Méthode systématique pour analyser et résoudre

💻

Base de la programmation

Fondement de tous les langages de programmation

🌍

Applications universelles

Présent dans tous les domaines technologiques

Optimisation

Améliore l'efficacité et les performances

PRINCIPES ESSENTIELS

Précision

Chaque instruction doit être claire et sans ambiguïté

Rigueur

Respect strict des règles et de la logique

Généralité

Applicable à une classe de problèmes similaires

Efficacité

Optimisation du temps et des ressources

Correction

Produit toujours le résultat attendu

NOTIONS DE BASE POUR RÉUSSIR

Logique mathématique

Comprendre les opérations et relations logiques

Analyse de problèmes

Décomposer un problème complexe en sous-problèmes

Abstraction

Identifier les éléments essentiels d'un problème

Patience et persévérance

Développement progressif des compétences

Pratique régulière

Exercices et mise en application constante

CARACTÉRISTIQUES D'UN BON ALGORITHME

Exactitude

Produit le résultat correct

Clarté

Facilement compréhensible

Finitude

Se termine en temps fini

Efficacité

Utilise les ressources optimalement

Généralité

Résout une classe de problèmes

Déterminisme

Comportement prévisible

QUALITÉS D'UN BON ALGORITHME

Correction

Fournit toujours la bonne réponse pour toutes les entrées valides

Efficacité

Utilise le minimum de temps et d'espace mémoire

📖

Lisibilité

Code clair et bien documenté, facile à comprendre

🧩

Modularité

Divisé en modules réutilisables et maintenables

ÉTAPES DE CONCEPTION

1

Analyse du problème

Comprendre et définir clairement le problème à résoudre

2

Spécification

Définir les données d'entrée et de sortie

3

Décomposition

Diviser le problème en sous-problèmes plus simples

4

Conception

Élaborer la logique et les étapes de résolution

5

Implémentation

Écrire l'algorithme dans un langage de programmation

6

Test et validation

Vérifier que l'algorithme fonctionne correctement

7

Optimisation

Améliorer les performances et l'efficacité

MODES DE REPRÉSENTATION

💬

Langage naturel

Description en français courant

Exemple :
"Demander l'âge de l'utilisateur, puis afficher s'il est majeur ou mineur"
📝

Pseudo-code

Notation structurée et standardisée

Exemple :
LIRE age
SI age ≥ 18 ALORS
  ÉCRIRE "Majeur"
SINON
  ÉCRIRE "Mineur"
FINSI
📊

Organigramme

Représentation graphique avec symboles

Éléments :
○ Début/Fin
□ Traitement
◇ Condition

LE PSEUDO-CODE

Syntaxe de base

ALGORITHME nom_algorithme
VAR
    variable1 : type
    variable2 : type
DÉBUT
    instructions...
FIN

Exemple complet : Calcul de moyenne

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

VARIABLES ET TYPES DE DONNÉES

Type
Description
Exemples
entier
Nombres entiers
42, -17, 0
réel
Nombres décimaux
3.14, -2.5, 0.0
chaîne
Texte entre guillemets
"Bonjour", "Alice"
booléen
Valeur logique
VRAI, FAUX

Syntaxe de déclaration

VAR
    nom_variable : type
    age : entier
    prix : réel
    nom : chaîne
    valide : booléen

L'AFFECTATION

Syntaxe : variable ← expression

La flèche ← indique qu'on assigne une valeur à une variable

Affectation simple

age ← 25
nom ← "Marie"
pi ← 3.14159
actif ← VRAI

Calculs

surface ← longueur * largeur
resultat ← a + b * c
compteur ← compteur + 1
moyenne ← somme / nombre

Échange de variables

// Échanger a et b
temp ← a
a ← b
b ← temp

INSTRUCTIONS LIRE ET ÉCRIRE

📥 LIRE

Permet de saisir des données depuis l'utilisateur

LIRE variable
LIRE nom
LIRE age, salaire

📤 ÉCRIRE

Permet d'afficher des informations à l'utilisateur

ÉCRIRE "message"
ÉCRIRE variable
ÉCRIRE "Age: ", age

Exemple complet : Salutation

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

OPÉRATEURS DE COMPARAISON

Opérateur
Signification
Exemple
Résultat
=
Égal à
5 = 5
VRAI
Différent de
5 ≠ 3
VRAI
>
Supérieur à
7 > 3
VRAI
<
Inférieur à
2 < 8
VRAI
Supérieur ou égal
5 ≥ 5
VRAI
Inférieur ou égal
3 ≤ 9
VRAI

OPÉRATEURS LOGIQUES

ET (AND)

Vrai si les deux conditions sont vraies

(age ≥ 18) ET (permis = VRAI)
(note ≥ 10) ET (note ≤ 20)

OU (OR)

Vrai si au moins une condition est vraie

(jour = "samedi") OU (jour = "dimanche")
(age < 12) OU (age > 65)

NON (NOT)

Inverse la valeur booléenne

NON (age < 18)
NON connecté

Ordre de priorité

1. NON (priorité la plus haute)
2. ET
3. OU (priorité la plus basse)

💡 Utilisez des parenthèses pour clarifier l'ordre d'évaluation

TABLES DE VÉRITÉ

Opérateur ET

A B A ET B
VRAI VRAI VRAI
VRAI FAUX FAUX
FAUX VRAI FAUX
FAUX FAUX FAUX

Opérateur OU

A B A OU B
VRAI VRAI VRAI
VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX

Opérateur NON

A NON A
VRAI FAUX
FAUX VRAI

STRUCTURE SI...ALORS...SINON

Syntaxe

SI condition ALORS
    instructions si vraie
SINON
    instructions si fausse
FINSI

Exemple : Vérification d'âge

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 SIMPLE ET IMBRIQUÉ

SI Simple

SI note ≥ 10 ALORS
    ÉCRIRE "Réussi"
FINSI

SI Imbriqué : Classification des notes

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

STRUCTURE SELON...CAS

Syntaxe

SELON variable FAIRE
    CAS valeur1 : instructions1
    CAS valeur2 : instructions2
    CAS valeur3 : instructions3
    DEFAUT : instructions par défaut
FIN SELON

Exemple : Menu calculatrice

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

💡 Avantages

  • Plus lisible que les SI imbriqués
  • Meilleure performance
  • Facilite la maintenance

CONDITIONS COMPLEXES

Exemple 1 : Vérification d'âge et permis

SI (age ≥ 18) ET (permis = VRAI) ALORS
    ÉCRIRE "Peut conduire"
SINON
    ÉCRIRE "Ne peut pas conduire"
FINSI

Exemple 2 : Jour de week-end

SI (jour = "samedi") OU (jour = "dimanche") ALORS
    ÉCRIRE "C'est le week-end !"
SINON
    ÉCRIRE "Jour de semaine"
FINSI

Exemple 3 : Condition avec parenthèses

SI ((age ≥ 12) ET (age ≤ 17)) OU (statut = "etudiant") ALORS
    ÉCRIRE "Tarif réduit"
SINON
    ÉCRIRE "Tarif normal"
FINSI

📝 Conseils

  • Utilisez des parenthèses pour clarifier
  • Décomposez les conditions très complexes
  • Testez tous les cas possibles

EXEMPLE COMPLET : CALCUL DE REMISE

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

BOUCLE TANTQUE

Syntaxe

TANTQUE condition FAIRE
    instructions
FIN TANTQUE
Condition vraie ?
Exécuter instructions
Continuer le programme

Exemple : Compter de 1 à 10

VAR
    compteur : entier
DÉBUT
    compteur ← 1
    TANTQUE compteur ≤ 10 FAIRE
        ÉCRIRE compteur
        compteur ← compteur + 1
    FIN TANTQUE
    ÉCRIRE "Terminé !"
FIN

🔑 Caractéristiques

  • Condition testée au début
  • Peut ne jamais s'exécuter (0 fois)
  • Attention aux boucles infinies !

BOUCLE RÉPÉTER...JUSQU'À

Syntaxe

RÉPÉTER
    instructions
JUSQU'À condition

Exemple : Validation de saisie

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

🔑 Caractéristiques

  • Condition testée à la fin
  • S'exécute toujours au moins 1 fois
  • Idéale pour la validation de saisies

BOUCLE POUR

Syntaxe

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

Compter en avant

POUR i DE 1 À 10 FAIRE
    ÉCRIRE i
FIN POUR

Compter en arrière

POUR i DE 10 À 1 PAS -1 FAIRE
    ÉCRIRE i
FIN POUR

Pas personnalisé

// Nombres pairs
POUR i DE 2 À 20 PAS 2 FAIRE
    ÉCRIRE i
FIN POUR

🔑 Caractéristiques

  • Nombre d'itérations connu à l'avance
  • Compteur géré automatiquement
  • Idéale pour parcourir des tableaux

COMPARAISON DES BOUCLES

Type de boucle
Condition testée
Exécutions min.
Utilisation idéale
TANTQUE
Au début
0 fois
Nombre d'itérations inconnu
RÉPÉTER
À la fin
1 fois
Au moins une exécution nécessaire
POUR
Avec compteur
n fois
Nombre d'itérations connu

🧐 Guide de décision

Nombre d'itérations connu ? OUI : Utilisez POUR
Au moins une exécution requise ? OUI : Utilisez RÉPÉTER
Peut ne jamais s'exécuter ? OUI : Utilisez TANTQUE

EXEMPLE COMPLET : CALCUL DE MOYENNE

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

PROCÉDURES ET FONCTIONS

🛠️ Procédures

Sous-algorithme qui exécute des actions

PROCÉDURE AfficherMessage(message : chaîne)
DÉBUT
    ÉCRIRE "*** ", message, " ***"
FIN

// Appel
AfficherMessage("Bienvenue !")

⚙️ Fonctions

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

📝 Paramètres

Par valeur

Copie de la variable

FONCTION Test(x : entier)

Par référence

Accès direct à la variable

PROCÉDURE Echanger(VAR a, b : entier)

AVANTAGES DES SOUS-ALGORITHMES

♾️

Réutilisabilité

Un même sous-algorithme peut être utilisé plusieurs fois dans différents contextes

🧩

Modularité

Décomposition du problème en modules indépendants et gérables

📖

Lisibilité

Code plus clair et mieux structuré, facile à comprendre et maintenir

🔧

Maintenabilité

Modifications localisées, tests et débogage simplifiés

💼 Exemple pratique

// 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

TABLEAUX (ARRAYS)

Déclaration

// 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

Accès et manipulation

// 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

APPLICATIONS CONTEMPORAINES

🔍

Moteurs de recherche

PageRank de Google

Classe les pages web selon leur pertinence et popularité

🎵

Streaming & Recommandations

Netflix, Spotify, YouTube

Algorithmes de recommandation basés sur vos préférences

🚗

Navigation GPS

Algorithme de Dijkstra

Calcul du plus court chemin entre deux points

🔒

Cryptographie

RSA, AES, Blockchain

Sécurisation des données et transactions

🤖

Intelligence Artificielle

Machine Learning, Deep Learning

Reconnaissance vocale, vision par ordinateur, ChatGPT

💰

Finance

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 !

RÉCAPITULATIF : LES POINTS CLÉS

Définition maîtrisée

Un algorithme est une suite d'instructions précises pour résoudre un problème

Structures de base

Variables, conditions (SI), boucles (POUR, TANTQUE, RÉPÉTER)

Méthodologie

Analyse → Décomposition → Conception → Test → Optimisation

Qualités essentielles

Correction, Efficacité, Lisibilité, Modularité

Représentation

Pseudo-code structuré et standardisé

Applications réelles

Omniprésents dans notre quotidien numérique

CONSEILS POUR RÉUSSIR

1

💪 Pratiquer régulièrement

Comme pour un sport, l'algorithmique se maîtrise par la pratique quotidienne

2

🧩 Décomposer les problèmes

Divisez les problèmes complexes en sous-problèmes plus simples

3

✏️ Dessiner avant de coder

Schématisez votre réflexion avec des organigrammes ou des diagrammes

4

👀 Lire du code

Étudiez les algorithmes existants pour comprendre différentes approches

5

🧔 Tester systématiquement

Vérifiez votre algorithme avec différents jeux de données

6

🚀 Ne pas abandonner

La persévérance est clé : chaque erreur est une occasion d'apprendre

7

🧠 Comprendre avant de mémoriser

Privilégiez la compréhension des concepts plutôt que l'apprentissage par cœur

MERCI DE VOTRE ATTENTION !

🤔 Questions ?

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é."