Programmation Scratch PRO1026 Programmation et enseignement Programmation Scratch Sujets Introduction Calcul de la factoriel Calcul du nombre triangulaire Notions de programmation Variables, vecteurs Structures conditionnelles Structures itératives Fonctions et récursion Passage de messages
Introduction La fonction factorielle (n!) consiste à multiplier la valeur de n termes entre eux et est définie comme suit: Si n = 0, alors n! = 1; Si n > 0, alors n! = n (n –1)!; Ainsi: 0! = 1; 1! = 1; 2! = 2 x (2‐1)! = 2 x 1! = 2 x 1 = 2; 5! = 5 x (5‐1)! = 5 x 4! = 5 x 4 x (4‐1) != 5 x 4 x 3! = … = =5 x 4 x 3 x 2 x1 = 120 n! = n x (n‐1) x (n‐2) x … x 1 Donc, si n = 0 alors la solution est de 1. Cela constitue le cas de base. Dans les autres cas, nous sommes dans un cas complexe qui nécessite une récurrence.
Notions de programmation (Vecteur): voir l’exemple EX-FACTORIELLE-RECURSIF-VECTEUR.sb2 Calcule de la factorielle: création d’une pile (vecteur) pour stocker les valeurs intermédiaires
Notions de programmation (Vecteur): voir l’exemple EX-FACTORIELLE-RECURSIF-VECTEUR.sb2 Calcule de la factorielle: création d’une pile (vecteur) pour stocker les valeurs intermédiaires
Notions de programmation (Vecteur): voir l’exemple EX-FACTORIELLE-RECURSIF-VECTEUR.sb2 Calcule de la factorielle: création d’une pile (vecteur) pour stocker les valeurs intermédiaires (fonctions utiles pour la manipulation de liste (vecteurs)) Ajout d’un élément à la fin d’une liste Suppression de l’élément 1: premier dernier: dernier élément supprimé tout: tous les éléments supprimés Accéder à un élément dans une liste 1: premier ajouté dernier: dernier ajouté
Notions de programmation (Vecteur): voir l’exemple EX-FACTORIELLE-RECURSIF-VECTEUR.sb2 Calcule de la factorielle: création d’une pile (vecteur) pour stocker les valeurs intermédiaires n! = n * n-1 * n-2 * …. * 3 * 2 Premier appel de factorielle(n) n ajouter à la liste (pile) Second appel de factorielle(n-1) Valeur du dernier élément de la pile * n-1 ajouter à la liste (pile) Après le n-1 ième appels à factorielle() Critère d’arrêt number1 = 1 Affichage des résultats
Notions de programmation (Vecteur): voir l’exemple EX-FACTORIELLE-RECURSIF-VECTEUR.sb2 Calcule de la factorielle: création d’une pile (vecteur) pour stocker les valeurs intermédiaires Fonction principale (point d’entrée)
Notions de programmation (Vecteur): voir l’exemple EX-FACTORIELLE-RECURSIF-VECTEUR.sb2 Calcule de la factorielle: création d’une pile (vecteur) pour stocker les valeurs intermédiaires Fonction factorielle()
Notions de programmation (Variable): voir l’exemple EX-FACTORIELLE-RECURSIF.sb2 Calcule de la factorielle: création d’une variable pour accumuler les valeurs intermédiaires n! = n * n-1 * n-2 * …. * 3 * 2 Premier appel de factorielle(acc, n) La variable acc est mise à jour avec la valeur n Second appel de factorielle(acc, n-1) La valeur de acc = acc * n-1 Après le n-1 ième appels à factorielle() Critère d’arrêt number1 = 1 Affichage des résultats
Notions de programmation (Variable): voir l’exemple EX-FACTORIELLE-RECURSIF.sb2 Calcule de la factorielle: création d’une variable pour accumuler les valeurs intermédiaires
Notions de programmation (Variable): voir l’exemple EX-FACTORIELLE-RECURSIF.sb2 Calcule de la factorielle: création d’une variable pour accumuler les valeurs intermédiaires
Notions de programmation: voir l’exempleEX-NOMBRE-TRIANGULAIRE.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage de chaque bloc, affichage du nombre de blocs Nombre blocs de la base Nombre de blocs par étage Nombre d’étages Total Nombre de blocs total de la pyramide Largeur du carré dessiné Numéro de l’étage dessiné
Notions de programmation: voir l’exempleEX-NOMBRE-TRIANGULAIRE.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage de chaque bloc, affichage du nombre de blocs LCarre = 360 / nbBlocBase
Notions de programmation: voir l’exempleEX-NOMBRE-TRIANGULAIRE.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage de chaque bloc, affichage du nombre de blocs (px,py) py = -180 + Lcarre * noEtage LCarre px = -(nbBlocBase/2 * LCarre) + noEtage-1 * LCarre/2 + noBlocEtage * LCarre Position x du premier bloc d’un étage
Notions de programmation: voir l’exempleEX-NOMBRE-TRIANGULAIRE.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage de chaque bloc, affichage du nombre de blocs noBlocEtage += 1 nbBlocTotal += 1
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage des blocs d’un étage par des lutins différents, traçage de chaque bloc, affichage du nombre de blocs Transmission de message Un lutin peut transmettre un message à un autre lutin Un lutin peut être réveillé quand il reçoit un message
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage des blocs d’un étage par des lutins différents, traçage de chaque bloc, affichage du nombre de blocs Programmation multi-lutins
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage des blocs d’un étage par des lutins différents, traçage de chaque bloc, affichage du nombre de blocs Programmation multi-lutins (Pomme: fonction principale) Demande la largeur de la pyramide Initialisation des variables Transmission d’un message (SignalChatDebout) au Lutin Chat Debout pour lancer le traçage des blocs (premier étage) Attente d’un message (SignalPomme) pour l’affichage du nombre de blocs total Affichage du nombre de blocs total
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage des blocs d’un étage par des lutins différents, traçage de chaque bloc, affichage du nombre de blocs Programmation multi-lutins (Chat Debout) Sur réception du message SignalChatDebout Traçage des blocs d’un étage complet Si c’est le dernier étage à traçer, transmission du message SignalPomme pour permettre de retourner le contrôle au lutin Pomme Sinon, transmission du message SignalChatVolant pour lancer le traçage des blocs du prochain étage
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2 Calcule du nombre triangulaire: Calcul du nombre de blocs d’une pyramide, traçage des blocs d’un étage par des lutins différents, traçage de chaque bloc, affichage du nombre de blocs Programmation multi-lutins (Chat Volant) Sur réception du message SignalChatVolant Traçage des blocs d’un étage complet Si c’est le dernier étage à traçer, transmission du message SignalPomme pour permettre de retourner le contrôle au lutin Pomme Sinon, transmission du message SignalChatDebout pour lancer le traçage des blocs du prochain étage
Notions de programmation (programmation multi-lutins, transmission de message): voir l’exemple EX-NOMBRE-TRIANGULAIRE-COLLABORATION.sb2