METODI (1° PARTE)
Giampaolo Brancatello
Sommario
2
Metodi
Tipi di
metodo
Senza valore
di ritorno
Passaggio di
parametri
Con valore
di ritorno
Nessun
Parametro
Passaggio
per
riferimento
Passaggio
per valore
ref
out
Usiamo sempre dei metodi ….
3
Interruttore
Password
Input1 Input2
“Apriti”
Calcolatore
Output
Metodi Predefiniti in C#
4

Console.WriteLine(”
Hello world!”);
Hello world!
Console.WriteLine

double n = Math.Sqrt(9);
parametri
9
Math.Sqrt
3
Metodi Predefiniti in C#
5

int N = int.Parse(”5”); double risp =Math.Max(9, 2);
String “5”
int.Parse
Int 5
9
2
Math.Max
9
Cosa sono i metodi ?
6
Un Metodo
è
una funzione/procedura situata all’interno di una
Classee
System.Console.WriteLine(“Hello World!”);
Tipi di metodo
7
1. Metodi senza valore di ritorno
Procedura
Console.WriteLine(“Hello World!”);
Nome Classe
Nome metodo
Parametro
2. Metodi con valore di ritorno
J = Math.Max(5, 20);
Nome Classe
J=20
parametro
Nome Metodo
Funzione
Tipi di Metodo
8
Hello world!
Console.
WriteLine
n1
n2
Math.Max
Max di n1 & n2
Senza valore di ritorno
(void)
Con valore di ritorno
Metodi : Esempio
*
**
9
Program End
using System;
Monitor
Classe Metodo_Esempio {
0 static void Main() {
displaybox();
Console.WriteLine("Program End");
}
1
static void displaybox() {
Console.WriteLine("x");
2 Console.WriteLine("xx");
}
3
}
Sommario
10



Metodi: nozioni di base
Utilizzo dei Metodi
Modalità di passaggio dei parametri
 Passaggio
per valore
 Passaggio per riferimento
Utilizzo dei metodi
11
1.Definire il metodo Metodo
2.Richiamare il Metodo
Nota: spesso si usa il termine “invocare” il metodo per indicare il
passo 2
Definizione di metodi in C#
12
static <return-tipo> <nome-metodo>(<lista parametri>)
{
<const/ dichiarazione di variabile>;
<istruzioni>;
}
#note sul: tipo di ritorno
può essere
int, double, string, …
ed è necessario utilizzare return
- void = Senza valore di ritorno
Esempi di dichiarazione di metodi
13
static void displaybox () {
}
static int calage () {
}
static int calbox(int x,int y)
{
}
Esempio1: Senza valori di ritorno
14
using System;
Classe NReturned {
static void Main() {
Console.WriteLine(”Hello, Pippo”);
Console.WriteLine(”Hello, Pippo”);
Console.WriteLine(”Hello, Pippo”);
Console.WriteLine(”Hello, Pippo”);
}
}
HelloP
Hello, Pippo
Esempio1: Non-Returned Value
15
using System;
Classe NReturned {
static void HelloP() {
Console.WriteLine(”Hello, Pippo”);
}
static void Main() {
HelloP();
HelloP();
HelloP();
Hello Pippo
HelloP();
Hello Pippo
}
Hello Pippo
}
Hello Pippo
Esempio2:
Senza valori di ritorno con parametri
16
using System;
Classe NReturned {
static void Main() {
Console.WriteLine(”Ciao,
Console.WriteLine(”Ciao,
Console.WriteLine(”Ciao,
}
}
string
string Nome
AAA”);
BBB”);
CCC”);
Ciao
Ciao,
Nome
Esempio2:
Senza valori di ritorno con parametri
17
using System;
Classe NReturned {
static void Ciao(string Nome) {
Console.WriteLine(”Ciao, {0}”, Nome);
string Nome
}
static void Main() {
Ciao(”AAA”);
Ciao
Monitor
Ciao(”BBB”);
Ciao(”CCC”); Ciao, AAA
Ciao,
Ciao, BBB
Nome
}
Ciao, CCC
}
Esempio 3
18
static void Main(){
int i,j,n;
Console.WriteLine("Square size = 2");
for(i=0;i<2;i++){
int n
for(j=0;j<2;j++)
Console.Write("*");
Console.WriteLine();
DrawSquare
}
Console.WriteLine();
}
Console.WriteLine();
}
**

Console.Write("*");
Console.WriteLine();

... *
Video
****
Console.WriteLine("Square size = 4");
...=*2
Square
size
****
for(i=0;i<4;i++){
** **** ... *
for(j=0;j<4;j++)
...
****
Square
size =*4
****
****
****
Esempio
3
static void Main(){
Console.WriteLine("Square size = 2");
19
drawSquare(2);
Console.WriteLine("Square size = 4");
drawSquare(4);
Monitor
}
int =n 2
Square size
static void drawSquare(int n){
int i,j;
for(i=0;i<n;i++){
for(j=0;j<n;j++)
Console.Write("*");
Console.WriteLine();
}
Console.WriteLine();
}
**
**
DrawSquare
Square size = 4
****
... *
****
****
... *
**** ****
**** **** ... *


**** ... *
Self Test 1
20

Scrivi il metodo PrintNumber(n)
 Riceve
come n (intero e positivo)
 Stampa a video 1234...n
Esempio
int n
7
PrintNumber
PrintNumber
1234...n
1234567
Self Test 1
int n
21

Write the MetodiPrintNumber(n)
 Recieve parametro n
 Show 1234...n
PrintNumber
1234...n
static void PrintNumber(int n) {
int i;
for(i=1;i<=n;i++)
Console.Write(i);
}
Sommario
22
Metodo
tipo di
Metodo
Senza valore
di ritorno
Passaggio
parametri
Con valore
di ritorno
Nessun
parametro
Passaggio
per
riferimento
Passaggio
per valore
ref
out
Sintassi in C#
23
static <tipo di ritorno> <Nome metodo>(<lista parametri>)
{
<dichiarazione variabili locali>;
<istruzioni>;
}
#nota tipo di ritorno
- può essere:
int, double, string, …
necessita dell’ istruzione return
- void = Senza valore di ritorno
Metodo con valore di ritorno
24
static void PrintNumber(int n) {
double n, risp;
n = int.Parse(Console.ReadLine());
risp = Math.Sqrt(n);
n
Console.Write(“Root {0} is equal
{1}",n,risp);
}
n
Math.Sqrt
n
Esempio 1 (valori di ritorno)
25
using System;
Classe Returned {
static void Main() {
int j;
j = 2*2;
Console.WriteLine(”{0}”, j);
j = 5*5;
Console.WriteLine(”{0}”, j);
}
}
n
Quad
n2
Esempio 1
26
using System;
Classe Returned {
static int Quad(int n) {
return n*n;
}
static void Main() {
int j;
j = Quad(2); //j=2*2;
Console.WriteLine(”{0}”, j);
j = Quad(5); //j=5*5;
Console.WriteLine(”{0}”, j);
}
}
n
Quad
n2
Video
4
25
Esempio 2: ricerca dei numeri primi
27
static void Main() {
int n,i,count=0;
n = int.Parse(Console.ReadLine());
for(i=1;i<=n;i++)
if(n%i==0) count++;
if(count==2)
Console.Write("{0} è primo.",n);
}
Procedura per
vedere se n è primo
Esempio 2
28
static void Main() {
int n,i,count=0;
n = int.Parse(Console.ReadLine());
for(i=1;i<=n;i++)
if(n%i==0) count++;
if(count==2)
Console.Write("{0} è primo.",n);
}
x
Is_Prime
True if x è primo.
False if x non è primo
Esempio 2
29
static bool Is_Prime(int x){
int i,count=0;
for(i=1;i<=x;i++)
if(x%i==0) count++;
if(count==2)
return true;
else
return false;
}
x
Is_Prime
True if n è primo.
False if n non è primo
static void Main(){
int n = int.Parse(Console.ReadLine());
if(Is_Prime(n) == true)
Console.Write("{0} è primo.",n);
}
Esempio 3: calcolo volume cilindro
30
static void Main() {
double r,h,V;
r = double.Parse(Console.ReadLine());
h = double.Parse(Console.ReadLine());
V = Math.Pi*r*r*h;
Console.Write("V = {0}",V);
r
}
h
v_cilindro
V
Esempio 3: Returned Value
31
h
r
v_cilindro
V
static double v_cilindro(double r, double h){
return Math.PI*r*r*h;
}
static void Main() {
double r,h,V;
r = double.Parse(Console.ReadLine());
h = double.Parse(Console.ReadLine());
V = v_cilindro(r,h);
Console.Write("V = {0}",V);
}
Self Test 1
32

Creare un metodo Power4(n)
 Deve

restituire il valore n*n*n*n
Es. int j = Power4(3); //Return 81
int Power4(___________________)
int n
static ____
{
int risp;
return
risp = n*n*n*n;
n*n*n*n;
return risp;
}
Self Test 2
33

Definire metodo Max(x, y, z)
 Return

Max Value
Es. int j = Max(5, 20, 12); //Return 20
int MAX(___________________)
int x, int y, int z
static ____
{
int risp;
if(x >= y && x >= z) return
risp = x;
else if(y >= x && y >= z) risp
return
= y;
else risp
return
= z;
return risp;
}
Struttura C# - Metodi multipli
34
Namespace
Class
Main()
Metodo1()
Metodo2()
Metodo3()
MetodoN()
Esempio 5 : metodi multipli
35
static double PuntoMedio(double n1, double n2)
{
return (n1+n2)/2;
}
static void Stampa(double x, double y)
{
Console.Write("P. medio = {0} ", PuntoMedio(x,y));
}
static void Main(string[] args)
{
Console.Write(“Inserire 2 valori: ");
double a1 = double.Parse(Console.ReadLine());
double a2 = double.Parse(Console.ReadLine());
Stampa(a1, a2);
}
DOMANDE ?
Scarica

static void Main()