ProgrammeL1 · S1Informatique fondamentale
L1S1Informatique fondamentale

Algorithmique et structures de données 1

Découvrir les variables, les fonctions, les tableaux et les premiers raisonnements de complexité en C et Python.

#C#Python#algorithmes#tableaux#complexité
9chapitres
5exercices corrigés
8questions de quiz
0/9chapitres maîtrisés
À LA FIN DE CE COURS

Objectifs d’apprentissage

  • Décomposer un problème simple en étapes, préciser les entrées, les sorties et les invariants d’un algorithme.
  • Écrire et lire des fonctions élémentaires en Python et transposer leur logique en C avec des types explicites.
  • Parcourir, rechercher et agréger les éléments d’un tableau en traitant correctement les indices et les cas limites.
  • Construire des jeux de tests pertinents et justifier la correction d’un algorithme par un raisonnement structuré.
  • Estimer le coût en temps et en mémoire d’un programme à l’aide des notations O, Ω et Θ, sans confondre cas et ordre de grandeur.
AVANT DE COMMENCER

Prérequis utiles

  • Manipuler les entiers, les comparaisons, les expressions booléennes et les opérations arithmétiques usuelles.
  • Savoir lire un pseudo-code et exécuter mentalement une boucle simple avec une trace de variables.
  • Disposer d’un environnement Python ou C et connaître les notions élémentaires de fichier, compilation ou interprétation.
CHAPITRE 01 L1 · S1

Décomposer un problème

35 min de lectureLeçon originale de révision

Idée directrice

Un algorithme est une suite finie d’instructions non ambiguës qui transforme des entrées en sorties. Avant de coder, on écrit un contrat : préconditions acceptées, résultat . La décomposition en fonctions limite la taille du raisonnement : chaque fonction reçoit des paramètres, calcule une valeur et laisse un état compréhensible. Une fonction explicite son cas limite ; par exemple, le maximum d’une liste vide n’est pas défini.

Méthode. Pour calculer le maximum d’une liste non vide, choisir le premier élément comme résultat provisoire, puis comparer chaque suivant et remplacer si nécessaire. Exemple guidé : pour [3, 8, 2], on initialise m=3, puis 8>3 donne m=8, 2>8 est faux ; la sortie est donc 8. En Python : def maximum(a): m = a[0] for x in a[1:]: if x > m: m = x return m.

Erreurs fréquentes : initialiser à zéro (faux si toutes les valeurs sont négatives), oublier le contrat de non-vacuité, ou mélanger calcul et affichage. Point de contrôle : écrire en une phrase la précondition, la sortie et un test pour [-4, -2].

Points à retenir
  • Un contrat relie préconditions, calcul et résultat observable.
  • Une fonction courte isole une responsabilité et facilite le test.
  • L’initialisation doit être compatible avec toutes les valeurs autorisées.
Synthèse du chapitre

Un algorithme est une suite finie d’instructions non ambiguës qui transforme des entrées en sorties. Avant de coder, on écrit un contrat : préconditions acceptées, résultat . La décomposition en fonctions limite la taille du raisonnement : chaque fonction reçoit des paramètres, calcule une valeur et laisse un état compréhensible.