Version Scratch de l’année bissextile

Passage obligé de tout étudiant qui débute en informatique, l’algorithme des années bissextiles.
Regardons de plus pres comment résoudre de belle maniere avec Scratch cette question.
Tout d’abord qu’est-ce qu’une année bissextile ?  En  Français, on dit qu’une année est bissextile si elle est divisible par 4 et pas par 100, ou si elle est divisible par 400.
Soit dit autrement

  1. si l'année est divisible par 4 et non divisible par 100, ou
  2. si l'année est divisible par 400.

Soit dit autrement, une année est bissextile tous les 4 ans, ne l’est pas pour les changements de siecles (les millénaires)  sauf tous les 400 ans. Nous avons donc vécu un cas tres particulier avec  l’année 2000 qui était bel et bien une année bissextile malgré un changement de si siecle.

On ne reviendra pas sur les raisons astronomiques qui ont conduit a ces choix calendaires, mais lorsqu’on dit que l’année est divisible par 100 : cela signifie par exemple pour l’année 2000 que le reste de la division entiere de 2000 par 100 est égal a 0.

Pour 2017 par exemple on a : 2017 / 100 = 20 et  le reste est 17
En informatique, il existe une fonction qu’on retrouve dans tous les langages appelée : modulo
Cette fonction retourne le reste de la division entiere : exemple : 2017 modulo 100 = 17
Scratch logiquement possede la fonction dans ses opérateurs

annee bissexctile scratch

Une premiere approche pour résoudre l’algorithme des années bissextiles avec Scrach consisterait donc a imbriquer des conditions « si alors sinon » pour tester si une année est bissextile


 

L’algorithme serait :

Si l’année est  divisible par 4 alors
Si l’année est divisible par 100 alors l’année n’est pas bissextile
Sinon
Si l’année est divisible par 400 alors l’année est bissextile
Sinon  l’année n’est pas bissextile
Sinon l’année  n’est pas bissextile

En Scratche cela donnerait :

annee bissexctile scratch

 

 

Si cette solution est bel et bien fonctionnelle, d’un point de vue informatique elle n’est pas tres souple, source de nombreuses erreurs et serait non viable si l’on avait beaucoup plus de conditions IF imbriquées.

Reprenons la définition d’une année bissextile en français :

  1. si l'année est divisible par 4 et non divisible par 100, ou
  2. si l'année est divisible par 400.

On s’aperçoit qu’on a tous les opérateurs en informatique pour écrire exactement ces 2 conditions qui sont un ensemble de OU, de ET et de NON
Nous avons vu que qu’il existe une fonction « est divisible » appelé modulo
Soit :
Condition 1/ :   (année modulo 4)=0  ET  NON (année modulo 100) =0  
OU
Condition 2 / :  (année modulo 400)=0
Si on regroupe ses deux conditions cela donne
((année modulo 4)=0  ET  NON (année modulo 100) =0)  OU    (année modulo 400)=0)
Tous les langages informatiques possedent ces opérateurs mathématiques (opérations booléennes): généralement l’opérateur modulo s’écrit %, l’opérateur ET s’écrit AND (parfois &), l’opérateur OU s’écrit OR (parfois |) et l’opérateur NON s’écrit NO(parfois !).
De nouveau dans Scratch on retrouve ces fonctions dans la partie : opérateurs

annee bissexctile scratch

Nous avons donc tous les pieces du puzzle
Il reste a piloter le lutin pour qu’il demande une année, que le programme teste la valeur et que le lutin annonce le résultat.


Il existe une fonction dans scratch qui permet poser une question. La fonction place  le résultat dans la variable réponse

annee bissexctile scratch

 

Notre algorithme sera donc de la forme :
Si condition complete vérifiée dire  l’année est bissextile
sinon dire l’année n’est pas bissextile.
On place le bloc if

annee bissexctile scratch

Il nous reste le principal : écrire la condition générale et la placer dans le bloc if
Pour ne pas se tromper, il suffit d’écrire chaque condition, puis de les assembler


 

Soit :
Réponse est divisible par 4 :

annee bissexctile scratch

On obtient

annee bissexctile scratch

Réponse n’est pas divisible par 100

annee bissexctile scratch
On obtient

annee bissexctile scratch

Réponse est divisible par 400

annee bissexctile scratch
On obtient

annee bissexctile scratch

 ( (Réponse divisible 4 ) ET (NON (Réponse divisible par 100)) ) 
OU
(Réponse divisible par 400)

annee bissexctile scratch
On obtient

annee bissexctile scratch

La condition finale est a placer dans le bloc IF


 Le programme final sera donc :

annee bissexctile scratch

Si notre algorithme final est nettement meilleur qu’une imbrication de if, on remarquera par contre que le rendu visuel dans Scratch est peu lisible voir illisible (Scratch empile les conditions).

annee bissexctile scratch

Fichier de l’année bissextile en scratch

Version pdf de l'article

 

Besoin d’une formation pour apprendre la programmation sous Scratch et le développement logiciel : retrouvez notre adresse de contact  sur le site http://www.veiginfo.fr

 

@2018 - veiginfo.fr - dépannage informatique à domicile - Assistance et formation informatique - Veigy-Foncenex et environs
Loading...