Pages

Cadeau du Père Denis !


Save the Invaders !

correction de Range


let r = range(1,10,2)


lire

Unique !

Voici de nombreuses écriture du code "unique" qui supprime tous les doublons.




Articles

Qui suis je ?

Dessiner deux ensembles A et B et imaginer ce que vaut i (lig. 11).
  1. let A = [0,2,6],
  2.     B = [0,2,3,4];

  3. function e(tab1, tab2) {
  4.     
  5.     tab1.forEach( v1  => tab2 = tab2.filter(v2 => v2 != v1))

  6.     return tab2;
  7. }

  8. let i = [...e(B,A),...e(A,B)]

Qui suis je ?


Analyser ce code. quel nom donner à cette fonction ?
  1. let A = [2,0,2,0,2,3];
  2. let B = [0,2,3,4];

  3. function name(a1, a2) {
  4.     let t = [];
  5.     if (a1.length > a2.length) {
  6.       [a1,a2]=[a2,a1];
  7.     }

  8.     a1.forEach(function (val1) {
  9.         if (a2.some(val2 => val2 === val1)) {
  10.             t.push(val1)
  11.         }
  12.     });  
  13.     return t
  14. }

  15. let i = name(A,B);

 Quel nom donner à la fonction name ?


Puissance de JS

let A = [2,0,2,0,2,3];
let B = [0,2,3,4];

Tenter de trouver un code équivalent à l'intersection de deux tableaux !

let v = [...new Set([...A, ...B])];



*Revision

passage des paramètres



Ecrire les valeurs affichées



const testPassagePara = function(args) {

    let start = args;
    
    return [start];

}

console.log(testPassagePara(1))

//-------------------------------------------
const testPassagePara = function(args) {

    let start = args;
    
    return [start];

}
console.log(testPassagePara())

//-------------------------------------------
const testPassagePara = function(args=-1) {

    let start = args;
    
    return [start];

}

console.log(testPassagePara())

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start,end,step] = args;
    
    return [start,end,step];

}
console.log(testPassagePara(1, 5, 2, -1))

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start,end,step] = args;

    return {start,end,step};
}


console.log(testPassagePara(1, 5, 2, -1))

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start,end,step] = args;

    return {start,end,step};
}


console.log(testPassagePara(1))

//-------------------------------------------
const testPassagePara = function(...args) {

    let [start=0,end=0,step=1] = args;

    return [start,end,step];
}


console.log(testPassagePara(1))

Entrainement à l'algo

let t = [2,0,2,0,2,3];

trouver la fonction qui renvoie unique = [2,0,3]



Entrainement à l'algo

Trouver la fonction qui ne garde que les valeurs de t non incluse dans e

let e = [2,3,4],
     t =  [0,2,2,6,1,3];

résultat :  [0, 6, 1]

*Révisions


  1. for of et la destructuration
  2. La fonction de filtre
  3. Le clonage d'un tableau
  4. La fonction de transformation

range



 *range(4);
 * // => [0, 1, 2, 3]
 *
 *range(-4);
 * // => [0, -1, -2, -3]
 *
 *range(1, 5);
 * // => [1, 2, 3, 4]
 *
 *range(0, 20, 5);
 * // => [0, 5, 10, 15]
 *
 *range(0, -4, -1);
 * // => [0, -1, -2, -3]
 *
 *range(1, 4, 0);
 * // => [1, 1, 1]
 *


Design Pattern : decorated



Etude du code

Range à fond la forme

En python  :
class range(start: int, stop: int, step: int=...)
range(stop) -> range object range(start, stop[, step]) -> range object
Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1. start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3. These are exactly the valid indices for a list of 4 elements. When step is given, it specifies the increment (or decrement).

= range(6)
for n in x:
  print(n,x)
0 range(0, 6) 1 range(0, 6) ... 5 range(0, 6)

x = range(5,2,-1)
for n in x:
  print(n,x)
5 range(5, 2, -1) ... 3 range(5, 2, -1)

Ecrire l'équivalent en JS

Les filières d'informatique à Evry


Le 27 Novembre, trois anciens étudiants présenterons leur parcours au sein des filières informatique du département d'informatique de l'Université d'Evry.

ASR

Méhdi Denou, Ingénieur support et Architect HPC Bull/ATOS

CILS 

Jeremy SOBIERAJ, 27ans, Ingénieur de Recherche à l’Institut de Recherche Technologique SystemX

MIAGE

Kévin Anandout, 27 ans, Consultant Digital Senior chez Expertime

CFA AFIA

En présence du responsable Xavier Cren du Centre de Formations en Alternance des formations supérieures en informatique, numérique, finance en Ile-de-France.




Mercredi 27 Novembre : Inscription obligatoire


Au Menu ce WE !

En python  :
class range(start: int, stop: int, step: int=...)
range(stop) -> range object range(start, stop[, step]) -> range object
Return an object that produces a sequence of integers from start (inclusive) to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1. start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3. These are exactly the valid indices for a list of 4 elements. When step is given, it specifies the increment (or decrement).

= range(6)
for n in x:
  print(n,x)
0 range(0, 6) 1 range(0, 6) 2 range(0, 6) 3 range(0, 6) 4 range(0, 6) 5 range(0, 6)

x = range(5,2,-1)
for n in x:
  print(n,x)
5 range(5, 2, -1) 4 range(5, 2, -1) 3 range(5, 2, -1)

Ecrire l'équivalent en JS

On ne regarde pas les solutions Internet !

PUB


Game :

Pour répondre à un étudiant de L2 info sur les jeux






Aide au projet 2

Rappels importants sur les références et les tableaux : lecture.

J-1 avant fermeture

La saison 1 est terminée : Time is over

Test de niveau


A partir d'un tableau d'objets (voir ci-dessous) écrire du code JS permettant de déterminer 


  1. le nombre d'hommes
  2. afficher les âges de chaque homme
  3. calculer l'âge moyen des hommes
  4. les hommes âgés de plus de 50 ans
  5. les hommes nés après 1800


Objectif


Etudier la flexibilité de votre code

Autrement dit, comment allez vous écrire le code pour déterminer

  1. le nombre de femmes
  2. afficher les âges de chaque femmes
  3. calculer l'âge moyen des femmes
  4. ... 



Base de noms : un tableau d'objets !

[
  {"name": "Carolus Haverbeke", "sex": "m", "born": 1832, "died": 1905, "father": "Carel Haverbeke", "mother": "Maria van Brussel"},
  {"name": "Emma de Milliano", "sex": "f", "born": 1876, "died": 1956, "father": "Petrus de Milliano", "mother": "Sophia van Damme"},
  {"name": "Maria de Rycke", "sex": "f", "born": 1683, "died": 1724, "father": "Frederik de Rycke", "mother": "Laurentia van Vlaenderen"},
  {"name": "Jan van Brussel", "sex": "m", "born": 1714, "died": 1748, "father": "Jacobus van Brussel", "mother": "Joanna van Rooten"},
  {"name": "Philibert Haverbeke", "sex": "m", "born": 1907, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"},
  {"name": "Jan Frans van Brussel", "sex": "m", "born": 1761, "died": 1833, "father": "Jacobus Bernardus van Brussel", "mother":null},
  {"name": "Pauwels van Haverbeke", "sex": "m", "born": 1535, "died": 1582, "father": "N. van Haverbeke", "mother":null},
  {"name": "Clara Aernoudts", "sex": "f", "born": 1918, "died": 2012, "father": "Henry Aernoudts", "mother": "Sidonie Coene"},
  {"name": "Emile Haverbeke", "sex": "m", "born": 1877, "died": 1968, "father": "Carolus Haverbeke", "mother": "Maria Sturm"},
  {"name": "Lieven de Causmaecker", "sex": "m", "born": 1696, "died": 1724, "father": "Carel de Causmaecker", "mother": "Joanna Claes"},
  {"name": "Pieter Haverbeke", "sex": "m", "born": 1602, "died": 1642, "father": "Lieven van Haverbeke", "mother":null},
  {"name": "Livina Haverbeke", "sex": "f", "born": 1692, "died": 1743, "father": "Daniel Haverbeke", "mother": "Joanna de Pape"},
  {"name": "Pieter Bernard Haverbeke", "sex": "m", "born": 1695, "died": 1762, "father": "Willem Haverbeke", "mother": "Petronella Wauters"},
  {"name": "Lieven van Haverbeke", "sex": "m", "born": 1570, "died": 1636, "father": "Pauwels van Haverbeke", "mother": "Lievijne Jans"},
  {"name": "Joanna de Causmaecker", "sex": "f", "born": 1762, "died": 1807, "father": "Bernardus de Causmaecker", "mother":null},
  {"name": "Willem Haverbeke", "sex": "m", "born": 1668, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
  {"name": "Pieter Antone Haverbeke", "sex": "m", "born": 1753, "died": 1798, "father": "Jan Francies Haverbeke", "mother": "Petronella de Decker"},
  {"name": "Maria van Brussel", "sex": "f", "born": 1801, "died": 1834, "father": "Jan Frans van Brussel", "mother": "Joanna de Causmaecker"},
  {"name": "Angela Haverbeke", "sex": "f", "born": 1728, "died": 1734, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"},
  {"name": "Elisabeth Haverbeke", "sex": "f", "born": 1711, "died": 1754, "father": "Jan Haverbeke", "mother": "Maria de Rycke"},
  {"name": "Lievijne Jans", "sex": "f", "born": 1542, "died": 1582, "father":null, "mother":null},
  {"name": "Bernardus de Causmaecker", "sex": "m", "born": 1721, "died": 1789, "father": "Lieven de Causmaecker", "mother": "Livina Haverbeke"},
  {"name": "Jacoba Lammens", "sex": "f", "born": 1699, "died": 1740, "father": "Lieven Lammens", "mother": "Livina de Vrieze"},
  {"name": "Pieter de Decker", "sex": "m", "born": 1705, "died": 1780, "father": "Joos de Decker", "mother": "Petronella van de Steene"},
  {"name": "Joanna de Pape", "sex": "f", "born": 1654, "died": 1723, "father": "Vincent de Pape", "mother": "Petronella Wauters"},
  {"name": "Daniel Haverbeke", "sex": "m", "born": 1652, "died": 1723, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
  {"name": "Lieven Haverbeke", "sex": "m", "born": 1631, "died": 1676, "father": "Pieter Haverbeke", "mother": "Anna van Hecke"},
  {"name": "Martina de Pape", "sex": "f", "born": 1666, "died": 1727, "father": "Vincent de Pape", "mother": "Petronella Wauters"},
  {"name": "Jan Francies Haverbeke", "sex": "m", "born": 1725, "died": 1779, "father": "Pieter Bernard Haverbeke", "mother": "Livina de Vrieze"},
  {"name": "Maria Haverbeke", "sex": "m", "born": 1905, "died": 1997, "father": "Emile Haverbeke", "mother": "Emma de Milliano"},
  {"name": "Petronella de Decker", "sex": "f", "born": 1731, "died": 1781, "father": "Pieter de Decker", "mother": "Livina Haverbeke"},
  {"name": "Livina Sierens", "sex": "f", "born": 1761, "died": 1826, "father": "Jan Sierens", "mother": "Maria van Waes"},
  {"name": "Laurentia Haverbeke", "sex": "f", "born": 1710, "died": 1786, "father": "Jan Haverbeke", "mother": "Maria de Rycke"},
  {"name": "Carel Haverbeke", "sex": "m", "born": 1796, "died": 1837, "father": "Pieter Antone Haverbeke", "mother": "Livina Sierens"},
  {"name": "Elisabeth Hercke", "sex": "f", "born": 1632, "died": 1674, "father": "Willem Hercke", "mother": "Margriet de Brabander"},
  {"name": "Jan Haverbeke", "sex": "m", "born": 1671, "died": 1731, "father": "Lieven Haverbeke", "mother": "Elisabeth Hercke"},
  {"name": "Anna van Hecke", "sex": "f", "born": 1607, "died": 1670, "father": "Paschasius van Hecke", "mother": "Martijntken Beelaert"},
  {"name": "Maria Sturm", "sex": "f", "born": 1835, "died": 1917, "father": "Charles Sturm", "mother": "Seraphina Spelier"},
  {"name": "Jacobus Bernardus van Brussel", "sex": "m", "born": 1736, "died": 1809, "father": "Jan van Brussel", "mother": "Elisabeth Haverbeke"}
]

Ecrire votre code dans un doc bin/fiddle 

Vidéos en action


Que dites vous de cela !

Les vidéos sont structurées dans un tableau d'objets.

videos = [
  {"youtubeId": "oRDBThkNE0o",
    "title": "Le Cirque *"
  },
  {"youtubeId": "fuFuR4TGEI8",
    "title": "Le Cirque A"
  },
  {"youtubeId": "0BId6Lwga_4",
    "title": "Le Cirque B"
  }]

Il ne reste qu'à afficher les éléments du tableau. Nous verrons comment écrire ce code !
Mais, comme pour Viméo, Youtube utilise un ID unique pour chaque vidéo.

En action

Test

Dans le simulateur Grid, que donnerait le code

.conteneur {
   display : flex;

   flex-wrap:wrap;

   padding-bottom : 5px;

}


padding-bottom : 5px; permettra de modifier la taille du conteneur


.conteneur * {
   flex : 100px;

}

Pour les largueurs du conteneur de

  • 110 px
  • 250 px
  • 310 px
  • 410 px

Test

Comment obtenir les figures suivantes ?





Utiliser le simulateur ! 



1
2

Projet

Ecrire le code pour simuler le comportement suivant.

En remplaçant les images par des vidéos.




Vidéos :


Chalenge

Analyser le code de la page suivante ( page 🔜 )  

En particulier le code utilisant flex :


Modifier le code CSS pour obtenir l'alignement du texte Learn more