Boucles Javascript

Ce guide détaillé permet d'acquérir une compréhension complète des boucles JavaScript, un aspect essentiel du langage de programmation le plus populaire au monde. Cette exploration instructive approfondit la définition, les fonctions pratiques, les techniques et les exemples de boucles JavaScript. En outre, tu saisiras le concept de JavaScript Loop Through Object et tu maîtriseras la syntaxe des boucles JavaScript. En te plongeant dans ce guide, tu deviendras habile à manœuvrer dans le monde des boucles JavaScript, ce qui améliorera considérablement tes capacités de codage.

C'est parti

Des millions de fiches spécialement conçues pour étudier facilement

Inscris-toi gratuitement

Review generated flashcards

Inscris-toi gratuitement
Tu as atteint la limite quotidienne de l'IA

Commence à apprendre ou crée tes propres flashcards d'IA

Équipe éditoriale StudySmarter

Équipe enseignants Boucles Javascript

  • Temps de lecture: 21 minutes
  • Vérifié par l'équipe éditoriale StudySmarter
Sauvegarder l'explication Sauvegarder l'explication
Tables des matières
Tables des matières

Sauter à un chapitre clé

    Comprendre les boucles JavaScript

    Dans le monde de l'informatique, et plus particulièrement en JavaScript, les boucles jouent un rôle essentiel. Elles se distinguent comme des constructions essentielles qui facilitent l'exécution d'un bloc de code à plusieurs reprises. Cette capacité à répéter des tâches de manière transparente rend les boucles Javascript extrêmement utiles dans ton code.

    Les boucles sont simplement un concept qui te permet de demander à ton programme d'exécuter une série d'actions de façon répétitive jusqu'à ce qu'une certaine condition soit remplie ou ne soit plus vraie.

    Définition complète des boucles JavaScript

    Le concept des boucles en JavaScript est peut-être simple, mais cette fonctionnalité contient beaucoup de choses qu'il est essentiel de comprendre. Et même si elles peuvent sembler intimidantes au premier abord, les principes qui les sous-tendent sont simples. Essentiellement, une fois que tu auras compris le fonctionnement des boucles, tu pourras écrire un code à la fois efficace et propre.

    Une boucle Javascript est une construction qui exécute de façon répétée un bloc de code pendant qu'une condition spécifiée revient à la réalité. Dès que la vérification de la condition revient à faux, l'action de la boucle s'arrête.

    Il existe plusieurs types de boucles en JavaScript, mais les trois plus courantes sont :

    • la boucle for
    • boucle while
    • boucle do...while

    L'utilisation de ces boucles permet de contrôler le nombre d'exécutions d'un morceau de code, ce qui apporte efficacité et dynamisme au fonctionnement d'une application. Chacune des boucles mentionnées a cependant sa propre fonctionnalité et ses propres cas d'utilisation dans la création et l'exécution du code.

    Les fonctions pratiques des boucles JavaScript

    Les boucles offrent aux programmeurs le pouvoir de gérer le nombre d'exécutions d'un morceau de code. Voici les principaux types de boucles JavaScript et leurs principales fonctions pratiques :

    Boucle For: Cette boucle exécutera un bloc de code un nombre spécifique de fois. Voici un exemple de code de boucle for :

    for (let i = 0 ; i < array.length ; i++){ console.log(array[i]) ; }

    Boucle while : La boucle while exécute un bloc de code tant qu'une condition spécifiée reste vraie. Une boucle while typique se présente comme suit :

    let i = 0 ; while (i < array.length){ console.log(array[i]) ; i++ ;
    }

    Do...boucle while : Contrairement à la boucle while, la boucle do...while exécute toujours le bloc de code une fois avant de vérifier la condition. Si elle est vraie, elle continue à s'exécuter. Voici un exemple de code do...while :

    let i = 0 ; do { console.log(array[i]) ; i++ ; } while (i < array.length) ;

    Les boucles simplifient l'écriture de lignes de code répétitives, ce qui la rend moins chronophage et moins sujette aux erreurs. Comprendre et appliquer leurs fonctionnalités peut améliorer considérablement l'efficacité de ta programmation et la lisibilité de ton code.

    Se familiariser avec les types de boucles et les techniques JavaScript

    Pour aller plus loin dans le monde des boucles JavaScript, il est pertinent de comprendre la variété des types et des techniques qui s'offrent à toi en tant que codeur en herbe. En t'initiant à diverses techniques de boucles, tu pourras tirer parti des fonctionnalités de JavaScript pour écrire un code plus efficace.

    Aperçu des techniques de boucles en JavaScript

    Les techniques de boucle sont les méthodes et les stratégies que tu utilises pour mettre en œuvre des boucles Javascript dans ton code de manière élégante. Une technique de boucle bien exécutée peut améliorer considérablement la lisibilité de ton code et ses performances. Pour utiliser ces techniques de manière optimale, tu dois bien comprendre les différents types de boucles disponibles en Javascript.

    Les types de boucle fondamentaux que tu rencontreras en Javascript comprennent la boucle for, la boucle while et la boucle do...while. En comprenant ces types de boucles, tu pourras mieux apprécier la façon d'appliquer les techniques de boucles qui font autorité pour tes sessions de codage.

    Plonger dans les différentes techniques de boucles en Javascript

    Commençons par la boucle for. La boucle for est couramment utilisée lorsque tu sais exactement combien de fois tu veux que la boucle s'exécute. La syntaxe standard d'une boucle for est la suivante :

    for ([initialisation] ; [condition] ; [expression finale]) { // instruction à exécuter }

    Où ,

    • initialisation : Cette phase met en place la variable de la boucle.
    • condition : La boucle continue de s'exécuter tant que cette condition reste vraie.
    • expression finale : Est exécutée à la fin de chaque itération de la boucle, généralement utilisée pour incrémenter la variable de la boucle.

    Ensuite, nous avons la boucle while. Ce type de boucle est utilisé lorsque tu veux que la boucle s'exécute un nombre inconnu de fois jusqu'à ce qu'une condition spécifique ne soit plus remplie. Elle se présente comme suit :

    while (condition) { // instructions à exécuter }

    Enfin, il y a la boucle do...while, qui permet de s'assurer que le bloc de code de la boucle est exécuté au moins une fois avant la vérification de la condition. Sa structure est la suivante :

    do { // instructions à exécuter } while (condition)
    ;

    Ces techniques offrent différentes façons de contrôler l'exécution de la boucle, ce qui te donne de la souplesse pour écrire un code efficace et élégant.

    Remarques importantes sur les techniques de boucles JavaScript

    Lors de l'utilisation des boucles JavaScript, il y a des points essentiels que tu dois garder à l'esprit :

    • Assure-toi que la condition que tu définis dans une boucle finira par devenir fausse ; sinon, tu pourrais te retrouver avec une boucle infinie.
    • Évite de créer des expressions complexes dans la partie condition de la boucle. En restant simple, il est plus facile pour les autres développeurs de comprendre ton code.
    • Le mot-clé "break" te permet de sortir prématurément d'une boucle, avant que la condition de la boucle ne devienne fausse.
    • Le mot-clé "continue" te permet de passer directement à l'itération suivante de la boucle, en contournant le reste du bloc de code pour l'itération en cours.

    En gardant ces points à l'esprit et en comprenant comment fonctionnent les différentes techniques de boucle, tu peux utiliser les boucles Javascript de manière efficace, en créant un code efficace, propre et dynamique.

    Un aperçu des boucles JavaScript par l'intermédiaire d'un objet

    Une capacité fascinante de JavaScript est son pouvoir de boucler à travers des objets. Cette capacité te permet d'accéder, de modifier ou de manipuler les propriétés d'un objet de façon séquentielle, ce qui en fait une technique essentielle pour une programmation JavaScript efficace.

    Les bases : Qu'est-ce qu'un objet en boucle en JavaScript ?

    À la base, une boucle JavaScript à travers un objet est le processus d'itération sur les propriétés d'un objet. En JavaScript, les objets sont des structures de données contenant des données sous forme de propriétés, chacune étant identifiée par une clé. Les données stockées peuvent se présenter sous différentes formes, notamment sous forme de chaîne de caractères, de nombre, de tableau ou même d'un autre objet. Généralement, tu souhaites parcourir ces propriétés en boucle dans un certain ordre.

    Imagine que tu disposes d'un objet représentant un élève et que tu souhaites imprimer tous les détails le concernant. Tu pourrais le faire manuellement en accédant à chaque propriété individuellement, mais que se passe-t-il si tu ne connais pas toutes les propriétés de l'objet ou si l'objet a trop de propriétés ? C'est exactement dans cette situation qu'un objet de type boucle devient utile.

    La boucle for...in fournit un moyen facile d'itérer sur les propriétés des objets. La boucle passe littéralement par chaque clé de propriété, ce qui te permet d'accéder à la valeur de la propriété associée ou de la manipuler.

        let student = { name : "John Doe", age : 15, class : "10th grade", matières : ["Maths", "English", "Science"] } ; for (let key in student){ console.log(`${key} : ${student[key]}`) ; }

    Dans l'exemple ci-dessus, nous imprimons toutes les propriétés de l'objet élève en utilisant la boucle for...in.

    L'importance de la boucle JavaScript à travers l'objet

    La boucle JavaScript Loop Through Object est un outil puissant pour les développeurs. La maîtrise de cette technique peut te faire gagner un temps considérable et réduire le nombre de lignes de code répétitives. Le bouclage d'objet te permet de gérer dynamiquement les objets, quel que soit le nombre ou la complexité de leurs propriétés.

    • Le bouclage d'un objet permet d'accéder à chaque propriété et de la manipuler successivement, ce qui élimine les lignes de code répétitives.
    • C'est particulièrement utile lorsqu'il s'agit de structures d'objets dynamiques, dont les propriétés peuvent ne pas être connues à l'avance.
    • Loop Through Object te permet d'écrire un code plus efficace et plus propre que l'accès manuel aux propriétés.
    • Cette technique ouvre des possibilités de mise en œuvre de tâches compliquées telles que l'imbrication de plusieurs boucles for...in pour gérer des objets imbriqués.

    Guide étape par étape : Comment implémenter une boucle JavaScript à travers un objet

    La mise en œuvre d'un objet de boucle JavaScript comporte plusieurs étapes. Voici un guide pour t'aider :

    1. Initialise l'objet : Commence par définir l'objet que tu souhaites faire passer en boucle.
    let student = { name : "John Doe", age : 15, class : "10th grade", matières : ["Maths", "English", "Science"] } ; 2.
    Utilise la boucle for...in : Mets ensuite en place une boucle for...in. La variable que tu définis (comme 'key') contiendra une clé de propriété différente à chaque itération de la boucle.
    for(let key in student) { // Code JavaScript }
    3. Accéder aux propriétés des objets : À l'intérieur de la boucle for...in, tu peux accéder à chaque valeur de propriété en utilisant la notation entre crochets avec la variable clé.
    console.log(`${key} : ${student[key]}`) ;
    4. Exécution complète de la boucle : La boucle for...in fait le reste. Elle parcourt automatiquement chaque clé de propriété de l'objet, en exécutant le bloc de code que tu as défini pour chacune d'entre elles.

    Ce guide est assez simple, mais n'oublie pas que la gestion des erreurs est toujours essentielle, alors vérifie toujours la propriété de l'objet pour t'assurer que l'exécution est précise et efficace.

    Exploration d'exemples de boucles JavaScript

    Pour approfondir le concept des boucles JavaScript, l'examen d'exemples pratiques t'aidera à consolider ta compréhension du sujet. Grâce à ces exemples, tu verras comment les boucles deviennent des outils essentiels qui permettent d'effectuer des tâches de façon répétitive, ce qui rend le codage plus efficace.

    Exemples pratiques de boucles JavaScript

    Examinons trois exemples concrets de boucles JavaScript : une simple boucle for pour imprimer des nombres, une boucle while pour calculer une factorielle, et une boucle do...while en action.

    Tout d'abord, considérons une boucle for basique qui imprime des nombres de 1 à 10. Ici, l'initialisation fixe la variable de la boucle à 1, la condition vérifie si la variable est inférieure ou égale à 10, et l'expression finale incrémente la variable d'une unité à la fin de chaque itération. Le code pour cela est le suivant :

    for (let i = 1 ; i <= 10 ; i++) { console.log(i) ; }

    Deuxièmement, pense à une boucle while pour calculer la factorielle d'un nombre. La boucle continuera à multiplier la variable de la boucle par des nombres décroissants jusqu'à ce qu'elle arrive à 1, calculant ainsi la factorielle. Le code qui calcule la factorielle de 5 est le suivant :

    let n = 5 ; let factorial = 1 ; while (n > 1) { factorial *= n ; n-- ; } console.log(factorial) ;

    Troisièmement, nous allons examiner un exemple de boucle do...while où les notes d'un sujet sont moyennées. Dans ce cas, la boucle do...while s'exécute au moins une fois, additionnant les notes jusqu'à ce qu'il n'y ait plus de notes à ajouter. La moyenne est alors calculée comme suit :

    \[ \text{moyenne} = \frac{\text{sum}}{\text{count}} \]

    Voici le code :

    let scores = [85, 90, 78, 92] ; let i = 0 ; let sum = 0 ; do { sum += scores[i] ; i++ ; } while (i < scores.length) ; let average = sum / scores.length ; console.log(average)
    ;

    Décomposer les exemples de boucles JavaScript

    En allant plus loin dans le détail, notre premier exemple utilise une simple boucle for pour imprimer des nombres de 1 à 10. Dans cet exemple, l'initialisation est effectuée à l'aide de let i = 1, notre condition est un vérificateur simple(i <= 10), et l'expression finale, i++, augmente de façon incrémentale la valeur initiale à chaque itération.

    Dans le deuxième exemple, la boucle while calcule la factorielle de 5. La boucle continue jusqu'à ce que la condition fixée n > 1 ne soit plus remplie. Ici, l'initialisation est let n = 5, et n-- est mis à profit pour diminuer la valeur numérique à chaque boucle afin de calculer la factorielle.

    Dans le troisième exemple, une boucle do...while est utilisée pour calculer la moyenne des notes d'un élève. Il est à noter que la boucle s'exécute au moins une fois avant de vérifier la condition. Nous initialisons avec scores (un tableau de nombres) et i et sum (tous deux fixés à zéro). L'instruction sum += scores[i] ajoute chaque score à la somme dans chaque boucle.

    Les opérateurs "++" et "--" sont de puissants opérateurs unaires JavaScript. "++" incrémente son opérande d'une unité, tandis que "--" le décrémente d'une unité. Garde à l'esprit que la position (postfixe ou préfixe) de ces opérateurs par rapport à l'opérande crée une légère différence dans l'exécution lors d'une opération.

    De la théorie à la pratique : Apprendre avec des exemples de boucles JavaScript

    Apprendre les boucles JavaScript uniquement à partir de la théorie permet d'acquérir une compréhension de base du concept. Cependant, le fait d'essayer quelques exemples pratiques permet d'ancrer les connaissances plus profondément dans ton esprit.

    Dans les exemples donnés, tu as vu directement comment les boucles en JavaScript gèrent les tâches répétitives sans effort, qu'il s'agisse d'imprimer une série de nombres, de calculer la factorielle d'un nombre ou de faire la moyenne d'une séquence de scores. Qu'il s'agisse de types de données primitifs (comme les nombres dans les deux premiers exemples) ou de structures de données complexes (comme les tableaux dans le troisième exemple), les boucles JavaScript fournissent des outils flexibles et puissants pour gérer les actions répétées. Ce fait reste vrai, que tu connaisses les itérations de boucle nécessaires à l'avance ou que tu les détermines en fonction des conditions d'exécution d'un état donné.

    N'oublie pas que l'essence des méthodes de boucle JavaScript réside dans la mise en place de variables, la production de conditions pour une exécution incessante et d'expressions finales qui modifient la variable d'une manière ou d'une autre après chaque itération. Continue à expérimenter avec d'autres exemples, à combiner les boucles avec d'autres concepts JavaScript, à comprendre chaque ligne de code et à voir comment elles interagissent. Plus tu travailleras avec des exemples pratiques de boucles, mieux tu comprendras ce concept de codage fondamental.

    Maîtriser la syntaxe des boucles JavaScript

    La maîtrise de la syntaxe est essentielle pour manœuvrer efficacement les boucles JavaScript. Elle constitue l'ensemble des règles qui dictent la façon dont les programmes écrits en JavaScript doivent être structurés. Chaque style de boucle en JavaScript possède sa propre syntaxe spécifique, qui peut différer considérablement des autres types. Il est donc essentiel de comprendre les détails de leur syntaxe pour pouvoir utiliser les boucles JavaScript correctement et en toute confiance.

    Aperçu détaillé de la syntaxe des boucles JavaScript

    JavaScript propose plusieurs types de boucles, chacun ayant une syntaxe unique décrivant comment initialiser la boucle, fournir une condition d'arrêt et ce qu'il faut faire après chaque itération. Examinons les trois types les plus courants - la boucle for, la boucle while et la boucle do...while.

    La syntaxe d'une boucle for est définie comme suit :

    for ([initialisation] ; [condition] ; [expression finale]) { // Code à exécuter de façon répétée jusqu'à ce que la condition soit fausse }
    .
    • Initialisation : Cette partie définit les variables de la boucle et s'exécute une seule fois au début de la boucle.
    • Condition : Si cette expression est évaluée à true, le code de la boucle s'exécute. La boucle s'arrête lorsque cette condition est fausse.
    • Expression finale : Cette section s'exécute après chaque itération de la boucle, et elle est généralement utilisée pour incrémenter le compteur de la boucle.

    La syntaxe d'une boucle while est la suivante :

    while (condition) { // Code à exécuter tant que la condition est vraie }
    .
    • Condition : La boucle s'exécute tant que cette condition est évaluée comme étant vraie. Une fois qu'elle est évaluée comme fausse, la boucle se termine.

    Enfin, la boucle do...while a la syntaxe suivante :

    do { // Code à exécuter au moins une fois puis à répéter tant que la condition est vraie } while (condition) ;
    • Condition : Similaire à la boucle while, mais cette condition est vérifiée après l'exécution du code à l'intérieur de la boucle.

    Décomposition de la syntaxe des boucles JavaScript

    Comprendre la structure de la syntaxe des boucles JavaScript jette les bases d'une application efficace de ce concept dans diverses circonstances. Décortiquons plus en détail la syntaxe de chaque type.

    La boucle for comporte trois sections séparées par des points-virgules à l'intérieur des parenthèses. La section d'initialisation prépare le terrain en définissant les variables. Au cours de l'initialisation, les variables sont souvent réglées sur une valeur "de départ", généralement zéro pour les compteurs. La section condition joue le rôle de gardien, en décidant si la boucle s'exécute ou se termine. La section d'expression finale permet de modifier la variable après chaque itération, souvent en l'incrémentant.

    Dans la boucle while et la boucle do...while, il n'existe aucune section pour l'initialisation ou les expressions finales à l'intérieur des parenthèses. Par conséquent, il faut veiller à concevoir le code à l'intérieur des boucles de manière à ce que les conditions deviennent finalement fausses afin d'éviter les boucles infinies. La différence subtile mais cruciale entre les deux est que dans la boucle do...while, le bloc de code sera toujours exécuté au moins une fois, alors que dans la boucle while, la condition est évaluée avant l'exécution, ce qui peut conduire à zéro itération.

    Comprendre la syntaxe des boucles JavaScript : Points clés à retenir

    Comprendre et se souvenir des points clés de la syntaxe des boucles JavaScript aide à les utiliser correctement dans divers scénarios sans confusion. Voici un résumé des points essentiels à garder à l'esprit lorsque l'on travaille avec la syntaxe des boucles JavaScript :

    • N'oublie pas l'ordre : Initialisation, Condition et Expression finale dans une boucle for.
    • Assure-toi toujours que la condition se résout finalement en faux pour éviter les boucles infinies.
    • Contrairement aux boucles while, les boucles do...while exécutent leur bloc de code au moins une fois avant d'évaluer la condition.
    • Les boucles while sont utiles lorsque le nombre d'itérations nécessaires n'est pas connu avant l'exécution de la boucle, par exemple lorsqu'on attend qu'une condition spécifique se produise.
    • Les boucles for et while peuvent parfois être interchangées, mais choisir le bon type en fonction de tes besoins peut rendre ton code plus propre et plus efficace.

    Quelle que soit la boucle que tu utilises, il est essentiel de respecter scrupuleusement sa syntaxe. L'utilisation correcte de la syntaxe des boucles JavaScript permet d'éviter les bogues, d'améliorer la lisibilité et les performances du code, et de s'assurer que ton code se comporte comme prévu. Par conséquent, comprendre les tenants et les aboutissants de la syntaxe des boucles peut t'aider considérablement à maîtriser JavaScript.

    Boucles Javascript - Principaux points à retenir

    • Types de boucles en Javascript : Les principaux types de boucles comprennent la boucle for, la boucle while et la boucle do...while.
    • Techniques de boucles en Javascript : Ces méthodes et stratégies permettent de mettre en œuvre les boucles de manière efficace, ce qui améliore la lisibilité du code et les performances.
    • Boucle Javascript à travers un objet : Cette technique consiste à itérer sur les propriétés d'un objet. Elle est utile lorsque les propriétés sont incertaines ou nombreuses.
    • Exemples de boucles Javascript : Les exemples pratiques comprennent une boucle for pour imprimer des nombres, une boucle while pour calculer la factorielle, et une boucle do...while pour calculer la note moyenne d'un sujet.
    • Syntaxe des boucles en Javascript : Chaque type de boucle en JavaScript a une syntaxe spécifique. Par exemple, une boucle for est structurée comme suit : for ([initialisation] ; [condition] ; [expression finale]) { // Code à exécuter de façon répétée jusqu'à ce que la condition soit fausse }.
    Apprends plus vite avec les 15 fiches sur Boucles Javascript

    Inscris-toi gratuitement pour accéder à toutes nos fiches.

    Boucles Javascript
    Questions fréquemment posées en Boucles Javascript
    Qu'est-ce qu'une boucle en JavaScript?
    Une boucle en JavaScript est une structure de contrôle permettant d'exécuter répétitivement un bloc de code jusqu'à ce qu'une condition spécifique soit remplie.
    Quels types de boucles existe-t-il en JavaScript?
    Il existe plusieurs types de boucles en JavaScript : les boucles 'for', 'while', 'do...while', et 'for...in' et 'for...of'.
    Comment fonctionne une boucle 'for' en JavaScript?
    Une boucle 'for' en JavaScript itère une séquence d'instructions pour une condition donnée, souvent utilisée pour parcourir des tableaux.
    Qu'est-ce qu'une boucle 'while' en JavaScript?
    Une boucle 'while' répète une série d'instructions tant que la condition spécifiée reste vraie.
    Sauvegarder l'explication

    Teste tes connaissances avec des questions à choix multiples

    À quoi servent les boucles JavaScript ?

    Quels sont les trois types de boucles les plus courants en JavaScript ?

    En quoi les boucles "for", "while" et "do...while" diffèrent-elles dans leurs fonctions en JavaScript ?

    Suivant

    Découvre des matériels d'apprentissage avec l'application gratuite StudySmarter

    Lance-toi dans tes études
    1
    À propos de StudySmarter

    StudySmarter est une entreprise de technologie éducative mondialement reconnue, offrant une plateforme d'apprentissage holistique conçue pour les étudiants de tous âges et de tous niveaux éducatifs. Notre plateforme fournit un soutien à l'apprentissage pour une large gamme de sujets, y compris les STEM, les sciences sociales et les langues, et aide également les étudiants à réussir divers tests et examens dans le monde entier, tels que le GCSE, le A Level, le SAT, l'ACT, l'Abitur, et plus encore. Nous proposons une bibliothèque étendue de matériels d'apprentissage, y compris des flashcards interactives, des solutions de manuels scolaires complètes et des explications détaillées. La technologie de pointe et les outils que nous fournissons aident les étudiants à créer leurs propres matériels d'apprentissage. Le contenu de StudySmarter est non seulement vérifié par des experts, mais également régulièrement mis à jour pour garantir l'exactitude et la pertinence.

    En savoir plus
    Équipe éditoriale StudySmarter

    Équipe enseignants Informatique

    • Temps de lecture: 21 minutes
    • Vérifié par l'équipe éditoriale StudySmarter
    Sauvegarder l'explication Sauvegarder l'explication

    Sauvegarder l'explication

    Inscris-toi gratuitement

    Inscris-toi gratuitement et commence à réviser !

    Rejoins plus de 22 millions d'étudiants qui apprennent avec notre appli StudySmarter !

    La première appli d'apprentissage qui a réunit vraiment tout ce dont tu as besoin pour réussir tes examens.

    • Fiches & Quiz
    • Assistant virtuel basé sur l’IA
    • Planificateur d'étude
    • Examens blancs
    • Prise de notes intelligente
    Rejoins plus de 22 millions d'étudiants qui apprennent avec notre appli StudySmarter !