K

Algo - 💡 pourquoi ce cours ?

Si je devais compter le nombre de langages de frameworks qui existent dans ce monde, ce serait aussi long que de se retaper l'intégrale de One Piece. Dans tout ce beau monde là, il y a un bon gros point commun que l'on ne peut pas ignorer: l'algorithme.

Car, lorsqu'on y pense, un algorithme est un ensemble d'instructions qui permettent de résoudre un problème. Et c'est exactement ce que l'on fait en programmation. Les langages comme le C, le C++, le Java, le Python, le PHP, le JavaScript, le Ruby, le C#, le Go, le Rust, le Swift, le Kotlin, le Dart, le R, le Scala, le Perl, le Lua, le Julia, le Haskell, le Lisp, le Clojure, le Cobol, le Fortran, le Pascal, le Basic, le Delphi, le Visual Basic, le Visual Basic .NET, le Visual Basic... ✋!!!

J'EN PERDS MON SOUFFLE! 🤬

Bref, tous ces langages ont un point commun: ils implémentent des algorithmes.

💡 Pourquoi ce cours ?

Ce cours a pour but de vous apprendre les bases de l'algorithmie. Il est destiné aux personnes qui n'ont jamais fait d'algorithmie, ou qui ont besoin d'un petit rappel. Il est aussi destiné aux personnes qui veulent apprendre à programmer, mais qui ne savent pas par où commencer. En effet, il est important de savoir programmer, mais il est encore plus important de savoir résoudre un problème. Et c'est exactement ce que l'on va apprendre dans ce cours.

✋ Disclaimer

La plus part des notions que l'on va aborder sont de maniere générales toutes déjà implémentées dans les langages de programmation.

Exemple: les algos de tri

Dans la vraies vie, je vais utiliser soit:

  • Une fonction de tri déjà implémentée dans le langage que j'utilise
  • Une fonction implémentée par une librairie tierce

Si j'ai une liste de nombres, et que je veux les trier, je vais utiliser la fonction sort de JavaScript:

const numbers = [1, 5, 2, 3, 4]
numbers.sort() // [1, 2, 3, 4, 5]

Et en Python:

numbers = [1, 5, 2, 3, 4]
numbers.sort() # [1, 2, 3, 4, 5]

Je ne vais pas me faire chier à réinventer la roue, et à réimplémenter un algorithme de tri. Je vais utiliser une fonction déjà implémentée dans le langage que j'utilise. Par exemple, je ne vais pas m'embeter à faire ceci en JavaScript:

const numbers = [1, 5, 2, 3, 4]
const sortedNumbers = []

while (numbers.length > 0) {
  let min = numbers[0]
  let minIndex = 0

  for (let i = 1; i < numbers.length; i++) {
    if (numbers[i] < min) {
      min = numbers[i]
      minIndex = i
    }
  }

  sortedNumbers.push(min)
  numbers.splice(minIndex, 1)
}

Et en Python:

numbers = [1, 5, 2, 3, 4]
sorted_numbers = []

while len(numbers) > 0:
  min = numbers[0]
  min_index = 0

  for i in range(1, len(numbers)):
    if numbers[i] < min:
      min = numbers[i]
      min_index = i

  sorted_numbers.append(min)
  numbers.pop(min_index)

On est d'accords que c'est méga relou! 😂

En plus, y'a ChatGPT qui existe, donc bon... 😂