Disponible : jeudi, 16 septembre
Date de remise : dimanche, 26 septembre, avant 22h00
Vous devez faire ce travail IDIVIDUELMENT et suivre toutes les instructions décrites
dans le document intitulé "Consignes pour les devoirs",
disponible sur la page Web du cours. Des points seront déduits si vous ne
suivez pas ces consignes. Vous devez soumettre un document Word contenant les
réponses aux 4 questions: les fichiers D1Q1.doc, D1Q2.doc, D1Q3.doc et le code
de la question 4 (le fichier D1Q4.java et le fichier D1Q4.class
compilé), le tout dans un répertoire compressé (.zip) de la façon expliquée
dans les consignes.
Vos algorithmes doivent être développés en utilisant le format vu en classe, et
il est interdit d'utiliser des structures qui n'ont pas été couvertes en classe
(telles que les branchements et les boucles). Vos traces d'algorithmes doivent
aussi se conformer au format vu en classe. Utilisez une "page
virtuelle" (tableau) séparée pour tracer chaque invocation d'algorithme.
Pour
établir des communications intersidérales utiles, nous devons calculer les
distances entre planètes et étoiles impliquées et prendre en considération les
différents temps de transmission.
Nos communications se font par ondes électromagnétiques qui voyagent à la
vitesse de la lumière. Vous avez d'ailleurs probablement entendu parler du
concept d'année-lumière,
qui mesure la distance parcourue par la lumière pendant une année. Mais combien
de jours y a-t-il au juste dans une année? Il y a en fait plusieurs
interprétations, mais nous adopterons celle de l'année sidérale,
qui représente la période orbitale de la Terre et qui équivaut à 365,26 jours.
Question 1a) Concevez un algorithme qui va convertir un nombre donné
d'années sidérales en secondes, sachant qu'il y a 365,26 jours dans une année
sidérale.
DONNÉE:
AnnéesSidérales (nombre d'années sidérales)
INTERMÉDIAIRES:
JoursDansAnnées (nombre de jours dans une année
sidérale)
SecondesDansJour (nombre de secondes dans un
jour)
RÉSULTAT:
Secondes (Nombre de secondes)
EN-TÊTE:
Secondes ← AnnéesEnSecondes( AnnéesSidérales )
HYPOTHÈSE:
AnnéesSidérales est supérieur ou égal à 0
MODULE:
1. JoursDansAnnées ← 365,26
2. SecondesDansJour ← 24 x 60 x 60 (24h x 60 min/h x 60 sec/min)
3. Secondes ← AnnéesSidérales x
JoursDansAnnées x SecondesDansJour
Question 1b) Tracez votre algorithme pour une durée de 7 années
sidérales.
Question 2a) Une seconde-lumière
est la distance parcourue par la lumière en une seconde. Concevez un algorithme
qui va convertir un nombre donné de secondes-lumière en kilomètres, sachant que
la vitesse de la lumière est d'environ 300 000 000 mètres par seconde (3x108
m/s).
DONNÉE:
SecondesLumière (nombre de secondes-lumière)
INTERMÉDIAIRE:
VitesseLumière (vitesse de la lumière, en m/s)
RÉSULTAT:
Distance (distance parcourue, en km)
EN-TÊTE:
Distance ← SecondesLumièreEnKm( SecondesLumière )
HYPOTHÈSE:
SecondesLumière est supérieur ou égal à 0
MODULE:
1. VitesseLumière ← 300 000
000
2. Distance ← SecondesLumière x VitesseLumière ÷ 1000
Question 2b) Tracez votre algorithme pour trouver
la distance (en kilomètres) entre la Terre et le Soleil, sachant que la lumière
parcourt cette distance en 500 secondes.
Question 3 En
utilisant (invoquant) vos algorithmes des questions 1 et 2, écrivez un
algorithme pour trouver la distance (en kilomètres) parcourue par un signal de
communication entre deux étoiles via la Terre. Les distances entre chaque
étoile et la Terre sont fournies (en années-lumière).
DONNÉES:
DistanceAl1 (distance de la première étoile, en
années-lumière)
DistanceAl2 (distance de la deuxième étoile, en
années-lumière)
INTERMÉDIAIRES:
SecLum1 (secondes lumières, étoile 1)
SecLum2 (secondes lumières, étoile 2)
DistKm1 (distance en km, étoile 1)
DistKm2 (distance en km, étoile 2)
RÉSULTATS:
Distance (distance parcourue, en km)
EN-TÊTE:
Distance ← DistanceEntreÉtoiles( DistanceAl1,
DistanceAl2 )
MODULE:
1. SecLum1 ← AnnéesEnSecondes( DistanceAl1 )
2. SecLum2 ← AnnéesEnSecondes( DistanceAl2 )
3. DistKm1 ← SecondesLumièreEnKm( SecLum1
)
4. DistKm2 ← SecondesLumièreEnKm( SecLum2
)
5. Distance ← DistKm1 + DistKm2
Alternativement, nous aurions pu avoir plusieurs
autres solutions (avec des intermédiaires différentes), telle que:
1. DistanceAlTotale ← DistanceAl1 + DistanceAl2
2. SecLum ← AnnéesEnSecondes( DistanceAlTotale )
3. Distance ← SecondesLumièreEnKm(
SecLum )
Implémentez
un programme Java simple pour convertir un nombre donné d'années sidérales en
secondes, en utilisant l’algorithme de Question 1. Le programme doit afficher
le numéro du devoir et le numéro de la question sur une ligne, de même que
votre nom et numéro d'étudiant sur une autre ligne. Après ca, le programme lit
une valeur d’entrée du clavier (le nombre d'années sidérales), appelle la
méthode qui implémente l’algorithme, et imprime le résultat.
// ITI 1520 Automne 2010
// Name: Diana Inkpen, Student# 123456
/**
* Ce programme
transforme un nombre donné d'années sidérales en secondes.
*/
class D1Q4
{
public
static void main (String[] args)
{
//
DÉCLARATIONS DES VARIABLES ET DICTIONNAIRE DE DONNÉES
double
années; // DONNÉES (le nombre d'années sidérales)
double
secondes; // RESULTAT: les secondes
// AFFICHAGE DE L'INFO D'IDENTIFICATION
System.out.println();
System.out.println("ITI 1520 Automne 2010 Exemple");
System.out.println("Nom: Diana Inkpen, Etudiant# 123456");
System.out.println();
//
LECTURE DES VALEURS DONNÉES
System.out.println( "S'il vous plait introduire le nombre d'années
sidérales: ");
années =
ITI1520.readDouble( );
//
APELLE L'ALGORITHME
secondes
= annéesEnSecondes(années);
//
AFFICHAGE DES RÉSULTATS ET MODIFIÉES À L'ÉCRAN
System.out.println( "La moyenne de trois coûts est " +
secondes);
}
//
DÉFINITIONS DES MÉTHODES INVOQUÉES PAR "MAIN"
/**
* Ce
méthode transforme un nombre donné d'années sidérales en secondes.
*/
public
static double annéesEnSecondes (double années)
{
//
DECLARATION DES VARIABLES
double
secondes; // RESULTAT: les secondes
//MODULE
DE L'ALGORITHME
secondes = années * 365.26 * 24 * 60 * 60;
//
RETOURNE LE RESULTAT
return
secondes;
}
}