# Fonctions pures. # Voici quelques « exercices dirigés par les tests ». # Exemple # Pour faire passer les tests du premier échantillon, il suffit de changer deux caractères. # Programme triple (Exemples_de Triple (Liste (? 1) 3 (? 2) 6 (? 3) 8 ) ) (Definir (Triple x) "Retourne le triple du paramètre `x`." "votre pseudo" (Retourner (* 2 x)) ) (Tester Triple) # Pour la suite, il vous faudra implémenter les fonctions en utilisant Definir # (voir http://microalg.info/doc.html#sym-Definir la doc de Definir), # comme dans le premier exemple. # Fonctions à une variable # Programme val-abs (!!! "http:fr.wikipedia.org/wiki/Valeur_absolue") (Exemples_de Valeur_absolue (Liste (? 2) 2 (? 1) 1 (? 0) 0 (? -1) 1 (? -2) 2 ) ) (Definir (Valeur_absolue x) (Si (< x 0) Alors (Retourner (* x -1)) Sinon (Retourner x))) (Tester Valeur_absolue) # Programme pair (Exemples_de Pair (Liste (? 1) Faux (? 2) Vrai (? -1) Faux (? -2) Vrai ) ) (Definir (Pair x) (Retourner (=(% x 2)0)) ) (Tester Pair) # Programme impair (!!! "En utilisant la commande Pair.") (Exemples_de Impair (Liste (? 1) Vrai (? 2) Faux (? -1) Vrai (? -2) Faux ) ) (Definir (Pair x) (Retourner (=(% x 2)0)) ) (Definir (Impair x) (Retourner (Non(Pair))) ) # Programme impair2 (!!! "Idem, mais sans utiliser la commande Pair.") (Exemples_de Impair2 (Liste (? 1) Vrai (? 2) Faux (? -1) Vrai (? -2) Faux ) ) (Definir (Impair2 x) (Retourner (Non(=(% x 2)0))) ) (Tester Impair2) # Fonctions à deux variables # Ici S signifie « somme ». # Programme somme (Exemples_de S (Liste (? 1 1) 2 (? -17 20) 3 ) ) (Definir ( S a b ) (Retourner (+ a b)) ) (Tester S) # Programme min (Exemples_de Min (Liste (? 1 2) 1 (? 7 -2) -2 ) ) (Definir ( Min a b) (Tant_que (> a b) Faire (Affecter_a a b) ) (Retourner a ) ) (Tester Min) # Programme max (Exemples_de Max (Liste (? 1 2) 2 (? 7 -2) 7 ) ) (Definir ( Max a b) (Tant_que (< a b) Faire (Affecter_a a b ) ) (Retourner a ) ) (Tester Max) # Remarque : Min et Max peuvent s’écrire sans utiliser de structure conditionnelle, mais avec par exemple la valeur absolue (qu’il faut réécrire ici). Voir https://twitter.com/CompSciFact/status/619860512428425216 ce tweet. # Ici, R signifie « reste ». # Programme reste (!!! "http://fr.wikipedia.org/wiki/Division_euclidienne") (!!! "Interdiction d’utiliser la commande %.") (Exemples_de R (Liste (? 13 5) 3 (? 14 3) 2 ) ) (Definir ( R a b) (Retourner(% a b )) ) (Tester R) # Ici, Q signifie « quotient ». # Programme quotient (!!! "http:fr.wikipedia.org/wiki/Division_euclidienne") (Exemples_de Q (Liste (? 15 5) 3 (? 12 3) 4 ) ) (Definir ( Q a b) (Retourner(/ a b)) ) (Tester Q) # Programme pgcd (Exemples_de PGCD (Liste (? 240 28) 4 (? 241 1) 1 ) ) (Tester PGCD) # Conversions # Programme conversion (!!! "Conversion de binaire (texte) vers décimal.") (Exemples_de Conversion_B_D (Liste (? "101") 5 (? "1000000") 64 ) ) (Tester Conversion_B_D)