Introduzione
In questa pagina vengono mostrati alcuni programmi scritti in C# a difficoltà crescente. Non è una guida esauriente a tutte le funzionalità del linguaggio. Se si desidera approfondire le proprie conoscenze, consultare la sezione Ulteriori risorse.
Listato 1
1 /// Questo programma calcola l'area di un triangolo attraverso la formula di
2 /// Erone data da: sqrt(sp*(sp-a)*(sp-b)*(sp-c)), in cui sp è il semiperimetro
3 /// a, b e c sono i lati del triangolo e sqrt la radice quadrata.
4 /// Salvate il file come AreaTriangolo.cs
5
6 using System;
7
8 namespace AreaTriangolo
9 {
10 class MainClass
11 {
12 public static void Main(string[] args)
13 {
14 string input; // stringa per leggere i dati di input
15 double latoa, latob, latoc; // variabili per i tre lati
16 double sp; // variabile per il semiperimetro
17 double area; // variabile per l'area del triangolo
18
19 Console.WriteLine("Inserire il primo lato:");
20
21 input = Console.ReadLine(); // prendiamo i dati dalla console
22
23 latoa = Convert.ToDouble(input); // convertiamo i dati in un numero
24
25 Console.WriteLine("Inserire il secondo lato:");
26
27 input = Console.ReadLine();
28
29 latob = Convert.ToDouble(input);
30
31 Console.WriteLine("Inserire il terzo lato:");
32
33 input = Console.ReadLine();
34
35 latoc = Convert.ToDouble(input);
36
37 sp = (latoa + latob + latoc) / 2;
38
39 area = Math.Sqrt(sp * (sp - latoa) * (sp - latob) * (sp - latoc));
40
41 Console.WriteLine("L'area del triangolo è {0}", area);
42 }
43 }
44 }
Listato del programma AreaTriangolo.cs
Alcune considerazioni:
all'inizio del programma è stato definito un namespace. Benché in questo piccolo esempio non sia rilevante, un namespace può essere visto come una libreria di funzioni. In questo modo si possono definire una serie di metodi all'interno del namespace a cui è possbile accedere da altri file utilizzando la direttiva using. La prima istruzione using System; indica al compilatore di utilizzare il namespace System che contiene la maggior parte dei metodi necessari alla programmazione.
Listato 2
Prendendo spunto dal programma precedente, lo modifichiamo affinché esegua dei semplici controlli sui dati immessi. Salviamo il file come AreaTriangolo2.cs:
1 using System;
2
3 /// Questo programma calcola l'area di un triangolo attraverso la formula di
4 /// Erone data da: sqrt(sp*(sp-a)*(sp-b)*(sp-c)), in cui sp è il semiperimetro
5 /// a, b e c sono i lati del triangolo e sqrt la radice quadrata.
6 /// Viene implementata anche una classe per il triangolo con due metodi.
7 /// Salvare il file come AreaTriangolo2.cs
8
9 namespace AreaTriangolo
10 {
11 public class Triangolo
12 {
13 double latoa, latob, latoc; // attributi della classe Triangolo
14
15 public Triangolo(double latoa, double latob, double latoc)
16 {
17 // controlliamo che i lati inseriti siano effettivamente
18 // di un triangolo, altrimenti generiamo un'eccezione
19 if ((latoa+latob) > latoc && (latoa + latoc) > latob &&
20 (latob + latoc) > latoa)
21 {
22 this.latoa = latoa;
23 this.latob = latob;
24 this.latoc = latoc;
25 }
26 else {
27 throw new Exception();
28 }
29 }
30
31 public double Perimetro() // metodo per calcolare il perimetro
32 {
33 return this.latoa + this.latob + this.latoc;
34 }
35
36 public double Area() // metodo per calcolare l'area
37 {
38 double sp = Perimetro() / 2; // variabile per il semiperimetro
39
40 return Math.Sqrt(sp * (sp - this.latoa) * (sp - this.latob) * (sp - this.latob));
41 }
42
43 }
44
45 class MainClass
46 {
47 public static void Main(string[] args)
48 {
49 string input; // stringa per leggere i dati di input
50
51 string[] numerolato = new string[] {"primo","secondo","terzo"};
52 double[] lati = new double[3];
53
54 bool controllo; // variabile per il controllo sul dato inserito
55
56 do {
57 Console.WriteLine("Inserire le misure dei lati:\n");
58
59 for (int i = 0; i < lati.Length; i++) {
60
61 do {
62 Console.WriteLine("Inserire il {0} lato:", numerolato[i]);
63
64 try {
65 input = Console.ReadLine(); // prendiamo i dati dalla console
66 lati[i] = Convert.ToDouble(input); // li convertiamo in numero
67
68 controllo = false; // se tutto ok, passiamo al prossimo lato
69
70 } catch (System.FormatException) {
71
72 Console.WriteLine("Errore: digitato dato non numerico!\n");
73
74 controllo = true; // continuiamo fino all'immissione di un dato esatto
75 }
76 } while(controllo);
77 }
78
79 int j = 0;
80
81 try {
82 Triangolo triangolo = new Triangolo(lati[j], lati[j+1], lati[j+2]);
83
84 Console.WriteLine("L'area del trinagolo è: {0}", triangolo.Area());
85
86 controllo = false; // qui abbiamo concluso
87
88 } catch (Exception) {
89
90 Console.WriteLine("Impossibile creare un triangolo con questi lati!");
91
92 controllo = true; // continuiamo a chiedere i dati
93 }
94
95 } while(controllo);
96 }
97 }
98 }
Listato del programma AreaTriangolo2.cs
Ulteriori risorse
Il sito di Microsoft contenente tutta la documentazione necessaria per C#
Per la documentazione relativa a mono, è possibile utilizzare lo strumento monodoc da Applicazioni -> Programmazione -> Monodoc.