Instructions de répétition en TypeScript
Cet article explique les instructions de répétition en TypeScript.
YouTube Video
L'instruction for
en TypeScript
L'instruction for
en TypeScript est une structure de boucle de base pour effectuer des opérations répétées. Dans une boucle for
, le même bloc de code peut être exécuté plusieurs fois en fonction d'un nombre spécifié ou de conditions.
Syntaxe de base
1for (initialization; condition; update) {
2 // Code to execute repeatedly while the condition is true
3}
- initialisation: C'est la partie qui n'est exécutée qu'une seule fois avant de démarrer la boucle. Initialiser les variables telles que les compteurs de boucle.
- Conditions (
condition
): Détermine si la boucle continue. Si vrai, continuer à boucler, et si faux, sortir. - Mise à jour (
mise à jour
) : Exécuter à la fin de chaque boucle et mettre à jour le compteur de boucle.
Exemple 1 : Boucle for
basique
Dans l'exemple ci-dessous, cela affiche les nombres de 0
à 4
dans l'ordre.
1for (let i = 0; i < 5; i++) {
2 console.log("The value of i is: " + i);
3}
4// Outputs:
5// The value of i is: 0
6// The value of i is: 1
7// The value of i is: 2
8// The value of i is: 3
9// The value of i is: 4
Exemple 2 : Boucle for
avec un tableau
Vous pouvez également utiliser une boucle for
pour traiter les éléments d'un tableau dans l'ordre.
1let fruits: string[] = ["apple", "banana", "cherry"];
2
3for (let i = 0; i < fruits.length; i++) {
4 console.log("Fruit: " + fruits[i]);
5}
6// Outputs:
7// Fruit: apple
8// Fruit: banana
9// Fruit: cherry
Exemple 3 : Boucle for-in
La boucle for-in
est utilisée pour itérer sur les propriétés d'un objet ou sur les indices d'un tableau dans l'ordre.
1let car = { brand: "Toyota", model: "Corolla", year: 2020 };
2
3for (let key in car) {
4 console.log(key + ": " + car[key]);
5}
6// Outputs:
7// brand: Toyota
8// model: Corolla
9// year: 2020
Exemple 4 : Boucle for-of
La boucle for-of
est utilisée pour obtenir la valeur de chaque élément dans l'ordre à partir d'objets itérables tels que les tableaux ou les chaînes.
1let colors: string[] = ["red", "green", "blue"];
2
3for (let color of colors) {
4 console.log("Color: " + color);
5}
6// Outputs:
7// Color: red
8// Color: green
9// Color: blue
Exemple 5 : Boucle for
imbriquée
Il est également possible d'utiliser une boucle for
à l'intérieur d'une autre boucle for
, appelée boucle imbriquée. Ceci permet de créer des boucles doubles, entre autres.
1for (let i = 0; i < 3; i++) {
2 console.log("Outer loop i: " + i);
3 for (let j = 0; j < 2; j++) {
4 console.log(" Inner loop j: " + j);
5 }
6}
7// Outputs:
8// Outer loop i: 0
9// Inner loop j: 0
10// Inner loop j: 1
11// Outer loop i: 1
12// Inner loop j: 0
13// Inner loop j: 1
14// Outer loop i: 2
15// Inner loop j: 0
16// Inner loop j: 1
Résumé
- L'instruction
for
effectue un traitement répétitif basé sur des comptes ou des conditions spécifiés. for-in
est utilisé pour récupérer les propriétés d'un objet ou les indices d'un tableau.for-of
récupère les valeurs des éléments à partir d'objets itérables comme les tableaux.- Un traitement répétitif complexe est également possible avec des boucles
for
imbriquées.
L'instruction for
en TypeScript offre un traitement répétitif puissant et flexible, similaire aux autres boucles.
Les instructions While en TypeScript
En TypeScript, une instruction while
est une structure de boucle qui exécute un processus répétitif tant que la condition spécifiée est true
. Semblable à la boucle for
, la boucle while
est adaptée aux cas où le nombre d'itérations n'est pas prédéterminé, ou lorsque vous souhaitez contrôler la répétition en fonction d'une condition.
Syntaxe de base
1while (condition) {
2 // Code to execute repeatedly while the condition is true
3}
- Condition : La condition sous laquelle la boucle s'exécute. La boucle continue tant que cette condition est
true
, et s'arrête lorsqu'elle devientfalse
.
Exemple 1 : Boucle de base while
Dans l'exemple ci-dessous, cela continue à afficher la valeur de i
tant que i
est inférieur à 5.
1let i: number = 0;
2
3while (i < 5) {
4 console.log("The value of i is: " + i);
5 i++;
6}
7// Outputs:
8// The value of i is: 0
9// The value of i is: 1
10// The value of i is: 2
11// The value of i is: 3
12// The value of i is: 4
Dans cet exemple, la boucle se termine lorsque i
devient 5 ou plus, car la condition devient false
.
Exemple 2 : Exemple de boucle infinie
Si la condition dans une boucle while
est toujours true
, elle peut devenir une boucle infinie. Cela empêche généralement le programme de s'arrêter comme prévu, il faut donc faire preuve de prudence.
1let x: number = 0;
2
3while (true) {
4 console.log("The value of x is: " + x);
5 x++;
6 if (x >= 5) {
7 break; // Exit the loop when the condition is met
8 }
9}
10// Outputs:
11// The value of x is: 0
12// The value of x is: 1
13// The value of x is: 2
14// The value of x is: 3
15// The value of x is: 4
Vous pouvez utiliser l'instruction break
pour forcer la sortie de la boucle lorsqu'une condition est remplie.
Exemple 3 : Boucle do-while
La boucle do-while
est une structure où le processus de boucle est exécuté au moins une fois. Étant donné que la condition est évaluée après le processus, celui-ci s'exécute au moins une fois même si la condition est false
.
1let j: number = 5;
2
3do {
4 console.log("The value of j is: " + j);
5 j++;
6} while (j < 5);
7// Outputs: The value of j is: 5
Dans cet exemple, j
vaut 5
dès le départ, et j < 5
est false
, mais dans une boucle do-while
, le processus s'exécute au moins une fois, quelle que soit la condition.
Résumé
- Une boucle
while
répète le traitement tant que la condition esttrue
. - Si la condition de fin de la boucle n'est pas claire, il faut être prudent avec les boucles infinies.
- Une boucle
do-while
diffère d'une bouclewhile
normale en ce sens que le traitement est exécuté au moins une fois.
L'instruction while
en TypeScript est utile pour traiter des boucles avec un nombre d'itérations incertain ou lorsque la vérification dynamique des conditions est nécessaire.
break
et continue
Vous pouvez utiliser break
et continue
dans les boucles.
break
est utilisé pour terminer une boucle prématurément.continue
est utilisé pour ignorer l'itération en cours et passer à l'itération suivante.
Exemple de break
1for (let i = 0; i < 10; i++) {
2 if (i === 5) {
3 break; // Exits the loop when i is 5
4 }
5 console.log(i);
6}
7// Outputs 0, 1, 2, 3, 4
8
9let i = 0;
10
11while (i < 10) {
12 if (i === 5) {
13 break; // Ends the loop when i is 5
14 }
15 console.log(i++);
16}
17// Outputs 0, 1, 2, 3, 4
Dans ce cas, break
est exécuté lorsque i
devient 5. En conséquence, les nombres de 0
à 4
sont affichés.
Exemple de continue
1for (let i = 0; i < 5; i++) {
2 if (i === 2) {
3 continue; // Skips when i is 2
4 }
5 console.log(i);
6}
7// Outputs 0, 1, 3, 4
8
9let i = 0;
10
11while (i < 5) {
12 i++;
13 if (i === 3) {
14 continue; // Skips when i is 3
15 }
16 console.log(i);
17}
18// Outputs 1, 2, 4, 5
Dans ce cas, continue
est exécuté lorsque i
est 2
. En conséquence, les nombres sauf 2
sont affichés.
Boucles imbriquées en TypeScript
Une boucle imbriquée est une structure où une boucle est utilisée à l'intérieur d'une autre boucle. En TypeScript, des constructions de boucle comme for
, while
et do-while
sont supportées. En utilisant des boucles imbriquées, vous pouvez traiter des tableaux bidimensionnels (matrices) et rationaliser le traitement en fonction de plusieurs conditions.
Syntaxe de base
La syntaxe de base d'une boucle imbriquée est la suivante.
1for (let i: number = 0; i < n; i++) {
2 for (let j: number = 0; j < m; j++) {
3 // Processing for the inner loop
4 }
5}
Pour chaque exécution de la boucle externe, la boucle interne effectue toutes ses itérations. Cette structure est très utile pour gérer plusieurs boucles ou structures de données.
Exemple de boucle imbriquée en TypeScript
Parcours d'un tableau bidimensionnel
Les boucles imbriquées sont souvent utilisées pour manipuler des structures de données multidimensionnelles comme les tableaux bidimensionnels. Dans l'exemple suivant, les éléments d'un tableau bidimensionnel sont parcourus et leurs valeurs sont affichées sur la console.
1const matrix: number[][] = [
2 [1, 2, 3],
3 [4, 5, 6],
4 [7, 8, 9]
5];
6
7for (let row: number = 0; row < matrix.length; row++) {
8 for (let col: number = 0; col < matrix[row].length; col++) {
9 console.log(`matrix[${row}][${col}] = ${matrix[row][col]}`);
10 }
11}
12// Output
13// matrix[0][0] = 1
14// matrix[0][1] = 2
15// matrix[0][2] = 3
16// matrix[1][0] = 4
17// matrix[1][1] = 5
18// matrix[1][2] = 6
19// matrix[2][0] = 7
20// matrix[2][1] = 8
21// matrix[2][2] = 9
Dans cet exemple, nous parcourons le tableau bidimensionnel matrix
. La boucle externe gère les lignes et la boucle interne gère les colonnes, affichant chaque élément dans l'ordre.
Combinaison de deux tableaux
Ensuite, nous introduisons un exemple de calcul de toutes les combinaisons de deux tableaux. Par exemple, vous pouvez prendre un élément de chacun des deux tableaux et afficher toutes les paires possibles.
1const array1: string[] = ['A', 'B', 'C'];
2const array2: number[] = [1, 2, 3];
3
4for (let i: number = 0; i < array1.length; i++) {
5 for (let j: number = 0; j < array2.length; j++) {
6 console.log(`Pair: (${array1[i]}, ${array2[j]})`);
7 }
8}
9// Output
10// Pair: (A, 1)
11// Pair: (A, 2)
12// Pair: (A, 3)
13// Pair: (B, 1)
14// Pair: (B, 2)
15// Pair: (B, 3)
16// Pair: (C, 1)
17// Pair: (C, 2)
18// Pair: (C, 3)
Dans cet exemple, toutes les paires entre le tableau de chaînes de caractères array1
et le tableau de nombres array2
sont créées. La boucle externe extrait des éléments de array1
, et la boucle interne extrait des éléments de array2
, affichant chaque paire.
Génération de coordonnées avec une triple boucle
En utilisant des boucles imbriquées triples, vous pouvez par exemple générer des coordonnées dans un espace tridimensionnel.
1for (let x: number = 0; x < 3; x++) {
2 for (let y: number = 0; y < 3; y++) {
3 for (let z: number = 0; z < 3; z++) {
4 console.log(`Coordinate: (${x}, ${y}, ${z})`);
5 }
6 }
7}
8// Output
9// Coordinate: (0, 0, 0)
10// Coordinate: (0, 0, 1)
11// Coordinate: (0, 0, 2)
12// ...
13// Coordinate: (2, 2, 1)
14// Coordinate: (2, 2, 2)
De cette manière, l'utilisation de boucles imbriquées triples permet de générer facilement des coordonnées dans un espace tridimensionnel.
Performance des boucles imbriquées
Les boucles imbriquées sont pratiques, mais le coût computationnel augmente rapidement avec la profondeur des boucles. Par exemple, s'il y a n
itérations de la boucle externe et m
itérations de la boucle interne, le nombre total d'itérations sera de n * m
. Lorsque cela devient encore plus imbriqué, la complexité computationnelle augmente de manière exponentielle, ce qui peut affecter la performance du programme.
Voici les complexités computationnelles lors du parcours de trois tableaux.
1const array1: number[] = [1, 2, 3];
2const array2: number[] = [4, 5, 6];
3const array3: number[] = [7, 8, 9];
4
5for (let i: number = 0; i < array1.length; i++) {
6 for (let j: number = 0; j < array2.length; j++) {
7 for (let k: number = 0; k < array3.length; k++) {
8 console.log(`Combination: (${array1[i]}, ${array2[j]}, ${array3[k]})`);
9 }
10 }
11}
Dans ce cas, vous devez calculer array1.length * array2.length * array3.length
, ce qui donne 3 * 3 * 3 = 27
itérations pour traiter toutes les combinaisons.
Optimisation des boucles imbriquées
Lors de l'utilisation de boucles imbriquées, vous pouvez améliorer les performances en prenant en compte les optimisations suivantes :.
- Introduire des retours anticipés : Quittez la boucle dès que l'objectif est atteint pour éviter des itérations inutiles.
- Mettre en cache les variables de boucle : Pré-mémorisez les valeurs des variables utilisées dans la boucle (en particulier les longueurs et les plages) pour réduire le coût des calculs à chaque itération.
- Modifier les structures de données : Réviser la structure des tableaux et des objets peut être efficace pour accélérer certains processus répétitifs.
Conclusion
Les boucles imbriquées sont un outil puissant pour le traitement de données complexes et les algorithmes. Cependant, à mesure que la profondeur des boucles et le nombre d'itérations augmentent, des problèmes de performance peuvent survenir. Avec des optimisations appropriées et une conception soignée, vous pouvez exploiter efficacement les boucles imbriquées dans TypeScript.
Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.