LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI – Mise au point de programmes – Recherche de bugs 1/2
Objectifs pédagogiques :
✓ Connaître les principales règles de conception de programmes
✓ Savoir détecter les bugs dans son code
✓ Savoir répondre aux causes typiques de bugs : problèmes liés au typage, effets de bord non désirés, débordements dans les tableaux, instruction conditionnelle non exhaustive, choix des inégalités, comparaisons et calculs entre flottants, mauvais nommage des variables, etc
✓ Mettre en œuvre des protocoles et des garde-fous permettant d’éviter des bugs liés à des saisies utilisateurs
D'où vient le mot “bug” ? Du mot anglais qui signifie « insecte ». La légende date au 9 septembre 1947 jour du soi-disant premier bug de l'histoire informatique : un papillon de nuit se serait bloqué dans le calculateur Mark II de l'université Harvard aux Etats-Unis entrainant une défaillance de la machine... L’informaticienne Grace Hopper, quand elle l’a retrouvé, l’a scotché dans son carnet de bord.
Il semblerait cependant que cette histoire cache une réalité toute autre… Le terme était vraisemblablement déjà utilisé depuis plusieurs années…
Activité 1 – Rechercher et éviter les bugs
1. Regarder la capsule vidéo sur la mise au point de programme et la détection de bugs sur le site nsi4noobs.fr 2. Indiquer la structure complète d’une levée d’exception sous Python avec un try/except
3. Quelle syntaxe Python permet d’effectuer des jeux de tests avec affichage d’informations aidant à la détection de bugs ? Donner un exemple d’utilisation
4. Comment s’appelle le processus d’utilisation des variables globales conduisant à des bugs et problèmes de débogage ?
Activité 2 – Ajout de sécurité dans vos codes
1. Écrire une fonction demandant à l’utilisateur la saisie d’un entier. La fonction saisie_entier(question) devra :
✓ Demander à l’utilisateur la saisie d’un entier grâce au texte contenu dans question
✓ Contrôler que l’utilisateur a bien saisi un entier. Tant que l’utilisateur n’a pas saisi un entier, la fonction repose la même question et affiche le message d’erreur correspond au problème rencontré.
✓ Renvoyer l’entier saisi en retour
Langages et programmation
Mise au point de programmes Recherche des bugs
LGT Saint-Exupéry, Mantes-la-Jolie
Activité Terminale NSI – Mise au point de programmes – Recherche de bugs 2/2
2. Améliorer votre fonction précédente, en ajoutant deux paramètres, début et fin.
La fonction devient alors saisie_entier_controle(question, début, fin) et doit :
✓ Contrôler que la saisie est bien un entier (comme dans la fonction précédente)
✓ Vérifier que cet entier est bien dans l’intervalle [début, fin]
✓ Si début est prend la valeur None, alors cela signifie qu’il n’y a pas de borne inférieure. n ] - ; fin ]
✓ Si fin, paramètre optionnel est omis ou prend la valeur None, cela signifie que l’intervalle n’a pas de borne positive : n [début ; + [
3. Reprendre la base de données sur les villes en France (voir sur l’ENT). A partir de vos scripts d’interrogation de la base de données, réaliser un mini éditeur de requêtes SQL. Celui-ci posera 3 questions :
✓ Question 1 : sur quelle table effectuer la requête de sélection
✓ Question 2 : quels champs devront être affichés
✓ Question 3 : quelle condition booléenne sera appliquée à cette requête.
Vous mettrez tout en œuvre afin que quelque soit la saisie de l’utilisateur votre programme ne se s’arrête pas, impose la saisie de caractères à chaque question (fonction de contrôle) et affiche correctement les éventuels messages par suite d’erreurs de syntaxe dans la requête SQL.
Votre script affichera les données sous forme de tableau.