الأحد، 25 مايو 2014

CORRECTION EXAMEN DE FIN DE FORMATION TDI THEORIQUE SESSION JUILLET 2012

EFF TDI Théorique 2012 corrigé

 Télécharger correction EFF théorique TDI 2012 - ici -

Dossie1 : (6 points)

1)

2)



3)


4)


Dossie2 : (5 points)

1- SELECT COUNT(*) AS 'nombre de matchs' FROM Match
WHERE numJournee=12


2- SELECT numJournee, COUNT(numMatch) AS 'nombre de matchs' FROM Match
GROUP BY numJournee



3- SELECT numMatch, dateMatch, numJournee FROM Match
WHERE nombreSpectateur = (SELECT MAX(nombreSpectateur) FROM Match)



4- SELECT SUM(MyTable.resultat) FROM
(SELECT resultat=COUNT(numMatch)*3 FROM Match
WHERE (nombreButLocaux > nombreButVisiteurs and codeEquipeLocaux=112)
OR (nombreButLocaux < nombreButVisiteurs and codeEquipeVisiteurs=112)
UNION
SELECT Count(numMatch) FROM Match
WHERE (nombreButLocaux = nombreButVisiteurs)
and (codeEquipeLocaux=112 OR codeEquipeVisiteurs=112)) MyTable



5- CREATE PROC Q5 @nbrjour int
AS
BEGIN
SELECT codeEquipeLocaux AS 'Code Equipe' FROM Match
WHERE nombreButLocaux > nombreButVisiteurs AND numJournee = @nbrjour
UNION
SELECT codeEquipeVisiteurs AS 'Code Equipe' FROM Match
WHERE nombreButLocaux < nombreButVisiteurs AND numJournee = @nbrjour
END
EXEC Q5 1;


6- CREATE TRIGGER question6 ON Match2 AFTER INSERT

AS
DECLARE @loc int , @vis int
SELECT @loc= codeEquipeLocaux, @vis= codeEquipeVisiteurs FROM Inserted
IF (@loc=@vis)
BEGIN
RAISERROR ('ATTENTION: codeEquipeLocaux == codeEquipeVisiteurs :p',
16, 1);
Rollback
END

Dossie3 : (5 points)

1 & 2 ) java:

public class Camera {

protected int code;
protected String type;
protected int orientation;
public Camera() {
super();
}
public Camera(int code, String type) {
super();
this.code = code;
this.type = type;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;


}

public int getOrientation() {
return orientation;
}
public void setOrientation(int orientation) {
this.orientation = orientation;
}
public void tourner(int sens) {
this.orientation = sens;
}
public void afficher() {
System.out.println("-Code: " + this.code + " Orientation:"
+ this.orientation);
}
}

3, 4 & 5) java:

public class CameraMobile extends Camera {

private int abs;
private int ord;
public CameraMobile(String type, int code, int abs, int ord) {
super(code, type);
this.abs = abs;
this.ord = ord;
}
public CameraMobile() {
super();
}

10

public int getAbs() {
return abs;
}
public void setAbs(int abs) {
this.abs = abs;
}
public int getOrd() {
return ord;
}
public void setOrd(int ord) {
this.ord = ord;
}
public void avancer(int d) {
switch (this.orientation) {
case 1:
this.ord += d;break;
case 2:
this.abs += d;break;
case 3:
this.ord -= d;break;
case 4:
this.abs -= d;break;
}
}
public void afficherPosition() {
System.out.println("-position: abs=" + this.abs + " ord=" + this.ord);
}

public void afficher() {

super.afficher();
this.afficherPosition();
}
}

6) java:

public class classTest {

public static void main(String[] args) {
// TODO Auto-generated method stub
CameraMobile cm1 = new CameraMobile("SUMSUNG", 213, 0, 0);
cm1.afficher();
// a
cm1.setOrientation(2);
cm1.afficher();
// b
cm1.setOrientation(4);
cm1.avancer(10);
cm1.afficher();
// c
cm1.setOrientation(1);
cm1.avancer(16);
cm1.afficher();
// d
cm1.setOrientation(2);
cm1.avancer(5);
cm1.afficher();
// e
cm1.setOrientation(3);
cm1.avancer(12);
cm1.afficher();
}
}

C# 1 et 2)

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Camera
{
private int code;
private string type;
private int orientation;
public Camera() { }
public Camera(int code, String type)
{
this.code = code;
this.type = type;
}
public int Code
{
get { return code; }
set { code = value; }
}
public string Type
{
get { return type; }
set { type = value; }
}
public int Orientation
{
get { return orientation; }
set { orientation = value; }
}

public void tourner(int sens)

{
this.orientation = sens;
}
public void afficher(){
Console.WriteLine("-Code: " + this.code + " Orientation:" +
this.orientation);
}
}
3, 4 et 5)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class CameraMobile:Camera {
private int abs;
private int ord;
public CameraMobile(string type, int code, int abs, int ord)
: base(code, type)
{
this.abs = abs;
this.ord = ord;
}
public CameraMobile()
{}
public int Ord
{
get { return ord; }
set { ord = value; }

}

public int Abs
{
get { return abs; }
set { abs = value; }
}
public void avancer(int d)
{
switch (d)
{
case 1:
this.ord += d; break;
case 2:
this.abs += d; break;
case 3:
this.ord -= d; break;
case 4:
this.abs -= d; break;
}
}
public void afficherPosition()
{
Console.WriteLine ("-position: abs=" + this.abs + " ord=" + this.ord);
}
public void afficher()
{
base.afficher();
this.afficherPosition();
}
}
6)
1- class Program
2- {

3- static void Main(string[] args)

4- {
5- CameraMobile cm = new CameraMobile("SONY", 113, 1, 4);
6- cm.afficher();
7- // a
8- cm.Orientation = 2;
9- cm.afficher();
10- // b
11- cm.Orientation = 4;
12- cm.avancer(10);
13- cm.afficher();
14- // c
15- cm.Orientation=1;
16- cm.avancer(16);
17- cm.afficher();
18- // d
19- cm.Orientation = 2;
20- cm.avancer(5);
21- cm.afficher();
22- // e
23- cm.Orientation = 3;
24- cm.avancer(12);
25- cm.afficher();
}
}

Dossie4 : (4 points)

Exercice 1 : (2 pts)

<html>

<head>
</head>
<body>
<!-- Q1 -->
<h1>Pour s'inscrire, remplir le formulaire suivant:</h1>
<form name="frm">
<table border="0" cellpadding="0" cellspacing="4">
<tr>
<td align="right">Nom:</td>
<td><input name="nom" type="text" size="50"></td>
</tr>
<tr>
<td align="right">Prénom:</td>
<td><input name="prenom" type="text" size="50"></td>
</tr><tr>
<td align="right">Date de naissance:</td>
<td><input name="day" type="text" value="jj" size="5" maxlength="2">
<input name="month" type="text" value="mm" size="5" maxlength="2">
<input name="year" type="text" value="aaaa" size="25" maxlength="4"></td>
</tr>
<tr>
<td align="right">Mot de passe:</td>
<td><input name="pass" type="password" size="50"></td>
</tr>
<tr>
<td align="right">Confirmer mot de passe:</td>
<td><input name="passC" type="password" size="50"></td>
</tr>

<tr align="center">

<td colspan="2">
<input type="checkbox" id="condition" onClick="checkBox();"/><label
for="condition" >J'accepte les conditions</label>
</td>
</tr>
<tr align="right">
<td colspan="2" >
<input type="submit" value=" Valider " onClick="return validateForm();" id="valider"
disabled />
<input type="reset" value=" Annuler" />
</td>
</tr>
</table>
</form>
<!-- Q2 -->
<script language="javascript"
type="text/javascript">
function validateForm()
{
//a
if(""==document.forms.frm.nom.value) return false;
if(""==document.forms.frm.prenom.value) return false;
if(""==document.forms.frm.day.value) return false;
if(""==document.forms.frm.month.value) return false;
if(""==document.forms.frm.year.value) return false;
if(""==document.forms.frm.pass.value) return false;
if(""==document.forms.frm.passC.value) return false;
//b
var year = document.forms.frm.year.value;
if(isNaN(year) || year < 1900) return false;
var month= document.forms.frm.month.value;
if(isNaN(month) || month <1 || month>12) return false;
var day = document.forms.frm.day.value;
if(isNaN(day) || day <1 || day>31) return false;


//c

var pass = document.forms.frm.pass.value;
var passc = document.forms.frm.passC.value;
if(pass !== passc) return false;
return true;
}
//d
function checkBox()
{
document.getElementById('valider').disabled =
!document.getElementById('condition').checked;
}
//Q3
setTimeout(window.close,20000);
</script>
</body>
</html>

السبت، 15 فبراير 2014

LES FONCTIONS ET PROCEDURES



8. LES FONCTIONS ET PROCEDURES
En programmation, donc en algorithmique, il est possible de décomposer le programme qui résout un
problème en des sous-programmes qui résolvent des sous parties du problème initial. Ceci permettra
d’améliorer la conception du programme et ainsi sa lisibilité.
L’utilisation des sous-programmes s’avère utile aussi dans le cas où on constate qu’une suite d’actions
se répète plusieurs fois.
Il existe deux types de sous-programmes les fonctions et les procédures. Un sous- programme est
obligatoirement caractérisé par un nom (un identifiant) unique.
Le nom d’un sous-programme comme le nom d’une variable doit :
􀀹 Contenir que des lettres et des chiffres
􀀹 Commencer obligatoirement par une lettre
Le programme qui utilise un sous- programme est appelé programme appelant. Un sous-programme
peut être invoqué n'importe où dans le programme appelant en faisant référence à son nom.
Un programme ainsi doit suivre la structure suivante :
Définition des constantes
Définition des types
Déclaration des variables
Définition des sous- programmes
DEBUT
Instructions du programme principal
FIN
8.1. Les fonctions
Une fonction est un sous-programme qui retourne un seul résultat. Pour définir une fonction on utilise
la syntaxe suivante :
FONCTION nom_fonction (Argument1 : Type , Argument2 : Type ,….) : Type
Déclarations
DEBUT
Instructions de la fonction
nom_fonction ← Valeur renvoyée
FIN
On constate que la déclaration d’une fonction revient à lui préciser un nom, un type ainsi qu’une liste
d’arguments.
Un argument (appelé paramètre formel) d’un sous- programme est une variable locale particulière
qui est associée à une variable ou constante du programme appelant. Puisque qu’un argument est une
variable locale, il admet un type.
Lorsque le programme appelant appelle le sous-programme il doit indiqué la variable ou la constante
de même type, qui est associée au paramètre.
Par exemple, le sous-programme sqr permet de calculer la racine carrée d’un réel. Ce sousprogramme
admet un seul paramètre de type réel positif.
Le programme qui utilise sqr doit donner le réel positif dont il veut calculer la racine carrée, cela peut
être :
- une variable, par exemple a
- une constante, par exemple 5.25
Les arguments d’une fonction sont en nombre fixe (≥ 0).
Une fonction possède un seul type, qui est le type de la valeur retournée qui est affecté au nom de la
fonction.
Une fois la fonction définie, il est possible (en fonction des besoins) à tout endroit du programme
appelant de faire appel à elle en utilisant simplement son nom suivi des arguments entre parenthèses.
Les parenthèses sont toujours présentes même lorsqu’il n’y a pas de paramètre.
Les arguments spécifiés lors de l’appel de la fonction doivent être en même nombre que dans la
déclaration de la fonction et des types prévus. Dans le programme appelant ces arguments sont appelés
paramètres effectifs.
Codification d’un algorithme et Programmation procédurale Filière : TSDI
OFPPT / DRIF / CDC Tertiaire & TIC Page : 43 Octobre 2005
La valeur ainsi renvoyée par la fonction peut être utilisée dans n’importante quelle expression
compatible avec son type.
Exemple :
FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel
Variable a : Entier
DEBUT
a ← 3
Calcul ← (x + y + z) * a
FIN
Ça c’est un exemple de déclaration de fonction. Cette fonction appelée « Calcul » est de type réel et
elle admet trois arguments de type réel.
Maintenant voici un exemple de programme complet :
FONCTION Calcul (x : Réel , y : Réel , z : Réel) : Réel
Variable a : Entier
DEBUT
a ← 3
Calcul ← (x + y + z) * a
FIN
Variables i , j , k , b : Réels
DEBUT
Lire i
Lire j
Lire k
b ← Calcul (i , j , k) + 2
Ecrire b
FIN
Dans ce programme on fait appel a une fonction. Sa valeur est utilisée dans une expression.
Exercice
1. Définir la fonction « Somme » qu’on lui passe deux valeurs de type entier et qui renvoie comme
valeur la somme des valeurs reçues.
2. Définir la fonction « Absolue » qui renvoie la valeur absolue d’une valeur qu’on lui passe comme
paramètre.
3. Définir la fonction « Inverse » qui renvoie l’inverse d’une valeur qu’on lui passe comme paramètre.
4. Définir la fonction « Max » qui renvoie le maximum de deux valeurs.
5. Ecrivez un programme qui lit trois scores et qui utilise la fonction définie dans l’exercice précédent
pour déterminer le meilleur score et l’afficher après.
Solutions
1. La définition de la fonction « Somme » est :
FONCTION Somme (x : Réel , y : Réel ) : Réel
DEBUT
Somme ← x + y
FIN
2. La définition de la fonction « Absolue » est :
FONCTION Absolue (x : Réel) : Réel
DEBUT
SI x > 0 ALORS
Absolue ← x
Codification d’un algorithme et Programmation procédurale Filière : TSDI
OFPPT / DRIF / CDC Tertiaire & TIC Page : 44 Octobre 2005
SINON
Absolue ← -1 * x
FIN SI
FIN
3. La définition de la fonction « Inverse » est :
FONCTION Inverse (x : Réel) : Réel
DEBUT
SI x ≠ 0 ALORS
Inevrse ← 1 /x
FIN SI
FIN
4. La définition de la fonction « Max » est :
FONCTION Max (x : Réel , y Réel) : Réel
DEBUT
SI x > y ALORS
Max ← x
SINON
Max ← y
FIN SI
FIN
5. Le prgramme est :
FONCTION Max (x : Réel , y Réel) : Réel
DEBUT
SI x > y ALORS
Max ← x
SINON
Max ← y
FIN SI
FIN
Variables score1 , score2 , score3 , meil_score : Réels
DEBUT
Ecrire « Entrez les troix scores : »
Lire score1
Lire score2
Lire score3
meil_score ← Max (Max (score1 , score2) , score3)
Ecrire « Le meilleur score est : » , meil_score
FIN

الخميس، 26 ديسمبر 2013



Exercice 1.1

Quelles seront les valeurs des variables A, B et C 

après exécution des instructions suivantes ?

Variables A, B, C en Entier

Début

A ← 5

B ← 3

C ← A + B

A ← 2

C ← B – A

Fin
_______________________________________

Exercice 1.2

Quelles seront les valeurs des variables A et B 

après 

exécution des instructions suivantes ?

Variables A, B en Entier

Début

A ← 5

B ← A + 4

A ← A + 1

B ← A – 4

Fin
________________________________________

Exercice 1.3

Plus difficile, mais c’est un classique absolu, qu’il 

faut absolument maîtriser : écrire un algorithme 

permettant d’échanger les valeurs de deux 

variables
 
A et B, et ce quel que soit leur contenu préalable.

________________________________________

Exercice 1.4

Que produit l’algorithme suivant ?

Variables A, B, C en Caractères

Début

A ← "423"

B ← "12"

C ← A + B

Fin

________________________________________

Exercice 2.1

Ecrire un programme qui lit le prix HT d’un 

article,
 
le nombre d’articles et le taux de TVA, et qui 

fournit le prix total TTC correspondant. Faire

 en sorte que des libellés apparaissent clairement.

________________________________________

Exercice 2.2

Ecrire un algorithme utilisant des variables de type 

chaîne de caractères, et affichant quatre variantes 

possibles de la célèbre « belle marquise, vos beaux
 
yeux me font mourir d’amour ». On ne se soucie pa

s de la ponctuation, ni des majuscules.

________________________________________



Exercice 3.1

Ecrire un algorithme qui demande deux nombres à 

l’utilisateur et l’informe ensuite si leur produit est 

négatif ou positif (on laisse de côté le cas où le 

produit est nul). Attention toutefois : on ne doit pas 

calculer le produit des deux nombres.


________________________________________

Exercice 3.2

Ecrire un algorithme qui demande trois noms à
 
l’utilisateur et l’informe ensuite s’ils sont rangés ou 

non dans l’ordre alphabétique.

________________________________________

Exercice 3.3

Ecrire un algorithme qui demande l’âge d’un 

enfant 

à l’utilisateur. Ensuite, il l’informe de sa catégorie 

• "Poussin" de 6 à 7 ans

• "Pupille" de 8 à 9 ans

• "Minime" de 10 à 11 ans

• "Cadet" après 12 ans

Peut-on concevoir plusieurs algorithmes 

équivalents 

menant à ce résultat ?

________________________________________

Exercice 3.4

Ecrire un algorithme qui demande un nombre à 

l’utilisateur, et l’informe ensuite si ce nombre est 

positif ou négatif (on inclut cette fois le traitement 

du cas où le nombre vaut zéro).
________________________________________

Exercice 4.1

Ecrire un algorithme qui demande une heure et en

afficher une autre. Mais cette fois, il doit gérer 

également les secondes, et afficher l'heure qu'il sera 

une seconde plus tard.

Par exemple, si l'utilisateur tape 21, puis 32, puis 

8, 

l'algorithme doit répondre : "Dans une seconde, il 

sera 21 heure(s), 32 minute(s) et 9 seconde(s)".

_______________________________________f