Pages

Examen correction

 https://docs.google.com/document/d/1IolWRY2naolRHdha3-Zov_pgOOyXSB3DEFLoxC2Ced4/edit?usp=sharing



Quelque soit la taille : 

  1. function filter(arr, fn) {

  2.   let result = [];

  3.   for (let item of arr) {

  4.     if (fn(item)) {

  5.       result.push(item);

  6.     }

  7.   }

  8.   return result;

  9. }

  1. function trans(arr, fn) {

  2.   let result = [];

  3.   for (let i = 0; i < arr.length; i++) {

  4.     result.push(fn(arr[i]));

  5.   }

  6.   return result;

  7. }


C) ??A??; = step | ??B??; = result | [8,6,4,2,0]

D)trans(bd, (student) => {

  let sum = 0;

  for (let note of student.notes) {

    sum += note;

  }

  student.average = sum / student.notes.length;

  return student;

}));


E) filter(bd, (student) => student.average >= 16);

Donnez le CSS pour une grille de 4 DIV 

.conteneur { display:flex; flex-wrap: wrap } 

.conteneur div { flex: 25%; } le HTML est laissé libre 


F)function every(arr, fn) {

  for (let item of arr) {

    if (!fn(item)) {

      return false;

    }

  }

  return true;

}

every(bd, (student) => student.average > 10));

every(bd, (student) => student.notes.every((note) => note >= 5)))

Ouvrage

 la BU permet d'accèder en ligne aux ouvrage et formations de l'éditeur ENI. C'est là : https://www.biblio.univ-evry.fr/index.php/2024/03/29/eni/

trans : map

 

Soit la base de données : 
Donnez le code pour transformer la structure en 



Donnez le code qui donne trois nouveaux tableaux :

[ 'Monsieur Dupont', 'Monsieur Dupond', 'Madame Durand' ]

[ 'Cher M. Dupont', 'Cher M. Dupond', 'Chère Mme Durand' ]

[ 20, 20, 24 ]


Le génopole d'Evry : un gène dans une séquence !

recherche("AATC", "AATAAATCAAA");

> AATA****AAA

 

Le code HTML

<body>
  <p class="premier">Para 1</p>
  <p><em>second </em> Para 2</p>
  <p id="dernier"> dernier Para</p>
  <!-- je suis un commentaire -->
</body>

La représentation 


La structuration


On peut retrouver une représentation suivante !

 

Dernier cours : programme L2

 

Élément

Voici le vocabulaire a connaitre pour se déplacer dans le DOM/élément !


 Node


On pourra utiliser également le vocabulaire suivant au niveau Nœud  !





let balises = [];
const _explore = (a) => {
    for (let c of a.children) {
        balises.push(c.nodeName)
        _explore(c)
    }
};
_explore(document.body);



En action 

Copiez ce code et injectez le dans la console d'un site comme le monde.fr

allTag=(a=>{let b=[],c={};return _explore=(a=>{for(let c of a.children)b.push(c.nodeName),_explore(c)}),_explore(a),_getWordCnt=(a=>{return a.reduce(function(a,b){return a[b]=a[b]+1||1,a},[])}),c=_getWordCnt(b),_sort=(a=>{let b=[],c=Object.keys(a).sort((b,c)=>a[c]-a[b]);for(var d of c)b[d]=a[d];return b}),_sort(c)});let a=allTag(document.body);for(var b in a){a.hasOwnProperty(b)&&console.log(`la balise ${b} apparaît ${a[b]} fois `)};

tapez dans la console : a

help yourself

TD : 

 const surprise = action([1,0,0,1,0])


TD : 

Quels codes donnent les nombre pairs, impairs, positifs, multiples de 2 ....


Programme L2

 

Vacances : achats

 Découvrez les méthodes filter, map et reduce en action !

Vous disposez de 80€ de budget.
Vous indiquez dans votre panier vos achats
Type:Prix:Quantité

Cliquez pour calculer l'estimation d'achat et l'aide à la vente.

🍕Fichier pizza.mjs

// pizzas.mjs
const pizzas = [
  { name: "queen", ingredients: ["🐷", "🍄", "🍅", "🧀"] },
  { name: "cheese", ingredients: ["🧀", "🍅"] },
  { name: "oriental", ingredients: ["🍅", "🐑", "🍄", "🌶"] },
  { name: "royal", ingredients: ["🍅", "🌵"] },
];

export default pizzas;


🥘Fichier test.mjs

import pizzas from "./pizzas.mjs"

function myForEach(array, fx) {
  for (let i = 0; i < array.length; i++) fx(array[i], i, array);
}

myForEach(pizzas, (pizza) => {
  console.log(pizza);
});

function printPizzaDetails(pizza, index) {
  console.log(`Pizza ${index + 1}:`);
  console.log(`Name: ${pizza.name}`);
  console.log(`Ingredients: ${pizza.ingredients.join(", ")}`);
}

myForEach(pizzas, printPizzaDetails);

let totalIngredients = 0;

function countIngredients(pizza) {
  totalIngredients += pizza.ingredients.length;
}

myForEach(pizzas, countIngredients);

console.log(`Total ingredients: ${totalIngredients}`);

let uniqueIngredients = [];

function isUniqueIngredient(ingredient) { if (uniqueIngredients.includes(ingredient)) { return } uniqueIngredients.push(ingredient); } function collectUniqueIngredients(pizza) { myForEach(pizza.ingredients, isUniqueIngredient); }

myForEach(pizzas, collectUniqueIngredients);

console.log(`Total unique ingredients: ${uniqueIngredients.length}`);
console.log(`Unique ingredients: ${uniqueIngredients.join(", ")}`);

Don't be a 🦜

Cours ! 

let greaterThanOne = [];
for (let i = 0; i < array.length; i++) {
  if (array[i] > 1) {
    greaterThanOne.push(array[i]);
  }
}
console.log('Values greater than 1:', greaterThanOne);

// 🦜
let greaterThanTwo = [];
for (let i = 0; i < array.length; i++) {
  if (array[i] > 2) {
    greaterThanTwo.push(array[i]);
  }
}
console.log('Values greater than 2:', greaterThanTwo);

// 🦜


function findValuesGreaterThan(array, number) {
  let result = [];
  for (let i = 0; i < array.length; i++) {
    if (array[i] > number) {
                  result.push(array[i]);
            }
           }
           return result;
         }

let greaterThanOne = findValuesGreaterThan(array, 1);        
let greaterThanTwo = findValuesGreaterThan(array, 2);        
let greaterThanVelue = findValuesGreaterThan(array, value);  

🥷How to improve our programming style ?

As an AI programming assistant, I don't have personal opinions or feelings.
However, I can say that asking such a question shows your understanding
of functional programming concepts and your ability to think abstractly about code,
which are important skills in software development. Keep asking questions and exploring different ways to solve problems
- this is a great way to learn and improve as a programmer!




Passons maintenant aux questions suivantes : 




🦜Quels codes donnent les nombres : 
  1. pairs,
  2. impairs,
  3. positifs,
  4. négatifs
  5. multiples de 2
  6. et patati et patata !

Il nous faut modifier la fonction findValuesGreaterThan I par une fonction plus générique !

  1. function filter(arr, fn) {

  2.   let result = [];

  3.   for (let item of arr) {

  4.     if (fn(item)) {

  5.       result.push(item);

  6.     }

  7.   }

  8.   return result;

  9. }


* les nombres pairs :
const pair = v => v%2==0;

const even = filter(t,pair)

* const isNegatif = v => v<0; const even = filter(t,isNegatif)


🚀On pourra chercher quelle fonction permettrait de dire si toutes
les valeurs répondent à un critère ?

Cherchez les valeurs uniques : pas si unique !

 

Solution du DM : unique !

 Définir une fonction unique recherchant les valeurs uniques d'un tableau.


  1. const t = [2,0,2,0,2,3];
  2. const u = unique(t);

💥Proto de SuperDupont


Unique !

Nous allons donner un ensemble de fonction recherchant les valeurs uniques d'un tableau.

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

  2. unique(t);
Nous découvrirons les méthodes et propriétés suivantes :
Array.isArray
array.length
array.splice
array.indexOf
array.push
array.includes

Nous pourrons comparer le temps d'exécution des différentes propositions de code.
  1. let t = [2,0,2,0,2,3];

  2. console.time("time");
  3. unique(t);
  4. console.timeEnd("time");

Nous pourrions également integrer un test élémentaire sur le tableau en argument
  1.   if (!Array.isArray(arr)) {
  2.     throw new TypeError('array-unique expects an array.');
  3.   }
Les écritures suivantes ne sont pas commentées
  1. function unique(t){
  2.   let cur = t.length;
  3.   while (--cur){

  4.   for (let i=0; i< cur; i++){
  5.       if (t[i] == t[cur]){
  6.           t.splice(cur,1);
  7.           break;
  8.       }
  9.   }
  10.   }
  11. }
code
  1. function unique(arr) {
  2.   let i = -1;
  3.   while (i++ < arr.length) {
  4.     var j = i + 1;

  5.     for (; j < arr.length; ++j) {
  6.       if (arr[i] === arr[j]) {
  7.         arr.splice(j--, 1);
  8.       }
  9.     }
  10.   }
  11.   return arr;
  12. };
code
  1. function unique(array) {
  2.   let passed = [];
  3.   for (let i=0 ; i < array.length; i++) {
  4.     if (array.indexOf( array[i]) === i)
  5.       passed.push(array[i]);
  6.   }
  7.   return passed;
  8. }

Dans quelques temps, nous apprendrons des méthodes sur les tableaux très utiles

  1. array.reduce
  2. array.filter

  1. function unique(t){
  2.   
  3.   let u = t.reduce(function(a,c){
  4.     if (!a.includes(c)){
  5.       a.push(c)
  6.     }
  7.     return a;   
  8.     },[])
  9.   return u;
  10. }
code
code
  1. function unique(value,index,tab){
  2.   return tab.indexOf(value) === index;
  3. }

  4. console.time("while")
  5. t = t.filter(unique);
  6. console.timeEnd("while");

Finalement, SuperDupont pourra toujours nous impressionner par l'utilisation de nouveaux
 types d'objet SET et MAP.
  1. console.time("while")
  2. let v = [...new Set(t)];
  3. console.timeEnd("while");

Mais que dire des tableaux contenant des objets ! 
  1. const T = [
  2.     { name: 'dupont', id:22 },
  3.     { name: 'dupont', id:20 },
  4.     { name: 'dupond', id:21 },
  5.     { name: 'dupond', id:21 },
  6.   ];
  7. const unique = [];
  8. const map = new Map();
  9. for (const item of T) {
  10.     if(!map.has(item.id)){
  11.         map.set(item.id, true);    // set any value to Map
  12.         unique.push({
  13.             id: item.id,
  14.             name: item.name
  15.         });
  16.     }
  17. }
  18. console.log(unique)