# Corrigé test blanc du 4/1/2022 

https://forms.gle/pYx83zfr1dz8dajk7  

test  9h30 -> 11h (1h30) 

## L'ensemble des méthodes et des propriétés d'un objet s'appelle :

une interface

## Quelle est le nom de la méthode que l'on utilise pour initialiser un objet à partir de valeurs ?

quelques réponses faites et leur validité ou non ...
 - initialisateur : dans l'idée pourquoi pas mais pas le bon terme
 - new Object() ou Object.create() : c'est des instructions dans un langage
 - encapsulation : le premier concept objet le fait d'avoir des méthodes privées ou public ou protégées
 - Une Variable : pas un concept spécifiquement objet
 - Constructeur : c'est bien le nom de la méthode, bonne réponse
 - l'instanciation : c'est effectivement le concept sous jacent mais pas la méthode
 - héritage : deuxième concept objet le fait de pouvoir hériter les propriétés et les méthodes d'un objet parent, exemple cercle étend  forme.
 - Javascript : c'est un langage de programmation pas un concept objet.

## Ecrire un algorithme qui demande un nombre à l’utilisateur, et l’informe ensuite si ce nombre est positif ou négatif. Le cas du zéro étant gênant, votre algorithme doit afficher que la valeur est nulle.

```
variable nombre en entier;

Afficher "Nombre ?";
Lire nombre;

Si nombre > 0 alors 
   Afficher "Le nombre est positif";
Sinon si nombre < 0 alors
  Afficher "le nombre est négatif";
Sinon
  Affciher "le nombe est 0";
Fin si
```

## Un magasin de reprographie facture 0,10€ les dix premières photocopies, 0,09€ les vingt suivantes et 0,08€ au-delà. Ecrivez un algorithme qui demande à l’utilisateur le nombre de photocopies effectuées et qui affiche la facture correspondante.

### Solution 1 en partant du haut vers le bas: 

```
variable prix en décimal;
variable nombre en entier;

Afficher "Nombre ?";
Lire nombre;

Si nombre > 30 Alors 
  prix = (nombre-30 * 0.08) + 20*0.09 + 10*0.1
Sinon si nombre > 10
  prix = (nombre-10 * 0.09) + 10*0.1
Sinon   
  prix = nombre * 0.1
Fin si 

Afficher "Le prix total est: " ~ prix
```

### Solution 2 en patant du bas vers le haut :

```
Variables n, p en Numérique
Début
    Ecrire "Nombre de photocopies : "
    Lire n
    Si n <= 10 Alors
        p ← n * 0,1
    SinonSi n <= 30 Alors
        p ← 10 * 0,1 + (n – 10) * 0,09
    Sinon
        p ← 10 * 0,1 + 20 * 0,09 + (n – 30) * 0,08
    FinSi
    Ecrire "Le prix total est: ", p
Fin
```

### Solution 3 en comptant copie par copie :

```
variable prix en décimal;
variable nombre en entier;

Afficher "Nombre ?";
Lire nombre;

pour i =0, i<nombre, i ++
   si i < 10 
     prix = prix + 0.10;
  sinon si i < 30 
     prix = prix + 0.09;
 sinon 
    prix = prix + 0.08;
fin pour 
Afficher "Le prix total est: " ~ prix
```

## Au vu de ce pseudo code :

> var a, b entier;  
> ca = 2;  
> a = a+1;  
> b = -3;  
> a = a*b;  

## Quelles sont les phrases vraies parmies celles-ci

 - `-` est un opérateur
 - sur la dernière ligne a et b sont des opérandes
 - à la fin du pseudo code a et b sont négatifs (respectivement ils valent -9 et -3)

La première est fausse : + n'est pas un opérande mais un opérateur

## Ecrire le pseudo code définissant un objet abstrait jouet, avec un prix, un poids, un stock. Un jouet a deux fonctions, une pour ajouter du stock, un pour le diminuer.

```
objet abstrait jouet  
    var protégée prix, poids : décimal;
    var protégée stock : entier;

    methode constructeur(prix,poids,stock)
        ceci->prix = prix;
        ceci->poids = poids;
        ceci->stock = stock;
    fin methode

    methode ajouter(nombre=1)
       ceci->stock = ceci->stock + nombre;
    fin methode

    methode diminuer(nombre=1)
       ceci->stock = ceci->stock - nombre;
    fin methode
fin objet
```

## Ecrie le pseudo code définissant un nounours comme un jouet avec une couleur et une matière

```
objet nounours étend jouet
    var couleur, matière chaînes;
    methode constructeur(prix,poids,stock,couleur,matière)
        parent->constructeur(prix,poids,stock);
        ceci->couleur = couleur;
        ceci->matière = matière;
    fin methode;
fin objet
```
