IFT1025 :: Démo été 2010
Programmation II

Index

Informations
Préparation examens
Aide aux devoirs
Matériel démo/cours
Ressources utiles


Informations

Nom: Maxime Chevalier-Boisvert
E-mail: chevalma (à) iro (point) umontreal (point) ca
Heures de bureau: jeudi matin, 10h00 à 12h00
Bureau: local 3331 du pavillon André-Aisenstadt

Notez que si vous ne pouvez me voir pendant mes heures de bureau, il peut être possible d'arranger un rendez-vous par courriel.


Préparation aux examens

Préparation au final

Voici un ensemble de questions d'examens des années précédentes qui, je crois, sont une bonne préparation au final. Je vous suggère de répondre à toutes ces questions comme s'il s'agissait d'un véritable examen. Vous trouverez les réponses à la fin du document.

Document de préparation au final

Voici des exemples de code de traversée d'arbres en utilisant des méthodes récursives et itératives, illustrant la traversée en profondeur et en largeur, ainsi que les ordres de traversée préfixe, postfixe et infixe.

Code de traversée d'arbres

Quand vous répondrez au véritable examen final, si vous ne vous rappelez pas du nom exact d'une méthode Java, vous pouvez quand même écrire un nom approximatif, pourvue que votre votre intention soit claire.

Si vous n'êtes pas certain de la réponse à une question, gardez cette question pour la fin de l'examen, et répondez de votre mieux. Éviter surtout de laisser des questions sans réponse.

Préparation à l'intra

J'ai rassemblée des questions d'examens des années précédentes qui, je crois, sont une bonne préparation à l'intra. Je vous suggère de répondre à toutes ces questions comme s'il s'agissait d'un véritable examen. Vous trouverez les réponses à la fin du document.

Document de préparation à l'intra


Aide aux devoirs

TP4

Pour ce devoir, vous devez implanter une simulation du protocole CSMA/CD sur un canal de communication partagé. Vous devez utiiser un bloc synchronized Java pour simuler l'envoi d'un message sur le canal. Ceci ne correspond pas à l'usage typique du bloc synchronized. Quand un thread essaie d'envoyer un message sur le canal, il fait un appel à la méthode wait (à l'intérieur du bloc synchronized) pendant un délai fixe qui correspond au temps nécessaire pour envoyer le message.

Quand le thread qui envoi son message fait un appel à wait, ceci libere le verrou et permet à d'autres threads d'entrer dans le bloc synchronized. Si un second thread réveille le thread qui est en train d'envoyer son message en faisant un appel à notify, ceci nous permet de détecter qu'une collision s'est produite, parce qu'un second thread a essayé d'envoyer un message sur le canal avant que le premier ne termine. L'utilité de la synchronization sur le canal ici est donc comme outil de simulation plutôt que pour protéger une ressource partagée.

TP3

Si vous utilisez un GUI editor comme celui de NetBeans pour concevoir votre interface graphique, assurez vous quand même de bien documenter votre code avec des commentaires Javadoc (incluant le code généré automatiquement).

N'oubliez pas non plus d'inclure vos fichiers source et votre fichier lisezmoi dans l'archive jar que vous soumettez. Si vous utilisez NetBeans, vous pouvez aller dans File->Project Properties->Build->Packaging et effacer le texte dans le champ "Exclude From JAR File" afin de vous assurez que votre code source soit inclus. Il est aussi possible d'éditer une archive jar manuellement avec un programme qui lit les fichiers compressés au format zip.

TP1

Pour afficher des cercles qui représentent les cellules vivantes, vous pouvez utiliser la méthode fillOval() de la classe java.awt.Graphics:
http://java.sun.com/j2se/1.3/docs/api/java/awt/Graphics.html#fillOval%28int,%20int,%20int,%20int%29

Si vous exportez un fichier .jar à partir d'Eclipse, n'oubliez pas de cocher la case qui exporte aussi les fichiers source .java dans votre .jar. Vous pouvez ouvrir votre .jar avec un éditeur de fichiers .zip (ex: winzip) si vous voulez voir son contenu.


Matériel démo/cours

Vous pouvez télécharger les exemples vus pendant les sessions démo en cliquant sur les liens suivants:

Cours/démo du 23 juillet 2010:
Notes du professeur sur les structures de données
Quelques exercices sur la récursion
Notes PPT sur les algorithmes de tris
Implantation producer-consumer simple

Cours/démo du 19 juillet 2010:
Notes du professeur sur Java et Internet
Notes sur réseaux, internet (français)
Implantation jeux client/serveur
Notes PPT sur la récursion
Calcul de Fibonacci récursif
Tours de Hanoi, solution récursive

Démo du 16 juillet 2010:
Connexions web, classe URL, hash sets

Démo du 13 juillet 2010:
Interaction GUI, longs calculs avec SwingWorker

Démo du 9 juillet 2010:
Démo thread pool, producer-consumer, synchronization, interaction GUI
Diapositives sur les threads et la synchronization

Session du 6 juillet 2010:
Threads, synchronization, parallélisme

Session du 2 juillet 2010:
GUI généré avec le GUI builder de NetBeans

Session du 25 juin 2010:
Questions de programmation de l'Intra

Session du 11 juin 2010:
Lecture/écriture de fichiers textes, exceptions, dialogue ouverture de fichiers
Code des exercices vus en classe

Session du 4 juin 2010:
Programme calculatrice, GUI, événements
Code des exercices vus en classe

Session du 1 juin 2010:
Code des exercices vus en classe

Session du 28 mai 2010:
Héritage, résolution de variables
Code des exercices vus en classe

Session du 25 mai 2010:
Comptes de banque, hiérarchie d'héritage

Session du 21 mai 2010:
Classes, visibilité, héritage
Tableaux, matrices et packages
Interfaces graphiques, événements souris
Boutons, tableau tic tac toe


Ressources utiles

Pour installer Java et Eclipse/NetBeans:
Installation de Java
Page web de l'IDE Eclipse
Page web de l'IDE NetBeans

Liens à consulter:
Tutoriel sur le GUI Builder de NetBeans (vidéo YouTube)
Notes Génie Logiciel, UML
Diagrammes UML avec Eclipse
Tutoriel sur l'IDE Eclipse
Tutoriels Java de Sun
Spécification des APIs Java 6