Présenter des résultats
Un bon programme ne se contente pas de calculer juste : il présente ses résultats clairement. Un tableau bien aligné se lit dix fois plus vite qu'une liste en vrac.
Le problème
noms est un tableau vaut ['Léa', 'Maximilien', 'Tom']
scores est un tableau vaut [1250, 85, 9]
pour i de 0 à longueur(noms) - 1
affiche noms[i] + ' ' + scores[i]
fin pour
Les scores ne sont pas alignés : chaque nom a une longueur différente. Pour aligner, il faut que chaque nom occupe la même largeur.
Compléter un texte
L'idée : après chaque nom, on ajoute des points jusqu'à atteindre une largeur fixe. Le nombre de points à ajouter est largeur - longueur(texte), et repeter_texte les fabrique.
fonction completer(contenu, largeur)
manque est un nombre vaut largeur - longueur(contenu)
si manque < 1 alors
retourne contenu
fin si
retourne contenu + ' ' + repeter_texte('.', manque)
fin fonction
affiche completer('Léa', 14) + ' 1250'
affiche completer('Maximilien', 14) + ' 85'
affiche completer('Tom', 14) + ' 9'
La console affiche :
Léa ........... 1250Maximilien .... 85Tom ........... 9
Les points guident l'œil du nom jusqu'au score, comme dans le sommaire d'un livre.
Question : Combien de points completer('Tom', 14) ajoute-t-il après « Tom » ? — 11. « Tom » fait 3 caractères : il en manque 14 - 3 = 11 pour atteindre la largeur.
Aligner des nombres à droite
Pour des nombres, on complète devant : les unités se retrouvent alors les unes sous les autres.
fonction aDroite(valeur, largeur)
contenu est un texte vaut convertir_texte(valeur)
manque est un nombre vaut largeur - longueur(contenu)
si manque < 1 alors
retourne contenu
fin si
retourne repeter_texte('.', manque) + contenu
fin fonction
affiche aDroite(1250, 6) // ..1250
affiche aDroite(85, 6) // ....85
affiche aDroite(9, 6) // .....9
convertir_texte transforme le nombre en texte, pour pouvoir mesurer sa longueur.
Un tableau complet
Titre, ligne de séparation, colonnes alignées, total : on assemble tout.
fonction completer(contenu, largeur)
manque est un nombre vaut largeur - longueur(contenu)
si manque < 1 alors
retourne contenu
fin si
retourne contenu + ' ' + repeter_texte('.', manque)
fin fonction
articles est un tableau vaut ['Cahier', 'Stylo plume', 'Gomme', 'Trousse']
prix est un tableau vaut [2.5, 7.9, 0.8, 12]
total est un nombre vaut 0
affiche 'TICKET DE CAISSE'
affiche repeter_texte('=', 28)
pour i de 0 à longueur(articles) - 1
affiche completer(articles[i], 16) + ' ' + decimal(prix[i], 2) + ' €'
total ajoute prix[i]
fin pour
affiche repeter_texte('-', 28)
affiche completer('TOTAL', 16) + ' ' + decimal(total, 2) + ' €'
repeter_texte('=', 28) trace une ligne de 28 signes : pas besoin de les taper un par un.
Soigner les nombres
Un prix affiché 7,900000001 fait mauvais effet. Quelques fonctions à garder sous la main :
decimal(x, 2) : deux chiffres après la virgule au maximum ;arrondi(x) : à l'entier le plus proche ;pourcentage(valeur, total) : un taux, à arrondir ensuite.
reussis est un nombre vaut 17
tentes est un nombre vaut 23
affiche 'Réussite : ' + decimal(pourcentage(reussis, tentes), 1) + ' %'
affiche 'Soit environ ' + arrondi(pourcentage(reussis, tentes)) + ' %'
Pour un affichage encore plus soigné, couleur met en valeur une ligne, et html permet d'ajouter un vrai titre.
En résumé
- Aligner = donner la même largeur à chaque élément d'une colonne.
repeter_texte fabrique le remplissage et les lignes de séparation.- Les textes se complètent à droite, les nombres à gauche.
decimal et arrondi évitent les nombres à rallonge.