## opérateurs complémentaires
 - opérateur de concaténation (joindre deux chaînes entre elles) : ~
 - opérateur de vérification de type : est

## Vérification de type : est "type"
 - 1 est entier
 - 1.2 est decimal
 - "bonjour" est chaine
 - mavariable est objet
 - [1,2,45,6] est tableau

## instructions complémentaires
### fonction de conversions de types :
- entier(1.2) => 1
- entier("1") => 1
- chaine(3) => "3"

En anglais : Typecast functions, appelées aussi transtypage. 

*NB* : dans certains langages les fonctions de conversion de types sont des opérateurs unaires.

## exercice 1
Demander à quelqu'un le prix d'un produit HT et le nombre qu'il veut.
Puis calculer combien ça lui coute TTC et lui donner l'information.
On part du principe que la TVA est de 20%.

```
var prix décimal;
var qte entier;
var tva entier;

tva = 20;

Afficher "Prix du produit ?"
lire prix;
Afficher "Quantité du produit ?"
lire qte;

Afficher " Le cout total est : " ~ ((qte*prix)*(100+tva)/100)
```

## exercice 2
Demander a quelqu'un son nom son anne de naissance
et lui dire bonjour ainsi que quel age il a en années en mois et en semaines.

```
var nom chaine;
var anne entier;

afficher "nom ?"
lire nom;
afficher "année de naissance ?"
lire annee;

afficher "bonjour " ~ nom;
afficher "votre age est de " ~ (2022 - anne) ~ "ans";
afficher "votre age est de " ~ (2022 - anne)*12 ~ "mois";
afficher "votre age est de " ~ (2022 - anne)*52 ~ "semaines";
```
## exercice 3 
une année est bissextile si elle divisible par 4, sauf si elle est divisible par 100, à moins qu'elle soit divisible par 400.
Du coup : demander une année à un utilisateur et sire si elle est bisextile our pas.

```
var annee entier;

afficher "année ?";
lire annee

si (annee / 400) est entier alors
    afficher "l'année est bissextile";
sinon si (annee / 100) est entier alors
    afficher "l'année n'est pas bissextile";
sinon si (annee / 4) est entier alors
    afficher "l'année est bissextile";
sinon 
    afficher "l'année n'est pas bissextile";
fin si

```

## exemple de fonction est entier du resutlat d'une division
```
fonction est_entier(opD,opG) 
    var reste = opD;
   tant que reste > opD
        reste = reste - opG;
   fin tant que
   si reste > 0 alors
    renvoyer faux;
   sinon renvoyer vrai
fin fonction;
```

## fonction est entier pour un nombre
```
fonction est_entier(nombre) 
    si entier(nombre) == nombre alors
        retourner vrai;
    sinon 
        retourner faux;
    fin si;
fin fonction;
```

## notions de portée de global et d'existence