# Remise et total à payer

Source : https://docs.berkios.online/galerie/remise-et-total/ · Section : Galerie · Documentation officielle BERKIOS (https://docs.berkios.online)


Calculer une remise avec des fonctions, puis découper le programme en deux fichiers : des modules.

Télécharger l'exemple : https://github.com/berkiosbuinu-server/examples/releases/latest/download/02-remise-et-total.zip

**Type :** BERKIOS Core · **Niveau :** débutant · **Fichiers :** `maths-fr.bks`, `main-fr.bks`

## Ce que vous allez apprendre

- Écrire une fonction avec des paramètres et un résultat.
- Utiliser des variables et des calculs.
- Séparer un programme en plusieurs fichiers avec `importer`.

## Avant de commencer

Avoir fait [Bonjour BERKIOS](https://docs.berkios.online/galerie/bonjour-berkios/) ou connaître les bases de `afficher` et `soit`.

## Étape 1 : récupérer l'exemple

Téléchargez et décompressez l'exemple : les deux fichiers doivent être **dans le même dossier**.

## Étape 2 : le module de calculs

`maths-fr.bks` contient des fonctions réutilisables :

```text nocheck
module "Mathématiques"
fonction doubler(nombre: Decimal) -> Decimal
  retourner nombre * 2

fonction calculer_remise(prix: Decimal, pourcentage: Decimal) -> Decimal
  retourner prix * pourcentage / 100
```

Ce fichier n'a pas de fonction `principale` : il ne se lance pas seul, il fournit des outils aux autres.

## Étape 3 : le programme principal

`main-fr.bks` importe le module et s'en sert :

```text nocheck
module "Application de vente"
importer "maths-fr.bks"

fonction principale() -> Entier
  soit prix = 125.0
  soit pourcentage = 15.0
  soit remise = calculer_remise(prix, pourcentage)
  soit total = prix - remise
  afficher "Remise :"
  afficher remise
  afficher "Total à payer :"
  afficher total
  afficher doubler(10)
  retourner 0
```

## Étape 4 : lancer

On lance **le fichier principal** :

```bash
berkios core main-fr.bks
```

```text
BERKIOS Core : Application de vente — 3 fonction(s), 0 type(s) : vérification réussie.
Remise :
18.75
Total à payer :
106.25
20
```

## Le code expliqué

- `calculer_remise(prix, pourcentage)` calcule `125 × 15 / 100 = 18,75`.
- `soit total = prix - remise` : le total est le prix moins la remise, soit `106,25`.
- `importer "maths-fr.bks"` rend les fonctions du module disponibles. Le chemin est relatif **au fichier qui écrit l'import**.
- `Decimal` est le type des nombres à virgule : les types sont vérifiés **avant** l'exécution.
- Un import circulaire (A importe B qui importe A) est refusé par le compilateur.

## À vous de jouer

Ajoutez une fonction de taxe dans un nouveau fichier `taxes.bks`, qui réutilise le module de calcul :

```text nocheck
module "Taxes"
importer "maths-fr.bks"

fonction ajouter_taxe(prix: Decimal, taux: Decimal) -> Decimal
  retourner prix + calculer_remise(prix, taux)

fonction principale() -> Entier
  afficher ajouter_taxe(100.0, 18.0)
  retourner 0
```

`berkios core taxes.bks` affiche `118`.

## Pour aller plus loin

- Exemple suivant : [Compte bancaire](https://docs.berkios.online/galerie/compte-bancaire/)
- Leçon : [Fonctions et modules](https://docs.berkios.online/core/fonctions-et-modules/)
