You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Compiler → a.out
python3 fppc.py monprogramme.fpp
# Compiler avec un nom de sortie
python3 fppc.py monprogramme.fpp -o monprogramme
# Afficher le code C généré (sans compiler)
python3 fppc.py monprogramme.fpp -S
# Aide / version
python3 fppc.py --aide
python3 fppc.py --version
Compilation avec make
make all # compile tous les exemples → build/
make run-bonjour # compile + exécute exemples/bonjour.fpp
make voir-c-bonjour # affiche le C généré de bonjour.fpp
make re # recompile tout depuis zéro
make fclean # supprime binaires et fichiers .c
make liste # liste les exemples disponibles
Syntaxe
Variables et types
entier age =25
decimal taille =1.80
texte prenom ="Alice"
bool actif = vrai
liste notes = [12, 15, 18, 9]
dict infos = {"ville": "Paris", "pays": "France"}
const PI =3.14159
Affichage et saisie
afficher("Bonjour", prenom)
texte nom = lire("Ton nom : ")
entier nb = lire_entier("Nombre : ")
decimal prix = lire_decimal("Prix : ")
Conditions
si age >=18 alors
afficher("Majeur")
sinonsi age >=13 alors
afficher("Adolescent")
sinon
afficher("Enfant")
fin
Boucles
# Boucle tant que
tantque compteur < 10 faire
afficher(compteur)
compteur +=1
fin
# Boucle pour (intervalle, avec pas optionnel)
pour i de 1 a 10 faire
afficher(i)
fin
pour i de 0 a 100 pas 5 faire
afficher(i)
fin
# Parcourir une liste
pour fruit dans fruits faire
afficher(fruit)
fin
Fonctions
fonction factorielle(n) faire
si n <=1 alors
retourner 1
fin
retourner n * factorielle(n -1)
fin
afficher(factorielle(10))
Opérateurs
Opérateur
Description
+-*/
Arithmétique de base (+ concaténation texte)
%
Modulo (entier)
**
Puissance
==!=<><=>=
Comparaisons
etounon
Logique booléenne
+=-=*=/=
Assignation composée
Méthodes intégrées
Listes
l.ajouter(v) # ajoute en fin
l.pop() # retire et retourne le dernier élément
l.trier() # tri sur place
l.longueur() # nombre d'élémentsl[i] # accès par index (lecture/écriture)
Textes
t.longueur()
t.majuscule() / t.minuscule()
t.supprimer_espaces()
t.contient("sous-texte")
t.remplacer("ancien", "nouveau")
t.diviser("") # retourne une liste de textes
t.commence_par("pré")
t.finit_par("suf")
Dictionnaires
d.cles() # liste des clés
d.valeurs() # liste des valeurs
d.longueur()
d["cle"] # lecture
d["cle"] = v # écriture
Les inclusions sont récursives (un fichier inclus peut lui-même inclure d'autres fichiers)
et sans doublon (chaque fichier n'est inclus qu'une seule fois même s'il est référencé plusieurs fois).
include/math.fpp — Mathématiques avancées
Fonction
Description
pgcd(a, b)
Plus grand commun diviseur
ppcm(a, b)
Plus petit commun multiple
signe(n)
-1, 0 ou 1
est_pair(n) / est_impair(n)
Parité
factorielle(n)
n! (récursif)
combinaisons(n, k)
C(n, k)
permutations(n, k)
P(n, k)
est_premier(n)
Test de primalité
prochain_premier(n)
Premier ≥ n
fibonacci(n)
Fibonacci (récursif)
fibonacci_iter(n)
Fibonacci (itératif, rapide)
puissance_rapide(b, e)
Exponentiation rapide
log_base(x, b)
Logarithme en base b
clamp(v, mn, mx)
Contraindre v dans [mn, mx]
interpoler(a, b, t)
Interpolation linéaire
normaliser(v, mn, mx)
Normaliser vers [0, 1]
remapper(v, a1, b1, a2, b2)
Remapper d'un intervalle à un autre
distance(x1, y1, x2, y2)
Distance euclidienne 2D
aire_cercle(r)
πr²
aire_triangle(a, b, c)
Formule de Héron
hypotenuse(a, b)
√(a²+b²)
deg_vers_rad(d) / rad_vers_deg(r)
Conversion d'angles
include/stats.fpp — Statistiques
Fonction
Description
somme(lst)
Σxi
produit(lst)
Πxi
min_liste(lst) / max_liste(lst)
Extrêmes
index_min(lst) / index_max(lst)
Index des extrêmes
etendue(lst)
max − min
moyenne(lst)
Moyenne arithmétique
mediane(lst)
Médiane (trie en place)
moyenne_harmonique(lst)
Moyenne harmonique
moyenne_geometrique(lst)
Moyenne géométrique
variance(lst)
Variance population
variance_echantillon(lst)
Variance échantillon (n−1)
ecart_type(lst)
Écart-type population
ecart_type_echantillon(lst)
Écart-type échantillon
ecart_absolu_moyen(lst)
Écart absolu moyen
percentile(lst, p)
p-ième percentile
q1(lst) / q3(lst) / iqr(lst)
Quartiles et IQR
coef_variation(lst)
CV en %
compter_sup(lst, s)
Valeurs > seuil
compter_inf(lst, s)
Valeurs < seuil
compter_entre(lst, a, b)
Valeurs dans [a, b]
normaliser_liste(lst)
Normalisation min-max (en place)
centrer_reduire(lst)
Z-score (en place)
include/conversion.fpp — Conversions d'unités
Températures, distances, masses, volumes, surfaces, vitesses, énergie, pression, temps, données, angles — plus de 50 fonctions de conversion.
extraire_bits(v, k, n) / inserer_bits(v, k, n, val)
Champs de bits
checksum_xor(lst) / checksum_somme(lst)
Checksums
est_mersenne(n)
Nombre de Mersenne ?
parite(n) / bit_parite_paire(n)
Parité
include/matrice.fpp — Matrices & vecteurs
Une matrice N×M est représentée comme une liste plate de N×M éléments, rangée ligne par ligne.
Accès à l'élément (i, j) : mat_get(mat, i, j, ncols) ou indice i * ncols + j.
Fonction
Description
mat_zeros(nl, nc)
Matrice nulle
mat_identite(n)
Matrice identité n×n
mat_remplir(nl, nc, v)
Matrice remplie d'une valeur
mat_get(mat, i, j, nc)
Lecture d'un élément
mat_trace(mat, n)
Trace d'une matrice carrée
mat_det2_liste(mat)
Déterminant 2×2
mat_det3(mat)
Déterminant 3×3
mat_additionner(a, b) / mat_soustraire(a, b)
Addition / Soustraction
mat_scalaire(mat, k)
Multiplication par un scalaire
mat_transposee(mat, nl, nc)
Transposée
mat_multiplier(a, b, nla, nca, ncb)
Multiplication matricielle
mat_ligne(mat, i, nc) / mat_colonne(mat, j, nl, nc)
Extraction ligne/colonne
systeme2x2_x(...) / systeme2x2_y(...)
Résolution système 2×2 (Cramer)
vec_scalaire(u, v)
Produit scalaire
vec_norme(u) / vec_normaliser(u)
Norme et normalisation
vec_additionner(u, v) / vec_soustraire(u, v)
Opérations vectorielles
vec_distance(u, v)
Distance euclidienne
include/date.fpp — Calculs de dates
Les dates sont au format AAAAMMJJ (ex : 20240315 = 15 mars 2024).