Une IHM: Interface Homme machine désigne un ensemble de moyens et outils informatiques mis en place pour favoriser la communication entre un être humain et une machine. Plusieurs étapes sont nécessaires dans la communication.
Nous allons créer une petite IHM. Son utilisation suivra les étapes suivantes:
Cette IHM, nous allons la créer dans une page WEB. Il va donc nous falloir trois fichiers.
Beaucoup de choses à faire, nous allons y aller par étapes, en commençant par observer.
Pour découvrir tout ceci, nous allons utiliser le logiciel en ligne: jsfiddle que vous obtiendrez en cliquant sur l'image ci-dessous. Cela doit vous rappeler des souvenirs, nous l'avons déjà utilisé en début d'année.
Vous allez lancer le logiciel en cliquant sur l'image ci-dessus. Celui-ci va s'ouvrir dans une seconde fenêtre.
<div class="premier"><input type="text" value="première valeur"/></div> <div class="second"><input type="text" value="seconde valeur"/></div> <div class="addition"><input type="button" value="somme" /></div>
<br>
<div class="zone_résultat" type="text">Résultat</div>
Comme vous pouvez le constater, un premier conténaire nommé 'div' ayant pour attribut 'class="premier"' contient une instruction 'input' qui permet de saisir du texte. En effet, si vous cliquez dans la zone 'première valeur', vous pouvez écrire du texte.
Un second conténaire permet de saisir une seconde valeur.
Un troisième conténaire contient un bouton qui pour le moment ne fait rien.
Enfin un quatrième conténaire affiche le mot 'Résultat'.
input { background-color: #DCDCFA; color: blue; font-family: Calibri; font-size: 20px; padding-left: 20px; } .premier { float:left; } .addition { font-family: Calibri; font-size: 50px; padding-left: 50px; } .zone_résultat { background-color: #DCDCFA; color: blue; font-family: Calibri; font-size: 2vw; padding-left: 1vw; width: 20%; height: 100%; margin-left: 150px; } input:hover { background-color: orange; cursor: pointer; }
Vous constatez que nous avons commencé à mettre en forme. Le designe pour une IHM est important.
Passer la souris au dessus des conténairs : première valeur, seconde valeur et somme pour le constater.
Désormais, nous souhaitons vider les conténaires de leurs textes, pour les remplacer par des nombres.
function vider(texte) { if(texte=="première valeur" || texte=="seconde valeur") return ""; else return texte; }
Vous constatez qu'il ne se passe rien. Pourtant si l'argument est "première valeur ou seconde valeur", la fonction renvoie vide "". Que manque-t-il? Tout simplement, il faut appeler la fonction dans la page 'html' pour que celle-ci serve. C'est ce que nous allons faire maintenant.
<div class="premier"><input type="text" value="première valeur" onClick="Javascript:this.value=vider(this.value);"/></div> <div class="second"><input type="text" value="seconde valeur" onClick="Javascript:this.value=vider(this.value);"/></div> <div class="addition"><input type="button" value="somme" /></div> <br> <div class="zone_résultat" type="text">Résultat</div>
Vous remarquez que l'on a ajouter 'onClick="Javascript:this.value=vider(this.value);"' pour chaque conténaire de saisie. Allez cliquer sur les cases valeurs. Vous devriez constater que le contenu s'efface. Vous pouvez entrer vos valeurs. En effet, l'instruction 'onClick' signifie, si l'on click. Donc si on click, on fait appel à du 'javascript' et l'on remplace cette valeur 'this.value' par le résultat de la fonction 'vider' qui prend comme argument la valeur du conténaire.
Si vous cliquez sur 'résultat', rien ne se passe. Il nous faut ajouter une fonction 'somme'. Qu'il faudra déclencher en cliquant sur le bouton 'somme'.
Code 'javasript'
function somme() { var pvaleur; var svaleur; var somme; pvaleur = document.getElementById("zone_première_valeur").value; svaleur = document.getElementById("zone_seconde_valeur").value; somme = parseFloat(pvaleur)+parseFloat(svaleur); document.getElementById("resultat").innerText=somme; }
Code 'html'
<div class="premier"><input type="text" id="zone_première_valeur" value="première valeur" onClick="Javascript:this.value=vider(this.value);"/></div> <div class="second"><input type="text" id="zone_seconde_valeur" value="seconde valeur" onClick="Javascript:this.value=vider(this.value);"/></div> <div class="addition"><input type="button" value="somme" onClick="somme()"/></div> <br> <div class="zone_résultat" type="text" id="resultat">Résultat</div>
Faites un essaie: Entrez deux valeurs puis appuyez sur le bouton somme.
Qu'avons-nous fait dans la page 'html'?
Décrivons un peu la fonction 'somme';
Ajoutons une soustraction
Code 'javascripte' pour la soustraction, à ajouter à la fin.
function soustraction() { var pvaleur; var svaleur; var soustraction; pvaleur = document.getElementById("zone_première_valeur").value; svaleur = document.getElementById("zone_seconde_valeur").value; soustraction = parseFloat(pvaleur)-parseFloat(svaleur); document.getElementById("resultat").innerText=soustraction; }
Code 'html' de la soustraction à ajouter entre les lignes addition et résultat.
<div class="soustraction"><input type="button" value="soustraction" onClick="soustraction()"/></div>
Code CSS à ajouter dans ".addition".
float:left;
Code CSS à ajouter à la fin
.soustraction { font-family: Calibri; font-size: 50px; padding-left: 50px; }
Faites des additions et des soustractions.
Fermons jsfiddle.
Dans votre dossier de classe/eleve/6_Informatique_embarqué/TP3 se trouve trois fichiers:
Un fichier HTML : calculatrice.
Un fichier CSS : style
Un fichier JavaScript : app
Ouvrer avec google le fichier "calculatrice". Vous devez constatez qu'il n'y a ni mise en forme, ni intéractions. Pour cela, il faut dire au fichier HTML où aller chercher la mise en forme (CSS) et ou aller chercher le programme d'activation (JavaScript).
Vous allez donc ouvrir avec Notepad++ le fichier "calculatrice", puis vous allez copier et coller les deux lignes suivantes entre les balises head, puis enregistrer et enfin actualiser la page google. Vous devriez pouvoir faire des additions et soustractions.
<link href="style.css" rel="stylesheet" />
<script src="app.js" defer></script>