Skip to content

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.

  • DefinirPrenom déclare une variable locale prenom et l'affiche.
  • AfficherPrenom tente d'afficher prenom.

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 valeur initialisée à 42;
  • appelez Reinitialiser(valeur);
  • affichez valeur aprè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 false et assigne 0 à resultat si nombre est négatif;
  • retourne true et assigne la racine carrée de nombre à resultat sinon.

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 valeurRecherchee dès qu'elle est trouvée (return à l'intérieur de la boucle);
  • retourne -1 aprè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.MinValue aprè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 for allant de 1 à nombreEssaisMax;
  • demande un mot de passe à chaque itération avec Console.ReadLine;
  • retourne true immédiatement (à l'intérieur de la boucle) dès que le mot de passe entré est égal à motDePasseAttendu;
  • retourne false aprè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.