Cours
C#: Les méthodes
Un cours complet pour maîtriser C#: Les méthodes.
0 chapitres
0 QCM
Accès gratuit
C#: Les méthodes
Présentations
Définitions
Autres définitions
Syntaxe
Syntaxe d'une méthode en c#
(Liste des paramètres)
{
// corps de la méthode
}
Accès Spécificateur
Type de retour
Nom de la méthode
Liste des paramètres
using System;
class ExampleClass
{
static void ExampleMethod( )
{
Console.WriteLine("Méthode ExampleMethod");
}
static void Main( )
{
Console.WriteLine("Méthode Main");
}
}
Paramètres de méthode
Exemples de programmation de paramètre out C #
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace methode_out_parametre
{
class Program
{
//Accepter deux paramètres d'entrée et renvoie deux sur la valeur
public static void rect(int longueur, int largeur, out int surface, out int perimetre)
{
surface = longueur * largeur;
perimetre = 2 * (longueur + largeur);
}
static void Main(string[] args)
{
int surface, perimetre;
// passing two parameter and getting two returning value
Program.rect(5, 4, out surface, out perimetre);
Console.WriteLine("La surface de Rectangle est {0}\t", surface);
Console.WriteLine("Le Perimètre de Rectangle est {0}\t", perimetre);
Console.ReadLine();
}
}
}Exercice d'application
Exercice_apcpedagogie015 Écrire un programme dans lequel accepte deux arguments en tant que paramètre de l'utilisateur et renvoie quatre valeur de sortie addition, soustraction , multiplication et division .L'exemple suivant illustre ceci:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace application_calcul_methode_ref
{
class manipulateur_nombre
{
public void echange(ref int x, ref int y)
{
int temp;
temp = x; /* Enregistrer la valeur x x */
x = y; /* Maettre y dans x */
y = temp; /* Mettre temp dans y*/
}
static void Main(string[] args)
{
manipulateur_nombre n = new manipulateur_nombre();
/* Définition des variables locales */
int a = 100;
int b = 200;
Console.WriteLine("Avant échange, valeur de a : {0}", a);
Console.WriteLine("Avant échange, valeur de b : {0}", b);
/* Appeler la méthode pour changer la valeur */
n.echange(ref a, ref b);
Console.WriteLine("Aprés échange, valeur de a : {0}", a);
Console.WriteLine("Aprés échange, valeur de b : {0}", b);
Console.ReadLine();
}
}
}
Exemple:
class RefExample
{
static void Method(ref int i)
{
// Placez le pointeur de la souris sur i pour vérifier qu'il est un int.
// La déclaration suivante provoquerait une erreur de compilation si i
//a été en boîte comme un objet.
i = i + 44;
}
static void Main()
{
int val = 1;
Method(ref val);
Console.WriteLine(val);
// Résultat: 45
}
}Exemple
static void Ajouter_un(ref int x)
{
x++;
}
static void Main( )
{
int k = 6;
Ajouter_un(ref k);
Console.WriteLine(k); // Affiche la valeur 7
}exemple:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace array_parameter
{
class Program
{
static void printarray(int[] newarray)
{
int i, sum = 0;
Console.Write("\n\nVous avez entré:\t");
for (i = 0; i < 4; i++)
{
Console.Write("{0}\t", newarray[i]);
sum = sum + newarray[i];
}
Console.Write("\n\nLa somme de tous les valeurs est:\t{0}", sum);
Console.ReadLine();
}
static void Main(string[] args)
{
int[] arr = new int[4];
int i;
for (i = 0; i < 4; i++)
{
Console.Write("Entrez un nombre:\t");
arr[i] = Convert.ToInt32(Console.ReadLine());
}
// passer un tableau comme argument
Program.printarray(arr);
}
}
}Appel de méthodes
Exemple:
using System;
namespace CalculatorApplication
{
class NumberManipulator
{
public int FindMax(int num1, int num2)
{
/* local variable declaration */
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
static void Main(string[] args)
{
/* local variable definition */
int a = 100;
int b = 200;
int ret;
NumberManipulator n = new NumberManipulator();
//calling the FindMax method
ret = n.FindMax(a, b);
Console.WriteLine("Max value is : {0}", ret );
Console.ReadLine();
}
}
}Retenir
Vous pouvez également appeler une méthode déclarée public auprès d'autres classes en utilisant l' instance de la classe . Par exemple , la méthode TrouverMax appartient à la classe de NombreManipulateur , vous pouvez l'appeler d'un autre test de classe .
Autre Exemple:
using System;
namespace CalculatorApplication
{
class NombreManipulateur
{
public int TrouverMaximum(int num1, int num2)
{
/* local variable declaration */
int result;
if(num1 > num2)
result = num1;
else
result = num2;
return result;
}
}
class Test
{
static void Main(string[] args)
{
/* local variable definition */
int a = 100;
int b = 200;
int ret;
NombreManipulateur n = new NombreManipulateur();
//calling the FindMax method
ret = n.TrouverMaximum(a, b);
Console.WriteLine("Max value is : {0}", ret );
Console.ReadLine();
}
}
}Surcharge de méthode
public int Ajouter ( int valeur1, int valeur2 )
{
return valeur1 + valeur2;
}
public double Ajouter ( double valeur1, double valeur2 )
{
return valeur1 + valeur2;
}
public double Longueur ( string chaine )
{
return (double) chaine.Length;
}
public int Longueur ( string chaine )
{
return (int) chaine.Length;
}
Méthodes récursives
Exemple; En mathématique, la valeur factorielle d’un nombre positif n est représenté par cette formule : n!= n . (n-1) . (n-2) . (n-3) ... 1C’est-à-dire que le factoriel de notre nombre n est le produit de ce nombre, n, avec tous les nombres qui lui sont plus petit, jusqu’à 1. Donc, 5! c’est en fait 5x4x3x2x1 La solution simple avec le nombre 5public Factoriel(intNombre) { dynamic intCount = null; dynamic intFactoriel = null; intFactoriel = 1; for (intCount = intNombre; intCount >= 1; intCount += -1) { intFactoriel = intFactoriel * intCount; } return intFactoriel; }Solution récursive
public FactorielRecursif(intNombre) { object functionReturnValue = null; if (intNombre <= 1) { functionReturnValue = 1; } else { functionReturnValue = intNombre * FactorielRecursif(intNombre - 1); } return functionReturnValue; }Explication de la forme récursive :
SI le nombre "intNombre" est plus petit ou égal à 1, alors la fonction retournera 1 SINON la valeur retournée sera le produit du nombre "intNombre" avec la valeur retournée par la fonction pour le nombre "intNombre -1". Résultat: 5! = 5 . (5-1) . (5-2) . (5-3) . (5-4) Simplifié: 5! = 5 . 4 . 3 . 2. 1 = 120
Autres exemples
// Fonction de factoriel récursive
public static double factorielRecursif(int n)
{
if (n > 1) return n * factorielRecursif(n - 1);
else return 1;
}
// Fonction de factoriel récursive méthode 2
public static double factorielRecursif1(int n)
{
if (1 < n) return n * factorielRecursif1(n - 1);
else return 1;
}
Fonction de factoriel par une boucle While
// Fonction de factoriel par une boucle While et une décrémentation
public static double factoBoucleWhile(double n)
{
double res = 1;
while (n > 1) res *= n--;
return res;
}
// Fonction de factoriel par une boucle While et une incrémentation
public static double factoBoucleWhile2(double n)
{
double res = 1;
double i = 1;
while (i < n) res *= i++;
return res;
}
Fonction de factoriel par une boucle For
// Fonction de factoriel par une boucle For et une décrémentation
public static double factoBoucleFor(double n)
{
double resultat = 1;
for (double i = n; i > 1; i--)resultat *= i;
return resultat;
}
// Fonction de factoriel par boucle For et une incrémentation
public static double factoBoucleFor2(double n)
{
double resultat = 1;
for (double i = 1; i < n; i++) resultat *= i;
return resultat;
}Exercices de soutien
TP: Création de méthode
Objectif de TP être capable de créer trois méthodes et les appeler dans un programme principal.
Créer une première méthode qui va servir à calculer la somme d’entiers consécutifs entre deux bornes (borne inférieure et borne supérieure) Saisie par l'utilisateur.
Si par exemple je veux calculer la somme des entiers de 1 à 10, c’est-à-dire 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 +9 + 10, je vais appeler cette méthode en lui passant en paramètres 1 et 10, c’est-à-dire les bornes des entiers dont il faut faire la somme.
Exemple:
Créer une deuxième méthode qui acceptera une liste de valeur de type double en paramètres et devra renvoyer la moyenne des doubles de la liste.
Par exemple :
Créer une troisième méthode qui va demander à utilisateur de saisir une borne avec les mêmes conditions que précédent et qui va afficher :
La liste des nombres paire("0,2,4,6,8...)
La liste des nombres impaires("0,1,3,5,7...)
La liste des nombres multiple de trois("1,3,6,9,12...)
La liste des nombres multiple de cinq("1,5,10,15,20...)
La liste des nombres multiple de neuf("1,9,18,27,36...)
Console . WriteLine ( CalculSommeEntiers (1, 10));
List < double > liste = new List <double > { 1.0, 5.5, 9.9, 2.8, 9.6 };
Console . WriteLine ( CalculMoyenne ( liste ));