Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


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


CategoryProgrammazione