Un algo pour Mario – Au programme : – Qu'est ce qu'un algorithme ?



Un algo pour Mario – Au programme : – Qu'est ce qu'un algorithme ?

0 0


fdls

Atelier algo pour la Fête de la Science 2013 puis 2014, 2015 et 2016

On Github bolaft / fdls

Un algo pour Mario

Au programme :

  • Qu'est ce qu'un algorithme ? (5 minutes)
  • Comment construire un algorithme (5-10 minutes)
  • Imaginer un algorithme pour contrôler Mario (25-30 minutes)

Qu'est ce qu'un algorithme ?

Généralités

  • Fondamentaux :
    • Une méthode systématique à appliquer pour résoudre un problème donné
    • Exemple : écrire une recette de cuisine, indiquer son chemin à quelqu'un...
    • Uniquement des instructions compréhensibles par celui qui l'exécute
    • Pratique pour les programmes informatiques
  • Historique :
    • Forme latine (Algorismus) du nom du mathématicien Al Khwarizmi (VIIIe siècle)
    • Plus ancien algorithme connu : l'algorithme d'Euclide (300 av. J.-C)

Le principe

  • On cherche à produire un résultat à partir d'éléments connus

Exemple : trier des cartes

Formulation basique Prendre une carte du tas et regarder sa couleur S'il y a déjà une pile de cette couleur, placer la carte dans cette pile Sinon, créer une nouvelle pile avec cette carte S'il reste une carte en main, retourner à 2
Formulation algorithmique
POUR CHAQUE carte du tas
    prendre la carte en main

    POUR CHAQUE pile
        SI couleur de la carte ÉGAL couleur de la pile ALORS
            placer la carte dans la pile
        FIN SI
    FIN POUR

    SI une carte est en main ALORS
        placer la carte dans une nouvelle pile
    FIN Si
FIN POUR

Comment construire un algorithme

Les variables

Affectation de variables

Affectation directe
chaine = "blablabla"
nombre = 15
flottant = 15.141
booléen = vrai
Affectation indirecte
nombre1 = 23
nombre2 = nombre1

Opérations sur les variables

Opérations arithmétiques
nombre1 = 5 * 2
nombre2 = 12/3 
nombre3 = (nombre1 + 10) / nombre2
Concaténation
mot1 = "Hello"
mot2 = "World"

phrase = mot1 + " " + mot2

Les conditions

Structures logiques

SI
pluie = vrai

SI pluie ALORS
    prendre un parapluie
FIN SI
SINON
pluie = vrai

SI pluie ALORS
    prendre un parapluie
SINON
    étendre le linge
FIN SI
SINON SI
pluie = faux
canicule = vrai

SI pluie ALORS
    prendre un parapluie
SINON SI canicule ALORS
    prendre un parasol
FIN SI

Opérateurs logiques

Conjonction et disjonction
neige = vrai
vent = faux

SI vent ET neige ALORS
    rester chez soi
SINON SI vent OU neige ALORS
    prendre un manteau
FIN SI
Égalité, différence, supériorité et infériorité
x = 1
y = 3
z = 3

SI x <= y ALORS
    x = 4
FIN SI

SI y == z ET x > y ALORS
    x = x + z
FIN SI

Les boucles

TANT QUE
x = 0

TANT QUE x < 10
    x = x + 1
FIN TANT QUE
POUR
y = 1

POUR x DE 1 À 3
    x = x + y
FIN POUR
POUR CHAQUE
liste = {12, 23, 5, 34, 10 ...}

POUR CHAQUE x DE liste
    x = x * 2
FIN POUR CHAQUE

Les fonctions

Sans argument
FONCTION chiffre()
    RETOURNER 5
FIN FONCTION

x = chiffre()
Avec argument
FONCTION doubler(p)
    r = p * 2
    RETOURNER r
FIN FONCTION

x = doubler(12)

Mario

  • Informations (variables) connues :
    • liste de monstres
    • la position horizontale et verticale de Mario et de chaque monstre
    • idem, mais à la frame précédente
    • si Mario a la clef
    • si Mario peut traverser une canalisation
  • Actions (fonctions) possibles :
    • courir à droite
    • courir à gauche
    • sauter
    • se baisser

Language & tutos :

processing.org
processingjs.org

Sources :

github.com/Pomax/Pjs-2D-Game-Engine
github.com/bolaft/fdls