01 février 2021
############################################ ## Thèse Rédaction ## Présentation des données ## détail perles période 5 ## preparation ## ======================================== ## Projet : these ## Auteur : Lizzie Scholtus ## Version 01 ## date création 04/11/20 ## date de la dernière modification : 19/10/20 ## data : Tout ## data : BDD_V5 export du 05/09/2020 ##############################################
# Supprimer une ligne g <- g[!row.names(g) %in% c(164),] # pour supprimer la ligne 164
Pour comprendre le fonctionnement du langage R il existe deux slogans :
- Tout ce qui existe est un objet
- Tout ce qui se produit est une fonction
John Chambers
Numeric : variables numériques (qui ne contiennent que des chiffres, que l’on peut calculer)
n <- 1:10 # pour créer un objet comptenant des chiffres n # pour afficher le contenu de l'objet
## [1] 1 2 3 4 5 6 7 8 9 10
is.numeric(n) # pour vérifier s'il est bien numérique
## [1] TRUE
Character : variables qualitatives (en général du texte)
c <- c("un","deux","trois") # pour créer un objet contenant # des données qualitatives c # pour afficher le contenu de l'objet
## [1] "un" "deux" "trois"
class(c) # pour demander le type de données de l'objet c
## [1] "character"
Logical : correspond à du Oui/Non (souvent utiliser pour stocker résultat d’une question posée dans R)
n
## [1] 1 2 3 4 5 6 7 8 9 10
l <- n<3 # Lesquels dans n sont supérieurs à 3 ? l
## [1] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
class(l)
## [1] "logical"
Les vecteurs : sont des objets à une dimension qui stockent des collections de données d’un même type uniquement
n # est un vecteur numérique
## [1] 1 2 3 4 5 6 7 8 9 10
c # est un vecteur qualitatif
## [1] "un" "deux" "trois"
is.vector(l) # pour vérfier si l est un vecteur
## [1] TRUE
les facteurs : sont des vecteurs qui contiennent des données catégorisées, pour lesquelles il existe un niveau (level)
Elles correspondent par exemple aux réponses fixées dans le cadre d’un sondage.
f # est un vecteur contenant des catégories prédéfinies
## [1] célibataire marié marié non renseigné veuf ## [6] célibataire divorcé célibataire marié divorcé ## Levels: célibataire divorcé marié non renseigné veuf
is.factor(f) # pour vérifier si c'est un facteur
## [1] TRUE
les facteurs : sont des vecteurs qui contiennent des données catégorisées, pour lesquelles il existe un niveau (level)
Elles correspondent par exemple aux réponses fixées dans le cadre d’un sondage.
levels(f) # pour observer les différents niveaux
## [1] "célibataire" "divorcé" "marié" "non renseigné" ## [5] "veuf"
table(f) # pour voir le nombre dans chaque niveau
## f ## célibataire divorcé marié non renseigné veuf ## 3 2 3 1 1
les matrices : sont des objets à deux dimensions qui stockent des collections de données d’un même type. Elles sont rectangulaires, c’est-à-dire qu’elles ont des rangs et des colonnes.
m <- matrix( c(2, 4, 3, 1, 5, 7), # les données nrow = 2, # nombre de rangs ncol = 3, # nombre de colonnes byrow = TRUE) # remplir la matrice par rang m # pour afficher la matrice
## [,1] [,2] [,3] ## [1,] 2 4 3 ## [2,] 1 5 7
les tableurs (data frame) : correspondent aux feuilles de calcul des logiciels de tableurs. Leur structure correspond aux matrices, mais les colonnes peuvent contenir des types de données différents.
d <- read.csv("SIT_corpus.csv", header = TRUE, sep = ";", encoding = "UTF-8", na.strings = "") # pour ouvrir un tableur au format .csv head(d) # pour afficher les 6 premiers enregistrements
## ID_SITE Lieu.dit Commune Region ## 1 SIT0001 Wederath-Belginum Wederath Rhénanie Palatinat ## 2 SIT0002 Cherain-Brisy Cherain Wallonie ## 3 SIT0003 Han-sur-Lesse Han-sur-Lesse Wallonie ## 4 SIT0004 Klosteräcker Breisach-Hochstetten Bade-Wurtemberg ## 5 SIT0005 Münsterberg Breisach Bade-Wurtemberg ## 6 SIT0006 Kegelriß Ehrenkirchen-Ehrenstetten Bade-Wurtemberg ## Pays Longitude Latitude ## 1 Allemagne 7.164440 49.86499 ## 2 Belgique 5.865210 50.17996 ## 3 Belgique 5.186230 50.12674 ## 4 Allemagne 7.625970 48.02291 ## 5 Allemagne 7.579663 48.029305356669 ## 6 Allemagne 7.776640 47.898463213428
str(d)
## 'data.frame': 1044 obs. of 7 variables: ## $ ID_SITE : chr "SIT0001" "SIT0002" "SIT0003" "SIT0004" ... ## $ Lieu.dit : chr "Wederath-Belginum" "Cherain-Brisy" "Han-sur-Lesse" "Klosteräcker" ... ## $ Commune : chr "Wederath" "Cherain" "Han-sur-Lesse" "Breisach-Hochstetten" ... ## $ Region : Factor w/ 33 levels "Aargau","Alsace",..: 22 31 31 4 4 4 4 4 22 22 ... ## $ Pays : Factor w/ 5 levels "Allemagne","Belgique",..: 1 2 2 1 1 1 1 1 1 1 ... ## $ Longitude: num 7.16 5.87 5.19 7.63 7.58 ... ## $ Latitude : num 49.9 50.2 50.1 48 48 ...
summary(d)
## ID_SITE Lieu.dit Commune ## Length:1044 Length:1044 Length:1044 ## Class :character Class :character Class :character ## Mode :character Mode :character Mode :character ## ## ## ## ## Region Pays Longitude Latitude ## Lorraine :318 Allemagne :351 Min. :4.920 Min. :46.23 ## Rhénanie Palatinat:233 Belgique : 5 1st Qu.:6.090 1st Qu.:48.09 ## Alsace :114 France :523 Median :6.784 Median :48.95 ## Franche-Comté : 93 Luxembourg: 66 Mean :6.887 Mean :48.75 ## Bade-Wurtemberg : 73 Suisse : 99 3rd Qu.:7.667 3rd Qu.:49.53 ## (Other) :206 Max. :9.423 Max. :50.44 ## NA's : 7 NA's :1
les listes : sont des collections ordonnées d’objets, dont les éléments peuvent être de différents types
les listes
L <- list(d, m, c, f) # création d'une liste str(L)
## List of 4 ## $ :'data.frame': 1044 obs. of 7 variables: ## ..$ ID_SITE : chr [1:1044] "SIT0001" "SIT0002" "SIT0003" "SIT0004" ... ## ..$ Lieu.dit : chr [1:1044] "Wederath-Belginum" "Cherain-Brisy" "Han-sur-Lesse" "Klosteräcker" ... ## ..$ Commune : chr [1:1044] "Wederath" "Cherain" "Han-sur-Lesse" "Breisach-Hochstetten" ... ## ..$ Region : Factor w/ 33 levels "Aargau","Alsace",..: 22 31 31 4 4 4 4 4 22 22 ... ## ..$ Pays : Factor w/ 5 levels "Allemagne","Belgique",..: 1 2 2 1 1 1 1 1 1 1 ... ## ..$ Longitude: num [1:1044] 7.16 5.87 5.19 7.63 7.58 ... ## ..$ Latitude : num [1:1044] 49.9 50.2 50.1 48 48 ... ## $ : num [1:2, 1:3] 2 1 4 5 3 7 ## $ : chr [1:3] "un" "deux" "trois" ## $ : Factor w/ 5 levels "célibataire",..: 1 3 3 4 5 1 2 1 3 2
les listes
L2 <- list(L, n, l) # création d'une liste avec une liste str(L2)
## List of 3 ## $ :List of 4 ## ..$ :'data.frame': 1044 obs. of 7 variables: ## .. ..$ ID_SITE : chr [1:1044] "SIT0001" "SIT0002" "SIT0003" "SIT0004" ... ## .. ..$ Lieu.dit : chr [1:1044] "Wederath-Belginum" "Cherain-Brisy" "Han-sur-Lesse" "Klosteräcker" ... ## .. ..$ Commune : chr [1:1044] "Wederath" "Cherain" "Han-sur-Lesse" "Breisach-Hochstetten" ... ## .. ..$ Region : Factor w/ 33 levels "Aargau","Alsace",..: 22 31 31 4 4 4 4 4 22 22 ... ## .. ..$ Pays : Factor w/ 5 levels "Allemagne","Belgique",..: 1 2 2 1 1 1 1 1 1 1 ... ## .. ..$ Longitude: num [1:1044] 7.16 5.87 5.19 7.63 7.58 ... ## .. ..$ Latitude : num [1:1044] 49.9 50.2 50.1 48 48 ... ## ..$ : num [1:2, 1:3] 2 1 4 5 3 7 ## ..$ : chr [1:3] "un" "deux" "trois" ## ..$ : Factor w/ 5 levels "célibataire",..: 1 3 3 4 5 1 2 1 3 2 ## $ : int [1:10] 1 2 3 4 5 6 7 8 9 10 ## $ : logi [1:10] TRUE TRUE FALSE FALSE FALSE FALSE ...
Une section nommée d’un programme qui accomplit une tâche spécifique
L <- list(n, m) # où list est une fonction
Une fonction est une procédure ou une routine
La plupart des langages de programmation sont fournis avec des fonctions pré-installées qui sont rangées dans des librairies
Dans R il est possible de télécharger des librairies contenant des fonctions spécifiques
install.packages("ggplot2") # pour installer ggplot2 qui contient des fonctions # de visualisation de données library(ggplot2) # pour faire appel à la librairie ggplot2
Il est aussi possible d’écrire ses propres fonctions
effectif <- function(d){ td <- table(d$CT) td <- as.data.frame(td) return(td)}
Pour utiliser et adapter une nouvelle fonction :
help("table") ?table
Pour utiliser et adapter une nouvelle fonction :
Opérateurs arithmétiques
+ : addition
- : soustraction
** : multiplication
/ : division
^ ou ** : exponentiel
% : modulus
%in% : trouve les valeurs correspondantes entre deux vecteurs et retourne un vecteur indiquant leur position
Opérateurs logiques
< : moins que
<= : moins que ou égal à
> : plus grand que
>= : plus grand que ou égal à
== : exactement égal à
!= : n’est pas égal à
!x : n’est pas “x”
x & y : x ET y
x | y : x ET/OU y
# première solution : wd <- "C:/Users/Lizzie/Documents/These/THE_Code" setwd(wd) # ou directement setwd("C:/Users/Lizzie/Documents/These/THE_Code") # ou encore (uniquement pour Windows) setwd("C:\\Users\\Lizzie\\Documents\\These\\THE_Code")
Pour accéder à un dossier dans le dossier du projet :
load("/01Data/donnees.RData")
Créer un objet :
vec1 <- 5 # "<-" assigne 5 à vec1 vec2 = c(4,10,3) # c() correspond à "combine" (combiner) "texte" -> vec3 vec3
## [1] "texte"
vec2_2 <- c(vec2, 8, 1, 4) # pour ajouter des éléments à un vecteur existant vec2_2
## [1] 4 10 3 8 1 4
vec3_2 <- c(vec3, "plus","de texte") vec3_2
## [1] "texte" "plus" "de texte"
Utiliser une fonction :
seq(10) # seq() est une fonction !
## [1] 1 2 3 4 5 6 7 8 9 10
1:10 # correspond à la même chose
## [1] 1 2 3 4 5 6 7 8 9 10
vec4 <- seq(10) # pour stocker le résultat de la fonction
Utiliser une fonction avec des paramètres :
vec5 <- seq(1, 9, by = 0.1) # seq("from", "to", by = "steps") # seq("depuis", "jusqu'à", by = "intervale") vec5
## [1] 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 ## [20] 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 ## [39] 4.8 4.9 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 ## [58] 6.7 6.8 6.9 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 8.5 ## [77] 8.6 8.7 8.8 8.9 9.0
Sélectionner des morceaux d’un vecteur
vec4[c(1:4)] # affiche vec4[éléments 1 à 4]
## [1] 1 2 3 4
vec5[c(1,5,7)] # affiche vec5[éléments 1, 5 et 7]
## [1] 1.0 1.4 1.6
vec3_2[3] # affiche vec3_2[élement 3]
## [1] "de texte"
v <- c(vec3_2[3], vec4[c(1:4)]) # possible de stocker ces éléments dans un nouvel objet v
## [1] "de texte" "1" "2" "3" "4"
is.numeric(v)
## [1] FALSE
is.character(v)
## [1] TRUE
Voir le détail d’un vecteur
typeof(vec4) # quel type ?
## [1] "integer"
length(vec4) # combien d'éléments ?
## [1] 10
attributes(vec4) # est-ce qu'il y a des métadonnées ?
## NULL
Ouvrir un tableur :
d <- read.csv("SIT_corpus.csv", header = TRUE, sep = ";", encoding = "UTF-8", na.strings = "") # voir ?read.table pour plus d'informations
Créer un tableur :
df <- data.frame(n, f, l) class(df)
## [1] "data.frame"
str(df)
## 'data.frame': 10 obs. of 3 variables: ## $ n: int 1 2 3 4 5 6 7 8 9 10 ## $ f: Factor w/ 5 levels "célibataire",..: 1 3 3 4 5 1 2 1 3 2 ## $ l: logi TRUE TRUE FALSE FALSE FALSE FALSE ...
Enregister le tableur
write.table(df, file = "nom_fichier.csv", quote = FALSE, sep = ";", na = "NA", dec = ".", row.names = FALSE, col.names = TRUE)
Autres format que .csv :
- Excel : library(xlsx)
- SQLite : library(RSQLite)
- PostGreSQL : library(RPostgreSQL)
Il est possible de renommer les colonnes d’un tableur soit directemment à sa création, soit après
# nommer les colonnes lors de la création df1 <- data.frame("ID" = n, "Statut" = f, "Enfant" = l) df1
## ID Statut Enfant ## 1 1 célibataire TRUE ## 2 2 marié TRUE ## 3 3 marié FALSE ## 4 4 non renseigné FALSE ## 5 5 veuf FALSE ## 6 6 célibataire FALSE ## 7 7 divorcé FALSE ## 8 8 célibataire FALSE ## 9 9 marié FALSE ## 10 10 divorcé FALSE
# nommer les colonnes par la suite names(df) <- c("ID", "Statut", "Enfant") df
## ID Statut Enfant ## 1 1 célibataire TRUE ## 2 2 marié TRUE ## 3 3 marié FALSE ## 4 4 non renseigné FALSE ## 5 5 veuf FALSE ## 6 6 célibataire FALSE ## 7 7 divorcé FALSE ## 8 8 célibataire FALSE ## 9 9 marié FALSE ## 10 10 divorcé FALSE
Pour séléctionner des éléments d’un tableur la syntaxe est : tableur[rang, colonne]
df[4, 2] # affiche le rang 4 et la colonne 2 du tableur df
## [1] non renseigné ## Levels: célibataire divorcé marié non renseigné veuf
df[,2] # affiche toute la colonne 2
## [1] célibataire marié marié non renseigné veuf ## [6] célibataire divorcé célibataire marié divorcé ## Levels: célibataire divorcé marié non renseigné veuf
df[4,] # affiche tout le rang 4
## ID Statut Enfant ## 4 4 non renseigné FALSE
df[4:8,2] # affiche les rangs 4 à 8 pour la colonne 2
## [1] non renseigné veuf célibataire divorcé célibataire ## Levels: célibataire divorcé marié non renseigné veuf
df[4, 2:3] # affiche le rang 4 pour les colonnes 2 à 3
## Statut Enfant ## 4 non renseigné FALSE
df$Statut # affiche la colonne Statut du tableur df
## [1] célibataire marié marié non renseigné veuf ## [6] célibataire divorcé célibataire marié divorcé ## Levels: célibataire divorcé marié non renseigné veuf
ID4 <- df[4,] # pour stocker les données du rang 4 dans un nouvel objet
Quand pour quelques raisons que ce soit l’objet contient des valeurs vides, elles sont indiquées par la mention NA (data Not Available)
df$Age <- c(30, 42, NA, 27, 59, NA, 23, 36, NA, 75) head(df)
## ID Statut Enfant Age ## 1 1 célibataire TRUE 30 ## 2 2 marié TRUE 42 ## 3 3 marié FALSE NA ## 4 4 non renseigné FALSE 27 ## 5 5 veuf FALSE 59 ## 6 6 célibataire FALSE NA
anyNA(df) # indique s'il y a des éléments manquants
## [1] TRUE
is.na(df) # indique quels éléments sont manquants
## ID Statut Enfant Age ## [1,] FALSE FALSE FALSE FALSE ## [2,] FALSE FALSE FALSE FALSE ## [3,] FALSE FALSE FALSE TRUE ## [4,] FALSE FALSE FALSE FALSE ## [5,] FALSE FALSE FALSE FALSE ## [6,] FALSE FALSE FALSE TRUE ## [7,] FALSE FALSE FALSE FALSE ## [8,] FALSE FALSE FALSE FALSE ## [9,] FALSE FALSE FALSE TRUE ## [10,] FALSE FALSE FALSE FALSE
is.na(df$Age)
## [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE FALSE TRUE FALSE
table(is.na(df$Age)) # table compte le nombre d'occurence
## ## FALSE TRUE ## 7 3
na.omit(df) # enlève les données incomplètes
## ID Statut Enfant Age ## 1 1 célibataire TRUE 30 ## 2 2 marié TRUE 42 ## 4 4 non renseigné FALSE 27 ## 5 5 veuf FALSE 59 ## 7 7 divorcé FALSE 23 ## 8 8 célibataire FALSE 36 ## 10 10 divorcé FALSE 75
Chercher des doublons
duplicated(f) # trouve les éléments identiques dans un objet
## [1] FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE
any(duplicated(f))
## [1] TRUE
unique(f) # enlève les duplicatat d'un objet
## [1] célibataire marié non renseigné veuf divorcé ## Levels: célibataire divorcé marié non renseigné veuf
f
## [1] célibataire marié marié non renseigné veuf ## [6] célibataire divorcé célibataire marié divorcé ## Levels: célibataire divorcé marié non renseigné veuf
Trier les données
n
## [1] 1 2 3 4 5 6 7 8 9 10
sort(n, decreasing = TRUE) # trie un vecteur
## [1] 10 9 8 7 6 5 4 3 2 1
df
## ID Statut Enfant Age ## 1 1 célibataire TRUE 30 ## 2 2 marié TRUE 42 ## 3 3 marié FALSE NA ## 4 4 non renseigné FALSE 27 ## 5 5 veuf FALSE 59 ## 6 6 célibataire FALSE NA ## 7 7 divorcé FALSE 23 ## 8 8 célibataire FALSE 36 ## 9 9 marié FALSE NA ## 10 10 divorcé FALSE 75
df[order(df$Age), ] # trie un tableur
## ID Statut Enfant Age ## 7 7 divorcé FALSE 23 ## 4 4 non renseigné FALSE 27 ## 1 1 célibataire TRUE 30 ## 8 8 célibataire FALSE 36 ## 2 2 marié TRUE 42 ## 5 5 veuf FALSE 59 ## 10 10 divorcé FALSE 75 ## 3 3 marié FALSE NA ## 6 6 célibataire FALSE NA ## 9 9 marié FALSE NA
Réagencer des colonnes
prf <- as.factor(c(rep("commerçant", 3), "ouvrier", rep("fonctionnaire", 6))) df2 <- cbind(df, prf) # colle les colonnes si même nombre de rang df2
## ID Statut Enfant Age prf ## 1 1 célibataire TRUE 30 commerçant ## 2 2 marié TRUE 42 commerçant ## 3 3 marié FALSE NA commerçant ## 4 4 non renseigné FALSE 27 ouvrier ## 5 5 veuf FALSE 59 fonctionnaire ## 6 6 célibataire FALSE NA fonctionnaire ## 7 7 divorcé FALSE 23 fonctionnaire ## 8 8 célibataire FALSE 36 fonctionnaire ## 9 9 marié FALSE NA fonctionnaire ## 10 10 divorcé FALSE 75 fonctionnaire
Rajouter des rangs
df3 <- data.frame(ID = c(11:13), Statut = c(NA, "veuf", "divorcé"), Enfant = c(TRUE, TRUE, FALSE), Age = c(44, 80, 52)) df4 <- rbind(df, df3) # colle les rangs si exacte même colonnes df4
## ID Statut Enfant Age ## 1 1 célibataire TRUE 30 ## 2 2 marié TRUE 42 ## 3 3 marié FALSE NA ## 4 4 non renseigné FALSE 27 ## 5 5 veuf FALSE 59 ## 6 6 célibataire FALSE NA ## 7 7 divorcé FALSE 23 ## 8 8 célibataire FALSE 36 ## 9 9 marié FALSE NA ## 10 10 divorcé FALSE 75 ## 11 11 <NA> TRUE 44 ## 12 12 veuf TRUE 80 ## 13 13 divorcé FALSE 52
Fusionner des jeux de données qui ont en communs des noms de colonnes ou de rangs
df5 <- data.frame(ID = c(1:10), prf = prf, Ville = c(rep("Strasbourg", 3), rep("Paris", 4), "Marseille", "Lyon", "Besançon")) df5
## ID prf Ville ## 1 1 commerçant Strasbourg ## 2 2 commerçant Strasbourg ## 3 3 commerçant Strasbourg ## 4 4 ouvrier Paris ## 5 5 fonctionnaire Paris ## 6 6 fonctionnaire Paris ## 7 7 fonctionnaire Paris ## 8 8 fonctionnaire Marseille ## 9 9 fonctionnaire Lyon ## 10 10 fonctionnaire Besançon
df6 <- merge(df, df5, by = "ID") # fusionne les jeux en fonction de ID df6
## ID Statut Enfant Age prf Ville ## 1 1 célibataire TRUE 30 commerçant Strasbourg ## 2 2 marié TRUE 42 commerçant Strasbourg ## 3 3 marié FALSE NA commerçant Strasbourg ## 4 4 non renseigné FALSE 27 ouvrier Paris ## 5 5 veuf FALSE 59 fonctionnaire Paris ## 6 6 célibataire FALSE NA fonctionnaire Paris ## 7 7 divorcé FALSE 23 fonctionnaire Paris ## 8 8 célibataire FALSE 36 fonctionnaire Marseille ## 9 9 marié FALSE NA fonctionnaire Lyon ## 10 10 divorcé FALSE 75 fonctionnaire Besançon
Les boucles sont utilisées pour répéter un argument un nombre de fois défini
a <- 1 for (i in 1:20){ a <- a+a } a
## [1] 1048576
for (i in 1:length(df6[,1])){ df6$tp_retraite[i] <- 65-df6[i,4] # soustrait l'âge de chaque individu à 65 et # le stocke dans une nouvelle colonne } df6
## ID Statut Enfant Age prf Ville tp_retraite ## 1 1 célibataire TRUE 30 commerçant Strasbourg 35 ## 2 2 marié TRUE 42 commerçant Strasbourg 23 ## 3 3 marié FALSE NA commerçant Strasbourg NA ## 4 4 non renseigné FALSE 27 ouvrier Paris 38 ## 5 5 veuf FALSE 59 fonctionnaire Paris 6 ## 6 6 célibataire FALSE NA fonctionnaire Paris NA ## 7 7 divorcé FALSE 23 fonctionnaire Paris 42 ## 8 8 célibataire FALSE 36 fonctionnaire Marseille 29 ## 9 9 marié FALSE NA fonctionnaire Lyon NA ## 10 10 divorcé FALSE 75 fonctionnaire Besançon -10
Il existe aussi des boucles restrictives
i <- 1 a <- 1 while(a<55) { a <- a+a i=i+1 } a
## [1] 64
i
## [1] 7
Ce qu’il faut essentiellement retenir c’est la grammaire de R :
OBJET <- FONCTION(objet sur lequel s’applique la fonction, paramètres)
Les TYPES de données
Les CLASSES d’objets
Pour le reste, il y a l’aide et internet !!