Commit b4d43e44ad38d227e815ef25dd6fbe8875b16ec4

Jeremy JEANNE 2025-05-18T18:30:01

doc(Introduction, Array , Block) translated in French

diff --git a/doc/1_KC3/1.01_Introduction.fr.md b/doc/1_KC3/1.01_Introduction.fr.md
new file mode 100644
index 0000000..e6f7f1d
--- /dev/null
+++ b/doc/1_KC3/1.01_Introduction.fr.md
@@ -0,0 +1,170 @@
+# 1.1 Introduction
+
+KC3 est actuellement un projet de langage de programmation inspiré du C, d'Elixir
+et de Common Lisp. Il pourrait être décrit comme du C avec des modules Elixir, du filtrage par motifs et un système d'objets sémantiques. L'idée est d'intégrer des modules, des fermetures, du filtrage par motifs, une base de données de graphes et de la métaprogrammation dans C99 avec un nombre extrêmement réduit de dépendances.
+
+Systèmes d'exploitation pris en charge (dépendances supplémentaires) :
+- BSD
+- Linux (libbsd, libmd)
+- MacOS X (libmd)
+- Windows (MSys2)
+
+Architectures prises en charge :
+- aarch64 (arm64, Apple M1, Apple M2)
+- amd64
+- i386
+- sparc64
+
+## 1.1.1 Modules
+
+Dans KC3, tout est contenu dans un module. Un module est un espace de noms et son nom est un symbole commençant par une majuscule. Par exemple, Sym et Str sont des noms de module valides.
+
+Utilisez defmodule pour définir un module.
+
+## Exemple :
+```elixir
+defmodule Test do
+def one = 1
+def double = fn (x) { x * 2 }
+def add = cfn Tag "tag_add" (Tag, Tag, Result)
+end
+```
+Chaque module peut définir un type, et un nom de module peut également être un nom de type si le module correspondant définit un type.
+
+Utilisez defstruct pour définir un type de structure dans un module. La structure portera le même nom que le module.
+## Exemple :
+```elixir
+ikc3> defmodule Test do
+ikc3>   defstruct [x: (F32) 0.0,
+ikc3>              y: (F32) 0.0]
+ikc3> end
+ikc3> a = %Test{}
+%Test{x: (F32) 0.0,
+      y: (F32) 0.0}
+ikc3> a.x
+(F32) 0.0
+ikc3> a.y
+(F32) 0.0
+```
+Le module peut également inclure des définitions de constantes ou de fonctions pour opérer sur le type de module ou d’autres types.
+
+Le module par défaut est KC3, défini comme des faits (triplets)
+dans lib/kc3/0.1/kc3.facts.
+
+## 1.1.2 Types de données
+
+Les types de données de base dans KC3 sont :
+- Chaînes : Str, par exemple "Bonjour tout le monde !"
+- Symboles : Sym, par exemple :hello ou Hello
+- Booléens : Booléen, vrai ou faux
+- Nombres
+- Entiers
+- Petits entiers
+- Petits entiers signés : S8, S16, S32, S64, Sw
+- Petits entiers non signés : U8, U16, U32, U64, Uw
+- Grands entiers : Entier
+- Nombres rationnels (fractions d'entiers) : Rapport, par exemple -2/3
+- Nombres à virgule flottante : F32, F64, F128
+- Nombres complexes (i = √(-1)) : Complexe, par exemple 1 + i 2
+- Listes : Liste, par exemple [1, 2, 3]
+- Tuples : Tuple, par exemple {:ok, 123}
+- Applications : Application, par exemple %{id: 1, login: "dx"}
+- Structures : p. ex. %GL.Sphere{}
+- Code entre guillemets : Guillemet, p. ex. guillemet 1 + 2
+- Identifiants : Ident, p. ex. guillemet List.map
+- Appel de fonction ou d'opérateur : Appel, p. ex. guillemet sqrt(1), guillemet 1 + 2
+- Blocs de code : Bloc, p. ex. { 1 + 2; 3 + 4 }
+- Fonction : Fn, p. ex. fn (x) { x * 2 }
+- Fonction C : Cfn, p. ex. cfn Balise "tag_add" (Balise, Balise, Résultat)
+- Code sans guillemets : Supprimer les guillemets, p. ex. guillemet 1 + supprimer les guillemets(x)
+- Variables : Var, p. ex. ?
+- Void : Void, p. ex. void
+
+---# 1.1 Introduction
+
+KC3 est actuellement un projet de langage de programmation inspiré du C, d'Elixir
+et de Common Lisp. Il pourrait être décrit comme du C avec des modules Elixir, du filtrage par motifs et un système d'objets sémantiques. L'idée est d'intégrer des modules, des fermetures, du filtrage par motifs, une base de données de graphes et de la métaprogrammation dans C99 avec un nombre extrêmement réduit de dépendances.
+
+Systèmes d'exploitation pris en charge (dépendances supplémentaires) :
+- BSD
+- Linux (libbsd, libmd)
+- MacOS X (libmd)
+- Windows (MSys2)
+
+Architectures prises en charge :
+- aarch64 (arm64, Apple M1, Apple M2)
+- amd64
+- i386
+- sparc64
+
+## 1.1.1 Modules
+
+Dans KC3, tout est contenu dans un module. Un module est un espace de noms et son nom est un symbole commençant par une majuscule. Par exemple, Sym et Str sont des noms de module valides.
+
+Utilisez defmodule pour définir un module.
+##Exemple :
+```elixir
+defmodule Test do
+def one = 1
+def double = fn (x) { x * 2 }
+def add = cfn Tag "tag_add" (Tag, Tag, Result)
+end
+```
+Chaque module peut définir un type, et un nom de module peut également être un nom de type si le module correspondant définit un type.
+
+Utilisez defstruct pour définir un type de structure dans un module. La structure portera le même nom que le module.
+## Exemple :
+```elixir
+ikc3> defmodule Test do
+ikc3>   defstruct [x: (F32) 0.0,
+ikc3>              y: (F32) 0.0]
+ikc3> end
+ikc3> a = %Test{}
+%Test{x: (F32) 0.0,
+      y: (F32) 0.0}
+ikc3> a.x
+(F32) 0.0
+ikc3> a.y
+(F32) 0.0
+```
+Le module peut également inclure des définitions de constantes ou de fonctions pour opérer sur le type de module ou d’autres types.
+
+Le module par défaut est KC3, défini comme des faits (triplets)
+dans lib/kc3/0.1/kc3.facts.
+
+## 1.1.2 Types de données
+
+Les types de données de base dans KC3 sont :
+- Chaînes : Str, par exemple "Bonjour tout le monde !"
+- Symboles : Sym, par exemple :hello ou Hello
+- Booléens : Booléen, vrai ou faux
+- Nombres
+- Entiers
+- Petits entiers
+- Petits entiers signés : S8, S16, S32, S64, Sw
+- Petits entiers non signés : U8, U16, U32, U64, Uw
+- Grands entiers : Entier
+- Nombres rationnels (fractions d'entiers) : Rapport, par exemple -2/3
+- Nombres à virgule flottante : F32, F64, F128
+- Nombres complexes (i = √(-1)) : Complexe, par exemple 1 + i 2
+- Listes : Liste, par exemple [1, 2, 3]
+- Tuples : Tuple, par exemple {:ok, 123}
+- Applications : Application, par exemple %{id: 1, login: "dx"}
+- Structures : p. ex. %GL.Sphere{}
+- Code entre guillemets : Guillemet, p. ex. guillemet 1 + 2
+- Identifiants : Ident, p. ex. guillemet List.map
+- Appel de fonction ou d'opérateur : Appel, p. ex. guillemet sqrt(1), guillemet 1 + 2
+- Blocs de code : Bloc, p. ex. { 1 + 2; 3 + 4 }
+- Fonction : Fn, p. ex. fn (x) { x * 2 }
+- Fonction C : Cfn, p. ex. cfn Balise "tag_add" (Balise, Balise, Résultat)
+- Code sans guillemets : Supprimer les guillemets, p. ex. guillemet 1 + supprimer les guillemets(x)
+- Variables : Var, p. ex. ?
+- Void : Void, p. ex. void
+
+---
+
+Top : [KC3 documentation](/doc/)
+
+Previous : [1 KC3](/doc/1_KC3)
+
+Next : [1.02 Array](1.02_Array)
diff --git a/doc/1_KC3/1.02_Array.fr.md b/doc/1_KC3/1.02_Array.fr.md
new file mode 100644
index 0000000..34ebe7a
--- /dev/null
+++ b/doc/1_KC3/1.02_Array.fr.md
@@ -0,0 +1,33 @@
+# 1.2 Tableau
+
+Les tableaux sont de type tableau et sont multidimensionnels, comme en C.
+
+Les valeurs littérales commencent par un transtypage de tableau et sont suivies d'un tuple.
+
+Utilisez `List.to_array` pour convertir une `List` en type tableau.
+
+## 1.2.1 Exemples
+
+```
+ikc3> a = (U8[]) {0, 1, 2}
+(U8[]) {0, 1, 2}
+ikc3> type(a)
+U8[]
+ikc3> a[0]
+0
+ikc3> a[1]
+1
+ikc3> a[2]
+2
+ikc3> Liste.vers_tableau
+cfn Tableau "kc3_list_to_array" (List, Sym, Résultat)
+ikc3> List.to_array([0, 1, 2], U8[])
+(U8[]) {0, 1, 2}
+```
+
+---
+Haut : [Documentation KC3](/doc/)
+
+Précédent : [1.01 Introduction](1.01_Introduction)
+
+Suivant : [1.03 Bloc](1.03_Block)
diff --git a/doc/1_KC3/1.03_Block.fr.md b/doc/1_KC3/1.03_Block.fr.md
new file mode 100644
index 0000000..c941816
--- /dev/null
+++ b/doc/1_KC3/1.03_Block.fr.md
@@ -0,0 +1,40 @@
+# 1.3 Do Block
+
+Un bloc KC3 **do** est un bloc de code source. Il commence par « do » ou « { » et se termine par « end » ou « } » respectivement.
+Il peut être passé à un opérateur spécial ou à une macro-fonction pour être évalué explicitement en C avec « env_eval_do_block » (voir `libkc3/env_eval.c`).
+
+Un bloc évalue toutes ses instructions tour à tour et renvoie la valeur de la dernière expression.
+
+## 1.3.1 Exemples
+```elixir
+ikc3> do
+ikc3>   1
+ikc3>   2
+ikc3>   3
+ikc3> end
+3
+ikc3> quote do
+ikc3>   1
+ikc3>   2
+ikc3>   3
+ikc3> end
+do
+  1
+  2
+  3
+end
+ikc3> type(quote do
+ikc3>   1
+ikc3>   2
+ikc3>   3
+ikc3> end)
+Block
+```
+
+---
+
+Top : [KC3 documentation](/doc/)
+
+Previous : [1.02 Array](1.02_Array)
+
+Next : [1.04 Bool](1.04_Bool)