0% ont trouvé ce document utile (0 vote)
1 vues12 pages

Syllabus Algorithme

Algorithme

Transféré par

Andrianirina Mamy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
1 vues12 pages

Syllabus Algorithme

Algorithme

Transféré par

Andrianirina Mamy
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Module 1 : Introduction et Notions de Base

Ce premier bloc pose les fondations de la logique informatique.

Concept d'algorithme : Histoire, définition et critères d'efficacité d'un algorithme.


Structure générale : En-tête, déclarations, et corps du programme (Début / Fin).
Pseudo-code : Utilisation d'un langage de description indépendant des langages de
programmation.
Variables et constantes : Types de données de base (entier, réel, caractère, chaîne,
booléen).
Instructions de base : L'affectation (stockage), la lecture (entrées) et l'écriture (sorties).

Module 2 : Les Structures de Contrôle


Ces structures permettent de casser la linéarité du code pour créer des logiques intelligentes.

Structures conditionnelles : Instructions Si / Sinon / FinSi et structures à choix multiples


(Selon).
Structures itératives (Boucles) : Comprendre quand et comment répéter des actions.
Boucle Pour (nombre d'itérations connu à l'avance).
Boucle Tant Que (condition de fin évaluée au début).
Boucle Répéter ... Jusqu'à (condition de fin évaluée à la fin).

Module 3 : Les Structures de Données Linéaires


Ce module aborde la gestion de collections de données en mémoire.

Tableaux unidimensionnels (Vecteurs) : Déclaration, parcours, insertion et suppression


d'éléments.
Tableaux bidimensionnels (Matrices) : Représentation de grilles de données.
Chaînes de caractères : Manipulation avancée et fonctions de traitement de texte.

Module 4 : Modularité (Fonctions et Procédures)


Apprendre à découper un problème complexe en sous-problèmes plus simples et réutilisables.

Définition : Différence fondamentale entre une fonction (qui retourne une valeur) et une
procédure.
Paramètres : Passage de paramètres par valeur (copie) ou par référence (adresse).
Portée des variables : Variables locales à un module versus variables globales au
programme.

Module 5 : Algorithmes Fondamentaux


Mise en pratique des compétences à travers des problèmes classiques de l'informatique.

Algorithmes de recherche : Recherche séquentielle (linéaire) et recherche dichotomique


(dans un tableau trié).
Algorithmes de tri : Tri par sélection, tri à bulles et tri par insertion.

Module 6 : Complexité et Concepts Avancés


Pour les étudiants de niveau intermédiaire à avancé.

Introduction à la complexité : Notion de performance (notations Grand O) en temps et en


espace.
Récursivité : Concevoir des fonctions qui s'appellent elles-mêmes.

Module 1 : Introduction et Notions de Base


Ce premier bloc pose les fondations de la logique informatique.

1. Concept d'algorithme
Un algorithme est une suite finie et non ambiguë d'instructions permettant de résoudre un
problème ou d'accomplir une tâche. Le mot vient du mathématicien persan Al-Khwarizmi.

Critères d'efficacité : Un bon algorithme doit être correct (donner le bon résultat), fini
(s'arrêter après un temps raisonnable) et efficace (optimiser l'usage de la mémoire et du
processeur).

2. Structure générale & Pseudo-code


Le pseudo-code est un langage informel qui ressemble à du code mais qui est écrit en français
pour rester universel.

Plaintext

Algorithme Nom_Du_Programme
Variables
// Déclaration des variables ici
Début
// Corps du programme : instructions
Fin

3. Variables, Constantes et Instructions de base


Types de données : Entier (ex: 42), Réel (ex: 3.14), Caractère (ex: 'A'), Chaîne (ex:
"Bonjour"), Booléen ( Vrai ou Faux ).
Affectation ( <- ) : Stocke une valeur dans une variable.
Lecture ( Lire ) : Récupère une donnée saisie par l'utilisateur.
Écriture ( Écrire ) : Affiche une information à l'écran.

💡 Exercices - Module 1
Exercice 1 : Permutation de deux variables

Énoncé : Écrire un algorithme qui demande à l'utilisateur deux nombres dans des variables A
et B , puis qui permute leurs valeurs (le contenu de A passe dans B et inversement) et les
affiche.

Indice : Vous aurez besoin d'une troisième variable "gobelet" (temporel).

Plaintext

Algorithme Permutation
Variables
A, B, Temp : Entier
Début
Écrire("Entrez la valeur de A : ")
Lire(A)
Écrire("Entrez la valeur de B : ")
Lire(B)

// Logique de permutation
Temp <- A
A <- B
B <- Temp

Écrire("Après permutation, A = ", A, " et B = ", B)


Fin

Module 2 : Les Structures de Contrôle


Ces structures permettent de casser la linéarité du code pour créer des logiques intelligentes.
1. Structures conditionnelles
Permettent d'exécuter des blocs de code différents selon qu'une condition soit vraie ou fausse.

Si / Sinon : Utilisé pour des choix binaires ou simples.


Selon : Idéal pour éviter des Si imbriqués lorsqu'on teste plusieurs valeurs d'une même
variable.

2. Structures itératives (Boucles)


Boucle Pour : On sait exactement combien de fois on veut répéter l'action.
Boucle Tant Que : On vérifie la condition avant d'entrer dans la boucle. Si la condition est
fausse dès le départ, le code ne s'exécute jamais.
Boucle Répéter ... Jusqu'à : On exécute le code au moins une fois, car la condition est
vérifiée à la fin.

💡 Exercices - Module 2
Exercice 1 : Le juste prix (Boucle Tant Que)

Énoncé : Écrire un algorithme qui définit un nombre secret (par exemple 42 ). Il demande
ensuite à l'utilisateur de deviner ce nombre tant que sa réponse n'est pas correcte.

Plaintext

Algorithme JustePrix
Variables
Secret, Essai : Entier
Début
Secret <- 42
Écrire("Devinez le nombre secret : ")
Lire(Essai)

TantQue Essai <> Secret Faire


Si Essai < Secret Alors
Écrire("C'est plus grand !")
Sinon
Écrire("C'est plus petit !")
FinSi
Écrire("Réessayez : ")
Lire(Essai)
FinTantQue
Écrire("Bravo ! Vous avez trouvé.")
Fin

Exercice 2 : Calcul de moyenne (Boucle Pour)

Énoncé : Écrire un algorithme qui demande à l'utilisateur de saisir 5 notes, puis calcule et
affiche leur moyenne.

Plaintext

Algorithme CalculMoyenne
Variables
i : Entier
Note, Somme, Moyenne : Réel
Début
Somme <- 0
Pour i AlantDe 1 À 5 Faire
Écrire("Entrez la note numéro ", i, " : ")
Lire(Note)
Somme <- Somme + Note
FinPour
Moyenne <- Somme / 5
Écrire("La moyenne de la classe est : ", Moyenne)
Fin

Module 3 : Les Structures de Données Linéaires


Ce module aborde la gestion de collections de données en mémoire sous un seul nom de
variable.

1. Tableaux unidimensionnels (Vecteurs)


Un tableau est une suite de cases de même type, accessibles par un indice (généralement de
1 à N ou de 0 à N-1).

Exemple : MonTableau : Tableau[1..10] de Entier

2. Tableaux bidimensionnels (Matrices)


Une grille avec des lignes et des colonnes. Pour accéder à une case, il faut fournir deux indices
: Tableau[ligne, colonne] .

3. Chaînes de caractères
Une chaîne est techniquement un tableau de caractères. On peut mesurer sa longueur, extraire
des sous-chaînes ou concaténer (fusionner) deux chaînes.

💡 Exercices - Module 3
Exercice 1 : Recherche du maximum dans un tableau

Énoncé : Écrire un algorithme qui cherche la valeur maximale présente dans un tableau de 10
entiers préalablement rempli.

Plaintext

Algorithme MaxTableau
Variables
T : Tableau[1..10] de Entier
i, Max : Entier
Début
// Remplissage fictif pour l'exercice
// ... supposons le tableau déjà rempli ...

Max <- T[1] // On suppose que le premier est le plus grand


Pour i AllantDe 2 À 10 Faire
Si T[i] > Max Alors
Max <- T[i]
FinSi
FinPour

Écrire("Le nombre le plus grand est : ", Max)


Fin

Module 4 : Modularité (Fonctions et Procédures)


Apprendre à découper un problème complexe en sous-problèmes plus simples et réutilisables.

1. Fonctions vs Procédures
Fonction : Effectue des calculs et renvoie obligatoirement une valeur unique via
l'instruction Retourner .
Procédure : Effectue une série d'actions (comme un affichage) mais ne renvoie aucune
valeur.

2. Passage de paramètres
Par Valeur : Le module reçoit une copie de la variable. Modifier le paramètre dans le
module ne change pas la variable d'origine.
Par Référence (ou Variable) : Le module reçoit l'adresse de la variable. Toute modification
impacte directement la variable d'origine.

💡 Exercices - Module 4
Exercice 1 : Fonction de calcul de TVA

Énoncé : Créer une fonction nommée CalculerTTC qui prend en paramètre un prix Hors Taxe
(Réel) et un taux de TVA (Réel, ex: 0.20 pour 20%), et qui retourne le prix TTC. Écrivez le
programme principal qui l'utilise.

Plaintext

Fonction CalculerTTC(prixHT : Réel, tauxTVA : Réel) : Réel


Début
Retourner prixHT * (1 + tauxTVA)
FinFonction

Algorithme Principal
Variables
PrixAchat, PrixFinal : Réel
Début
Écrire("Entrez le prix HT : ")
Lire(PrixAchat)
// Appel de la fonction avec un taux fixe de 20%
PrixFinal <- CalculerTTC(PrixAchat, 0.20)
Écrire("Le prix TTC est de : ", PrixFinal)
Fin

Module 5 : Algorithmes Fondamentaux


Mise en pratique des compétences à travers des problèmes classiques de l'informatique.

1. Algorithmes de recherche
Séquentielle : On regarde chaque case l'une après l'autre. Fonctionne sur tous les
tableaux.
Dichotomique : Utilisable uniquement sur un tableau trié. On coupe le tableau en deux à
chaque étape, ce qui est extrêmement rapide.

2. Algorithmes de tri
Tri à bulles : On compare les éléments adjacents et on les permute s'ils sont dans le
mauvais ordre.
Tri par sélection : On cherche le plus petit élément du tableau et on le place au début, puis
on recommence pour le reste.

💡 Exercices - Module 5
Exercice 1 : Le Tri à Bulles

Énoncé : Écrire un algorithme permettant de trier un tableau T de N entiers dans l'ordre


croissant en utilisant la méthode du tri à bulles.

Plaintext

Algorithme TriABulles
Variables
T : Tableau[1..N] de Entier
i, j, Temp : Entier
Début
Pour i AllantDe 1 À N-1 Faire
Pour j AllantDe 1 À N-i Faire
Si T[j] > T[j+1] Alors
// Permutation
Temp <- T[j]
T[j] <- T[j+1]
T[j+1] <- Temp
FinSi
FinPour
FinPour
Fin

Module 6 : Complexité et Concepts Avancés


Pour les étudiants de niveau intermédiaire à avancé.

1. Introduction à la complexité (Notation Grand O)


La complexité mesure l'évolution du temps d'exécution ou de l'espace mémoire requis quand le
volume de données n augmente.

O(1) : Temps constant (Ex: accéder à une case de tableau).


O(n) : Temps linéaire (Ex: recherche séquentielle).
O(n )
2
: Temps quadratique (Ex: tri à bulles, boucles imbriquées).

2. Récursivité
Une fonction récursive est une fonction qui s'appelle elle-même. Elle requiert obligatoirement :
1. Un cas de base (condition d'arrêt pour éviter une boucle infinie).
2. Un cas récursif (l'appel vers soi-même avec une donnée simplifiée).

💡 Exercices - Module 6
Exercice 1 : La Factorielle récursive

Énoncé : En mathématiques, la factorielle d'un nombre n (notée n!) est le produit de tous les
entiers de 1 à n.

Par définition : 0! = 1 et n! = n × (n − 1)!.

Écrire la fonction récursive Factorielle(n : Entier) : Entier .

Plaintext

Fonction Factorielle(n : Entier) : Entier


Début
// Cas de base (Condition d'arrêt)
Si n = 0 Alors
Retourner 1
// Cas récursif
Sinon
Retourner n * Factorielle(n - 1)
FinSi
FinFonction

🏬 Étude de cas : Gestion des Ventes d'un Magasin


📋 Énoncé et Problématique
Une boutique de vêtements souhaite analyser ses performances de ventes de la journée. Le
responsable du magasin dispose d'un tableau contenant les montants de chaque transaction
(en euros). Il vous demande de concevoir un système automatisé pour :

1. Calculer le chiffre d'affaires total de la journée.


2. Identifier la meilleure vente effectuée.
3. Filtrer et isoler dans un nouveau tableau toutes les ventes dites "Premium" (supérieures
ou égales à 100 €).
4. Trier les ventes par ordre décroissant pour le rapport de fin de journée.

🛠️ Spécifications Techniques
Le programme principal manipulera un tableau de départ nommé Ventes contenant N
éléments (par exemple N = 5).

Vous devez structurer votre code de manière modulaire en créant :

Une fonction CalculerCA qui retourne le total des ventes.


Une fonction TrouverMax qui retourne la plus grande vente.
Une procédure FiltrerPremium qui remplit un tableau secondaire avec les ventes ≥ 100 €.
Une procédure TrierVentes qui trie le tableau principal.

💻 Solution Complète en Pseudo-Code


1. Les Modules (Fonctions et Procédures)

Plaintext

// 1. Fonction pour calculer le Chiffre d'Affaires


Fonction CalculerCA(T : Tableau de Réel, taille : Entier) : Réel
Variables
i : Entier
Total : Réel
Début
Total <- 0
Pour i AllantDe 1 À taille Faire
Total <- Total + T[i]
FinPour
Retourner Total
FinFonction

// 2. Fonction pour trouver la vente maximale


Fonction TrouverMax(T : Tableau de Réel, taille : Entier) : Réel
Variables
i : Entier
Max : Réel
Début
Max <- T[1]
Pour i AllantDe 2 À taille Faire
Si T[i] > Max Alors
Max <- T[i]
FinSi
FinPour
Retourner Max
FinFonction

// 3. Procédure pour filtrer les ventes Premium (Passage par référence pour
modifier le tableau résultat)
Procédure FiltrerPremium(T_Source : Tableau de Réel, taille_S : Entier, Var T_Dest
: Tableau de Réel, Var taille_D : Entier)
Variables
i : Entier
Début
taille_D <- 0 // Compteur pour le tableau de destination
Pour i AllantDe 1 À taille_S Faire
Si T_Source[i] >= 100.0 Alors
taille_D <- taille_D + 1
T_Dest[taille_D] <- T_Source[i]
FinSi
FinPour
FinProcédure

// 4. Procédure de Tri par Sélection Décroissant


Procédure TrierVentes(Var T : Tableau de Réel, taille : Entier)
Variables
i, j, PosMax : Entier
Temp : Réel
Début
Pour i AllantDe 1 À taille - 1 Faire
PosMax <- i
Pour j AllantDe i + 1 À taille Faire
Si T[j] > T[PosMax] Alors
PosMax <- j
FinSi
FinPour
// Permutation
Temp <- T[i]
T[i] <- T[PosMax]
T[PosMax] <- Temp
FinPour
FinProcédure

2. Programme Principal

Plaintext

Algorithme GestionMagasin
Variables
Ventes : Tableau[1..5] de Réel
VentesPremium : Tableau[1..5] de Réel
i, NbPremium : Entier
CA, MeilleureVente : Réel
Début
// Remplissage initial des ventes de la journée
Ventes[1] <- 45.50
Ventes[2] <- 120.00
Ventes[3] <- 85.00
Ventes[4] <- 320.00
Ventes[5] <- 15.20

// 1. Calcul et affichage du Chiffre d'Affaires


CA <- CalculerCA(Ventes, 5)
Écrire("Chiffre d'affaires du jour : ", CA, " €")

// 2. Recherche de la meilleure vente


MeilleureVente <- TrouverMax(Ventes, 5)
Écrire("Meilleure vente : ", MeilleureVente, " €")

// 3. Extraction des ventes Premium


FiltrerPremium(Ventes, 5, VentesPremium, NbPremium)
Écrire("Nombre de ventes Premium (>= 100€) : ", NbPremium)
Pour i AllantDe 1 À NbPremium Faire
Écrire(" - Vente Premium ", i, " : ", VentesPremium[i], " €")
FinPour

// 4. Tri du tableau principal et affichage


TrierVentes(Ventes, 5)
Écrire("Liste de toutes les ventes triées par ordre décroissant :")
Pour i AllantDe 1 À 5 Faire
Écrire(" Vente ", i, " : ", Ventes[i], " €")
FinPour
Fin

📊 Analyse de la complexité de l'étude de cas


Calcul du CA et recherche du maximum : Ces deux opérations parcourent le tableau une
seule fois de manière linéaire. La complexité en temps est donc de O(n).
Filtrage des ventes Premium : Un seul parcours également, complexité de O(n) en
temps. En espace, elle nécessite l'allocation d'un second tableau de taille maximale n, soit
O(n).

Tri par sélection : Cet algorithme utilise deux boucles imbriquées pour ordonner les
éléments. Sa complexité est dite quadratique, notée O(n ). C'est suffisant pour 5 ou 100
2

ventes, mais cela deviendrait lent si la boutique enregistrait des millions de transactions par
jour !

Vous aimerez peut-être aussi