Outils pour utilisateurs

Outils du site


kda:fonctions_pures

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

kda:fonctions_pures [2017/12/19 11:08] (Version actuelle)
195.221.62.1 créée
Ligne 1: Ligne 1:
 +# 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.
 +
 +(MicroAlg "​triple"​)
 +(Exemples_de Triple
 +  (Liste
 +    (? 1) 3
 +    (? 2) 6
 +    (? 3) 9
 +  )
 +)
 +(Definir (Triple x)
 + "​Retourne le triple du paramètre `x`."
 + "​kda"​
 + ​(Retourner (* 3 x))
 +)
 +(Tester Triple)
 +(/MicroAlg)
 +
 +Pour la suite, il vous faudra implémenter les fonctions en utilisant `Definir`
 +(voir [la doc de Definir](http://​microalg.info/​doc.html#​sym-Definir)),​
 +comme dans le premier exemple.
 +
 +## Fonctions à une variable
 +
 +(MicroAlg "​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)
 + "​Retourne le triple du paramètre `x`."
 + "​kda"​
 + (Si (< x 0) Alors 
 + ​(Affecter_a x (* x -1))
 + )
 + ​(Retourner x)
 + )
 +
 +(Tester Valeur_absolue)(/​MicroAlg)
 +
 +(MicroAlg "​pair"​)
 +(Exemples_de Pair
 +  (Liste
 +    (? 1) Faux
 +    (? 2) Vrai
 +    (? -1) Faux
 +    (? -2) Vrai
 +  )
 +)
 +(Definir (Pair x)
 + "​Retourne le triple du paramètre `x`."
 + "​kda"​
 + (Si (= 0 (% x 2)) Alors 
 + ​(Retourner Vrai)
 + ​Sinon ​
 + ​(Retourner Faux)
 + )
 + )
 + 
 +
 +(Tester Pair)
 +(/MicroAlg)
 +
 +(MicroAlg "​impair"​)
 +(!!! "En utilisant la commande Pair."​)
 +(!!! "En utilisant la commande Pair."​)
 +(Exemples_de Impair
 +  (Liste
 +    (? 1) Vrai
 +    (? 2) Faux
 +    (? -1) Vrai
 +    (? -2) Faux
 +  )
 +  )
 +  (Definir (Pair x)
 + "​Retourne vrai ou faux  en fonction du paramètre `x`."
 + "​kda"​
 + (Si (= 0 (% x 2)) Alors 
 + ​(Retourner Vrai)
 + ​Sinon ​
 + ​(Retourner Faux)
 + )
 + )
 + ​(Definir (Impair x)
 + "​Retourne vrai ou faux en fonction du paramètre `x`."
 + "​kda"​
 + (Si (= Vrai (Pair x)) Alors 
 + ​(Retourner Faux)
 + ​Sinon ​
 + ​(Retourner Vrai)
 + )
 + )
 + 
 + 
 +
 +(Tester Impair)
 +(/MicroAlg)
 +
 +(MicroAlg "​impair2"​)
 +(!!! "Idem, mais sans utiliser la commande Pair."​)
 +(Exemples_de Impair2
 +  (Liste
 +    (? 1) Vrai
 +    (? 2) Faux
 +    (? -1) Vrai
 +    (? -2) Faux
 +  )
 +)
 +(Definir (Impair2 x)
 + "​Retourne vrai ou faux en fonction du paramètre `x`."
 + "​kda"​
 + (Si (= 0 (% x 2)) Alors 
 + ​(Retourner Faux)
 + ​Sinon ​
 + ​(Retourner Vrai)
 + )
 + )
 +(Tester Impair2)
 +(/MicroAlg)
 +
 +## Fonctions à deux variables
 +
 +Ici `S` signifie « somme ».
 +
 +(MicroAlg "​somme"​)
 +(Exemples_de S
 +  (Liste
 +    (? 1 1) 2
 +    (? -17 20) 3
 +  )
 +)
 +(Definir (S x y)
 +"​Retourne l'​addition de x et de y"
 +"​kda"​
 +(Retourner (+ x y))
 +)
 +
 +(Tester S)
 +(/MicroAlg)
 +
 +(MicroAlg "​min"​)
 +(Exemples_de Min
 +  (Liste
 +    (? 1  2)  1
 +    (? 7 -2) -2
 +  )
 +)
 +(Definir (Min x y)
 +"​Retourne le minimum entre x et y"
 +"​kda"​
 +(Si (< x y) Alors 
 +(Retourner x)
 +Sinon 
 +(Retourner y)
 +)
 +)
 +
 +(Tester Min)
 +(/MicroAlg)
 +(MicroAlg "​max"​)
 +
 +(Exemples_de Max
 +  (Liste
 +    (? 1  2) 2
 +    (? 7 -2) 7
 +  )
 +)
 +(Definir (Max x y)
 +"​Retourne le maximum entre x et y"
 +"​kda"​
 +(Si (< x y) Alors 
 +(Retourner y)
 +Sinon 
 +(Retourner x)
 +)
 +)
 +(Tester Max)
 +(/MicroAlg)
 +
 +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 [ce tweet](https://​twitter.com/​CompSciFact/​status/​619860512428425216).
 +
 +Ici, `R` signifie « reste ».
 +
 +(MicroAlg "​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 x y)
 +(Retourner (% x y))
 +
 +(Tester R)
 +
 +(/MicroAlg)
 +
 +Ici, `Q` signifie « quotient ».
 +
 +(MicroAlg "​quotient"​)
 +(!!! "​http://​fr.wikipedia.org/​wiki/​Division_euclidienne"​)
 +(!!! "​http:​fr.wikipedia.org/​wiki/​Division_euclidienne"​)
 +(Exemples_de Q
 +  (Liste
 +    (? 13 5) 2
 +    (? 14 3) 4
 +  )
 +)
 +(Definir (Q x y)
 +(Affecter_a q (/(- x (% x y))y))
 +(Retourner q)
 +)
 +(Tester Q)
 +(/MicroAlg)
 +
 +(MicroAlg "​pgcd"​)
 +(Exemples_de PGCD
 +  (Liste
 +    (? 240 28) 4
 +    (? 241 1)  1
 +  )
 +)
 +(Tester PGCD)
 +(/MicroAlg)
 +
 +## Conversions
 +
 +(MicroAlg "​conversion"​)
 +(!!! "​Conversion de binaire (texte) vers décimal."​)
 +(Exemples_de Conversion_B_D
 +  (Liste
 +    (? "​101"​) 5
 +    (? "​1000000"​) 64
 +  )
 +)
 +(Tester Conversion_B_D)
 +(/MicroAlg)
kda/fonctions_pures.txt · Dernière modification: 2017/12/19 11:08 par 195.221.62.1