Travaux Dirigés en Informatique PCSI 1

Retour au sommaire

Quelques remarques sur les TD :

Certains TD sont compressés à l'aide d'un logiciel libre d'archivage : 7-zip.
Ce logiciel est multiplateforme. [voir la page wiki consacrée].
Il vous faut télécharger les outils de compression / decompression pour windows [7zip] ou macOSX [7zX] :

windows macOSX




PROJET : dioptre sphérique

Tracé des rayons hors des conditions de Gauss

Ce projet reprend l'exercice d'optique géométrique du DS 1.
On veut tracer automatiquement les rayons refractés par un dioptre sphérique, et observer les conséquences du non respect des conditions de Gauss.



Le fichier de ce projet n'est pas compressé.




Devoir Maison : Chasse aux champignons

en ces temps d'automne ....

Ce projet reprend les notions de base sur les blocs conditionnels, mais l'idée est ici de trouver un algorithme pour optimiser le choix des questions à poser, de façon à minimiser le nombre des questions. On de doit pas poser plus de trois questions.



A vous de créer votre fichier Python.
Attention : Poser proprement votre raisonnement sur papier avant de vous lancer dans le codage. Vous pouvez commencer par construire un tableau, voire mieux !
Le code en lui-même n'a rien de compliqué.




Base Jump & méthode d'Euler !
pensez à ouvrir le parachute...


Ce TD propose de simuler la pratique dangeureuse du base Jump [forme extrême de parachutisme], le but du baseJump étant :
1 - de tomber le plus longtemps possible !
2 - de ne pas s'écraser...
On doit donc déterminer le temps avant l'ouverture du parachute !

!!! Ne pas tenter de reproduire cette expérience !!!


L'objectif de ce TP est de déterminer les caractéristiques physiques du problème de la chute avec des frottements quadratiques, c-à-d en raison du carré de la vitesse :

- Il faut déterminer les coefficients h0 et h1 permettant d'atteindre les vitesses limites escomptées.

- Il faut implémenter la méthode d'Euler en python par reconstruction de liste.

- Il faut également calculer la trajectoire de chute libre.
Enfin on peut tester les différents paramètres de saut, en particulier, le temps avant ouverture du parachute.




Résolution de problème : Diving for pearls !

Travail pour les vacances

Les coquillages ci-dessous contiennent des perles et on souhaite en attraper un maximum !
Problème : lorsque l’on prend les perles d’un coquillage, ses voisins immédiats (gauche et/ou droite) se referment aussitôt !
Objectif : proposer un algorithme qui permette d’attraper systématiquement le nombre de perles maximal et qui soit le plus rapide possible.

On traitera à titre d’exemple et sur papier les trois situations suivantes :

Généraliser votre méthode à toute liste et proposer une implémentation en python de votre algorithme.
Remarques : il existe des tas de méthodes possibles mais :
- toutes ne trouvent pas la somme optimale.
- toutes ne sont pas aussi rapides.



Problème d'algorithmique : l'âge du capitaine

... un problème d'âge en somme ...

On considère une liste de valeurs entières positives qui pourraient représenter les âges des membres d'un équipage, et une valeur cible qui est l'âge du capitaine. On veut trouver si elles existent, toutes les paires de deux membres d'équipage dont la somme de leurs deux âges respectifs est exactement égale à l'âge du capitaine !

L'idée algorithmique est que le nombre N des membres de l'équipage [soit la taille N du tableau] peut devenir gigantesque et on veut trouver l'algorithme qui trouve la solution dans un temps minimum !

Vous pouvez envisager deux algorithmes assez naturellement, il existe d'autres solutions encore.


"Old Captain" 2013 Гари-Николай Ангелов (Gary-Nikolai Angelov)



A vous de créer votre fichier Python ! On attend simplement une fonction :
-> qui prend en argument un tableau d'entiers positifs, et un entier cible positif.
-> qui renvoie la liste des paires de valeurs solutions, c-à-d une liste de tuple (i,j).
Le nombre de solutions sera donc la longueur de la liste, la liste sera donc vide si il n'y a pas de solution.

Exemple :
solution([9, 14, 2, 7, 3, 6, 3], 9) -> [(7, 2), (6, 3), (3, 6)]
solution([2, 7, 11, 15], 3) -> []



Notion de class : introduction aux objets !
création d'une class "bidon"


UNE JOURNEE EN ENFER : Die Hard 3


Bruce Willis et Samuel Lee Jackson doivent résoudre l'énigme suivante pour sauver la ville de New York :

"A une fontaine, on dispose de deux bidons :
un de 3 litres et un de 5 litres.

Comment peut-on obtenir 4 litres d'eau ?"


Vous avez 30 secondes !!!

L'objectif de ce TP est d'apprendre à créer un objet en Python, en l'occurence un bidon de capacité fixée. On veut pouvoir remplir le bidon, le vider totalement, ou verser son contenu dans un autre objet bidon.
Le fichier vous donne la classe avec son constructeur et son afficheur, et vous devez compléter les corps de fonction pour les opérations de base.

Le fichier est compressé avec 7zip. Merci de télécharger le décompresseur (en haut de page).




Projet Raspberry : Afficheur digital

et découverte d'un datasheet ...

L'idée de ce projet est de comprendre le fonctionnement mais surtout le contrôle d'un afficheur digital. Cela implique un peu d'électronique et de maitriser les différentes représentations : binaire et hexadécimale. On donne pour cela le dataSheet de ce "microcontroleur" où est détaillé le protocole de communication en binaire de l'afficheur.

L'idée est simplement de fixer des états 0 ou 1 sur les pattes de l'afficheur pour produire un affichage. Mais il faut au préalable bien comprendre le mode de communication de l'afficheur : on parle de protocole. Ce protocole de communication peut être réalisé à l'aide d'un Raspberry [Labo de Physique] et mis en place sur les plaquettes d'électronique vue en TP.

L'intérêt du Raspberry est que l'on programme ses entrées et sortie justement en python !

Rq : Toute la partie relevant de l'Operating System (OS) de Raspberry vous sera fournie.
[OS Raspbian de la famille Linux]





projet Tic Tac Toe

travail collaboratif ...

Ce projet consiste en une première approche de la réalisation d'un jeu : le morpion !
On se limite ici à un affichage dans la console et à deux joueurs humains qui indiquent leurs coups à l'aide d'un chiffre indiquant la case.

L'objectif pédagogique est surtout d'aborder le problème (crucial en informatique) de la réalisation d'un projet à plusieurs : il y a ici 3 groupes qui doivent s'organiser et se partager les tâches.