Section courante

A propos

Section administrative du site

 Langage  Elément  Tutoriel  Programmation  Emulateur  Annexe  Aide 
ABAP/4
Ada
Assembleur
Assembly & bytecode
ASP (Active Server Pages)
Basic
C
C++
C# (C Sharp)
Cobol
ColdFusion
Fortran
HTML
Java
JavaScript
LISP
Logo
LotusScript
Oberon
Pascal
Perl
PHP
PL/1
Prolog
Python
Rebol
REXX
Ruby
Rust
SAS
NoSQL
SQL
Swift
X++ (Axapta)
GNAT
SMALLAda
VHDL
Assembleur 370
Assembleur 1802
Assembleur 4004
Assembleur 6502
Assembleur 6800
Assembleur 68000
Assembleur 8080 et 8085
Assembleur 8089
Assembleur 80x86
Assembleur AGC4
Assembleur ARM
Assembleur DPS 8000
Assembleur i860
Assembleur Itanium
Assembleur MIPS
Assembleur PDP-11
Assembleur PowerPC
Assembleur RISC-V
Assembleur SPARC
Assembleur SuperH
Assembleur UNIVAC I
Assembleur VAX
Assembleur Z80
Assembleur Z8000
Assembleur z/Architecture
ASSEMBLER/MONITOR 64
Micol Assembler
GFA Assembler
A86
MASM (Macro Assembler)
TASM (Turbo Assembler)
CIL
Jasmin
LLVM
MSIL
Parrot
P-Code (PCode)
SWEET16
G-Pascal
ASP 1.0
ASP 2.0
ASP 3.0
ASP.NET
ASP.NET Core
ABasiC (Amiga)
Adam SmartBASIC
Altair BASIC
AmigaBASIC (Amiga)
AMOS Basic (Amiga)
Atari Basic (Atari 400, 600 XL, 800, 800XL)
Basic Apple II (Integer BASIC/APPLESOFT)
Basic Commodore 64 (CBM-BASIC)
Basic Commodore 128 (BASIC 7.0)
Basic Commodore VIC-20 (CBM-BASIC 2.0)
Basic Coco 1 (Color Basic)
Basic Coco 2 (Extended Color Basic)
Basic Coco 3 (Extended Color Basic 2.0)
BASICA (PC DOS)
Basic Pro
BBC BASIC
Blitz BASIC (Amiga)
DarkBASIC
Dartmouth BASIC
GFA-Basic (Atari ST/Amiga)
GWBASIC (MS-DOS)
Liberty BASIC
Locomotive BASIC (Amstrad CPC)
MSX-Basic
Omikron Basic (Atari ST)
Oric Extended Basic
Power Basic
Quick Basic/QBasic (MS-DOS)
Sinclair BASIC (ZX80, ZX81, ZX Spectrum)
ST BASIC (Atari ST)
Turbo Basic
Vintage BASIC
VBScript
Visual Basic (VB)
Visual Basic .NET (VB .NET)
Visual Basic pour DOS
Yabasic
BeckerBASIC
SIMONS' BASIC
Basic09 d'OS-9
Disk Extended Color Basic
Basic09 d'OS-9
Disk Extended Color Basic
Access
Excel
Visual Basic pour Windows
Visual Basic .NET pour Windows
C Shell Unix (csh)
C pour Amiga
C pour Atari ST
C pour DOS
C pour Falcon030
C pour GEMDOS (Atari ST)
C pour Linux
C pour PowerTV OS
C pour OS/2
C pour Unix
C pour Windows
Aztec C
CoCo-C
GNU C
HiSoft C
IBM C/2
Introl-C
Lattice C
Microsoft C
MinGW C
MSX-C
Open Watcom C
OS-9 C Compiler
Pure C
Quick C
Turbo C
HiSoft C for Atari ST
HiSoft C for CP/M (Amstrad CPC)
C++ pour OS/2
C++ pour Windows
Borland C++
C++Builder
IBM VisualAge C++
Intel C++
MinGW C++
Open Watcom C++
Symantec C++
Turbo C++
Visual C++
Visual C++ .NET
Watcom C++
Zortech C++
C# (C Sharp) pour Windows
Apple III Cobol
Microsoft Cobol
BlueDragon
Lucee
OpenBD
Railo
Smith Project
Microsoft Fortran
WATFOR-77
CSS
FBML
Open Graph
SVG
XML
XSL/XSLT
LESS
SASS
GCJ (GNU)
JSP
Jython
Visual J++
Node.js
TypeScript
AutoLISP
ACSLogo
LotusScript pour Windows
Amiga Oberon
Oberon .NET
Apple Pascal
Delphi/Kylix/Lazarus
Free Pascal
GNU Pascal
HighSpeed Pascal
IBM Personal Computer Pascal
Lisa Pascal
Maxon Pascal
MPW Pascal
OS-9 Pascal
OSS Personal Pascal
Pascal-86
Pascal du Cray Research
Pascal/VS
Pascal-XT
PURE Pascal
QuickPascal
RemObjets Chrome
Sun Pascal
THINK Pascal
Tiny Pascal (TRS-80)
Turbo Pascal
UCSD Pascal
VAX Pascal
Virtual Pascal
Turbo Pascal for CP/M-80
Turbo Pascal for DOS
Turbo Pascal for Macintosh
Turbo Pascal for Windows
CodeIgniter (Cadre d'application)
Drupal (Projet)
Joomla! (Projet)
Phalanger (PHP .NET)
phpBB (Projet)
Smarty (balise)
Twig (balise)
Symfony (Cadre d'application)
WordPress (Projet)
Zend (Cadre d'application)
PL360
PL/M-80
PL/M-86
Turbo Prolog
CPython
IronPython
Jython
PyPy
AREXX
Regina REXX
JMP
Btrieve
Cassandra
Clipper
CouchDB
dBASE
Hbase
Hypertable
MongoDB
Redis
Access
BigQuery
DB2
H2
Interbase
MySQL
Oracle
PostgreSQL
SAP HANA
SQL Server
Sybase
U-SQL
Introduction
Les remarques
Les opérateurs
Les instructions conditionnelles
Les instrucions de boucles
Référence de commandes et fonctions
Les premiers pas
Introduction à la programmation
Traitement des chiffres
Programmes - analyse, mots clefs et jetons
Réviser et pratiquer GW-BASIC
L'éditeur d'écran GW-BASIC
Créer et utiliser des fichiers
Constantes, variables, expressions et opérateurs
Graphiques
Communications désynchronisées
Sous-programmes de langage d'assemblage (code machine)
Conversion des programmes BASIC en GW-BASIC
Bonjour
Application
Biochimie
Géométrie
Jeux & stratégies
Météorologie
Sport
Temps
Trigonométrie
Dessin Bitmap
Calcul du calcium corrigé
Aire d'un cercle
Aire d'une surface de prisme rectangulaire
Aire d'un triangle
Distance entre deux points
L25
Unité de mesure
Hockey
Année bissextile
ArcCos
ArcSin
DOSBox
PCE - PC Emulator
PCem
Raccourci clavier (Shortcut Keys)
Références des codes d'erreur du GWBASIC
Fonctions mathématiques
Codes de caractères ASCII
Équivalents hexadécimaux
Codes de balayage des touches
Caractères reconnus par GW-BASIC
Références des adresses de cellule mémoire du «PC IBM»
Encodage des fichiers «.BAS» du GWBASIC
Vocabulaire
Table ASCII
Table de codes ANSI et page de codes
Préface
Notes légal
Dictionnaire
Recherche

Voici une petite application de programme de dessin Bitmap utilisant le clavier et non la souris pour effectuer des dessins. J'ai écrit se petit programme lorsque j'étais encore très jeune, mais il est toujours intéressant de voir l'évolution qu'on a effectuer...

Le code source GWBASIC de l'application :

  1. 10 ON ERROR GOTO 990
  2. 20 DIM T%(17),TA%(8001),TP%(8001):DEFINT A-Z
  3. 30 XP=159:YP=99:CV=1:MX=159:MY=99:CB=0:BX=XP:BY=YP
  4. 40 A=0:B=0:C=0:D=0:E=0:L=0:R=7:T=0:TX%=159:TY%=99
  5. 50 A$="":B$="Baissé":C$="Crayon ":H$=CHR$(0)+"H":L$="Lever":M$=CHR$(13):P$=CHR$(0)+"P":T$="|":Z$=CHR$(27)
  6. 60 KEY OFF:TROFF
  7. 70 SCREEN 1,1:CLS
  8. 80 GOSUB 1890
  9. 90 PUT(0,0),TA%,PSET
  10. 100 IF XP<0 THEN XP=319 ELSE IF XP>319 THEN XP=0
  11. 110 IF YP<0 THEN YP=199 ELSE IF YP>199 THEN YP=0
  12. 120 FX=XP:FY=YP:BX=XP:BY=YP
  13. 130 GOSUB 1660
  14. 140 IF A$=Z$THEN GOSUB 570
  15. 150 IF A$=CHR$(34)THEN PUT(XP,YP),TP%,PRESET
  16. 160 IF A$="A"THEN 610
  17. 170 IF A$="B"THEN CB=1
  18. 180 IF A$="C"THEN GOSUB 830
  19. 190 IF A$="F"THEN 460
  20. 200 IF A$="G"OR A$=CHR$(8)OR A$="5"OR A$=CHR$(0)+"G"THEN XP=159:YP=99
  21. 210 IF A$="J"THEN GOSUB 920
  22. 220 IF A$="L"THEN CB=0
  23. 230 IF A$="O"OR A$="#"THEN LINE(MX,MY)-(XP,YP),CV,B
  24. 240 IF A$="P"THEN PSET(XP,YP),CV
  25. 250 IF A$="Q"OR A$="7" THEN YP=0:XP=0
  26. 260 IF A$="R"THEN MX=XP:MY=YP
  27. 270 IF A$="S"THEN MX=XP:MY=YP:PSET(XP,YP),CV
  28. 280 IF A$="T"OR A$="_"THEN LINE(MX,MY)-(XP,YP),CV
  29. 290 IF A$="V"OR A$=CHR$(0)+"Q"THEN XP=159:YP=199
  30. 300 IF A$="X"THEN 1180
  31. 310 IF A$="Z"OR A$="3"THEN XP=319:YP=199
  32. 320 IF A$="9"OR A$="/"THEN XP=319:YP=0
  33. 330 IF A$="1"OR A$=","THEN XP=0:YP=199
  34. 340 IF A$="@"OR A$=")"THEN 510
  35. 350 IF A$=";"THEN LINE(MX,MY)-(XP,YP),CV,,&HABAB
  36. 360 IF A$=":"THEN LINE(MX,MY)-(XP,YP),CV,,&HAAAA
  37. 370 IF A$=CHR$(0)+"I"OR A$="^"THEN XP=159:YP=0
  38. 380 IF A$=CHR$(0)+"O"THEN 570
  39. 390 IF A$=CHR$(0)+"R"OR A$="("OR A$="!"THEN 460
  40. 400 IF A$="["THEN XPUT1=XP:YPUT1=YP
  41. 410 IF A$="]"THEN XPUT2=XP:YPUT2=YP:GET(XPUT1,YPUT1)-(XPUT2,YPUT2),TP%
  42. 420 IF A$="\"THEN PUT(XP,YP),TP%,PSET
  43. 430 IF A$="'"THEN PUT(XP,YP),TP%,OR
  44. 440 IF CB THEN LINE(BX,BY)-(XP,YP),CV:BX=XP:BY=YP
  45. 450 GOTO 100
  46. 460 GOSUB 1890:SCREEN 0,0,0,0:WIDTH 80:COLOR 15,1,1:CLS:LOCATE 2,30:PRINT"Liste des dessins":PRINT STRING$(80,"_"):VIEW PRINT 5 TO 23:FILES:VIEW PRINT 1 TO 24
  47. 470 LOCATE 24,1:INPUT"Le nom du dessin est = ",NOM$
  48. 480 IF NOM$=""THEN SCREEN 1,1:GOTO 90
  49. 490 GOSUB 1160:SCREEN 1,1:DEF SEG:BLOAD NOM$,VARPTR(TA%(0)):PUT(0,0),TA%,PSET
  50. 500 GOTO 100
  51. 510 GOSUB 1890:LOCATE 12,1:INPUT"Sous quelle nom nom dois-je le sauver = ",NOM$
  52. 520 IF NOM$=""THEN 90
  53. 530 LOCATE 15,1:PRINT"Je sauvegarde d'une maniere : "M$"(R)eguliere/(C)ompresser":GOSUB 1880:PUT(0,0),TA%,PSET
  54. 550 IF A$=Z$THEN 90 ELSE IF A$="R"OR A$="r"THEN DEF SEG=&HB800:BSAVE NOM$,0,16384:GOTO 90 ELSE IF A$="C"OR A$="c"THEN DEF SEG:BSAVE NOM$,VARPTR(TA%(0)),16004:GOTO 90
  55. 560 GOTO 530
  56. 570 GOSUB 1890:LINE(60,60)-(259,120),0,BF:LINE(64,64)-(255,116),3,B:LOCATE 11,12:PRINT"Est-tu certain que":LOCATE 12,11:PRINT"tu veux quitter (O/N)":LOCATE 14,19:PRINT"? ";
  57. 580 C=(C+1)AND 31:IF(C=0)THEN PRINT"_"+CHR$(29); ELSE IF(C=15)THEN PRINT" "+CHR$(29);
  58. 590 A$=INKEY$:IF A$=""THEN 580
  59. 600 IF(A$="O")OR(A$="o")THEN SCREEN 0,0,0,0:WIDTH 80:COLOR 7,0,0:CLS:KEY ON:END ELSE PUT(0,0),TA%,PSET:RETURN
  60. 610 GOSUB 1890:SCREEN 0,0,0,0:WIDTH 80:COLOR 15,1,1:CLS
  61. 620 LOCATE 1,33:PRINT"Info-Creation"STRING$(80,"_")M$M$
  62. 630 PRINT"A - Aide
  63. 640 PRINT"B - "C$B$
  64. 650 PRINT"C - Change la couleur courant
  65. 660 PRINT"F - Recherche un Fichier
  66. 670 PRINT"G - Positionne le pointeur au centre de l'écran
  67. 680 PRINT"J - Peint une zone de l'écran
  68. 690 PRINT"L - "C$L$
  69. 700 PRINT"O - Trace une boite
  70. 710 PRINT"P - Affiche un Point
  71. 720 PRINT"Q - Positionne le pointeur dans le cote gauche superieur
  72. 730 PRINT"R - Sauvegarde en memoire la position de depart
  73. 740 PRINT"S - Sauvegarde en memoire la position de depart avec un point
  74. 750 PRINT"T - Trace une ligne de la couleur specifier
  75. 760 PRINT"V - Deplacement du pointeur dans le centre inferieur
  76. 770 PRINT"X - Affiche le menu
  77. 780 PRINT"Z - Deplacement du pointeur dans le coin inferieur droit
  78. 790 PRINT"( - Chercher un dessin
  79. 800 PRINT") - Sauver un dessin
  80. 810 LOCATE 25,1:PRINT"Presse une touche pour retouner a l'editeur ...";
  81. 820 IF INKEY$=""THEN 820 ELSE SCREEN 1,1:GOTO 90
  82. 830 GOSUB 1890:LINE(0,99)-(319,199),0,BF:LINE(4,103)-(314,194),3,B
  83. 840 LINE(10,110)-(160,135),CV,BF:LOCATE 16,23:PRINT"Couleur courant"
  84. 850 LINE(10,145)-(160,170),0,BF:LINE(10,145)-(160,170),3,B:LOCATE 20,23:PRINT"Texture courant":IF T$=CHR$(0)THEN PAINT(11,146),0,3 ELSE PAINT(11,146),T$,3
  85. 860 LOCATE 23,3:PRINT C$": ";:IF CB THEN PRINT B$;ELSE PRINT L$;
  86. 870 PRINT"   Esc = Retour"
  87. 880 LOCATE 24,3:PRINT"X ="XP" Y ="YP" C ="CV" T ="ASC(T$);
  88. 890 GOSUB 1880
  89. 900 IF A$="C"OR A$="c"THEN CV=(CV+1)AND 3 ELSE IF A$="T"OR A$="t"THEN T$=CHR$((ASC(T$)+1)AND 255)ELSE IF A$=Z$THEN PUT(0,0),TA%,PSET:RETURN ELSE 890
  90. 910 GOTO 840
  91. 920 GOSUB 1890:LINE(10,10)-(160,35),3,B:LOCATE 4,23:PRINT"Texture de peinte":LINE(10,45)-(160,70),CV,BF:LOCATE 8,23:PRINT"Couleur d'arret":LOCATE 12,1:PRINT"Est-tu certain que tu veux peinturer (O/N)":LOCATE 14,19:PRINT"? ";
  92. 930 LINE(11,11)-(159,34),0,BF:IF T$=CHR$(0)THEN PAINT(11,11),0,3 ELSE PAINT(11,11),T$,3
  93. 940 C=(C+1)AND 31:IF(C=0)THEN PRINT"_"+CHR$(29); ELSE IF(C=15)THEN PRINT" "+CHR$(29);
  94. 950 A$=INKEY$:IF A$=""THEN 940
  95. 960 IF(A$="O")OR(A$="o")THEN A$="":GOTO 970 ELSE PUT(0,0),TA%,PSET:RETURN
  96. 970 PUT(0,0),TA%,PSET:IF T$=CHR$(0)THEN PAINT(XP,YP),0,CV ELSE PAINT(XP,YP),T$,CV
  97. 980 RETURN
  98. 990 SCREEN 0,0,0,0:WIDTH 80:COLOR 15,1,1:CLS:KEY ON
  99. 1000 IF(ERR=7)THEN PRINT"Erreur de memoire"M$"Ce programme nessecite les 65536 octets de memoire disponible":RESUME 1060
  100. 1010 IF(ERR=53)THEN 1070
  101. 1020 IF(ERR=5)AND(ERL=420)THEN 100
  102. 1030 PRINT"Erreur numero :"ERR
  103. 1040 PRINT"A la ligne    :"ERL,M$STRING$(25,"-")
  104. 1050 RESUME 1060
  105. 1060 END
  106. 1070 LOCATE 1,30:PRINT"Fichier incorrect"STRING$(80,"_")
  107. 1080 LOCATE 8,8:PRINT"1 - Aborde"
  108. 1090 LOCATE 10,8:PRINT"2 - Retrait"
  109. 1100 LOCATE 12,8:PRINT"3 - Ignore"
  110. 1110 LOCATE 16,5,1:PRINT"Votre choix ?";
  111. 1120 A$=INKEY$:IF A$=""THEN 1120
  112. 1130 IF A$=Z$THEN 90
  113. 1140 IF A$="1"THEN SCREEN 1,1:RESUME 90 ELSE IF A$="2"THEN SCREEN 1,1:PUT(0,0),TA%,PSET:RESUME NEXT ELSE IF A$="3"THEN RESUME
  114. 1150 GOTO 1120
  115. 1160 'OPEN"O",#1,NOM$
  116. 1170 L=16384:RETURN
  117. 1180 GOSUB 1890:LINE(75,35)-(245,155),0,BF:LINE(80,40)-(240,150),1,B
  118. 1190 LOCATE 7,18:PRINT"Menu
  119. 1200 LOCATE 9,12:PRINT"Boite
  120. 1210 LOCATE 10,12:PRINT"Couleur/Texture
  121. 1220 LOCATE 11,12:PRINT"Cercle
  122. 1230 LOCATE 12,12:PRINT C$;:IF CB THEN PRINT B$ELSE PRINT L$
  123. 1240 LOCATE 13,12:PRINT"Peint
  124. 1250 LOCATE 14,12:PRINT"Point
  125. 1260 LOCATE 15,12:PRINT"Ligne
  126. 1270 LOCATE 16,12:PRINT"Chercher
  127. 1280 LOCATE 17,12:PRINT"Sauver
  128. 1290 LOCATE 18,12:PRINT"Quitter
  129. 1300 GET(75,35)-(245,155),TP%:PUT(75,35),TP%,PRESET:M=0
  130. 1310 N=64+M*8:GET(85,N)-(235,N+7),TP%
  131. 1320 PUT(85,N),TP%,PRESET
  132. 1330 GOSUB 1880
  133. 1340 PUT(85,N),TP%,PSET
  134. 1350 IF A$=H$THEN M=M-1 ELSE IF A$=P$THEN M=M+1
  135. 1360 IF(M>9)THEN M=0 ELSE IF(M<0)THEN M=9
  136. 1370 IF A$=Z$THEN 90 ELSE IF M$=A$THEN PUT(0,0),TA%,PSET:ON M+1 GOTO 1390,1430,1440,1480,1520,1550,1580,460,510,1620
  137. 1380 GOTO 1310
  138. 1390 S=0
  139. 1400 GOSUB 1640
  140. 1410 IF A$=M$AND S THEN LINE(MX,MY)-(XP,YP),CV,B:S=0 ELSE IF A$=M$THEN MX=XP:MY=YP:S=1 ELSE IF A$="C"THEN GOSUB 830 ELSE IF A$=Z$THEN 1180
  141. 1420 GOTO 1400
  142. 1430 GOSUB 830:GOTO 1180
  143. 1440 C=0
  144. 1450 GOSUB 1640
  145. 1460 IF A$=M$AND C THEN CIRCLE(MX,MY),ABS(MX-XP)+ABS(MY-YP),CV,,,20/32:C=0 ELSE IF A$=M$THEN MX=XP:MY=YP:C=1 ELSE IF A$="C"THEN GOSUB 830 ELSE IF A$=Z$THEN 1180
  146. 1470 GOTO 1450
  147. 1480 C=0:BX=159:BY=99
  148. 1490 GOSUB 1640:LINE(BX,BY)-(XP,YP),CV:BX=XP:BY=YP
  149. 1500 IF A$="C"THEN GOSUB 830 ELSE IF A$=Z$THEN 1180
  150. 1510 GOTO 1490
  151. 1520 GOSUB 1640
  152. 1530 IF M$=A$THEN GOSUB 920 ELSE IF A$="C"THEN GOSUB 830 ELSE IF A$=Z$THEN 1180
  153. 1540 GOTO 1520
  154. 1550 GOSUB 1640
  155. 1560 IF M$=A$THEN PSET(XP,YP),CV ELSE IF A$="C"THEN GOSUB 830 ELSE IF A$=Z$THEN 1180
  156. 1570 GOTO 1550
  157. 1580 C=0
  158. 1590 GOSUB 1640
  159. 1600 IF A$=M$AND C THEN LINE(MX,MY)-(XP,YP),CV:C=0 ELSE IF M$=A$THEN MX=XP:MY=YP:C=1:ELSE IF A$="C"THEN GOSUB 830 ELSE IF A$=Z$THEN 1180
  160. 1610 GOTO 1590
  161. 1620 GOSUB 570:GOTO 1180
  162. 1630 'Sous-Programme
  163. 1640 IF(XP<0)THEN XP=319 ELSE IF(XP>319)THEN XP=0
  164. 1650 IF(YP<0)THEN YP=199 ELSE IF(YP>199)THEN YP=0
  165. 1660 TX%=XP-4:IF(TX%<0)THEN TX%=0
  166. 1670 IF(TX%>311)THEN TX%=311
  167. 1680 TY%=YP-3:IF(TY%<0)THEN TY%=0
  168. 1690 IF(TY%>193)THEN TY%=193
  169. 1700 GET(TX%,TY%)-(TX%+8,TY%+6),T%
  170. 1710 DRAW"BM"+STR$(XP)+","+STR$(YP)+"C=IC;ND2NL2NR2U2":IC=(IC+1)AND 3
  171. 1720 A$=INKEY$:IF A$=""THEN 1710
  172. 1730 TX%=XP-4:IF(TX%<0)THEN TX%=0
  173. 1740 IF(TX%>311)THEN TX%=311
  174. 1750 TY%=YP-3:IF TY%<0 THEN TY%=0
  175. 1760 IF(TY%>193)THEN TY%=193
  176. 1770 PUT(TX%,TY%),T%,PSET
  177. 1780 IF A$="2"THEN YP=YP+10
  178. 1790 IF A$="4"THEN XP=XP-10
  179. 1800 IF A$="6"THEN XP=XP+10
  180. 1810 IF A$="8"THEN YP=YP-10
  181. 1820 IF A$=H$THEN YP=YP-1
  182. 1830 IF A$=CHR$(0)+"K"THEN XP=XP-1
  183. 1840 IF A$=CHR$(0)+"M"THEN XP=XP+1
  184. 1850 IF A$=P$THEN YP=YP+1
  185. 1860 IF(A$>"`")AND(A$<"{")THEN A$=CHR$(ASC(A$)-32)
  186. 1870 RETURN
  187. 1880 A$=INKEY$:IF A$=""THEN 1880 ELSE RETURN
  188. 1890 GET(0,0)-(319,199),TA%:RETURN


PARTAGER CETTE PAGE SUR
Dernière mise à jour : Samedi, le 24 janvier 2015