## 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