#Slides — Pensée computationnelle
#Plan de la présentation
- Décomposition de problèmes
- Abstraction
- Algorithmes de base
- Évaluer la complexité
- Recommandations pour raisonner pas-à-pas
#Décomposition de problèmes
#Qu'est-ce que la décomposition ?
- Diviser un problème complexe en sous-problèmes plus simples
- Chaque sous-problème peut être résolu indépendamment
- Facilite la compréhension et la résolution
#Avantages
- Réduction de la complexité
- Meilleure organisation du code
- Facilité de maintenance
- Collaboration facilitée
#Exemple
Problème: Compter la fréquence des mots dans un texte
Sous-problèmes:
- Lire le texte
- Nettoyer le texte
- Tokeniser (séparer en mots)
- Compter les occurrences
- Trier par fréquence
#Abstraction
#Qu'est-ce que l'abstraction ?
- Masquer les détails complexes
- Se concentrer sur l'essentiel
- Créer des modèles simplifiés
#Niveaux d'abstraction
- Données : Types abstraits
- Procédures : Fonctions
- Contrôle : Flot d'exécution
#Exemple
Au lieu de manipuler des bits, on utilise des types comme int
, string
, list
.
#Algorithmes de base
#Définition
Un algorithme est une séquence finie d'instructions précises permettant de résoudre un problème.
#Propriétés
- Finitude : Se termine en un nombre fini d'étapes
- Précision : Instructions claires et non ambiguës
- Entrées : Zéro ou plusieurs valeurs en entrée
- Sorties : Une ou plusieurs valeurs en sortie
- Efficacité : Chaque instruction est réalisable
#Algorithmes classiques
- Recherche linéaire : O(n)
- Recherche dichotomique : O(log n)
- Tri à bulles : O(n²)
- Tri rapide : O(n log n) en moyenne
#Évaluer la complexité
#Notation Big-O
- O(1) : Temps constant
- O(log n) : Logarithmique
- O(n) : Linéaire
- O(n log n) : Log-linéaire
- O(n²) : Quadratique
- O(2ⁿ) : Exponentiel
#Complexité en temps vs espace
- Temps : Nombre d'opérations
- Espace : Quantité de mémoire utilisée
#Recommandations pour raisonner pas-à-pas
#Méthodologie
- Comprendre le problème : Analyser les entrées/sorties
- Décomposer : Diviser en sous-problèmes
- Abstraire : Identifier les concepts essentiels
- Concevoir : Créer l'algorithme
- Implémenter : Coder la solution
- Tester : Vérifier la correction
- Optimiser : Améliorer l'efficacité
#Bonnes pratiques
- Toujours commencer par des exemples simples
- Utiliser des visualisations quand possible
- Tester les cas limites
- Mesurer la complexité
- Documenter le code