Programmation Scheme/Variables globales et variables locales

Les variables (dont les fonctions) définies avec codice_1 sont globales, c'est-à-dire qu'elles existent en dehors de l'expression qui les a créées.
Si une variable ne doit être utilisée que dans l'expression et pas ailleurs, il est intéressant de la définir uniquement en local :
Ceci se fait avec l'opération primitive codice_2.
Définition de variables locales.
Si des expressions "expr1", "expr2", …, "expr_n" contiennent des variables "var1", "var2", …, "var_n" et que l'on veut attribuer des valeurs constantes "cst1", "cst2", …, "cst_n" à ces variables, on utilise codice_2 :
 (let (("var1" "cst1") … ("var_n" "cst_n")) "expr1" … "expr_n")
On a donc une liste de paires (variable constante) suivie d'une liste d'expressions.
 scheme>(let ((x 1)) (+ x 1)) 
 "⇒ 2"
 scheme>(+ x 1)
 "⇒ Error: variable x is not bound"
 scheme>(let ((x 1)(y 5)) (+ x y) ) 
 "⇒ 6"
Utilisation d'une expression à variables locales.
Considérons des expressions faisant intervenir des variables. Si on veut que les valeurs des variables ne soient pas définies dans les expressions elles-mêmes, mais que les variables soient tout de même locales, on utilise codice_4. Avec une seule variable "var" prenant la valeur "cst", on a :
 ((lambda ("var") "expr1" … "expr_n" )("cst"))
Les expressions "expr1", …, "expr_n" peuvent éventuellement être des fonctions globales. Avec "n" variables "var1", "var2", …, "var_n" prenant les valeurs "cst1", "cst2", …, "cst_n" :
 ((lambda ("var1" … "var_n") "expr1" … "expr_n")("cst1" … "cst_n"))
On peut ainsi définir une procédure locale, en mettant l'expression totale dans une variable avec codice_2 :
 (let
 ;;; définition de la fonction
 (("fct" (lambda ("var1" … "var_n") "expr1" … "expr_n" )))
 ;;; utilisation de la fonction
 ("fct" "cst1" … "cst_n"))
on n'a ici pour l'opération codice_2 qu'une seule paire (variable constante), la variable étant le nom de la fonction et la constante étant la fonction elle-même, les variables de la fonction étant définies avec codice_4.
 (let ((double (lambda (x) (* 2 x)))) (double 5))
 "⇒ 10"

Néerlandais/Dans le secondaire/Exercices/la présentation

<quiz display="simple">
Répondez aux questions en néerlandais
Hoe heet je? -- { Ik heet _7 } Yves Martin.
Wat is je voornaam? -- Mijn { voornaam is _12 } { Yves _6 } .
Wat is je achternaam? -- Mijn { achternaam is _14 } { Martin _7 } .
Waar woon je? -- { Ik woon in _14 } Brussel.
Waar ben je geboren? -- { Ik ben in _9 } Parijs { geboren _8 } .
Welke talen spreek je? -- { Ik spreek _10 } Frans, Nederlands en Engels.
Heb je broertjes of zusjes? -- Ja, { ik heb _7 } twee broertjes { en een _6 } zusje.
</quiz>

Programmation Scheme/Récursivité
La récursivité, c'est lorsqu'une procédure s'appelle elle-même. Il faut impérativement prévoir une condition de fin, sans quoi l'appel récursif ne se termine jamais.
Un exemple simple : la factorielle.
Calculons la factorielle d'un entier :
 (define (factorielle n)
 (if (= n 0)
 1
 (* n (factorielle (- n 1)))))
Si l'on fait
 (factorielle 0)
 "⇒ 1"
en effet, puisque "n" vaut 0, l'évaluation de codice_1 est codice_2, et donc l'évaluation de codice_3 est « 1 » (première expression suivant le booléen de codice_4).
Si l'on fait
 (factorielle 1)
 "⇒ 1"
en effet, codice_1 est codice_6, c'est la seconde expression suivant le booléen qui est évaluée, soit codice_7 → 
codice_8 (en remplaçant "n" par sa valeur, « 1 »).
Si l'on fait
 (factorielle 4)
 "⇒ 24"
car au final, on se retrouve à évaluer
on remplace à chaque étape « codice_14 » par 
« codice_15 » (en écriture semi-préfixée) jusqu'à arriver à 0, puisque « codice_16 » est remplacé par « codice_17 ».

Structures de données en C
Liminaire.
Le propos de ce wikilivre est de proposer une aide pédagogique pour la programmation des principales structures de données en C. Il est disponible en libre accès dans le rayon « Informatique » de wikilivres.
Gérer les collections.
Les itérateurs 
Les collections en mémoire.
Les collections ordonnées.
Les listes.
Les listes simples

Photographie/Fabricants/Casio/Casio Exilim EX-Z60

Photographie/Fabricants/Casio/Casio Exilim EX-S770

Structures de données en C/Les listes simples