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 classestring[] 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 à 2for (int i = 0; i <= 2; i++)
{Debug.Log(listePertes[i]);
}
// plus rapide lorsqu'il faut faire défiler les éléments d'un tableauforeach (float element in tempsPertes)
{Debug.Log($"{element} ");
}
// cumuler les pertes avec foreachfloat 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 forsomPertes = 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 truenb = 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}");
}
}