Atelier d’Introduction au numérique
Le programme décrit ci-dessous propose
· une initiation au numérique et au développement d’applications mobiles, avec 5 séances d’une heure :
o introduction aux algorithmes sous forme de jeu (blockly maze)
o  
réalisation d’une application ‘Hello world’ qui
affiche un texte et le dit à haute voix,
puis qui écoute l’utilisateur pour traduire ce qu’il dit dans une autre langue
o réalisation d’une application qui lit le code barre d’un produit alimentaire, va chercher ses caractéristiques sur le Web et affiche son nutriscore,
o réalisation d’une application qui affiche une carte avec la position de l’utilisateur, puis la position d’autres objets
o réalisation ou modification d’une application de type "chasse aux pokemons"
· un atelier de 2 heures sur le son (physique)
Pour l’initiation au numérique et au développement d’applications mobiles, il
faut :
Un PC et un
smartphone ou une tablette (plutôt Android) pour 2 élèves avec accès à
Internet. 
Pour le PC on utilise un navigateur (Firefox ou Chrome).
Pour les tablettes ou  smartphones, on
utilise l’application "AI2
companion" installée depuis le playstore. Prévoir l’accès à Internet
par Wifi, et de préférence sur même réseau local que les PC.
La configuration est décrite
ici. Le bon fonctionnement est à vérifier à l’avance.
Les autres ressources sont en accès libre sur Internet :.
· blockly maze pour l’apprentissage des premières notions d’algorithmie.
· App Inventor pour réaliser des applications mobiles, en exploitant les capteurs des smartphones, Internet et le Web. Comme Scratch, App Inventor vient du MIT, c’est son équivalent pour 12 ans et plus. App Inventor est utilisable de façon anonyme ou avec un compte Gmail comme indiqué ici
Pour l’atelier sur le son il faut :
Un PC avec Libre
office, un smartphone avec une appli sonomètre,
une enceinte BT et en option des petits matériels (bougie et entonnoir). Récupérez
les planches de présentation et les sons dans le fichier compressé à cette adresse.
Décompressez (unzip) ce fichier et vérifiez que la présentation fonctionne en
cliquant sur les liens qui jouent les sons. 
Si vous voulez faire des analyses en live, installer le logiciel audacity  sur le PC et si vous voulez  que les élèves expérimentent eux-mêmes,
prévoyez un smartphone par groupe de 3 ou 4 avec l’application birdnet
et spectrum
analyser ou équivalent (voir descriptif dans les videos)
Principe :
·       
le son est abordé comme une vibration qui se
propage à une vitesse qui dépend du milieu,
puis on expérimente la notion de fréquence, de graves et d‘aigus, d’infra et
ultra-sons
puis la notion de niveau sonore mesuré en décibels, avec les risques pour la
santé,
· on voit ensuite à la représentation du son en fonction du temps, puis en fonction du temps et de la fréquence avec le spectrogramme (on évite la notion de spectre),
· enfin on applique ces notions à des cas concrets : reconnaissance des oiseaux par leur chant (birdNet), mesure d’une distance par l’écho, ou de la réverbération dans une salle.
Déroulé :
· voir planches et media (dans atelierson.zip) en support et résumés : vidéoSon1 et vidéoSon2
Moyens utilisés :
· l’enseignant dispose des planches avec les liens vers les sons à jouer,
· il mesure le niveau sonore avec l’appli sonomètre sur son smartphone (renvoyé à l’écran),
· une enceinte, un entonnoir et une bougie pour illustrer les dangers du niveau sonore,
·       
les outils utilisés sur le PC sont en ligne ou
téléchargeables (audacity),
les outils utilisés sur smartphone sont sur le playstore (sound meter, birdnet
ou merlin bird), ou en ligne (sound spectrum analyzer),
·       
o mesure du niveau sonore avec sound meter
o reconnaissance des oiseaux par leur chant avec Birdnet ou Merlin bird
o affichage avec audacity (PC), également utilisable pour mesurer la vitesse du son et du temps de réverbération.
o en option pour des expériences mobiles avec un smartphone :
§ function generator ou frequency sound generator
Le principe est d’utiliser le smartphone comme un pendule, de
mesurer sa vitesse angulaire avec le gyroscope, d’en déduire sa vitesse
linéaire, puis de mettre en correspondance les énergies cinétique et
potentielle : 
½ v2 = gh  ou ½ v2
– gh = constante.  
A ce stade, la faisabilité n’est pas démontrée : le
principe est simple, mais les sources de bruit 
ou d’erreur sont multiples. Pour l’instant, on a donc abandonné l’idée
de cet atelier.
| 
   Sujet  | 
  
   temps  | 
  
   Activité  | 
  
   Points abordés  | 
  
   supports  | 
 
| 
   Qu’est-ce qu’un   | 
  
   5  | 
  
   introduction  | 
  
   Ce qu’on va faire dans cette 1° séance et les suivantes  | 
  
   | 
 
| 
   | 
  
   25  | 
  
   Blockly, niveaux 1 à 7 ou 9  | 
  
   Apprentissage par la pratique (analyse,  codage, tests, séquences, itérations,
  conditions)  | 
  
   | 
 
| 
   | 
  
   10  | 
  
   Revue : analyser, pseudo-code, traçage, …  | 
  
   Analyser/décomposer,   | 
  
   | 
 
| 
   | 
  
   10  | 
  
   Définition d’un algorithme  | 
  
   Définition d’un algorithme : comme solution à un problème Structuré par les séquences, boucles et branchements conditionnels  | 
  
   | 
 
| 
   | 
  
   ?  | 
  
   Quiz  | 
  
   Quiz sur les algorithmes et la lecture (traçage) de code    | 
  |
| 
   Présentation  | 
  
   10  | 
  
   ·       
  rappels et démarche (avec le Quiz ?) ·       
  présentation de ce que l’on va faire  | 
  
   Quiz sur les algorithmes et la lecture (traçage) de code    | 
  |
| 
   Hello World  | 
  
   15  | 
  
   Hello world 1 ·       
  au démarrage, affichage d’un texte  | 
  
   ·       
  lancement App Inventor ·       
  design, choix composants (ress.) ·       
  transfert smartphone, test  | 
  |
| 
   | 
  
   15  | 
  
   Hello world 2 : ·       
  quand clic sur le bouton :  le smartphone
  dit le texte à haute voix  | 
  
   Design ·       
  Interface / IHM : bouton ·       
  Media : composant texte à parole ·       
  nommage des composants Blocs/programmation o   quand clic sur
  bouton : appeler la fonction qui lit le texte  Notions abordées  ·       
  identification des types de blocs en fonction de  o   leur couleur :
  évènements, propriétés, procédures (ou fonctions) o   leur forme : obtenir
  ou écrire (get/set)  ·       
  procédures et fonctions : certaines ne renvoient pas le résultat
  tout de suite ·       
  évènements ·       
  un algorithme ou un script par évènement. L’application c’est
  l’ensemble des scripts ou programmes exécutés en réponse à des évènements   | 
  
   | 
 
| 
   | 
  
   | 
  
   Hello world 3 (traduction) ·       
  quand on clique sur le bouton :  demander la
  traduction du texte  en anglais ·       
  puis quand la traduction arrive :  afficher la
  traduction et la  dire à haute voix  | 
  
   Design ·       
  media : traducteur /translator ·       
  Interface : zone de texte Blocs/programmation ·       
  initialisation d’une variable pour la langue (langueOut) ·       
  quand clic sur bouton : appel de la procédure qui traduit avec 2
  paramètres la langue dans
  laquelle traduire, et le texte à traduire  ·       
  quand la traduction revient afficher le
  résultat de la traduction dans la zone du texte traduit ne pas oublier
  de modifier la langue du locuteur (texte à parole) Notions abordées  ·       
  variables (couleur orange) et blocs pour les lire et les mettre à
  jour (get/set) ·       
  chaines de caractères (couleur grenat) : get ·       
  modification par programme des propriétés d‘un composant ·       
  procédures ou foncions asynchrones : le programme n’attend pas
  le résultat. L’arrivée du résultat donne lieu à un nouvel évènement (quand
  traduction reçue) ·       
  programmation évènementielle : 
  le programme comme série de scripts qui définissent la réaction à
  des  évènements  | 
  
   | 
 
| 
   | 
  
   | 
  
   Hello world 4 (reconnaissance de la parole) ·       
  quand on clique sur le bouton Ecouter demander au
  smartphone d’écouter ce que  dit
  l’utilisateur ·       
  quand l’application reçoit le texte reconnu afficher  le texte reconnu dans la zone de texte et reprendre
  le programme précédent pour traduire et dire.  | 
  
   Design ·       
  renommer le bouton : BoutonEcouter ·       
  ajouter media : reconnaissance vocale Blocs/programmation ·       
  quand clic sur BoutonEcouter :  o   lancer la reconnaissance
  vocale ·       
  quand texte reconnu :  o   si c’est le texte complet
  (partial= faux) o   puis (reprise du programme
  précédent) :  Attention  Dans la
  reconnaissance vocale (nouvelle version), il ne faut pas traiter les résultats
  partiels, donc vérifier que le paramètre partial est faux.  | 
  
   | 
 
| 
   | 
  
   | 
  
   Hello world 5 (choisir la langue en sortie) ·       
  choix de la langue de traduction avec un spinner  (curseur animé)  | 
  
   Design ·       
  Interface :   o   ajout spinner (ou curseur
  animé) : "SpinnerLangueOutput" Blocs/programmation ·       
  pour l’évènement « après sélection du spinner » : o    mettre à jour la variable langue avec la
  sélection du spinner ·       
  Au démarrage de l’application, évènement "quand screen initialize"
   o   mettre à jour la sélection
  du spinner avec la variable langue, pour que la valeur affichée par le
  spinner soit – dès le départ - la même que la variable langue  | 
  
   | 
 
| 
   | 
  
   | 
  
   Hello world 6 (choisir la langue en entrée) ·       
  choisir la langue en entrée avec un spinner  (curseur animé) ·       
  ajouter une image  | 
  
   Design ·       
  Interface :   o   ajouter un spinner (ou curseur
  animé) : SpinnerLangueInput o   ajouter une image Blocs/programmation ·       
  initialiser la variable langueInput : "fr" ·       
  au démarrage : quand screen1 Initialize o   copier  la liste des langues (propriété Elements)
  de spinnerOutput  o   mettre à jour  la propriété sélection de spinnerInput avec
  langueInput ·       
  pour l’évènement « après sélection du spinnerIput » : o    mettre à jour la variable langueInput avec
  la sélection du spinner  ·       
  Dans le script de  l’évènement
  "quand clic sur bouton Ecouter" : o    mettre à jour la propriété langue du
  composant de reconnaissance vocale avec la variable langueInput  | 
  
   | 
 
| 
   | 
  
   | 
  
   Hello world  7 (traduction
  bidirectionnelle)  ·       
  quand on clique sur le bouton demander au
  smartphone d’écouter ce que  dit
  l’utilisateur et le traduire en texte ·       
  quand l’application reçoit le texte reconnu affichage du
  texte reconnu dans la zone de texte et reprise du
  programme précédent (traduction et vocalisation)  | 
  
   Design ·       
  interface : o   renommer
  "BoutonEcouter" en "BoutonDirectEcouter", mettre couleur
  en gris o   créer un bouton
  "BoutonReverseEcouter" et mettre couleur en rouge o   créer un arrangement
  horizontal et mettre les  2 boutons à
  l’intérieur o   ajouter un label entre les
  deux, avec un texte vide en largeur 25% Blocs/programmation ·       
  Dans l’évènement quand clic sur "boutonDirectEcouter", ajouter o   mettre la couleur de fond
  de screen1 à gris o   mettre" langueInput"
  à SpinnerInput.Selection  o   mettre"
  langueOutput" à SpinnerOutput.Selection ·       
  dupliquer le script quand clic sur "boutonDirectEcouter" et
  le recommmer en quand clic sur "boutonReverseEcouter", et modifier
  son contenu (couleur et inversion input/output) o   mettre la couleur de fond
  de screen1 à rouge o   mettre"
  langueOutput" à SpinnerInput.Selection  o   mettre"
  langueInput" à SpinnerOutput.Selection  | 
  
   | 
 
| 
   | 
  
   | 
  
   | 
  
   | 
  
   | 
 
| 
   Open food
  facts   | 
  
   | 
  
   Conception et réalisation d’une application Qu’est-ce qu’Internet ?  | 
  
   Web et Internet (URL) Capteurs  | 
  |
| 
   Géolocalisation
  et cartographie  | 
  
   | 
  
   Exercices sur la géolocalisation avec un smartphone Présentation des types de géolocalisation (GPS, Wifi, …) Réalisation d’une application qui affiche sa position sur une carte  | 
  
   Géolocalisation (GPS, Wifi, …) Serveurs de cartes (open street map)  | 
  
   | 
 
| 
   Application géolocalisée Pokemons  | 
  
   | 
  
   
 
 
 
  | 
  
   
 
 
 
 
 
  | 
  
   | 
 
cliquer sur
l’image pour lancer
· notions abordées :
o algorithmes, décomposition, diagramme fonctionnel ou pseudo-code
· objectifs pédagogiques :
o  
comprendre la notion d’algorithme comme méthode
de résolution de problème,  
et comprendre sa structure en séquences d’actions, boucles
et conditions.
o appréhender les étapes d’un développement : décomposition, passage du langage naturel au langage informatique (pseudo code), développement et test progressifs
· Déroulé : cf. supports
o 35 mn : jeu blockly maze : labyrinthe
§ séquences (niveaux 1-2), boucles (niveaux 3-5), conditions (niveaux 6-8)
(pour info : ce
jeu similaire est plus difficile, mais basé sur la géométrie)
o  
10 mn revue de définition d’un algorithme :
planches  (1a et1b planches 3 à 34)
o 10 mn écrire un algorithme / décomposition, pseudo code, codage, traçage
§ écrire – en classe entière - le pseudo code du niveau 9 (ou 8 selon le niveau)
§ 
exercice de lecture/traçage de code :
https://docs.google.com/forms/d/e/1FAIpQLSfqwk17gyssRa-ztWGRXQb_K8Jh48ZjgqkkvvrDujmVO4MqYw/viewform
o 5 mn debrief
§ qu’est-ce qu’un algorithme ?
§ comment écrire un algorithme : décomposer, écrire, tester
§ 
exercices à préparer  le cours suivant : niveaux 9 et 10 ou
niveau 10
https://blockly.games/maze?lang=fr&level=9&&skin=0
o quiz sur les algorithmes (peut être fait au début du cours suivant
§ 
Quiz Google forms sur les
algorithmes :
https://docs.google.com/forms/d/e/1FAIpQLSf6v7jlArX32jfIS26okCdFk9tGQRMxlt8MH3J8SS5F1SYQhg/viewform 
§ 
exercice de lecture/traçage de code :
https://docs.google.com/forms/d/e/1FAIpQLSfqwk17gyssRa-ztWGRXQb_K8Jh48ZjgqkkvvrDujmVO4MqYw/viewform
Dans cette séance on commence par concevoir et réaliser ensemble une première application très simple qui consiste à afficher, "bonjour le monde", puis avec le nom de l’utilisateur, puis avec une couleur de fond aléatoire, puis en rafraichissant l’affichage en fonction d’un capteur. Elle permet parcourir des notions diverses.
· notions abordées :
o l’environnement de développement App Inventor
o les étapes de design et de programmation,
o les blocs : forme, couleur et catégorie
o les évènements, scripts, variables et procédures
· objectifs pédagogiques :
o savoir réaliser une application mobile simple
o comprendre
§ les étapes : design avec le choix des ressources, puis programmation et tests
§ la nature des blocs : get/set ou obtenir/mettre (correspondant à leur forme)
§ la structure évènementielle d’une application (event driven)
§ les catégories de blocs : variables, propriétés, procédures et fonctions, évènements, texte, booléens (associées à leur couleur)
§ la notion de variable
§ la notion de procédure
§ la notion de capteur (moyen de perception de l’environnement)
· déroulé sommaire
o  
SMS game : réalisation d’une loterie, faite
et expliquée par l’enseignant. 
Les élèves jouent à la fin en envoyant un SMS, le gagnant tiré au sort reçoit
un SMS
cf.  vidéo de développement
de cette appli
 
o "bonjour le monde" réalisation d’une première application par les élèves
§ 
§ V2 : Bonjour + nom utilisateur
§ 
+ fond d’écran de couleur aléatoire
§ V4 : ajout du rafraichissement d’écran quand on secoue l’appareil
o  
déroulé détaillé : voir chapitre 
Rédaction en cours
Rédaction en cours
· séance 2 – "bonjour le monde"
Dans cette séance les élèves réalisent une application qui va écouter ce que dit l’utilisateur, le traduire dans une autre langue et le redire dans cette langue. L’application fait appel à des fonctions de reconnaissance vocale, de traduction et de diction (texte à parole).
· notions abordées :
o décomposition fonctionnelle : services et procédures asynchrones (on n’attend pas la réponse, son arrivée donne lieu à un évènement traité dans un autre script)
o utilisations de services externes et/ou en ligne : reconnaissance de la parole, traduction, …
o fonctions dites "asynchrones" : dans un script, le programme n’attend pas la réponse à une demande. L’arrivée de la réponse donnant lieu à un évènement traité par un nouveau script (programmation évènementielle).
· objectifs pédagogiques :
o décomposer ce que doit faire l’application et trouver les composants pour le faire
§ 1. Convertir parole en texte, 2. Traduire texte, 3. dire le texte traduit
o voir la différence entre une fonction qui donne la réponse tout de suite et une fonction (ou procédure) asynchrone où on n’attend pas la réponse.
o utiliser une fonction avec des paramètres en entrée
o modifier les propriétés d’une fonction
o utiliser les données ou paramètres transmis par un évènement
o utiliser une liste déroulante (spinner) pour choisir la langue
· déroulé sommaire (voir déroulé détaillé en annexe)
o  
V1 : version initiale (un bouton par
étape) 
o Design
§ 1 bouton pour écouter et convertir en texte ce que dit l‘utilisateur
§ 1 bouton pour traduire le texte dans une autre langue
§ 1 bouton pour lire à haute voix le texte traduit
§ 2 zones de texte pour afficher les textes reconnus et traduits
§ 3 composants : reconnaissance vocale, traduction et ‘texte à parole’
o Codage/programmation : 5 scripts
§ Quand clic sur 1° bouton : lancer la reconnaissance vocale
§ Quand le texte a été reconnu : l’afficher
§ Quand clic sur 2° bouton : lancer la traduction
§ Quand le texte a été traduit : afficher ce texte traduit
§ Quand clic sur 3° bouton : convertir le texte traduit en parole
o  
V2 : enchainement des opérations sur un
bouton
§ Codage/programmation : 3 scripts
· Quand clic sur 1° bouton : lancer la reconnaissance vocale
· Quand le texte a été reconnu : l’afficher et lancer la traduction
· Quand texte a été traduit : afficher traduction et convertir en parole
   
  
     
  
     
   
o  
V3 : choisir les langues en entrée et en
sortie 
§ Design
· Ajout de 2 spinners (curseurs animés) pour choisir chaque langue dans une liste. On définit la liste dans les propriétés et la langue sélectionnée au départ.
§ Codage
· Quand l’utilisateur a sélectionné une nouvelle langue, mise à jour de la variable qui porte cette langue : langueInput ou langueOutput
   
  
     
  
     
   
o  
V4 : traduction bidirectionnelle, selon
l’orientation du smartphone
§ Design
· ajout d’un bouton pour dicter dans l’autre sens
· accéléromètre pour détecter la position du smartphone
§ Codage
· Quand clic sur bouton1 Dicter
o langueInput ¬ langue sélectionnée par le curseur 1
o langueOutput ¬langue sélectionnée par le curseur 2
o appeler la procédure dicter
· Quand clic sur bouton1 Dicter
o langueInput ¬ langue sélectionnée par le curseur 2
o langueOutput ¬langue sélectionnée par le curseur 1
o appeler la procédure dicter
   
  
     
  
     
   
   
  
     
  
     
   
Bonus avec l’accéléromètre
· Quand téléphone secoué
o si (acc z >7.5)
appeler la procédure dicter (direct)
o sinon sii (acc z <2.5)
appeler la procédure dicter (inverse)
Rédaction en cours
Rédaction en cours
L’animateur réalise une application qui attend et enregistre les SMS, puis - quand on clique sur un bouton – tire un numéro au hasard et lui envoie un SMS "vous avez gagné".
| 
   étape  | 
  
   Description  | 
  
   Notions  | 
 
| 
   Design conception  | 
  
   Design /
  décomposition: ·       
  Dessiner l’interface  et écrire
  une phrase qui décrit l’application ·       
  Identifier  o   les ressources
  nécessaires :  o   les évènements  o   et données manipulées
  (liste numéros)  | 
  
   maquette  évènements composants visibles (bouton) et cachés : SMS variable de type liste  | 
 
| 
   Design réalisation  | 
  
   | 
  
   Ajout et paramétrage des composants, Mise en page  | 
 
| 
   Pseudo code  | 
  
   ·       
  déclarer et initialiser la liste des numéros  ·       
  quand application démarre o  
  activer SMS ·       
  quand SMS reçu o  
  ajouter numéro à liste numéros ·       
  quand bouton cliqué o  
  choisir un numéro au hasard o  
  envoyer un sms à ce numéro  | 
  
   Pseudo code de chaque évènement  | 
 
| 
   codage  | 
  
   | 
  
   codage vérification, traitement des erreurs  | 
 
| 
   Création exécutable  | 
  
   ·       
  Installation d’AI2 companion depuis le playstore ·       
  Construire l’exécutable ·       
  Télécharger l’application sur le smartphone  | 
  
   création de l’exécutable (.apk) 
 essais  | 
 
| 
   étape  | 
  
   Description  | 
  
   Notions vues  | 
 
| 
   version 1  | 
  
   Préparation :
  installer l’appli AI2 companion sur le smartphone Description :
  au démarrage, l’application affiche 
  ‘bonjour le monde’ Design :
   Ajout d’un composant label
  : label texte Centrage verticale et
  horizontal de Screen1 Réglage de la taille  et de la couleur des caractères de
  labelTexte Evènements à
  traiter:  quand l’application démarre
  (screen.initialize) Pseudo
  code :                      quand
  Screen1. Initialize                                        mettre
  le texte de labelTexte à "bonjour le monde" Codage : Construire
  l’exécutable : Télécharger
  sur le smartphone : Tester  | 
  
   Réalisation d’une application complète minimale Design :  ·       
  Choix et ajout d’un composant label pour afficher un texte Mise en page : · modification des propriétés de Screen1 : centrage horizontal et vertical, choix de la couleur de fond · modification des propriétés de labelTexte, taille et couleur des caractères compilation du code,
  transfert smartphone,  | 
 
| 
   Version 2  | 
  
   Description :
  au démarrage, afficher  ‘bonjour’ + le
  nom de l’utilisateur Design :
  sans changement Evènements :
  sans changement Pseudo
  code :                      Initialiser
  la variable nom avec une valeur                      quand
  screen1. Initialize                         mettre le texte de labelTexte à
  "bonjour le monde" + nom Codage : Construire
  l’exécutable : Télécharger
  sur le smartphone : Tester  | 
  
   Variable de type texte Bloc de jointure de textes   | 
 
| 
   Version 3  | 
  
   Description :  comme précédent + choisir une couleur aléatoire pour le fond d’écran couleur du fond d’écran de façon Design : sans changement Evènements : sans changement Pseudo code :  Initialiser la variable couleur  quand screen1. Initialize mettre le texte de labelTexte à "bonjour le monde" + nom mettre dans la variable couleur, une dose
  aléatoire de rouge, vert et bleu Codage :  Construire l’exécutable, Télécharger sur le smartphone, Tester  | 
  
   Définition d’une couleur depuis une liste de base Définition d’une couleur par ses composantes RVB entre 0 et 255 Fonction qui renvoie un entier aléatoire Modification d’une propriété de Screen1  | 
 
| 
   Version 4  | 
  
   Description :  idem + rafraichir quand on secoue
  l’appareil Design :  Ajouter un composant non visible
  accéléromètre Evènements :  Nouvel évènement quand accéléromètre secoué Pseudo code :  Initialiser
  la variable couleur  quand
  screen1. Initialize appeler la
  fonction rafraichir  quand
  accéléromètre. secoué appeler la
  fonction rafraichir  procédure rafraichir mettre  labelTexte.texte à "bonjour le
  monde" + nom mettre
  dans la variable  couleur, une couleur
  qui contient une dose aléatoire de rouge, de vert et de bleu Codage : Construire l’exécutable,
  Télécharger sur le smartphone, Tester  | 
  
   Utilisation d’un composant accéléromètre Utilisation d’une procédure pour : 1. éviter les doublons 
  | 
 
| 
   étape  | 
  
   Description  | 
  
   Notions  | 
 
| 
   Description  | 
  
   l’application doit permettre d’écouter ce que dit l’utilisateur, le traduire dans une autre langue et le redire dans cette langue  | 
  
   | 
 
| 
   Décomposition  | 
  
   ·       
  "dicter"
  et convertir en texte à afficher (reconnaissance vocale) ·       
  "traduire"
  et afficher traduction qui est affichée ·       
  "lire »
  le texte traduit à haute voix  | 
  
   Analyse, décomposition fonctionnelle  | 
 
| 
   Design réalisation  | 
  
   Composants visibles ·       
  3
  boutons :  "écouter",
  "traduire", "lire" ·       
  une zone de
  texte pour le texte reconnu  ·       
  une zone de
  texte pour le texte écouté traduit  Composants invisibles ·       
  reconnaissance
  vocale, translator, texte à parole     
   Propriétés      ·       
  ajouter une
  image au format png (transparent) en fond d’écran   ·       
  choisir le nom
  et la taille des boutons  | 
  
   Ajout et paramétrage des composants, Mise en page  | 
 
| 
   Données et variables  | 
  
   Données et variables de l’application ·       
  langueInput :
  la langue à écouter en entrée ·       
  langueOutput :
  la langue de traduction en sortie ·       
  texte écouté
  (propriété du composant texte) ·       
  texte
  traduit  (propriété du composant texte)  | 
  
   | 
 
| 
   Pseudo code  | 
  
   ·       
  définir/initialiser
  langueInput et langueOutput ·       
  quand clic sur
  bouton dicter o  
  mettre la
  propriété langue à écouter à langueInput o  
  appeler la
  fonction de reconnaissance vocale ·       
  quand texte  reconnu o  
  afficher le
  texte dans la zone de texte ecoute ·       
  quand clic sur
  traduction o  
  appeler la
  fonction de traduction avec en paramètres, le texte à traduire et la langue
  (langueOutput) ·       
  quand traduction
  obtenue o  
  afficher la
  traduction dans la zone de texte trad.  ·       
  quand clic sur
  lire o  
  mettre la
  propriété langue à lire à langueOutput o  
  appeler la
  fonction texte à parole avec le texte traduit  | 
  
   | 
 
| 
   codage  | 
  
   | 
  
   | 
 
| 
   étape  | 
  
   Description  | 
  
   Notions  | 
 
| 
   Description  | 
  
   Dans cette
  version, on va enchainer les actions après avoir déclenché la reconnaissance
  vocale avec le bouton dicter, donc 
  lancer la traduction dès que le texte est reconnu et lancer la lecture
  dès que la traduction est disponible. Les boutons traduire et lire  deviennent inutiles.  | 
  
   Analyse, décomposition fonctionnelle  | 
 
| 
   Description  | 
  
   ·       
  Quand l’utilisateur clique sur le bouton « écouter » ·       
  quand le texte est reconnu afficher le résultat et
  demander la traduction ·       
  quand la traduction arrive, l’afficher et demander la lecture à haute
  voix  | 
  
   Analyse, décomposition fonctionnelle  | 
 
| 
   Design  | 
  
   ·       
  Ajouter un composant ‘son’ pour pouvoir faire vibrer ·       
  On n’utilisera plus les boutons traduire et lire,   | 
  
   | 
 
| 
   Pseudo code  | 
  
   · Quand l’utilisateur clique sur le bouton "dicter" o faire vibrer o et demander la reconnaissance vocale ·       
  quand le texte est reconnu o   afficher le résultat o   demander la traduction ·       
  quand la traduction arrive,  o   afficher la traduction o   demander la lecture à haute
  voix  | 
  
   | 
 
| 
   codage  | 
  
   | 
  
   | 
 
o
| 
   étape  | 
  
   Description  | 
  
   Notions  | 
 
| 
   Description  | 
  
   Dans cette version, l’utilisateur peut
  choisir la langue en entrée et la langue en sortie   | 
  
   | 
 
| 
   Décomposition  | 
  
   On va utiliser un curseur animé (spinner ou liste déroulante) pour choisir chacune des langues. La liste des langues sera définie dans les propriétés des 2 curseurs animés (on peut aussi les définir dans le programme, quand Screen1.initialize)  | 
  
   | 
 
| 
   Design/ composants  | 
  
   ·       
  Composants visibles : ajouts  o   un
  arrangement horizontal (largeur remplir parent) o   avec 2
  curseurs animés (spinner) In et Out  §  sélection
  ‘fr’ pour in,  ‘en’ pour out §  element :
  fr,ar,de,en,es,it pour les deux o   séparés
  par un label (largeur fill parent) · invisibles : inchangés  | 
  
   | 
 
| 
   Design  | 
  
   | 
  
   | 
 
| 
   Pseudo code  | 
  
   ·       
  Après sélection dans la liste des langues à écouter
  : o   Mettre  la langue sélectionnée comme langue en
  entrée  ·       
  Après sélection dans la liste des langues de
  traduction : o Mettre la langue sélectionnée comme langue de traduction  | 
  
   | 
 
| 
   code  | 
  
   | 
  
   | 
 
| 
   étape  | 
  
   Description  | 
  
   Notions  | 
 
| 
   Description  | 
  
   · l’application doit traduire dans un sens quand c’est l’utilisateur qui parle et dans l’autre quand c’est l’interlocuteur qui répond.  | 
  
   | 
 
| 
   Design / analyse  | 
  
   ·       
  utiliser
  l’orientation du smartphone (vertical ou tendu vers l’utilisateur) pour
  déterminer qui parle.  ·       
  à
  chaque changement changer la couleur de l’écran  | 
  
   | 
 
| 
   Design / composants  | 
  
   · visibles : sans changement · invisibles : ajout d’un composant accéléromètre  | 
  
   | 
 
| 
   Design  | 
  
   | 
  
   | 
 
| 
   Pseudo code  | 
  
   o  
    | 
  
   | 
 
| 
   codage  | 
  
   | 
  
   | 
 
| 
   Bonus accéléro  | 
  
   ·       
  quand smartphone secoué change  o  
  si accélération
  z < 2.5   § 
  appeler
  dicterTraduireEtDire(direct) o  
  sinon
  accélération z < 2.5   § appeler dicterTraduireEtDire(inverse)  | 
  
   |