# Kidule Dé/Structure d'un programme

On va commencer par un tout petit programme pour comprendre le début de la programmation.
Ce programme ne fait presque rien: si on presse sur le bouton Poussoir, cela allume la Led 0 du Dé:

## Explications

Examinons ce petit programme pas à pas:

### Déclarations de tout le Hardware

indique au compilateur qu’il faut inclure un autre fichier. C'est comme si on avait tapé toutes les lignes contenues dans ce fichier. C'est bien plus lisible de n'avoir qu’à inclure ce fichier, plutôt que de le recopier. Ici, on inclut le fichier hardwareDe.h qui contient toutes les déclarations nécessaires.

### Boucle principale

Pinguino demande que l’on déclare une fonction qui doit s'appeler loop. Cette fonction est appelée de manière continue après setup. c’est elle qui contient ce que notre programme doit faire inlassablement.
Une fonction est un petit bout de programme que l’on pourra appeler autant de fois que l’on veut. On lui donne un nom (ici "loop"). Ensuite, c’est comme si le langage avait un mot de plus. On déclare une fonction en écrivant void, le nom de la fonction (qui ne doit pas avoir d'espace, ni d'accent... que des lettres) suivit de Puis, on écrit le bout de programme que cette fonction représente entre { et }
Ce qui devient de plus en plus intéressant c’est de comprendre ce qui fait que l’on peut lire un bouton et allumer ou éteindre une LED.
On va commencer par le milieu:
la ligne Led0 = Allume; est ce que l’on appelle en C une instruction. Une instruction est par exemple le remplissage d'une variable avec une valeur. Un programme est une suite d'instruction les unes après les autres. Chaque instruction est traduite par le compilateur dans un langage de mini instructions que le processeur sait comprendre et exécuter. En C, les instructions se terminent pas un ; (point-virgule). ATTENTION, c’est très facile à oublier et le compilateur n'aime pas du tout en donnant un message d'erreur pas facile à comprendre :-(
ATTENTION le compilateur C pense que LED0 ou Led0, ce n’est pas du tout la même chose !!! alors regardez bien lorsque cela ne marche pas comme prévu.
Encore une chose: les espaces montrent la fin d'un mot (une variable, une fonction ou un mot clé comme if...). Donc impossible d'appeler la variable qui pilote la LED Led 0. le compilateur ne comprendra pas! Pour éviter cela, on utilise souvent les majuscules minuscules lorsque l’on veut faire une petite phrase, comme par exemple BoutonRez pour parler du bouton du rez. Dans les noms, on doit commencer par une lettre, puis on peut mettre des lettres et des chiffres et même des '_' si on veut (mais c’est moche! alors pas trop souvent)
Pour savoir si un bouton est pressé ou non, on peut utiliser un test que l’on fait avec l'instruction if
l'instruction if est une instruction qui permet de faire un test. Elle s'écrit if (condition) instruction à faire si test vrai else instruction à faire si test faux
La condition peut être faite de n’importe quelle expression qui retourne soit vrai soit faux, comme par exemple == qui regarde si on est égal à gauche et a droite.
ATTENTION: == compare et = met quelque chose dans une variable. Malheureusement C permet d'écrire BoutonRez = Presse, ce qui ne fait pas du tout ce que l’on veut: cela met un 0 dans BoutonRez (ce qui ne fait rien car c’est une entrée) et dit que la condition est fausse (parce que 0).
Comme souvent, on ne peut pas mettre qu'une instruction, on peut mettre un bloc d'instruction qui commence par { et fini par }. et pour bien comprendre ce que l’on fait, on met le tout sur plusieurs ligne, bien aligné avec des espaces pour que ce soit très clair où est la condition, ce que l’on fait si c’est vrai et ce que l’on fait sinon.
la partie else n’est pas obligatoire.
En C, il a y beaucoup d'instruction comme if qui ne veulent qu'une instruction a exécuter si la condition est vraie. Mais on a souvent besoin de plusieurs instruction. On peut alors faire un bloc d'instructions en commençant par { et en terminant par }.

## 1er Exercice

en partant de ce programme, essayer de faire en plus que la Led 1 s'allume si on ne presse pas sur le Poussoir et qu'elle s'éteigne si on presse (le contraire de la Led0 !)
Facile non ??

## 2e Exercice

en partant du programme précédent, essaye de faire en plus que la Led 2 s'allume si on a pressé sur le Poussoir et qu'elle ne s'éteigne plus jamais
Facile non ??

## Suite

Voilà, tu est prêt à apprendre comment Gérer le temps
| Déclarer et initialiser le Hardware | Gérer le temps |