Exercices : portée des variables et passage d'arguments
Ces exercices portent sur la portée des variables, le passage d'arguments par valeur, le mot-clé out, et se terminent avec des fonctions combinant boucles et return.
Consignes générales
- Nommer les fonctions avec une majuscule au début (
CalculerSomme,AfficherResultat, etc.). - Ne pas utiliser de variables globales pour contourner la portée : chaque fonction doit recevoir ce dont elle a besoin par paramètre (sauf indication contraire).
1. Prédire la portée
Sans exécuter le code, indiquez pour chacun des extraits suivants si le programme compile, et si non, pourquoi.
AfficherTotal();
void CalculerTotal()
{
int total = 100;
}
void AfficherTotal()
{
Console.WriteLine(total);
}
int score = 0;
AugmenterScore();
Console.WriteLine(score);
void AugmenterScore()
{
score = score + 10;
}
for (int i = 0; i < 3; i++)
{
int carre = i * i;
}
Console.WriteLine(carre);
2. Fonctions isolées
Créez deux fonctions DefinirPrenom et AfficherPrenom.
DefinirPrenomdéclare une variable localeprenomet l'affiche.AfficherPrenomtente d'afficherprenom.
Expliquez en commentaire pourquoi AfficherPrenom ne peut pas fonctionner telle quelle, puis corrigez le problème en passant prenom en paramètre.
3. Passage par valeur
Créez une fonction Reinitialiser(int nombre) qui assigne 0 à son paramètre.
Dans le programme principal :
- déclarez une variable
valeurinitialisée à42; - appelez
Reinitialiser(valeur); - affichez
valeuraprès l'appel.
Expliquez pourquoi la valeur affichée n'est pas 0.
4. Le mot-clé out
Créez une fonction bool EssayerCalculerRacineCarree(double nombre, out double resultat) qui :
- retourne
falseet assigne0àresultatsinombreest négatif; - retourne
trueet assigne la racine carrée denombreàresultatsinon.
Dans le programme principal, demandez un nombre à l'utilisateur avec Console.ReadLine et double.TryParse, puis affichez la racine carrée ou un message d'erreur si le nombre est négatif ou invalide.
5. Plusieurs valeurs de sortie
Créez une fonction AnalyserTableau(int[] nombres, out int minimum, out int maximum, out double moyenne) qui calcule en une seule fonction le minimum, le maximum et la moyenne des valeurs d'un tableau.
Testez la fonction avec un tableau de votre choix et affichez les trois résultats obtenus.
Exercices de synthèse : boucles et return
Pour les exercices suivants, chaque fonction doit contenir au moins un return à l'intérieur d'une boucle (while ou for) en plus, si nécessaire, d'un return après la boucle.
6. Recherche dans un tableau
Créez une fonction int TrouverPosition(int[] nombres, int valeurRecherchee) qui :
- parcourt le tableau avec une boucle
for; - retourne immédiatement la position de
valeurRechercheedès qu'elle est trouvée (returnà l'intérieur de la boucle); - retourne
-1après la boucle si la valeur n'a pas été trouvée.
7. Premier nombre pair
Créez une fonction int PremierNombrePair(int[] nombres) qui retourne le premier nombre pair rencontré dans le tableau à l'aide d'une boucle while.
- Utilisez une variable d'index qui progresse à chaque itération.
- Retournez le nombre pair dès qu'il est trouvé, à l'intérieur de la boucle.
- Retournez
int.MinValueaprès la boucle si aucun nombre pair n'existe dans le tableau.
8. Validation avec nombre d'essais limité
Créez une fonction bool DemanderMotDePasse(string motDePasseAttendu, int nombreEssaisMax) qui :
- utilise une boucle
forallant de1ànombreEssaisMax; - demande un mot de passe à chaque itération avec
Console.ReadLine; - retourne
trueimmédiatement (à l'intérieur de la boucle) dès que le mot de passe entré est égal àmotDePasseAttendu; - retourne
falseaprès la boucle si aucun essai n'a réussi.
Le programme principal doit afficher un message de succès ou d'échec selon la valeur retournée.