Sujet 1 - Dr. Guillaume RIVIÈRE

publicité
Page 1/3
Unité d’Enseignement en Informatique
Année 2016-2017
2è année ESTIA – Etudiants
Examen de Système d’Information – Deuxième Session du 24 avril 2017
(durée 2h00, aucun document autorisé)
Exercice 1 : Un service de calcul
Nous souhaitons proposer un service en ligne de calcul de matrices de rotation tridimensionnelle. Un
formulaire permettra de saisir la valeur de l’angle (en degré) ainsi que l’axe de la rotation. Au
chargement de la page, l’angle et l’axe par défaut seront respectivement 0 et x.
L’utilisateur pourra choisir d’autres valeurs, par exemple l’angle 45 et l’axe y :
Pour créer des boutons radios dans le formulaire pour le choix de l’axe, nous utiliserons les champs
de saisie de type « radio ». Par exemple, le code :
<input type="radio" name="choix" value="1" checked="checked" /> Choix 1 (par défaut)
<input type="radio" name="choix" value="2" /> Choix 2
permettra d’obtenir deux boutons dont le premier sera
sélectionné par défaut et dont les valeurs transmises au
script seront 1 et 2.
ESTIA 2è année – Épreuve d’Informatique – SI
- N. Couture & G. Rivière -
Étudiants Estia 2018
Page 2/3
Pour faire le calcul, nous utiliserons un
tableau PHP à deux dimensions. Cela
permettra
de
réutiliser
la
fonction
afficher_matrice3x3() qui affiche un
tableau à deux dimensions avec un tableau
HTML.
Pour accéder aux cases des tableaux PHP à
deux dimensions il suffit de préciser les
indices successivement.
Par exemple, pour initialiser la première
case :
$tab[0][0] = $val ;
Ou encore, pour initialiser la troisième case
de la première ligne :
utils.inc.php
<?php
/***
* Cette fonction affiche une matrice 3x3,
* indexee a partir de 0, dans un tableau HTML
*/
function afficher_matrice3x3 ($mat) {
echo '<table>' ;
for ($i = 0 ; $i < 3 ; $i++) {
echo '<tr>' ;
for ($j = 0 ; $j < 3 ; $j++) {
echo '<td>'.$mat[$i][$j].'</td>' ;
}
echo '</tr>' ;
}
echo '</table>' ;
}
?>
$tab[0][2] = $val ;
Question 1 : D’après les exemples de l’énoncé, par quelle méthode l’angle et l’axe de la rotation
sont-t-ils transmis au script rotation.php ?
Question 2 : Écrivez le code de la page de formulaire rotation.html.
Question 3 : Écrivez le code du script rotation.php.
Question subsidiaire : Nous souhaiterions maintenant changer ce service (manuel) en webservice
consultable par des programmes de smartphones (p.ex. : Android). Pour ce faire, quelles
modifications devrions-nous apporter au script rotation.php pour que les programmes
reçoivent un flux facilement analysable ?
RAPPEL : Les matrices de rotation d’un angle θ (en radians) autour des trois axes orthonormés
(x,y,z) d’un espace euclidien tridimensionnel sont :
1
0
0
Axe x :
0
cos(θ)
sin(θ)
0
-sin(θ)
cos(θ)
cos(θ)
0
-sin(θ)
Axe y :
0
1
0
sin(θ)
0
cos(θ)
cos(θ)
sin(θ)
0
Axe z :
-sin(θ)
cos(θ)
0
0
0
1
MÉMENTO : Voici quelques éléments de PHP pour vous aider à mener à bien ce travail
•
La constante M_PI définie la valeur du nombre Pi avec 20 décimales.
•
La fonction cos permet de calculer le cosinus d’un angle en radians. La valeur retournée est un
nombre réel compris entre -1 et 1.
float cos ( float $val ) ;
•
La fonction sin permet de calculer le sinus d’un angle en radians. La valeur retournée est un nombre
réel compris entre -1 et 1.
float sin ( float $val ) ;
•
La fonction round permet de calculer la valeur arrondie selon la précision choisie. La valeur
retournée est le nombre réel de la valeur arrondie.
float round ( float $val, int $precision ) ;
ESTIA 2è année – Épreuve d’Informatique – SI
- N. Couture & G. Rivière -
Étudiants Estia 2018
Page 3/3
Exercice 2 : Compléter le code manquant de ce fichier écrit en Java
public class TheModele {
private Connection conn;
public …………………………………………………………………… (){
connectDatabase();
}
public void connectDatabase()
{
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String …………………………………… = "jdbc:mysql://localhost/tai_db";
setConn(DriverManager.getConnection(url, "root", ""));
}
[…]
}
public void insertionDonnes(String prenom, String nom, String age){
try{
…………………………………………………………………… st = conn.createStatement();
st. …………………………………………………………………… ("INSERT INTO tai_db.employes
(Prenom, Nom, Age) VALUES ('"+ prenom + "', '"+ nom +"'," + age + ")");}
catch (SQLException ex)
System.err.println(ex.getMessage());}
}
Exercice 3 : Compléter le code manquant de ce fichier écrit en Java
Complétez les parties manquantes de ce fichier nommé LeControler.java.
Il n’est pas autorisé de remplir une partie manquante par une étoile « * ».
import java.util.ArrayList;
public class …………………………………………………………………………… {
private TestTableView _testView;
private LeModel _leModel ;
public …………………………………………………………………………… (){
_leModel = new …………………………………………………………………………… ();
_testView = new …………………………………………………………………………… (this);}
public void start(){
_testView.afficher(true);}
public void boutonQuoi(){
ArrayList<String[]> mesDonnees = new ArrayList<String[]>();
_leModel.insererDesDonnes();
mesDonnees = _leModel.getInfosLogin();
_testView.setTableData(mesDonnees);}
}
ESTIA 2è année – Épreuve d’Informatique – SI
- N. Couture & G. Rivière -
Étudiants Estia 2018
Téléchargement