Il est important de comprendre très tôt que le meilleur moyen de progresser sera toujours de pratiquer. C’est vrai pour la programmation, l’algorithmique, et de manière générale pour beaucoup de choses dans la vie !
Des problèmes à résoudre en français :
- https://prologin.org/train/ : les archives des concours précédents, pas d’ordre particulier.
- http://www.france-ioi.org/ : exercices triés par niveau et regroupés par thématique.
Choix du langage¶
Si vous ne savez pas quel langage choisir pour vous lancer dans la programmation, il faut savoir que dans les concours de programmation les langages les plus utilisés sont souvent C++ et Python. Pour commencer, Python semble être un choix très répandu car plus accessible pour un débutant complet. Les premiers niveaux de France-IOI sont justement axés sur la découverte et l’utilisation d’un langage de programmation, vous pouvez donc suivre les cours et exercices du site.
Par où commencer ?¶
Voici quelques notions qui sont fondamentales pour débuter dans l’algorithmique :
- Savoir utiliser son langage de programmation :
- Notions de base : variables, conditions, boucles, fonctions, etc.
- Librairie standard : lire et afficher du texte, trier des valeurs, etc.
- Débugger efficacement
- Structures de données simples : tableaux, listes, piles, files.
- Notions basiques de complexité algorithmique (temps et mémoire)
- Arbres/graphes
- Représentation en mémoire : liste/matrice d’adjacence
- Parcours : profondeur, largeur
- Plus court chemin dans un graphe : Dijkstra
- Récursivité
Comment s’entraîner ?¶
Il est possible de s’entraîner sur des types d’algorithmes précis, ce post du forum associe de nombreux exercices Prologin à des notions particulières : https://prologin.org/forum/entrainement-3/les-algorithmes-et-structures-de-donnees-a-connaitre-950/. Les différents chapitres du site France-IOI sont de même très efficaces pour ce genre d’entraînement.
Résoudre d’anciens concours ou exercices non classés par thème est aussi une très bonne habitude et permet d’améliorer votre capacité à résoudre des problèmes d’un point de vue général : https://prologin.org/train/.
Aller plus loin¶
Vous pouvez lire la page Ressources II (avancées) sur le forum.