Connexion élèves

Choisir le(s) module(s) à installer :

Champagne !

Paradigmes de programmation

Il existe plusieurs manière de concevoir un programme; on parle de paradigmes de programmation.

Jusqu'ici, vous avez utilisé ( a priori ) uniquement la programmation impérative; dans ce type de programmation, le code est constitué de données stockées dans des variables de différents types ( entiers, tableaux,...), et sont manipulées par des fonctions.

Mais il existe bien d'autres paradigmes, et vous en verrez deux autres cette année :

Chaque langage ne permet pas forcément tous les paradigmes de programmation : le langage C par exemple ne permet pas la POO, le langage Haskell est uniquement fonctionnel, etc...
Avec Python, tous les paradigmes de programmation sont possibles, impératif, objet, fonctionnel,....c'est une chance !

L'utilisation de tel ou tel paradigme de programmation dépend du but visé et des contraintes du programme à écrire : par exemple, le paradigme fonctionnel est utilisé dans les domaines où l'on cherche un code robuste dans lequel les données ne sont pas susceptibles d'être modifiées accidentellement, comme par exemple dans le domaine spatial; la POO permet d'écrire un code clair et facilement maintenable, etc...Chaque paradigme a ses avantages et ses inconvénients.

En introduction au concept de POO, nous allons tout de suite voir un exemple de problème dans lequel ce paradigme montre ses avantages.

Une "bulle" qui monte...

Vous allez coder en Python une petite animation qui, dans un premier temps, fera "monter" une "bulle" dans une fenêtre.

Les scripts de ce chapitre utilisent la bibliothèque p5.js, elle-même inspirée de Processing, pour créer et gérer des animations ( entre autres ).

Vous pouvez trouver ici un tuto qui présente ce module.

Pour pouvoir utiliser ce module dans les éditeurs de ce chapitre, penser auparavant à l'installer à l'aide du bouton Bouton module.

Pour commencer, nous allons considérer l'ébauche de code ci-dessous qui vous permettra de démarrer :

import p5 from random import randint # liste des couleurs possibles couleurs = ['white', 'red', 'green', 'blue', 'cyan', 'yellow', 'magenta'] # fonction de mise en place def setup(): p5.createCanvas(600, 400) # fonction d'animation def draw(): global x, y, couleur, taille, vitesse # 1. Effacement global de la fenêtre : p5.background(0) # 2 . Déplacement de la bulle vers le haut en tenant compte de sa vitesse; # Quand la bulle arrive en haut de la fenêtre, on réinitialise ses caractéristiques. pass # 3. Dessin de la bulle dans la fenêtre : p5.fill(couleurs[couleur]) p5.ellipse(x, y, taille) # initialisation des caractéristiques de la bulle x = randint(10,590) y = p5.height couleur = randint(0,6) taille = randint(10,20) vitesse = randint(15,20) p5.run(setup, draw)

Quelques commentaires sur ce code :

On remarque que les variables caractéristiques de la bulle ( x, y, vitesse, ...) sont définies dans le programme principal, mais qu'elles devront être modifiées dans la fonction draw de façon à faire bouger la bulle.

Cependant, une fonction ne peut modifier que les variables qui lui sont locales, c'est à dire définies dans sa propre portée ( autrement dit, définies dans le corps de cette fonction )...la solution est donc ici de rendre ces variables globales au script, c'est à dire modifiables à n'importe quel endroit; c'est le rôle du mot clé global placé au début de la fonction draw.

L'usage des variables globales est à limiter au strict nécessaire, car souvent source de problèmes...vous verrez que la POO est un moyen de s'affranchir de ce genre de problème !

A vous de compléter le code dans la fonction draw de façon à :

  • faire se déplacer la bulle vers le haut du canevas ( attention, les coordonnées diminuent vers le haut : l'origine de ces coordonnées est en haut à gauche du canevas. )
  • tester si la balle arrive en haut de la fenêtre : dans ce cas, réinitialiser toutes les caractéristiques de la bulle de façon à en faire "monter" une nouvelle.
Repère Tkinter

SOLUTION

Deux bulles...

Travail à faire

Compléter votre code précèdent de façon à faire "monter" deux bulles en même temps.

SOLUTION

Trois, quatre,... bulles...

Compléter votre code précèdent de façon à faire "monter" plusieurs bulles en même temps !

Là, il y a 50 bulles...

SOLUTION

Vous commencez à voir le problème ??