Introduction à Java et à l'algorithmique
L1 MASS - 2011 / 2012
Chez moi ?
L'installation de Processing chez vous
Année passée
Trouver le site web précédent
Questions ?
Contactez moi
Crible
Animation sur le crible d'Eratosthène
News
Les dernières news (par ordre chronologique) :
- La correction du TP 10 est disponible
- De nouvelles aides sont disponibles pour le projet.
- L'ordre de passage a été mis à jour (28/03/2012).
- Le cours 10 et le TP 10 sont disponibles
- La correction du TP 09 est disponible
- Le cours 09 et le TP 09 sont disponibles
- La correction du TP 08 est disponible
- Le cours 08 et le TP 08 sont disponibles
- La correction du TP 07 est disponible
- L'énoncé du projet est disponible ici
- Le cours 07 et le TP 07 sont disponibles
- La correction du DS1 est disponible
- La correction du TP 06 est disponible
- Le cours 06 et le TP 06 sont disponibles
- Information premier devoir surveillé
- La correction du TP 05 est disponible
- Le cours 05 et le TP 05 sont disponibles
- La correction du TP 04 est disponible
- De nombreux exemples très graphiques sur openProcessing.
- Le cours et le TP 04 sont disponibles
- La correction du TP 03 est disponible
- L'école supérieure des arts décoratifs (ENSAD) et le MIT ont proposé un workshop qui utilise Processing pour le design. Voir.
- Le cours et le TP 03 sont disponibles
- La correction du TP 02 est disponible
Descriptif
Ce cours expose les bases de l'algorithmique à l'aide du langage de programmation JAVA. Il permet de commencer à se familiariser avec un langage de programmation objet. L'approfondissement de l'étude de ce langage se poursuivra en Licence 3. Nous utiliserons l'environnement processing qui simplifie la synthaxe JAVA et permet facilement de faire des graphiques.
hautResponsable de l'enseignement
Sébastien Verel - chargé cours et TP
Vous pouvez me contacter pour tout ce qui concerne cet enseignement et votre orientation.
Evaluation
Les modalités d'évaluation et leur valeur se composent de :
- Un devoir surveillé (D1) : lundi 5 mars 2012, entre 8h et 10h, M.2.7 (Obligatoire pour tous) - 40%
- Un controle terminal (CT) : lundi 16 avril 2012, entre 8h et 10h, M.2.7 (Obligatoire pour tous) - 40%
- Un devoir non surveillé (DNS): commencant le 11 mars et finissant le mardi 10 avril (Obligatoire pour tous) - 20%
Retrouver les devoirs de l'année 2009.
- Enoncé et correction du devoir DS1 avec le code processing code.
PROJET
Sujet
Les informations concernant le projet sont dans ce document.Aides
- La méthode deplacer() modifie seulement la position (abscisse et ordonnée) des objets en fonction de la vitesse (cf aide plus loin).
- Les méthode ralentir() et accelerer() modifient seulement la vitesse, plus préciser son intensité.
- Les méthodes tournerDroite() et tournerGauche() modifient seulement l'angle de la direction de la vitesse.
- Le dessin du vaisseau (forme triangulaire) ne dépend que de la position et de la direction de la vitesse. Vous pouvez commencer par dessiner un vaisseau sous forme d'un point pour simplifier.
- Une bonne strategie est d'enregistrer votre programme (avec nom différent) qui fonctionne après chaque étape. Comme cela vous pouvez présenter la dernière version de votre programme quoi qu'il arrive par la suite.
- Dans un constructeur d'une classe fille, un seul appel au constructeur 'super'. Voir cet exemple et également la documentation !
- Voici un schéma qui permet de calculer les nouvelles coordonnées après un déplacement: Schema (jpg).
- Il faut distinguer la méthode ayant une certaine fonctionnalité et le moyen de l'exécuter (depuis la fonction keyPressed() par exemple). Voir la correction du tp 09 et aussi cet exemple.
- Pour la classe Systeme, elle est très similaire à la classe Population du tp 09, elle possède donc un champ qui est un tableau d'objets Planete.
- Voici un exemple de code utilisant plusieurs classes et l'héritage avec extends.
Rendre le projet
Le projet était à rendre le mardi 10 avril avant 23h55 par la plateforme jalon.Oral
Les présentations en personne seront le :- Vendredi 13 avril à matin et après-midi (cf. ordre de passage) salle M.2.8 (entre 8h à 10h et entre 13h à 15h) et salle M.2.7 (entre 10h et 12h).
Vous êtes nombreux, il n'est pas possible de prendre du retard. Le temps est décompté de la manière suivante :
- 2 minutes pour le changement et l'installation
- 7 minutes de présentation et démonstration
- 1 minute de question
Pour votre présentation qui devra se faire sous forme de présentation de type "powerpoint", les logiciels OpenOffice et acrobatReader (format pdf) sont à disposition. La définition de l'écran est de 800x600px. Vous devrez avoir votre présentation sur une clé usb (si possible au format pdf) ou sur votre propre ordinateur.
Vous trouverez de nombreux conseils trés utiles sur le web pour réussir cette épreuve. La grille d'évaluation est disponible ici pour vous guider.
Le rapport sur de l'année 2008/2009 est disponible ici. haut
Objectifs
Liste des objectifs de l'enseignement sur lequel repose les évaluations :
- Connaitre des algorithmes historiques
- Connaitre une définition d'algorithme
- Connaitre l'environnement Processing
- Editer et commenter un code java avec processing
- Savoir afficher un texte
- Savoir afficher des formes graphiques simples
- Ecrire un algorithme avec des affectations
- Ecrire un algorithme qui echange la valeur de deux variables
- Savoir utilisés les entrées de la souris avec Processing
- Ecrire un algorithme avec des tests simples
- Ecrire un algorithme avec un test multiple
- Ecrire des programmes java avec des tests simples ou multiples
- Ecrire un algorithme avec une itération de type "pour"
- Ecrire un algorithme avec des itérations imbriquées de type "pour"
- Ecrire un algorithme avec des l'itérations de type "tant que"
- Contrôler les événements clavier avec Processing
- Ecrire un algorithme correct d'au moins 8 lignes
- Connaître le principe de séparation de code
- Ecrire correctement une méthode java
- Comprendre et calculer le résultat d'un algorithme donné
- Modifier un algorithme donné
- Utiliser une partie d'algorithme donné
- Corriger un algorithme donné
- Lire et enregistrer une valeur dans un tableau
- Recherche des valeurs extrémales d'un tableau
- Utilisation d'un accumulateur pour réaliser un calcul dans un tableau
- Savoir concevoir un jeu de tests pour un algorithme
- Savoir inspecter les valeurs de certaines données d'un algorithme
- Faire la différence entre aléatoire et pseudo-aléatoire
- Simuler un nombre pseudo-aléatoire entier ou flottant entre 2 bornes données
- Ecrire un algorithme utilisant un générateur pseudo-aléatoire
- Ecrire un algorithme qui génére des séries temporelles du type u(t+1) = a u_t + b + e et u(t+1) = (a + e) u(t) + b
- Connaitre une définition d'objet et classe
- Savoir déclarer un objet d'une classe donnée
- Savoir utiliser les champs et les méthodes
- Savoir utiliser la documentation de l'API de Java,
- Connaitre les classes String, Point et Random
- Savoir définir une méthode toSTring
- Connaitre la notion de références d'objet
- Savoir déclarer une classe (champs, contructeurs, et méthodes)
- Recherche itérative d'un élément dans un tableau
- Recherche dichotomique d'un élément dans un tableau
- Dénombrement d'un élément dans un tableau
- Dénombrement d'un élément dans deux tableaux en parallèle
- Savoir utiliser "this" en Processing
- Savoir utiliser la classe ArrayList
- Savoir utiliser un héritage simple entre classes en Processing
- Ecrire un algorithme récursif avec un seul test
- Etablir le lien entre définition par récurrence et algorithme récursif
- Recherche dichotomique d'un élément dans un tableau
Installation de processing
Téléchargez le logiciel à l'adresse http://www.processing.org (Download) et installez-le. Voici un guide de configuration.
Voici un extrait gratuit du livre de Reas & Fry et une traduction de l'Ecole d'Art d'Aix-en-Provence.
Un très bon manuel d'utilisation est d'installation en français ici.
Une courte page wikipedia sur processing.
Enfin un cours s'adressant aux étudiants de Licence 1 math/informatique de Jean-Paul Roy.
Supports de Cours et de TP
Voici l'ensemble des supports de cours (avec le code source des exemples), des émoncés des TP, et le code source des corrections.
Séance | Titre | cours | Ex. | TP | cor. |
---|---|---|---|---|---|
01 | Introduction à l'algorithmique et à JAVA | cours | tp | cor | |
02 | Algorithmes conditionnels | cours | ex | tp | cor |
03 | Algorithmes itératifs | cours | ex | tp | cor |
04 | Séparation de code et fonctions | cours | no | tp | cor |
05 | Structures de données indexées | cours | ex | tp | cor |
06 | Simuler l'aléatoire | cours | ex | tp | cor |
07 | Séparation de code, classes et objets | cours part1 part2 | tp | cor | |
08 | Recherche et dénombrement dans les tableaux | cours | ex | tp zip | cor |
09 | Compléments sur les objets | cours part1 part2 | ex | tp zip | cor |
10 | Algorithmes récursifs | cours | tp | cor cor |
Emploi du temps
10 séances de cours et TP :
- cours : lundi de 8h à 10h, M.2.7
- tp (gr CE) : lundi de 10h15 à 12h15, PV 214 et 215
- tp (gr P) : lundi de 13h à 15h, PV 214 et 215
dernière modification : 7 mars 2012