442 Crespin Etal

  • View
    143

  • Download
    0

Embed Size (px)

Text of 442 Crespin Etal

  • Apprendre linformatique avec Javascool a` travers la

    programmation de petits jeux

    Benot Crespin

    Dernie`re mise a` jour : 11 mars 2014

    Version en ligne :http://javascool.gforge.inria.fr/documents/crespin-etal.pdf

    Table des matie`res

    1 Preambule 41.1 Avertissement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2 Quest-ce quun langage de programmation ? . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.2.1 Langages compiles vs interpretes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.2 Javascool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.3 Objectifs et structure de ce support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Fil rouge : programmer des jeux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Versions de Javascool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.6 Pre-requis : des notions danglais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2 Principes de base 62.1 La philosophie Javascool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Installation et lancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Pour commencer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Elements de syntaxe elementaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3 La programmation imperative avec Javascool 83.1 HelloWorld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.1.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.1.2 Exercice : Avec des etoiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    3.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.1 Exercice : Afficher une ligne vide . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.2 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.3 Exercice : Autour du cercle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.4 Exercice : Pow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.5 Exercice : Racines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    3.3 Instructions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.2 Exercice : Toujours le cercle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.3 Exercice : Ordre de 3 nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.4 Tester les entrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3.4 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.4.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.4.2 Exercice : Ordre de 3 nombres (bis) . . . . . . . . . . . . . . . . . . . . . . . . . . 143.4.3 Exercice : Reecrire des algorithmes en utilisant des fonctions . . . . . . . . . . . . 15

    3.5 Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.5.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.5.2 Exercice : Verifier les entrees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1

  • 3.5.3 Exercice : Encore des etoiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.5.4 Exercice : Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    3.6 Fil rouge : deviner un nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.6.1 Exercice : Nombre de coups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.6.2 Exercice : Faire jouer lordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    4 Debogage, Mise au point 184.1 Interpreter les erreurs du compilateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    4.1.1 Points-virgules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.1.2 Mots-clefs incorrects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.1.3 Accolades et parenthe`ses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.1.4 Utilisation incorrecte des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.1.5 Comparaisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    4.2 Erreurs dexecution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2.1 Division par zero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244.2.2 Division entie`re . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2.3 Depassement de capacite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.2.4 Point-virgule derrie`re un test ou une boucle . . . . . . . . . . . . . . . . . . . . . . 264.2.5 Boucles infinies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274.2.6 Recursivite non controlee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.3 Mise au point de programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.3.1 Assertions et tracage de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294.3.2 Jeux dessai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.3.3 Calcul de la vitesse dexecution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304.3.4 Soigner la presentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    4.4 Le jeu du calcul mental . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    5 Manipuler linformation 345.1 Tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

    5.1.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.1.2 Exercice : Avec des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375.1.3 Exercice : Pendu et Mastermind . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    5.2 Calculs entiers et reels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.1 Exercice du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385.2.2 Exercice : Calcul du reste de la division euclidienne . . . . . . . . . . . . . . . . . . 395.2.3 Exercice : Calcul de la racine carree approchee . . . . . . . . . . . . . . . . . . . . 39

    5.3 Calcul binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395.3.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.3.2 Exercice : Hexadecimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.3.3 Exercice : Pair ou impair . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    5.4 Logique et booleens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.4.1 Exercices du tutoriel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405.4.2 Exercice : Tableaux de booleens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.5 Bibliothe`que mathematique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415.6 Caracte`res et chanes de caracte`res . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    5.6.1 Exercice : retour sur le pendu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.6.2 Exercice : Conversions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425.6.3 Exercice : Verification de donnees . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    6 Aspects avances 426.1 Structures et classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    6.1.1 Exercice : triangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.1.2 Exercice : Date de naissance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    6.2 Sauvegarder des donnees dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.2.1 Exercice : Creation dun fichier de carres . . . . . . . . . . . . . . . . . . . . . . . . 466.2.2 Exercice : Lecture dun fichier structure . . . . . . . . . . . . . . . . . . . . . . . . 46

    2

  • 6.2.3 Exercice : High-scores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466.3 Donnees partagees, copies et effets de bord . . . . . . . . . . . . . . . . . . . . . . . . . . 46

    6.3.1 Exercice : Trouvez les erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486.3.2 Exercice : Enchanement de conditions . . . . . . . . . . . . . . . . . . . . . . . . . 496.3.3 Exercice : plusieurs variables avec le meme nom . . . . . . . . . . . . . . . . . . . . 49

    6.4 Activites Javascool pour le dessin 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496.4.1 Exercice : Logo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.4.2 Exercice : Dessiner sur une image . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526.4.3 Exercice : Manipulation dimages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

    7 Manipulation de listes, darbres et de graphes 537.1 Structures chanees et arborescentes . .