Depuis son apparition durant la seconde guerre mondiale, l'informatique n'a cessé de transformer profondément la société. La science et les différents domaines de l'ingénieur sont aujourd'hui de plus en plus dépendants de l'informatique pour des besoins de calcul ou de simulation notamment. Dans un rapport récent [1], plusieurs scientifiques ont mis en avant les liens de plus en plus forts entre l'informatique et les différentes disciplines scientifiques. Ils vont même jusqu'à prévoir l'émergence de nouvelles formes de "sciences" qui feront la synthèse entre les sciences ou les métiers traditionnels de l'ingénieur et l'informatique. Dès aujourd'hui, cette synthèse a créé de nouveaux domaines comme la bioinformatique qui fait le lien entre la biologie moléculaire et l'informatique, la climatologie dont les prédictions dépendent d'ordinateurs de plus en plus puissants, mais aussi les nanotechologies où les modélisations informatiques sont essentielles pour comprendre les interactions entre atomes et molécules ou la physique des particules où des équipements tels que le Large Hadron Collider (LHC) installé récemment au CERN à Genève produisent des quantités de mesure tellement gigantesques qu'il faut utiliser des milliers d'ordinateurs pour les traiter.
Si les ordinateurs sont tellement utiles pour résoudre des problèmes scientifiques ou d'ingénierie c'est grâce à leur puissance de calcul. Cette puissance de calcul est à deux niveaux : matériel et logiciel. Au niveau matériel, les processeurs utilisés dans les ordinateurs actuels sont capables d'effectuer très rapidement des additions, multiplications, divisions, soustractions et comparaisons de nombres réels.
Pour cette mission, vous devez écrire un programme Python qui permet de trouver les solutions entières à des équations du style :
Vous constaterez que l'énoncé de cette mission est plutôt directif. Dans les problèmes suivants, la mission sera bien moins explicite et une partie du travail de préparation consistera à la préciser.
[1] | Towards 2020 Science, disponible depuis http://research.microsoft.com/towards2020science/ |
Conditions à remplir pour pouvoir résoudre le problème :
A l'issue de cette mission, chacun d'entre vous :
sera en mesure de dire quelques mots sur certains concepts sous-jacents à un programme Python simple :
- types de données
- chaînes de caractères
- opérations arithmétiques
- opérations booléennes
- appel de fonction
- boucles for
sera en mesure d'utiliser l'environnement de travail Thonny pour traiter des programmes écrits en Python et de soumettre son travail au serveur de correction.
Vous devez lire et comprendre ces parties du syllabus pour pouvoir mener à bien cette mission :
Rappelez-vous qu'il est impossible d'atteindre les objectifs visés par ce problème sans effectuer préalablement le travail d'étude individuel en consultant les sections du livre de référence.
Les questions qui figurent ci-dessous sont des exemples de questions que vous pourriez vous poser à la lecture de l'énoncé et des ressources qui s'y rapportent. Si vous avez convenablement fait ce qui était attendu de vous pendant la phase d'étude et d'apprentissage, vous devriez être en mesure de répondre sans difficulté à ces questions. Si ce n'est pas le cas, il est encore temps de rattraper votre retard (mais ne tardez pas trop !). Il ne faut en aucun cas commencer la phase de réalisation avant d'être en mesure de répondre à ce questionnaire.
Pour chaque question, indiquez toujours où vous avez trouvé les éléments de réponse (livre page ..., documents fournis, manuels en ligne, ...). Travaillez en deux temps:
Visez à fournir des réponses complètes, motivées et qui prouvent votre compréhension de la matière. Ne vous contentez pas de réponses superficielles.
Pour vous aider dans la réalisations de ces exercices, certains d'entre eux sont disponibles sur Inginious avec une correction automatisée. Il a été fait en sorte que cette correction automatique soit utile à votre compréhension de la matière, cependant cela ne doit pas vous empêcher de discuter de vos réponses, correctes ou non, avec votre tuteur et les membres de votre groupe.
Définissez les concepts suivants :
Dans l'extrait de programme ci-dessous, indiquez après chaque ligne les valeurs contenues dans les variables a, b, c.
a = 0 b = 1 c = 2 a = b # ligne 1 a = a*2 # ligne 2 b = 17 # ligne 3 c = a+b # ligne 4 a = b-c # ligne 5 c = a+b+c+a # ligne 6
Expliquez, avec vos propres mots, ce que représente la notation
i = i + 1
et ce qu'elle a comme effet. Pourrait-on la remplacer par une autre notation ?
Quelle est la relation entre une instruction et une expression ? Donnez des exemples.
Expliquez ce que produisent les instructions suivantes :
Que se passe-t-il si on exécute ce programme ? Comment peut-on le corriger ?
n = input("n = ? ") print("n^2 =", n ** 2)
Expliquez ce que produisent les instructions suivantes :
Que fait le programme suivant ?
for n in [0, 1, 2, 3, 4]: print(10 ** n)
Comment pourrait-on écrire autrement la boucle for ?