50-4
Attention :
Pré-requis Programmation : 050-003
Prérequis Editeur : Unity
Objectifs : Tableau
(Array
) - Instructions itératives[1]
Exemple :
Afficher les sources de perte stockées dans un tableau avec des instructions itératives : la boucle for (ou foreach) sera utilisée ici, car nous connaissons le nombre d'éléments du tableau.
La boucle foreach
est bien adaptée pour parcourir les éléments d'un objets de type tableau.
Traiter les éléments du tableau
:
- afin de sommer le temps de perte lié aux différentes sources (avec for et foreach)
- afin de compter les sources dites « observables » (avec foreach)
On en profite pour bien appréhender les problématiques d'initialisation, de cumul --> Analogie avec le tableur (recopie vers le bas)
Réglementaire : Pour bien démarrer cet exercice⚓
Ajouter un nouveau script et ajouter les lignes ci-dessous :
// Le code est à placer sous la déclaration de la classe
string[] listePertes = { "AI", "EP", "NQ" };
float[] tempsPertes = { 10.0f, 2.0f, 4.0f };
Boolean[] estObservable = { true, false, true };
int v_indice;
int nb;
void Start()
{
// on travaille uniquement dans Start car nous n'avons pas besoin de rafraîchir le traitement.
}
Particularité Unity⚓
On utilise la méthode UnityEngine.Debug.Log()
pour afficher des données dans l'onglet Console
.
Particularité Fiddle⚓
La sortie Console est utilisée pour les entrées/sorties
Particularité VS⚓
La sortie Console est utilisée pour les entrées/sorties
Réglementaire : Code CS Unity⚓
using System;
using System.Collections;
using System.Collections.Generic;
using System.Xml.Linq;
using UnityEngine;
public class TRG_050_004 : MonoBehaviour
{
string[] listePertes = { "AI", "EV", "NQ" };
float[] tempsPertes = { 10.0f, 2.0f, 4.0f };
Boolean[] estObservable = { true, false, true };
int v_indice;
int nb;
void Start()
{
// Base pour afficher les 3 éléments du tableau grâce
// à la mise à jour à chaque itération de la variable i qui s'incrémentera de 1
// et devra rester inférieure ou égale à 2
for (int i = 0; i <= 2; i++)
{
Debug.Log(listePertes[i]);
}
// plus rapide lorsqu'il faut faire défiler les éléments d'un tableau
foreach (float element in tempsPertes)
{
Debug.Log($"{element} ");
}
// cumuler les pertes avec foreach
float somPertes = 0;
v_indice= 0;
foreach (float element in tempsPertes)
{
v_indice++;
somPertes += element;
Debug.Log($"Après l'élément {v_indice}, la somme des pertes est de {somPertes} heures");
}
// cumuler les pertes avec for
somPertes = 0;
for (int i = 0; i <= 2; i++)
{
somPertes += tempsPertes[i];
Debug.Log($"Après l'élément {i}, la somme des pertes est de {somPertes} heures");
}
// Expliquez pourquoi un message d'erreur apparaît dans l'instcruction ci-dessous
// Debug.Log($"i vaut {i} et la somme des pertes est de {somPertes}");
// compter le nombre d'éléments true
nb = 0;
int nbTotal = 0;
somPertes = 0;
foreach (Boolean element in estObservable)
{
if (element)
{
nb = nb + 1;
somPertes = somPertes + tempsPertes[nbTotal];
}
nbTotal++; // l'incrémentation est placée à la fin de la boucle pour ne pas dépasser la capacité du tableau
}
Debug.Log($"Il y a {nb} sources observables parmi {nbTotal} et la somme est de {somPertes}");
}
}