• Aucun résultat trouvé

Package Tcl/tk : Comment un Rophobe peut utiliser un script R sans angoisse

N/A
N/A
Protected

Academic year: 2022

Partager "Package Tcl/tk : Comment un Rophobe peut utiliser un script R sans angoisse"

Copied!
35
0
0

Texte intégral

(1)

Package Tcl/tk : Comment un Rophobe peut utiliser un script R

sans angoisse

Jérémie Bardin

MNHN / UPMC

jbardin@mnhn.fr

(2)

Analyse cladistique

Caractères

continus

(3)

Analyse cladistique

Caractères

continus

(4)

Discrétisation des caractères continus : le Gap Weighting (Thiele, 1993)

1. Standardisation des variances 2. Calcul des moyennes

3. Standardisation entre 0 et 1

4. Multiplication par n – 1

= Utilisation du maximum

d’états codables

(5)

La fonction GapW

Jeu de données

GAP WEIGHTING

Matrices avec Ns états utilisés pour discrétiser

les caractères continus Ns = 2 - - - 1 001 - - - 65 001

ANALYSES EXHAUSTIVES (PAUP & TNT)

Arbres phylogénétiques

(6)

Tcl/tk : généralités

• T ool Command Language

• Tk

(7)

Le principe de base

• Créer une fenêtre • tt<-tktoplevel()

(8)

Le principe de base

• Créer une fenêtre

• Créer des objets

• tt<-tktoplevel()

• label<-tklabel(tt, text="les semin-R, c’est sup-R")

• bouton<-tkbutton(tt, text="ok")

(9)

Le principe de base

• Créer une fenêtre

• Créer des objets

• Afficher les objets

• tt<-tktoplevel()

• label<-tklabel(tt, text="les semin-R, c’est sup-R")

• bouton<-tkbutton(tt, text="ok")

• tkpack(label, bouton) OU tkgrid(label, bouton)

(10)

Le principe de base

• Créer une fenêtre

• Créer des objets

• Afficher les objets

• Détruire la fenêtre

• tt<-tktoplevel()

• label<-tklabel(tt, text="les semin-R, c’est super")

• bouton<-tkbutton(tt, text="ok")

• tkpack(label, bouton) OU tkgrid(label, bouton)

• tkdestroy (tt)

(11)

Les variables

• tt <- tktoplevel()

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Créer une fenêtre

• Créer des objets

(12)

Les variables

• tt <- tktoplevel()

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• rbValue <- tclVar("import")

• tkconfigure(rb1,variable=rbValue,value="import")

• tkconfigure(rb2,variable=rbValue,value="random")

• Créer une fenêtre

• Créer des objets

(13)

Les variables

• tt <- tktoplevel()

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• rbValue <- tclVar("import")

• tkconfigure(rb1,variable=rbValue,value="import")

• tkconfigure(rb2,variable=rbValue,value="random")

• tkgrid(tklabel(tt,text="Which kind of data set?"), columnspan=5)

• tkgrid(tklabel(tt,text="Import"),rb1)

• tkgrid(tklabel(tt,text="Random"),rb2)

• Data <- tclvalue(rbValue)

• tkdestroy (tt)

• Créer une fenêtre

• Créer des objets

• Afficher les objets

• Détruire la fenêtre

(14)

Les variables

• tt <- tktoplevel()

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• rbValue <- tclVar("import")

• tkconfigure(rb1,variable=rbValue,value="import")

• tkconfigure(rb2,variable=rbValue,value="random")

• tkgrid(tklabel(tt,text="Which kind of data set?"), columnspan=5)

• tkgrid(tklabel(tt,text="Import"),rb1)

• tkgrid(tklabel(tt,text="Random"),rb2)

• done <- tclVar(0)

• OnOK <- function() {

Data <<- as.character(tclvalue(rbValue)) tclvalue(done)<-1

tkdestroy(tt) }

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• tkgrid(OK.but,row=4, column=3)

• tkwait.variable(done)

(15)

Les variables

• tt <- tktoplevel()

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• rbValue <- tclVar("import")

• tkconfigure(rb1,variable=rbValue,value="import")

• tkconfigure(rb2,variable=rbValue,value="random")

• tkgrid(tklabel(tt,text="Which kind of data set?"), columnspan=5)

• tkgrid(tklabel(tt,text="Import"),rb1)

• tkgrid(tklabel(tt,text="Random"),rb2)

• done <- tclVar(0)

• OnOK <- function() {

Data <<- as.character(tclvalue(rbValue)) tclvalue(done)<-1

tkdestroy(tt) }

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• tkgrid(OK.but,row=4, column=3)

• tkwait.variable(done)

(16)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70« ,color= "red")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(17)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70« ,color= "red")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(18)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(19)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70« ,color= "red")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(20)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70« ,color= "red")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(21)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70« ,color= "red")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(22)

Création de fenêtre

• Créer

• tt<-tktoplevel()

• Redimensionner

• tkwm.minsize(tt, 200, 100)

• tkwm.resizable(tt, FALSE, TRUE)

• tkwm.geometry(tt, "800x600")

• Subdiviser

• one <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• two <- tkframe(tt,width = "70", borderwidth = 2,relief = "sunken")

• three <- tkframe(tt, borderwidth = 2,relief =

"sunken")

• Style

• tkconfigure(tt, borderwidth = 20, width="70« ,color= "red")

• titlepolice <- tkfont.create(size=10, weight="bold")

• title1<-tklabel(tt,,text=" Please enter the number of : ")

• tkconfigure(title1,font=titlepolice)

• tkconfigure(tt, bg="yellow")

(23)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(24)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(25)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(26)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(27)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(28)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(29)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(30)

Création d’objets

• Bouton radio

• rb1 <- tkradiobutton(tt)

• rb2 <- tkradiobutton(tt)

• Bouton

• OK.but <- tkbutton(tt,text="OK",command=OnOK)

• Texte

• lablistvectproba<-tklabel(two, text="The probability of each states (total has to be equal to one)")

• Zone de texte

• entry.Ncont <-tkentry(one,width="20",textvariable=Ncont)

• Fenêtre avec un message

• ReturnVal <- tkmessageBox(title = "Help", message = Help5, icon = "info", type = "ok")

• Case à cocher

• Bnex <- tkcheckbutton(one)

• Liste

• maliste<-tklistbox(tt, height=7, selectmode="single", background="white")

• Menu

• topMenu <- tkmenu(tt)

• fileMenu <- tkmenu(topMenu, tearoff=FALSE)

• tkadd(topMenu,"cascade", label="Fichiers", menu=fileMenu)

(31)

Afficher les objets : grid manager

• tt <- tktoplevel()

• titlepolice <- tkfont.create(size=10, weight="bold")

• titlegw<-tklabel(tt, text="Gap weighting (nexus)")

• tkconfigure(titlegw,font=titlepolice)

• lablistgw<-tklabel(tt, text="One or more value(s) for the number of states separated by a comma")

• OR<-tklabel(tt,text="Or")

• labseqgwF<-tklabel(tt, text="from")

• labseqgwT<-tklabel(tt, text="to")

• labseqgwB<-tklabel(tt, text="by")

• listgw<-tkentry(tt, width=20)

• gwF<-tkentry(tt, width=6)

• gwT<-tkentry(tt, width=6)

• gwB<-tkentry(tt, width=6)

• tkgrid(titlegw)

• tkgrid(lablistgw)

• tkgrid(listgw)

• tkgrid(OR)

• tkgrid(labseqgwF)

• tkgrid(gwF)

• tkgrid(labseqgwT)

• tkgrid(gwT)

• tkgrid(labseqgwB)

• tkgrid(gwB)

(32)

Afficher les objets : grid manager

• tt <- tktoplevel()

• titlepolice <- tkfont.create(size=10, weight="bold")

• titlegw<-tklabel(tt, text="Gap weighting (nexus)")

• tkconfigure(titlegw,font=titlepolice)

• lablistgw<-tklabel(tt, text="One or more value(s) for the number of states separated by a comma")

• OR<-tklabel(tt,text="Or")

• labseqgwF<-tklabel(tt, text="from")

• labseqgwT<-tklabel(tt, text="to")

• labseqgwB<-tklabel(tt, text="by")

• listgw<-tkentry(tt, width=20)

• gwF<-tkentry(tt, width=6)

• gwT<-tkentry(tt, width=6)

• gwB<-tkentry(tt, width=6)

• tkgrid(titlegw)

• tkgrid(lablistgw)

• tkgrid(listgw)

• tkgrid(OR)

• tkgrid(labseqgwF)

• tkgrid(gwF)

• tkgrid(labseqgwT)

• tkgrid(gwT)

• tkgrid(labseqgwB)

• tkgrid(gwB)

(33)

Afficher les objets : grid manager

• tt <- tktoplevel()

• titlepolice <- tkfont.create(size=10, weight="bold")

• titlegw<-tklabel(tt, text="Gap weighting (nexus)")

• tkconfigure(titlegw,font=titlepolice)

• lablistgw<-tklabel(tt, text="One or more value(s) for the number of states separated by a comma")

• OR<-tklabel(tt,text="Or")

• labseqgwF<-tklabel(tt, text="from")

• labseqgwT<-tklabel(tt, text="to")

• labseqgwB<-tklabel(tt, text="by")

• listgw<-tkentry(tt, width=20)

• gwF<-tkentry(tt, width=6)

• gwT<-tkentry(tt, width=6)

• gwB<-tkentry(tt, width=6)

• tkgrid(titlegw, row=0)

• tkgrid(lablistgw, row=1, column=0)

• tkgrid(listgw, row=1, column=7)

• tkgrid(OR,row=2, column=0)

• tkgrid(labseqgwF, row=2, column=1)

• tkgrid(gwF, row=2, column=2)

• tkgrid(labseqgwT, row=2, column=3)

• tkgrid(gwT, row=2, column=4)

• tkgrid(labseqgwB, row=2, column=5)

• tkgrid(gwB, row=2, column=6)

0 1 2 3 4 5 6 7

(34)

Afficher les objets : grid manager

• tt <- tktoplevel()

• titlepolice <- tkfont.create(size=10, weight="bold")

• titlegw<-tklabel(tt, text="Gap weighting (nexus)")

• tkconfigure(titlegw,font=titlepolice)

• lablistgw<-tklabel(tt, text="One or more value(s) for the number of states separated by a comma")

• OR<-tklabel(tt,text="Or")

• labseqgwF<-tklabel(tt, text="from")

• labseqgwT<-tklabel(tt, text="to")

• labseqgwB<-tklabel(tt, text="by")

• listgw<-tkentry(tt, width=20)

• gwF<-tkentry(tt, width=6)

• gwT<-tkentry(tt, width=6)

• gwB<-tkentry(tt, width=6)

• tkgrid(titlegw, row=0, columnspan=6)

• tkgrid(lablistgw, row=1, column=0,columnspan=10)

• tkgrid(listgw, row=1, column=11)

• tkgrid(OR,row=2, column=0)

• tkgrid(labseqgwF, row=2, column=1)

• tkgrid(gwF, row=2, column=2)

• tkgrid(labseqgwT, row=2, column=3)

• tkgrid(gwT, row=2, column=4)

• tkgrid(labseqgwB, row=2, column=5)

• tkgrid(gwB, row=2, column=6)

0 1 2 3 4 5 6 7

(35)

Afficher les objets : grid manager

• tt <- tktoplevel()

• titlepolice <- tkfont.create(size=10, weight="bold")

• titlegw<-tklabel(tt, text="Gap weighting (nexus)")

• tkconfigure(titlegw,font=titlepolice)

• lablistgw<-tklabel(tt, text="One or more value(s) for the number of states separated by a comma")

• OR<-tklabel(tt,text="Or")

• labseqgwF<-tklabel(tt, text="from")

• labseqgwT<-tklabel(tt, text="to")

• labseqgwB<-tklabel(tt, text="by")

• listgw<-tkentry(tt, width=20)

• gwF<-tkentry(tt, width=6)

• gwT<-tkentry(tt, width=6)

• gwB<-tkentry(tt, width=6)

• tkgrid(titlegw, row=0, columnspan=6,sticky="w")

• tkgrid(lablistgw, row=1, column=0, sticky="w",columnspan=10)

• tkgrid(listgw, row=1, column=11, sticky="w")

• tkgrid(OR,row=2, column=0, sticky="w")

• tkgrid(labseqgwF, row=2, column=1, sticky="w")

• tkgrid(gwF, row=2, column=2, sticky="w")

• tkgrid(labseqgwT, row=2, column=3, sticky="w")

• tkgrid(gwT, row=2, column=4, sticky="w")

• tkgrid(labseqgwB, row=2, column=5, sticky="w")

• tkgrid(gwB, row=2, column=6, sticky="w")

Références

Documents relatifs

Pour ajouter une image à votre article, placez le curseur au début de la ligne où vous souhaitez insérer l’image, puis cliquez sur le bouton Ajouter une image dans la barre

Tout véhicule ennemi qui effectue un mouvement (simplement passer pour un déplacement terrestre ou terminer son mouvement pour un déplacement de type Propulseur) à 12’’

Donner la décomposition dans le modèle Keystroke des deux méthodes (par clavier ou par souris) permettant de réaliser la tâche.. Evaluer les temps d’exécution de cette tâche

Il donne ses dates d’arrivée et de départ, ainsi que éventuellement ses préférences (fumeur ou non, chambre avec lit simple, double ou jumeau), le système vérifie s’il y a

Les Gamifi'cartes sont un jeu de cartes avec des stimuli qui ouvrent des pistes pour résoudre n'importe quel problème auquel vous êtes confronté!. Elles sont toutes conçues

Beau- coup n'ont peut-être pas vu lout le bénéfice qu'une classe surchargée peut retirer de l'emploi jurucieux de nœ brœhures. Voyons, par exemple, comment leis

Elles naissent pour moi de la part importante des documents écrits, par rapport au vécu (surtout au seco nd degré), de leur variété, de notre manque de

Objectif de Icarus (Icarus CAle et Redresse les Unités en Sondages) : proposer un package avec des fonctionnalités spéci�quement dédiées au calage, avec une interface proche