GROUPE ISN 1 de 7 ENSEIGNER L ISN Propositions d exercices indépendants ayant pour but de se familiariser avec JavaScool. Rejoindre le site http://javascool.gforge.inria.fr/ Trois niveaux de difficulté croissante sont proposés : Niveau Exercices * Numéros 1 à 5 ** Numéros 6 à 10 *** Numéros 15 à 20
GROUPE ISN 2 de 7 1. LES SOLDES Le programme doit calculer le prix soldé d un article à partir du prix et d une remise. Pour les articles qui valent moins de 149.99 pas de remise, pour ceux compris entre 150 et 300 une remise de 10% est accordée, au-delà de 300 une remise de 15% sera accordée. Le programme devra lire le prix, puis afficher la remise et le prix avec remise. 2. AFFICHER À L ENVERS Écrivez un programme qui lit deux nombres au clavier et qui affiche dans l'ordre inverse, séparés par des virgules, les entiers compris entre ces deux valeurs, en en sautant un sur deux. On suppose que l'utilisateur entre le plus petit des deux nombres en premier. Par exemple, si l'utilisateur tape 11 puis 20, votre programme doit afficher : 20,18,16,14,12. 3. PRODUIT SCALAIRE Le programme doit calculer le produit scalaire de deux vecteurs de dimension 3. Les 2 vecteurs seront saisis par l utilisateur. 4. CENTIÈME INFERIEUR Écrivez un programme qui lit un nombre décimal positif au clavier et qui calcule la valeur de ce nombre tronquée au centième, puis l'affiche. EXEMPLE : entrée : 42.8185789 sortie : 42.81 5. RÉALISATION D UN SOLVEUR Le programme calculera la solution d un système d équations : y1= a1x+ b1 y2= a2x+ b2 Les paramètres ai, bi sont à fixer par l utilisateur. Cette résolution se fera sur un domaine de définition et avec une précision fixée par l utilisateur. Si les solutions n appartiennent pas au domaine de définition, le programme affichera qu il n y a pas de solution. Deux algorithmes possibles : par dichotomie ou par pas successifs (on pourra comparer la rapidité et la régularité des deux algorithmes)
GROUPE ISN 3 de 7 6. NOMBRE DE SECONDES Écrivez un programme qui lit un nombre de secondes entier au clavier et qui affiche cette durée en jours, heures, minutes et secondes au format "X jours, X heures, X minutes et X secondes". Exemple : Entrée : 156578 ; Sortie : 1 jours, 19 heures, 29 minutes et 38 secondes. 7. INITIALES Écrivez un programme qui lit une ligne tapée au clavier et affiche en majuscules les initiales des mots qu'elle contient. Le texte contient uniquement des lettres minuscules non accentuées et des espaces. Les mots sont séparés par des espaces (un espace entre deux mots successifs). Il n'y a pas d'espace avant le premier mot, qui commence au premier caractère. Exemple : Entrée : exemple de texte avec des minuscules et des espaces ; Sortie : EDTADMEDE 8. CONVERTISSEUR D UNITÉS Écrivez un programme qui convertit des valeurs du système métrique en valeurs du système de mesure américain. On fournit des mesures à votre programme, en mètres, grammes ou degrés Celsius et vous devez les convertir respectivement en pieds, livres et degrés Fahrenheit. Voici les règles de conversion à utiliser : 1 pied = 0.3048 mètres ; 1 gramme = 0.002205 livres; Température en degrés Fahrenheit= 32 + (1.8 * Température en degrés Celsius). Entrée : La première ligne de l'entrée contient un entier N : le nombre de valeurs que vous devez convertir vers le système américain. Chacune des N lignes suivantes contient un nombre décimal, suivi d'un espace et d'une lettre minuscule parmi m, g et c, respectivement pour mètres, grammes et degrés Celsius. Sortie : Vous devez afficher N lignes sur la sortie, correspondant aux mesures de l'entrée, dans l'ordre. Chaque ligne doit contenir un nombre décimal, suivi d'un espace et d'un caractère parmi p, l ou f (respectivement pieds, livres et degrés fahrenheit).
GROUPE ISN 4 de 7 9. ROTATION DE TEXTE Écrivez un programme qui affiche un texte fourni en entrée, après avoir effectué sur ce texte une rotation dans un sens ou dans l'autre, d'un certain nombre de caractères. Entrée : La première ligne de l'entrée contient un entier N : le nombre de caractères du texte. La deuxième ligne contient un entier R : le nombre de caractères dont on doit faire tourner ce texte. Un nombre négatif correspond à une rotation vers la gauche, un nombre positif à une rotation vers la droite. La troisième ligne contient le texte, composé de caractères majuscules et minuscules pouvant être accentués, de signes de ponctuation et de caractères '_', mais pas d'espaces. Sortie : Vous devez afficher une ligne sur la sortie : le texte d'entrée, après lui avoir appliqué la rotation indiquée. 10. CRYPTAGE PAR GRILLE Un système de cryptage consiste à utiliser une grille de traduction, qui permet de remplacer chaque lettre par une autre, de manière à rendre le texte illisible. On utilise la grille inverse pour retrouver le texte original. 1. Écrivez un programme qui à partir d une grille, reconstitue le texte. Les caractères peuvent être minuscules ou majuscules, mais sans accents ni espaces. Les autres caractères (ponctuation, '_', etc ), sont laissés tels quels. Entrée : La première ligne de l'entrée contient la grille de cryptage ou de décryptage, composée de 26 caractères minuscules. La première lettre correspond à la lettre par laquelle il faut remplacer tous les 'a' du texte crypté, la deuxième tous les 'b', etc. La deuxième ligne de l'entrée contient un entier N : le nombre de caractères du texte à décrypter. La troisième ligne de l'entrée contient le texte crypté. Entrée : qwertyuiopasdfghjklzxcvbnm ; 8 ; Xiyqigd! Sortie : Vous devez afficher une ligne sur la sortie : le texte décrypté. Sortie : Bonjour! 2. Compléter le travail en réalisant un programme qui produit la grille de décryptage lorsqu on lui donne une grille de cryptage. Exemple : Entrée : qwertyuiopasdfghjklzxcvbnm sortie : qxvmcnophqrszyijadlegwbuft
GROUPE ISN 5 de 7 11. CODAGE AFFINE Rappel: On commence par remplacer chaque lettre par son rang dans l'alphabet en commençant au rang 0 (certaines variantes commencent au rang 1) : A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Deux entiers a et b sont choisis comme clef. Chaque lettre claire est d'abord remplacée par son équivalent numérique x puis chiffrée par le calcul du reste de la division euclidienne par 26 de l'expression affine ax + b (soit ax + b mod 26). Afin d'avoir un "vrai" codage c'est-à-dire qui puisse être décodé sans ambigüité le théorème de Bachet-Bezout permet de montrer que dans le couple d'entiers (a, b) on a a qui est premier avec 26. 1. Écrire un programme qui permet de choisir a et b, code un texte, calcule la clef de décryptage et décode le texte crypté. 2. Modifier le programme pour que le codage respecte les majuscules et les minuscules, les espaces (un espace est codé par un espace) et les éléments de ponctuation.
GROUPE ISN 6 de 7 12. CHIFFRE DE VIGENÈRE Dans la proglet abcdalgos, on souhaite écrire un programme qui crypte un message sur le principe du chiffre de Vigenère en connaissant la clé de chiffrage. Pour coder un message à la main, on utilise la table de Vigenère ci contre. Pour chaque lettre en clair, on sélectionne la colonne correspondante et pour une lettre de la clé on sélectionne la ligne adéquate, puis au croisement de la ligne et de la colonne on trouve la lettre chiffrée. La lettre de la clé est à prendre dans l'ordre dans laquelle elle se présente et on répète la clé en boucle autant que nécessaire. Exemple : Texte en clair : j'adore ecouter la radio toute la journee Clé répétée : M USIQU EMUSIQU EM USIQU EMUSI QU EMUSIQU ^ ^^^ Colonne O, ligne I : on obtient la lettre W. Colonne D, ligne S : on obtient la lettre V. Colonne A, ligne U : on obtient la lettre U. Colonne J, ligne M : on obtient la lettre V. Le texte chiffré est alors : V'UVWHY IOIMBUL PM LSLYI XAOLM BU NAOJVUY. Si on veut déchiffrer ce texte, on regarde pour chaque lettre de la clé répétée la ligne correspondante et on y cherche la lettre chiffrée. La première lettre de la colonne que l'on trouve ainsi est la lettre déchiffrée. Texte chiffré : V'UVWHY IOIMBUL PM LSLYI XAOLM BU NAOJVUY Clé répétée : M USIQU EMUSIQU EM USIQU EMUSI QU EMUSIQU ^ ^^^ Ligne I, on cherche W: on trouve la colonne O. Ligne S, on cherche V: on trouve la colonne D. Ligne U, on cherche U: on trouve la colonne A. Ligne M, on cherche V: on trouve la colonne J. 1. Écrire un programme qui chiffre et déchiffre un message en utilisant ce principe de codage. 2. Modifier le programme pour que le codage respecte les majuscules et les minuscules, les espaces (un espace est codé par un espace), et pour que la clé utilisée puisse être un texte plus long qu un mot (souvent le chiffre de Vigenère était utilisé avec des livres comme clé).
GROUPE ISN 7 de 7 13. JEU DES 7 ERREURS Deux images ont sept différences. Dans la proglet codagepixels, écrire un programme qui affiche l une des images avec en rouge les sept différences. On pourra utiliser des images dans le site http://chezmaya.com/jeu-7erreurs 14. UN CERCLE DANS CHAQUE QUADRANT Dans la proglet algodemaths, écrire un programme qui, lorsque l on clique sur l un des quatre quadrants, affiche un cercle dans ce quadrant durant 100 ms. 15. JEU SIMON En utilisant l exercice précédent, dans la proglet algodemaths programmer le jeu Simon (sans son). (si l on ne connaît pas le jeu : http://www.1980-games.com/jeux-reflexion/jeux-flash/simon.php ). Le jeu, électronique, éclaire une des quatre couleurs et produit un son toujours associé à cette couleur. Le joueur doit alors appuyer sur la touche de la couleur qui vient de s'allumer dans un délai assez court. Le jeu répète la même couleur et le même son, puis ajoute au hasard une nouvelle couleur. Le joueur doit reproduire cette nouvelle séquence. Chaque fois que le joueur reproduit correctement la séquence, le jeu ajoute une nouvelle couleur.