> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://documentation.celestory.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Entrée et Sortie

# 🟨 Entrée et Sortie

${frame}[Vidéo : anatomie du bloc Sortie](https://celestory-docs-videos.netlify.app/fr/anatomie-bloc/output.html)

${frame}[Vidéo : anatomie du bloc Entrée](https://celestory-docs-videos.netlify.app/fr/anatomie-bloc/input.html)

Les blocs **Entrée** et **Sortie** sont les deux bornes d'une **blackbox** : ce sont eux qui définissent la « signature » d'un graphe encapsulé, comme les paramètres et la valeur de retour d'une fonction.

Ils vont toujours par paire et n'existent que dans l'éditeur Blackbox : vous ne les trouverez pas dans le menu *Ajouter un bloc* d'un graphe Chatbot, Visual Novel ou Draft. Les points que vous déclarez dessus se retrouvent automatiquement sur le bloc **Ouvrir un graphe** de tous les graphes qui appellent cette blackbox.

## 📥 Entrées

**Bloc Entrée**

*   *Aucune entrée* : le bloc Entrée est le point de départ de la blackbox. Rien n'arrive sur lui depuis l'intérieur du graphe ; ce qui l'alimente, ce sont les points du bloc *Ouvrir un graphe* dans le graphe appelant.

**Bloc Sortie**

*   **out (Chemin)** : le point natif du bloc Sortie. C'est bien une *entrée* du bloc : y amener le flux termine la blackbox et rend la main au graphe appelant.
*   **Points supplémentaires (type au choix)** : chaque point que vous ajoutez dans l'*Éditeur de points* du bloc Sortie devient une entrée de valeur. C'est la valeur de retour de la blackbox, récupérée en sortie du bloc *Ouvrir un graphe*.

## 📤 Sorties

**Bloc Entrée**

*   **in (Chemin)** : le point natif du bloc Entrée. C'est bien une *sortie* du bloc : le flux part d'ici vers le premier bloc de la blackbox.
*   **Points supplémentaires (type au choix)** : chaque point ajouté dans l'*Éditeur de points* du bloc Entrée devient une sortie de valeur, c'est-à-dire un paramètre reçu de l'appelant, disponible partout dans la blackbox.

**Bloc Sortie**

*   *Aucune sortie* : le bloc Sortie est un terminus ; le flux ne repart pas de lui à l'intérieur du graphe.

## 💡 Exemple d'utilisation

${frame}[Vidéo : les blocs Entrée et Sortie](https://celestory-docs-videos.netlify.app/fr/graphe-blocs/entree-et-sortie.html)

**Scénario : une blackbox « Vérifier le mot de passe » réutilisée dans plusieurs graphes**

1. Vous créez une blackbox nommée `VérifierMotDePasse`. Celestory génère automatiquement le graphe, un bloc **Entrée VérifierMotDePasse** à gauche et un bloc **Sortie VérifierMotDePasse** à droite.
2. Vous double-cliquez sur le bloc Entrée, puis cliquez sur **Ajouter un point** dans l'*Éditeur de points* ; vous le renommez `saisie` et changez son type de « Chemin » à « Texte ». La blackbox attend maintenant un paramètre texte.
3. Vous double-cliquez sur le bloc Sortie et ajoutez un point `correct` de type Booléen.
4. À l'intérieur, vous branchez `in` sur un bloc **Condition** qui compare `saisie` au mot de passe attendu, et vous ramenez les deux branches sur `out` en assignant `correct` en conséquence.
5. Dans votre graphe principal, vous posez un bloc **Ouvrir un graphe** et sélectionnez `VérifierMotDePasse` : le bloc affiche aussitôt une entrée `saisie` et une sortie `correct`, prêtes à être câblées.

## ⚙️ Détails Techniques

*   **Identifiants internes** : `input` et `output`, tous deux du template `BlackboxTemplate`.
*   **Nommage contre-intuitif** : le point natif du bloc **Entrée** s'appelle `in` alors qu'il est un point de *sortie* du bloc, et celui du bloc **Sortie** s'appelle `out` alors qu'il est un point d'*entrée*. Les noms sont donnés du point de vue de la blackbox vue de l'extérieur, pas du bloc lui-même.
*   **Création automatique** : vous n'avez normalement pas à poser ces blocs vous-même. Créer une blackbox crée le graphe, une variable de type Graphe portant son nom, un bloc `Entrée <nom>` en (0,0) et un bloc `Sortie <nom>` en (400,0). Le raccourci **Ctrl/Cmd + B** demande d'abord un nom (« Nom de la blackbox »), puis transforme la sélection en blackbox : l'Entrée et la Sortie sont posées de part et d'autre de la sélection, et les points recâblés sont nommés d'après leur type (`in`, `out`, puis `out (2)`, `out (3)`… quand il en faut plusieurs).
*   **Unicité** : le bloc Entrée est déclaré « unique » et le bloc Sortie « au moins un ». En pratique, le menu *Ajouter un bloc* refuse d'en ajouter un second dans les deux cas, avec un message d'alerte rouge (`Can't add more input block in this graph`, non traduit).
*   **Tous les blocs Sortie partagent la même liste de points** : ajouter, renommer, supprimer ou retyper un point depuis l'*Éditeur de points* d'un bloc Sortie applique la modification à **tous** les blocs Sortie du graphe, afin que chaque terminaison de la blackbox expose la même signature.
*   **Nouveau point = type Chemin par défaut** : un point fraîchement ajouté est de type « Chemin » et se nomme `point`, `point 1`, `point 2`… Pensez à le renommer et à lui donner son vrai type dans le menu déroulant de l'éditeur.
*   **Propagation en cascade vers les appelants** : toute modification de ces points est répercutée sur les blocs *Ouvrir un graphe* qui pointent vers ce graphe, dans tous les graphes du projet.
*   **⚠️ Des connexions peuvent disparaître silencieusement** : supprimer un point supprime les connexions correspondantes, y compris dans les graphes appelants. Changer le type d'un point supprime toutes les connexions devenues incompatibles, là encore des deux côtés.
*   **⚠️ Une Entrée ou une Sortie ne peut pas être encapsulée** : tenter de créer une blackbox à partir d'une sélection contenant un bloc Départ, Entrée ou Sortie est refusé (« L'entrée ou la sortie d'une blackbox ne peuvent être blackboxés »).
*   **Libellé anglais manquant** : la clé de traduction du bloc Entrée n'existe qu'en français. En interface anglaise, le menu *Ajouter un bloc* affiche donc l'identifiant brut `graph.blockType.input` au lieu de « Input ».