Partage
  • Partager sur Facebook
  • Partager sur Twitter

Cours Apprenez à coder avec JavaScript

    8 septembre 2020 à 23:49:43

    Bonjour à tous,

    je suis bloqué comme beaucoup sur le dernier exercice du cours. Peu importe le nombre de pages que je rentre, les livres vont tous dans la catégorie "Lus". Je pense que c'est en rapport avec le champ read :

    export class Book {
    	constructor(title, author, description, pages, currentPage, read) {
    		this.title = title;
    		this.author = author;
    		this.description = description;
    		this.pages = pages;
    		this.currentPage = currentPage;
    		this.read = read;
    	}
    
    	readBook(page) {
    		if (page < 1 || page > this.pages) 
    		{
    			return 0;
    		} 
    		else if (page >= 1 && page < this.page) 
    		{
    			this.currentPage = page;
    			return 1;
    		} 
    		else 
    		{
    			this.currentPage = page;
    			this.read = true;
    			return 1;
    		}
    	}
    }
    
    let book1 = new Book("Lucifer", "Satan", "Histoire du diable", 600, 3, false);
    let book2 = new Book("Babar", "Anonyme", "Histoire de Babar", 300, 3, false);
    let book3 = new Book("Bambi", "Disney", "Histoire de Bambi", 200, 3, false);
    
    export const books = [book1, book2, book3];

    Une idée?

    * edit : c'est bon j'ai trouvé :-D le problème venait de l'ordre des conditions...

    -
    Edité par Guygouz 9 septembre 2020 à 10:51:53

    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2020 à 12:46:47

      Salut! Je taff sur un programme pour faire des calculs simples, mais je rencontre un problème. Je n'arrive pas à convertir les nombres reçus des formulaires sous forme de string en int. Donc le programme concatène au lieu d'additionner mes variables qui sont des nombres.
      • Partager sur Facebook
      • Partager sur Twitter
        9 septembre 2020 à 14:06:25

        Déo-GraciasseVodounou a écrit:

        Salut! Je taff sur un programme pour faire des calculs simples, mais je rencontre un problème. Je n'arrive pas à convertir les nombres reçus des formulaires sous forme de string en int. Donc le programme concatène au lieu d'additionner mes variables qui sont des nombres.


        Tu as testé la fonction parseInt() ?
        • Partager sur Facebook
        • Partager sur Twitter
          22 septembre 2020 à 17:57:00

          Bonjour, 

          Je dispose d'un tableau qui contient que des objets A par exemple. Quelle est la bonne manière pour aller lire la propriété x de tous les objets A contenu dans chaque élément de mon tableau. 

          Je sais qu'en C# il y a le foreach, mais je n'arrive pas à trouvé un bout d'explication clair (je débute totalement en JS). 

          MERCI

          • Partager sur Facebook
          • Partager sur Twitter
            29 septembre 2020 à 21:37:11

            monsirgaufre a écrit:

            Salut, j'ai également le même problème avec la page qui s'éxécute bien, mais le carrousel qui ne fonctionne pas ainsi que le message de fin qui ne s'affiche pas.

            J'ai essayé de désactiver le bloqueur de pubs comme certains et aussi de tester avec des valeurs plus hautes etc.. (pas sur d'avoir bien compris cette méthode), comme dit en page 61.

            export class Book {
                constructor(title, author, description, pages, currentPage, read) {
                    this.title = title;
                    this.author = author;
                    this.description = description;
                    this.pages = pages;
                    this.currentPage = currentPage;
                    this.read = read;
                }
                readBook(page) {
                    if (page < 1 || page > this.pages) {
                        return 0;
                    } else if (page >= 1 && page < this.pages) {
                        this.currentPage = page;
                        return 1;
                    } else if (page == this.pages) {
                        this.currentPage = page;
                        this.read = true;
                        return 1;
                    }
                }
            }
            
            let newDanseMacabre = new Book("La Danse macabre", "Marie-Bernadette Dupuy", "Lara prépare son retour au Venezuela, où elle espère retrouver une existence apaisée auprès d'Olivier et de leur fille, Loanne.", 200, 0, false);
            let newHarryQuebert = new Book("La vérité sur l'Affaire Harry Quebert", "Joël Dicker", "À la fin de l’été 1975, à Aurora, dans le New Hampshire, Nola Kellergan, une jeune fille de 15 ans, disparaît dans des conditions mystérieuses.", 400, 0, false);
            let newRougeBresil = new Book("Rouge Brésil", "Jean-Christophe Rufin", "La conquête du Brésil par les Français est un des épisodes les plus extraordinaires et les plus méconnus de la Renaissance.", 1200, 0, false);
            
            
            export const books = [newDanseMacabre, newHarryQuebert, newRougeBresil];

            Merci d'avance ^^ !

            -
            Edité par monsirgaufre 4 août 2020 à 15:36:26



            • Partager sur Facebook
            • Partager sur Twitter
              1 octobre 2020 à 6:44:24

              Guygouz a écrit:

              Bonjour à tous,

              je suis bloqué comme beaucoup sur le dernier exercice du cours. Peu importe le nombre de pages que je rentre, les livres vont tous dans la catégorie "Lus". Je pense que c'est en rapport avec le champ read :

              export class Book {
              	constructor(title, author, description, pages, currentPage, read) {
              		this.title = title;
              		this.author = author;
              		this.description = description;
              		this.pages = pages;
              		this.currentPage = currentPage;
              		this.read = read;
              	}
              
              	readBook(page) {
              		if (page < 1 || page > this.pages) 
              		{
              			return 0;
              		} 
              		else if (page >= 1 && page < this.page) 
              		{
              			this.currentPage = page;
              			return 1;
              		} 
              		else 
              		{
              			this.currentPage = page;
              			this.read = true;
              			return 1;
              		}
              	}
              }
              
              let book1 = new Book("Lucifer", "Satan", "Histoire du diable", 600, 3, false);
              let book2 = new Book("Babar", "Anonyme", "Histoire de Babar", 300, 3, false);
              let book3 = new Book("Bambi", "Disney", "Histoire de Bambi", 200, 3, false);
              
              export const books = [book1, book2, book3];

              Une idée?

              * edit : c'est bon j'ai trouvé :-D le problème venait de l'ordre des conditions...

              -
              Edité par Guygouz 9 septembre 2020 à 10:51:53

              Peux-tu être spécifique sur ta solution? :D

              • Partager sur Facebook
              • Partager sur Twitter
                1 octobre 2020 à 14:57:31

                Salut,

                il y a une erreur à la ligne 16 ;)

                ++

                • Partager sur Facebook
                • Partager sur Twitter
                  1 octobre 2020 à 18:37:47

                  Bonjour,

                  IL y a une chose qui m'échappe sur mon code , tous fonctionne nickel , mais l'alerte ne se met pas.

                  j'ai testé en désactivant les bloqueur de pub, sous Mozila, IE et Edge c'est la mème chose .

                  si quelqu'un peu m'aider , je laisse mon code en support

                  export class Book {
                    constructor(title, author, description, pages, currentPage, read){
                      this.title = title;
                      this.author = author;
                      this.description = description;
                      this.pages = pages;
                      this.currentPage = currentPage;
                      this.read = read;
                      } 
                    readBook (number){
                          if (number < 1 || number > this.pages){
                            console.log('c\'est pas bon');
                            return 0;
                          }
                          else if (number >= 1 && number < this.pages ){
                              this.currentPage = number;
                              return 1;
                          }
                          else if (number == this.pages){
                            this.currentPage = number;
                            this.read = true;
                            return 1;
                          }
                      }
                    }
                  
                  
                    let livre1 = new Book ('chère mamie','Virginie Grimaldi','description1',231,1,false);
                    let livre2 = new Book ('en voiture simone','Aurelie Valognes','description2',249,15,false);
                    let livre3 = new Book ('l\'immeuble des femmes qui ont renoncé aux hommes','Karine Lambert','description3',213,45,false);
                  
                    export const books = [ livre1, livre2, livre3 ];
                   
                  • Partager sur Facebook
                  • Partager sur Twitter
                    2 octobre 2020 à 10:39:47

                    En effet j'ai la meme problématique. le code fonctionne, mes livres passent bien en lus mais je n'ai pas d'alerte qui s'affiche
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 octobre 2020 à 16:32:36

                      Dommage que l'exo ne soit pas résolu dans le cours
                      • Partager sur Facebook
                      • Partager sur Twitter
                        9 octobre 2020 à 3:26:24

                        Bonjour,

                        J'ai réussi à faire apparaît le mot sur Edge, parce que je ne l'utilise jamais.

                        Malheureusement, cela m'a donné le mot en français et je me suis trompé, donc un conseil :

                        Faîtes attention aux animaux adultes et bébés lors de votre réponse

                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 novembre 2020 à 17:56:18

                          Bonjour, j'ai suivi l ancien cours de Javascript et je ne trouve plus le moyen de prendre les frappes dans la console. Merci
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 novembre 2020 à 4:21:11

                            Bonjour à tous,

                            Quelqu'un peut-il m'expliquer:

                            N'oubliez pas qu'un objet (une instance d'une classe est un objet) est un type par référence, donc vous pouvez toujours apporter des modifications à l'instance de  newAccount  — la partie constante désigne une référence à cette instance.

                            Comment est-ce possible de modifier une constante?

                            Je ne comprends vraiment pas. Merci

                            -
                            Edité par Coordonnateur Projets/ Géomaticien 26 novembre 2020 à 4:23:27

                            • Partager sur Facebook
                            • Partager sur Twitter
                              16 décembre 2020 à 14:07:52

                              bonjour a tous

                              j'ai moi aussi un problème avec l exercice final de javascript.

                              a premiere vue tout fonctionne comme prévu mais je ne vois pas d'alerte avec le mot recherché, avec ou sans bloqueur de pub,sur firefox ou chromium

                              mon code

                              export class Book {
                                  constructor(title, author, description, pages, currentPage) {
                                    this.title=title;
                                    this.author=author;
                                    this.description=description;
                                    this.pages=pages;
                                    this.currentPage=currentPage;
                                    this.read=false;
                                    if (currentPage===pages) this.read=true;
                              
                                  }
                              
                                  readBook = (page) => {
                                    if (page <= 1 || page > this.pages) return 0;
                                    if (page >= 1 && page < this.pages) {
                                      this.currentPage=page;
                                      return 1;
                                    }else if (page === this.pages) {
                                      this.currentPage=page;
                                      this.read=true;
                                      return 1;
                                    }
                                  }
                              
                              
                              }
                              
                              let firstBook = new Book('shazaam','michael gray','michael gray\'s autobiography',320,4);
                              let secondBook = new Book('Big Ass Title', 'on s\'en fout du name', 'bla bla bla...', 412,156);
                              let thirdBook = new Book('Big Ass Taitle', 'Big Ass Name', 'blablabybel...', 220,100);
                              let fourthBook = new Book('Big Ass fourth Title', 'Big fourthAss Name', 'enough with descriptions already...', 1220,0);
                              let fifthBook = new Book('Fifth\'Story', 'Abe Lincoln', 'comme le port salud...', 820,350);
                              let sixthBook = new Book('Big Ass Title', 'Big Ass Name', 'plein le cul...', 350,100);
                              
                              
                              export const books = [firstBook, secondBook, thirdBook,fourthBook,fifthBook,sixthBook];
                              

                              -
                              Edité par AurelienGuillaudon 16 décembre 2020 à 14:11:22

                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 décembre 2020 à 12:06:16

                                AurelienGuillaudon a écrit:

                                export class Book {
                                    constructor(title, author, description, pages, currentPage) {
                                      this.title=title;
                                      this.author=author;
                                      this.description=description;
                                      this.pages=pages;
                                      this.currentPage=currentPage;
                                      this.read=false;
                                      if (currentPage===pages) this.read=true;
                                
                                    }
                                
                                    readBook = (page) => {
                                      if (page <= 1 || page > this.pages) return 0;
                                      if (page >= 1 && page < this.pages) {
                                        this.currentPage=page;
                                        return 1;
                                      }else if (page === this.pages) {
                                        this.currentPage=page;
                                        this.read=true;
                                        return 1;
                                      }
                                    }
                                
                                
                                }
                                
                                let firstBook = new Book('shazaam','michael gray','michael gray\'s autobiography',320,4);
                                let secondBook = new Book('Big Ass Title', 'on s\'en fout du name', 'bla bla bla...', 412,156);
                                let thirdBook = new Book('Big Ass Taitle', 'Big Ass Name', 'blablabybel...', 220,100);
                                let fourthBook = new Book('Big Ass fourth Title', 'Big fourthAss Name', 'enough with descriptions already...', 1220,0);
                                let fifthBook = new Book('Fifth\'Story', 'Abe Lincoln', 'comme le port salud...', 820,350);
                                let sixthBook = new Book('Big Ass Title', 'Big Ass Name', 'plein le cul...', 350,100);
                                
                                
                                export const books = [firstBook, secondBook, thirdBook,fourthBook,fifthBook,sixthBook];
                                

                                Salut,

                                Voici mes conseils :

                                Penses à bien ouvrir des {} après tes conditions if (...) { ... }.

                                Il y a un mélange entre le constructeur de ta classe et la méthode d'instance readBook. L'endroit où tu as mis la condition "If" dans le constructor, doit faire parti de la logique que tu as mis en place dans ta méthode d'instance readBook().

                                Il me semble me rappeler qu'il y a avait écrit que l'initialisation de la variable currentPage devait être à 0. Cette variable va être repris par la suite sur la page du navigateur par un input que le visiteur va pouvoir modifier à a sa guise. Et c'est cette manip qui va pouvoir débloquer l'affichage du mot magique dès que l'ensemble des books seront passé en mode read = true et que l'ensemble des books return 1;

                                En espérant avoir pu aider,

                                Bon courage



                                -
                                Edité par Catherine Chang 19 décembre 2020 à 12:09:33

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  24 décembre 2020 à 1:36:06

                                  Salut à tous, suite aux nombreuses demande de correction de cet exercice, j'ai fais une vidéo sur YouTube expliquant sa résolution.
                                  Bon visionnage ;) 

                                  -
                                  Edité par NadfriJS 24 décembre 2020 à 1:36:46

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                                    15 janvier 2021 à 23:20:09

                                    Bonjour, 

                                    Je réalise actuellement le premier chapitre du cour, j'aimerais comprendre quelque chose pourquoi dans la solution du deuxième cour dans la solution l'addition est entre parenthèse ? 

                                    Merci d'avance

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 janvier 2021 à 8:44:20 - Message modéré pour le motif suivant : Merci d'utiliser le bouton code du forum pour insérer votre code


                                        18 janvier 2021 à 13:52:20

                                        Salut à tous, j'espère que tout vas bien pour vous, que vos cerveaux ne suent pas trop avec le JavaScript lol.

                                        Pour ma part, je viens de démarrer sur ce langage passionnant depuis maintenant une semaine, et je dois dire que je m'en sors plutôt pas mal.

                                        Seulement voila, comme beaucoup j'ai quelques lacunes ( normal en même temps :) ) ...

                                        Dans le cours de Will Alexander, qui est ma foi bien expliqué, j'en suis au chapitre des boucles for, for in, for of et while.

                                        J'ai compris le concept, mais je bloques sur pas mal de scripts les concernant.

                                        A présent je vais aller au vif de ma problématique, et je vous en serais hyper reconnaissant si vous pouviez me donner la solution, car je ne dors

                                        plus depuis quelques nuit à cause de cela, à vouloir me creuser le cerveau pour la trouver :

                                        - J'ai crée une classe d'objet Book avec dans le constructor (title,author,pages,isAvailable,stock).

                                        - Ensuite j'ai créé 3 objets avec cette classe : firstBook, secondBook et thirdBook avec chacun un stock d'une valeur number : 10.

                                        - Puis j'ai créé un 'if else' dans le but de gérer le stock de mes objets, pour imprimé dans ma console le stock restant sur chaque objet,

                                        et sinon une rupture de stock, j'ai opérais comme suit :

                                        class Book{
                                        
                                          constructor(title,author,pages,isAvailable,stock){
                                        
                                            this.title = title;
                                        
                                            this.author = author;
                                        
                                            this.pages = pages;
                                        
                                            this.isAvailable = isAvailable;
                                        
                                            this.stock = stock;
                                        
                                          }
                                        
                                        }
                                        
                                        
                                        
                                        let firstBook = new Book(
                                        
                                          "Le fumier",
                                        
                                          "Rudy",
                                        
                                          350,
                                        
                                          true,
                                        
                                          6);
                                        
                                        
                                        
                                        let secondBook = new Book(
                                        
                                          "Le barbare",
                                        
                                          "John",
                                        
                                          260,
                                        
                                          false,
                                        
                                          9);
                                        
                                        
                                        
                                        let thirdBook = new Book(
                                        
                                          "La folle",
                                        
                                          "Amanda",
                                        
                                          450,
                                        
                                          false,
                                        
                                          9);
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        if(firstBook.stock === 10){
                                        
                                          console.log('Il reste 10 exemplaires');
                                        
                                        }else if(firstBook.stock === 9){
                                        
                                          console.log('Il reste 9 exemplaires');
                                        
                                        }else if(firstBook.stock === 8){
                                        
                                          console.log('Il reste 8 exemplaires');
                                        
                                        }else if(firstBook.stock === 7){
                                        
                                          console.log('Il reste 7 exemplaires');
                                        
                                        }else if(firstBook.stock === 6){
                                        
                                          console.log('Il reste 6 exemplaires');
                                        
                                        }else if(firstBook.stock === 5){
                                        
                                          console.log('Il reste 5 exemplaires');
                                        
                                        }else if(firstBook.stock === 4){
                                        
                                          console.log('Il reste 4 exemplaires');
                                        
                                        }else if(firstBook.stock === 3){
                                        
                                          console.log('Il reste 3 exemplaires');
                                        
                                        }else if(firstBook.stock === 2){
                                        
                                          console.log('Il reste 2 exemplaires');
                                        
                                        }else if(firstBook.stock === 1){
                                        
                                          console.log('Il reste 1 exemplaires');
                                        
                                        }else{
                                        
                                          alert(secondBook.title + ' est en rupture de stock');
                                        
                                        }
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        if(secondBook.stock === 10){
                                        
                                          console.log('Il reste 10 exemplaires');
                                        
                                        }else if(secondBook.stock === 9){
                                        
                                          console.log('Il reste 9 exemplaires');
                                        
                                        }else if(secondBook.stock === 8){
                                        
                                          console.log('Il reste 8 exemplaires');
                                        
                                        }else if(secondBook.stock === 7){
                                        
                                          console.log('Il reste 7 exemplaires');
                                        
                                        }else if(secondBook.stock === 6){
                                        
                                          console.log('Il reste 6 exemplaires');
                                        
                                        }else if(secondBook.stock === 5){
                                        
                                          console.log('Il reste 5 exemplaires');
                                        
                                        }else if(secondBook.stock === 4){
                                        
                                          console.log('Il reste 4 exemplaires');
                                        
                                        }else if(secondBook.stock === 3){
                                        
                                          console.log('Il reste 3 exemplaires');
                                        
                                        }else if(secondBook.stock === 2){
                                        
                                          console.log('Il reste 2 exemplaires');
                                        
                                        }else if(secondBook.stock === 1){
                                        
                                          console.log('Il reste 1 exemplaires');
                                        
                                        }else{
                                        
                                          alert(secondBook.title + ' est en rupture de stock');
                                        
                                        }
                                        
                                        
                                        
                                        
                                        
                                        if(thirdBook.stock === 10){
                                        
                                          console.log('Il reste 10 exemplaires');
                                        
                                        }else if(thirdBook.stock === 9){
                                        
                                          console.log('Il reste 9 exemplaires');
                                        
                                        }else if(thirdBook.stock === 8){
                                        
                                          console.log('Il reste 8 exemplaires');
                                        
                                        }else if(thirdBook.stock === 7){
                                        
                                          console.log('Il reste 7 exemplaires');
                                        
                                        }else if(thirdBook.stock === 6){
                                        
                                          console.log('Il reste 6 exemplaires');
                                        
                                        }else if(thirdBook.stock === 5){
                                        
                                          console.log('Il reste 5 exemplaires');
                                        
                                        }else if(thirdBook.stock === 4){
                                        
                                          console.log('Il reste 4 exemplaires');
                                        
                                        }else if(thirdBook.stock === 3){
                                        
                                          console.log('Il reste 3 exemplaires');
                                        
                                        }else if(thirdBook.stock === 2){
                                        
                                          console.log('Il reste 2 exemplaires');
                                        
                                        }else if(thirdBook.stock === 1){
                                        
                                          console.log('Il reste 1 exemplaires');
                                        
                                        }else{
                                        
                                          alert(thirdBook.title + ' est en rupture de stock');
                                        
                                        }



                                        Maintenant comme vous le voyez ci dessus, j'ai créé des 'if else' complet pour le stock de chaque objet en les dissociant,

                                        mais oh my God ! Comme c'est long ! Si j'avais 200-300 objets pour lesquelles il faut que je gères le stock, mon script n'en finirai plus mdrr

                                        Alors m'est venu l'idée de creuser dans des For ou une While, dans une boucle pour remédier à cette problématique, mais voila après 3 jours à 

                                        chercher... eh ben... j'ai pas trouvé la solution.

                                        Pourriez vous me soufflez la réponse?  Je vous en supplie ! Svp !

                                        Et aussi, une autre solution pour si mes objets auraient chacun un stock différent.

                                        Je vous remercie par avance de vos réponses, et vous souhaite bon courage :)

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 janvier 2021 à 17:12:11

                                          Salut Rudy, en effet c'est pas comme cela qu'il faut s'y prendre, en programmation quand une action est répétitive, on fait une fonction afin de pouvoir la réutiliser autant qu'on le souhaite sans à avoir à réécrire le code.

                                          Supposons qu'on veut avoir une fonction qui nous donne stock pour un livre donné en paramètre, ca peut donner cela dans ton cas:

                                          function affichageStock(livre){
                                           let stock = livre.stock;
                                           if(stock > 0){
                                             console.log("Il reste " + stock + " exemplaires")
                                           }
                                          
                                           else{
                                             console.log(livre.title + " est en rupture de stock")
                                           }
                                          
                                          }
                                          
                                          //Utiliser la fonction sur le livre firstBook
                                          affichageStock(firstBook);


                                          Sinon , j'ai fais une video sur la correction de cet exercice ici:

                                          https://youtu.be/TJCCMKRE-ss


                                          -
                                          Edité par NadfriJS 18 janvier 2021 à 17:15:25

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                                            22 janvier 2021 à 12:41:56

                                            Ce cours m'a beaucoup aidé pour comprendre à coder avec javascript. Je trouve que c'est un excellent cours pour débuter à programmer.

                                            Je voudrais juste remercier et féliciter B. Pesquet. C'est rare de voir un cours gratuit de si bonne qualité de par sa clarté et sa méthode.

                                            Comme tous vous cours d'ailleurs, votre cours  "Créez-des-pages-web-interactives-avec-javascript" est le meilleur  pour bien apprendre javascript(en tout cas un bon début parce que je suis débutant et je sais qu'il me reste beaucoup à apprendre).

                                            Les exercices d'application, pour chaque chapitre, m'ont permis de bien comprendre le cours et m’ont donné le courage de coder.

                                            Vous avez de la pédagogie et c'est ça qui manque à certains. En général ils sont bon pour programmer mais leurs  cours sont chaotiques, ça part dans tous les sens.

                                            Mais c'est comme ça, on n'est pas tous fait pour enseigner.

                                            Voilà, toutes mes félicitation M.Pesquet.

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              29 janvier 2021 à 10:24:12

                                              Bonjour ! 

                                              Je suis (comme beaucoup d'autres ^^) le cours sur Javascript et, sur le chapitre concernant les fonctions récursives j'ai eu envie de créer une fonction pour rechercher un nom dans un tableau et les résultats obtenus sont "surprenants".

                                              const array = ["jean","paul","marcel","jeannette","rené","philippe","henri","salut","paris"]
                                              
                                              const thingToFind = "henri";
                                              
                                              const binarySearch = (array, thingToFind, start, end) => {
                                                  
                                                  if (start > end) {
                                                      return false;
                                                  }
                                                  
                                                  let mid = Math.floor((start + end) / 2);
                                                  
                                                  if (array[mid] === thingToFind) {
                                                      return true;
                                                  }
                                                  
                                                  if (thingToFind < array[mid]) {
                                                      return binarySearch(array, thingToFind, start, mid - 1);
                                                  } else {
                                                      return binarySearch(array, thingToFind, mid + 1, end);
                                                  }
                                              }
                                              
                                              const resultat = binarySearch(array, thingToFind, 0, 8)
                                              
                                              console.log(resultat)

                                              Certains nom me retournent "false" alors qu'ils sont dans l'array.

                                              Par exemple "jean" "paul" "rené" et "salut" retournent "true".

                                              tout les autres retournent "false".

                                              Quelqu'un pour m'eclairer ?

                                              Merci !



                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                29 janvier 2021 à 11:58:43

                                                Salut, la gestion des tableaux en programmation est assez complexe, c'est pour cela qu'il existe beaucoup de méthode native optimisées disponibles.

                                                Dans ton cas, si tu veux rechercher un élément, tu peux utiliser ceci:

                                                const found = array.find(element => element == thingToFind);
                                                
                                                console.log(found) // "henri


                                                Dans ton algo, le problème vient de ta comparaison de chaine:

                                                thingToFind < array[mid]

                                                Pour le cas d'Henri ca donne toujours false, car ca va comparer que le coté gauche de ton arbre, et henri se trouve du coté droit.

                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                                                  29 janvier 2021 à 14:56:21

                                                  Rebonjour,

                                                  Je pensais bien qu'il existait d'autres fonction "natives" de recherche.

                                                  Pour le coup j'essayais uniquement de mettre en pratique les fonctions dites récursives via l'exemple donné lors du chapitre (le code de la fonction binarySearch est d'ailleurs un copié collé du cours).

                                                  Concernant ton explication j'y ai également pensé mais comme la recherche de "salut" qui se trouve a droite du tableau me retourne "true" je ne l'ai pas exploré. Je suis donc un peu pommé, d'autant plus qu'en utilisant "array.sort();" pour trier mon tableau, la fonction retourne les bons résultats :s

                                                  J'imagine que je suis au bord du gouffre des mystères du JS et que je n'ai plus d'autres choix que de m'y plonger ? ^^

                                                  PS :Petite parenthèse (parce que je me suis pris la tête dessus pendant 30mn) : 

                                                  Lors du dernier exercice si vous retournez un message d'erreur : "Uncaught SyntaxError: Octal literals are not allowed in strict mode." dans la console, cela peut venir des nombre que vous avez choisi pour l'argument "pages" ou "currentPage".

                                                  D'après wiki :  "Le système de numérationoctal est le système de numération de base 8, et utilise les chiffres de 0 à 7."

                                                  Apparemment donc, les chiffres de 0 à 7 ne sont, pour je ne sais quelle obscure raison, autorisé ici.

                                                  Si quelqu'un à une explication je suis bien sur preneur.


                                                  Hasta luego !

                                                  -
                                                  Edité par AnthoTp 29 janvier 2021 à 16:00:00

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    29 janvier 2021 à 17:52:05

                                                    En effet, cette fonction récursive ne peut marcher qu'avec un tableau trié par ordre alphabétique, afin de pouvoir faire une comparaison entre les 2 chaines. Dans un tableau mélangé, elle va sortir n'importe quoi comme résultat.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                                                      29 janvier 2021 à 18:18:29

                                                      D'accord mais pourtant les argument "start" et "end" sont des index, je pensais donc que le tableau était scindé en deux a partir de ses derniers, et ne nécessitait pas un ordre alphabétique.
                                                      Désolé d'être tatillon mais comme je débute j'essaie de bien intégrer la logique derrière tout ceci !

                                                      -
                                                      Edité par AnthoTp 29 janvier 2021 à 18:27:45

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        29 janvier 2021 à 18:55:21

                                                        AnthoTp a écrit:

                                                        D'accord mais pourtant les argument "start" et "end" sont des index, je pensais donc que le tableau était scindé en deux a partir de ses derniers, et ne nécessitait pas un ordre alphabétique.
                                                        Désolé d'être tatillon mais comme je débute j'essaie de bien intégrer la logique derrière tout ceci !

                                                        -
                                                        Edité par AnthoTp il y a 17 minutes


                                                        Voila comment fonctionne la fonction par detail:

                                                        const binarySearch = (array, thingToFind, start, end) => {
                                                             
                                                            if (start > end) {
                                                                return false; //securité pour sortir de la fonction
                                                            }
                                                             
                                                            let mid = Math.floor((start + end) / 2);//vaut 4
                                                         //array[mid] = "rené" à ce niveau
                                                             
                                                            if (array[mid] === thingToFind) {
                                                                return true;
                                                            }
                                                             
                                                            if (thingToFind < array[mid]) {
                                                        //"henri" est bien < à "rené"
                                                                return binarySearch(array, thingToFind, start, mid - 1);
                                                        //ici on va chercher jusqu'à array[3] qui est jeannette
                                                        //henri est < jeanette, donc va chercher à array[2], et ainsi de suite, on atteindra jamais "henri".
                                                        
                                                        
                                                            } else {
                                                                return binarySearch(array, thingToFind, mid + 1, end);
                                                            }
                                                        }
                                                         
                                                        const resultat = binarySearch(array, thingToFind, 0, 8)
                                                         
                                                        console.log(resultat)



                                                        • Partager sur Facebook
                                                        • Partager sur Twitter

                                                        La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                                                          29 janvier 2021 à 20:26:12

                                                          Oui d'accord c'est bien ce que j'en ai saisi mais quid du "else" qui devrait chercher dans la partie "supérieure" du tableau et pourquoi "salut" qui était dans cette partie me retournais "true" alors que le tableau n'était pas trié ?

                                                          J'imagine que certaines choses sont dépendantes de l'environnement de dev (jsbin & chrome pour le coup) ?

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            29 janvier 2021 à 21:04:55

                                                            Le else, ne sera jamais executé pour le cas de "henry", car le if sera toujours vrai, henry etant toujours <  à "jean","paul","marcel","jeannette","rené"

                                                            Contrairement à "salut" qui est bien > à "rene", dans ce cas on va rentrer dans le "else" soit du coté droit du tableau, et "salut" s'y trouve bien.

                                                            jsbin peut avoir un comportement diffèrent si tu utilises des grosses boucles qui durent longtemps pour faire des calculs ou sur des tres grand nombre. Sinon, il n'y a pas de différence particulière.

                                                            Mets des console.log un peu partout, comme ca tu comprendras mieux ce que fait l'algo:

                                                            const array = ["jean","paul","marcel","jeannette","rené","philippe","henri","salut","paris"]
                                                             
                                                            const thingToFind = "salut";
                                                             
                                                            const binarySearch = (array, thingToFind, start, end) => {
                                                                 
                                                                if (start > end) {
                                                                    return false;
                                                                }
                                                                 
                                                                let mid = Math.floor((start + end) / 2);
                                                                 console.log("array[mid]: " + array[mid])
                                                                if (array[mid] === thingToFind) {
                                                                    return true;
                                                                }
                                                                 
                                                                if (thingToFind < array[mid]) {
                                                                  console.log("array[mid-1]: " + array[mid-1])
                                                                    return binarySearch(array, thingToFind, start, mid - 1);
                                                                } else {
                                                                  console.log("array[mid+1]: " + array[mid+1])
                                                                    return binarySearch(array, thingToFind, mid + 1, end);
                                                                }
                                                            }
                                                             
                                                            const resultat = binarySearch(array, thingToFind, 0, 8)
                                                             
                                                            console.log(resultat)



                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            La meilleure solution est toujours la plus simple. Ma chaîne Youtube [Tutos pour débutants]

                                                            Anonyme
                                                              14 mars 2021 à 11:23:42

                                                              Bonjour, 

                                                              Je suis au dernier exercice de ce cours, et je bloque tout marche mais je n'ai pas le mot qui s'affiche.

                                                              Voici mon code : 

                                                              export class Book {
                                                                constructor(title,author,description,pages,currentPage,read)
                                                                {
                                                                  this.title = title;
                                                                  this.author = author;
                                                                  this.description = description;
                                                                  this.pages = pages;
                                                                  this.currentPage = currentPage;
                                                                  this.read = read;
                                                                }
                                                                readBook(page){
                                                                  if (page<1 || page>this.pages){
                                                                    return (0);
                                                                  }
                                                                  else if(page>=1 && page<this.pages){
                                                                    this.currentPage = page;
                                                                    return (1);
                                                                  }
                                                                  else{
                                                                    this.currentPage = page;
                                                                    this.read = true;
                                                                    return (1);
                                                                  }
                                                                }
                                                                
                                                              }
                                                              
                                                              let unBook = new Book("AAA","Aaaaaaa Aaaaaa","premier",250,1,false);
                                                              let deuxBook = new Book("BBB","Bbbbbb Bbbbbbb","deuxième",368,1,false);
                                                              let troisBook = new Book("CCC","Ccccccc Cccccc","troisième",148,1,false);
                                                              export const books = [unBook,deuxBook,troisBook];

                                                              Cordialement

                                                              Edit : ça marche finalement

                                                              -
                                                              Edité par Anonyme 14 mars 2021 à 11:34:22

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              Cours Apprenez à coder avec JavaScript

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown