public void Test_CalcoloPerimetro() { Rettangolo r = new Rettangolo(5, 4); double perimetro = r.CalcoloPerimetro(); Assert.AreEqual(18, perimetro); }
public void Test_CalcoloArea() { Rettangolo r = new Rettangolo(5, 4); double area = r.CalcoloArea(); Assert.AreEqual(20, area); }
public static void FormeGeometriche() { Triangolo triangolo = new Triangolo() { Base = 12, Altezza = 4 }; Cerchio cerchio = new Cerchio() { Raggio = 8, X = 3, Y = 5 }; Rettangolo rettangolo = new Rettangolo() { Larghezza = 7, Altezza = 3 }; cerchio.DisegnaForma(); rettangolo.DisegnaForma(); triangolo.DisegnaForma(); }
public QueryInRettangoloResult Get(Rettangolo rettangolo, string[] classiMezzo) { var geoWithinFilter = Builders <MessaggioPosizione_DTO> .Filter .GeoWithinBox(m => m.Localizzazione, lowerLeftX : rettangolo.TopLeft.Lon, lowerLeftY : rettangolo.BottomRight.Lat, upperRightX : rettangolo.BottomRight.Lon, upperRightY : rettangolo.TopLeft.Lat); var recentMessagesFilter = Builders <MessaggioPosizione_DTO> .Filter .Gt(m => m.IstanteAcquisizione, DateTime.Now.AddHours(-24)); FilterDefinition <MessaggioPosizione_DTO> classiMezzoFilter = null; if ((classiMezzo != null) && (classiMezzo.Length > 0)) { classiMezzoFilter = Builders <MessaggioPosizione_DTO> .Filter .AnyIn(m => m.ClassiMezzo, classiMezzo); } var messaggiPosizioneAggregate = this.messaggiPosizioneCollection.Aggregate() .SortBy(m => m.CodiceMezzo) .ThenByDescending(m => m.IstanteAcquisizione) .Match(geoWithinFilter) .Match(recentMessagesFilter); if (classiMezzoFilter != null) { messaggiPosizioneAggregate = messaggiPosizioneAggregate .Match(classiMezzoFilter); } var sw = new Stopwatch(); sw.Start(); var messaggiPosizione = messaggiPosizioneAggregate .Group(BsonDocument.Parse(@"{ _id: '$codiceMezzo', messaggio: { $first: '$$ROOT' } }")) .Project(BsonDocument.Parse(@"{ _id: 0, messaggio: 1 }")) .ReplaceRoot <MessaggioPosizione_DTO>("$messaggio") .ToEnumerable() .Select(dto => dto.ConvertToDomain()); var arrayMessaggiPosizione = messaggiPosizione.ToArray(); sw.Stop(); return(new QueryInRettangoloResult() { IstanteQuery = DateTime.Now.ToUniversalTime(), DurataQuery_msec = sw.ElapsedMilliseconds, ClassiMezzo = classiMezzo, NumeroMezzi = arrayMessaggiPosizione.Length, Rettangolo = rettangolo, Risultati = arrayMessaggiPosizione }); }
public static void Esercitazioni() { //Esercitazione 1 Cerchio cerchio = new Cerchio() { Nome = "Cerchio", X = 0, Y = 0, Raggio = 5d }; cerchio.DisegnaForma(); Rettangolo rettangolo = new Rettangolo() { Nome = "Rettangolo", Larghezza = 5d, Altezza = 10d }; rettangolo.DisegnaForma(); Triangolo triangolo = new Triangolo() { Nome = "Triangolo", Base = 8d, Altezza = 10d }; triangolo.DisegnaForma(); //Esercitazione 2 (interfaccia fileSeriaizable) cerchio.SaveToFile("CerchioFile"); Cerchio nuovoCerchio = new Cerchio(); nuovoCerchio.FromFile("CerchioFile"); nuovoCerchio.DisegnaForma(); nuovoCerchio.Nome = "Cerchio modificato"; nuovoCerchio.SaveToFile("CerchioFile"); rettangolo.SaveToFile("RettangoloFile"); Rettangolo nuovoRettangolo = new Rettangolo(); nuovoRettangolo.FromFile("RettangoloFile"); nuovoRettangolo.DisegnaForma(); nuovoRettangolo.Nome = "Rettangolo modificato"; nuovoRettangolo.SaveToFile("RettangoloFile"); triangolo.SaveToFile("TriangoloFile"); Triangolo nuovoTriangolo = new Triangolo(); nuovoTriangolo.FromFile("TriangoloFile"); nuovoTriangolo.DisegnaForma(); nuovoTriangolo.Nome = "Tringolo modificato"; nuovoTriangolo.SaveToFile("TriangoloFile"); }
static void Main(string[] args) { Rettangolo r1 = new Rettangolo(1, 2, 10, 10); Rettangolo r2 = new Rettangolo(1, 2, 3, 4); Console.WriteLine(r1.CalcolaArea()); Console.WriteLine(r2.CalcolaArea()); Console.WriteLine(r1.Contiene(r2)); Console.WriteLine(r2.Contiene(r1)); }
static void Main(string[] args) { FiguraGeometrica f1 = new Rettangolo(5, 3); FiguraGeometrica f2 = new Rombo(4, 2, 3); FiguraGeometrica f3 = new Triangolo(3, 4, 5, 4); Console.WriteLine("Rettangolo"); Console.WriteLine(f1.CalcolaPerimetro() + "\n" + f1.CalcolaArea()); Console.WriteLine("Rombo"); Console.WriteLine(f2.CalcolaPerimetro() + "\n" + f2.CalcolaArea()); Console.WriteLine("Triangolo"); Console.WriteLine(f3.CalcolaPerimetro() + "\n" + f3.CalcolaArea()); }
static void Main(string[] args) { //scegliere forma geometrica Console.WriteLine("Che tipo di forma geometrica vuoi creare ? 1 = rettangolo , 2 = rombo, 3 = triangolo"); int t = int.Parse(Console.ReadLine()); if (t == 1) { Rettangolo rettangolo = new Rettangolo(Quadrilatero.N_LATI_QUADRILATERO, 10, 12); Console.WriteLine("Vuoi calcolare area(1), perimetro(2) o entrambi(3)?"); //scegli cosa calcolare int r = int.Parse(Console.ReadLine()); if (r == 1) { Console.WriteLine(rettangolo.CalcolaArea()); } if (r == 2) { Console.WriteLine(rettangolo.CalcolaPerimetro()); } if (r == 3) { Console.WriteLine(rettangolo.CalcolaArea()); Console.WriteLine(rettangolo.CalcolaPerimetro()); } } if (t == 2) { Rombo rombo = new Rombo(Quadrilatero.N_LATI_QUADRILATERO, 10, 5, 5); //scegli cosa calcolare int r = int.Parse(Console.ReadLine()); if (r == 1) { Console.WriteLine(rombo.CalcolaArea()); } if (r == 2) { Console.WriteLine(rombo.CalcolaPerimetro()); } if (r == 3) { Console.WriteLine(rombo.CalcolaArea()); Console.WriteLine(rombo.CalcolaPerimetro()); } } Console.ReadLine(); }
public static void FormeGeometriche2() { //Cosa può fare //Cos'è IFileSerializable cerchio = new Cerchio() { Nome = "Cerchio", Raggio = 2, X = 3, Y = 6 }; IFileSerializable rettangolo = new Rettangolo() { Nome = "Rettangolo", Larghezza = 10, Altezza = 3 }; IFileSerializable triangolo = new Triangolo() { Nome = "Triangolo", Altezza = 8, Base = 4 }; cerchio.SaveToFile("Test"); Cerchio newCerchio = new Cerchio(); newCerchio.LoadFromFile("Test"); newCerchio.DisegnaForma(); newCerchio.Nome = "Cerchio modificato"; newCerchio.SaveToFile("Test"); triangolo.SaveToFile("TestTriangolo"); Triangolo newTriangolo = new Triangolo(); newTriangolo.LoadFromFile("TestTriangolo"); newTriangolo.DisegnaForma(); newTriangolo.Nome = "Triangolo modificato"; newTriangolo.SaveToFile("TestTriangolo"); rettangolo.SaveToFile("TestRettangolo"); Rettangolo newRettangolo = new Rettangolo(); newRettangolo.LoadFromFile("TestRettangolo"); newRettangolo.DisegnaForma(); newRettangolo.Nome = "Rettangolo modificato"; newRettangolo.SaveToFile("TestRettangolo"); }
public static void Esercitazione() { Console.WriteLine("___________Esercitazione 1______________"); //istanza di Cerchio ma di tipo FormeGeometriche quindi non ha le proprietà del cerchio. FormeGeometriche forme = new Cerchio(); Cerchio c = new Cerchio() { Nome = "Cerchio", X = 3, Y = 4, Raggio = 6 }; Triangolo t = new Triangolo() { Nome = "Triangolo", Base = 4, Altezza = 3 }; Rettangolo r = new Rettangolo() { Nome = "Rettangolo", Altezza = 2, Larghezza = 4 }; Console.WriteLine(c.CalcoloArea()); Console.WriteLine(c.DisegnoForma()); Console.WriteLine(t.CalcoloArea()); Console.WriteLine(t.DisegnoForma()); Console.WriteLine(r.CalcoloArea()); Console.WriteLine(r.DisegnoForma()); Console.WriteLine("___________Esercitazione 2______________"); c.SaveToFile("Test"); Cerchio circle = new Cerchio(); circle.LoadFromFile("Test"); IFileSerializable[] file = { c }; foreach (var item in file) { item.SaveToFile("C"); item.LoadFromFile("C"); } }
public QueryInRettangoloResult Get( double lat1, double lon1, double lat2, double lon2, [FromUri] string[] classiMezzo) { var rettangolo = new Rettangolo(); rettangolo.TopLeft.Lat = lat1; rettangolo.TopLeft.Lon = lon1; rettangolo.BottomRight.Lat = lat2; rettangolo.BottomRight.Lon = lon2; return(this.getMezziInRettangolo.Get(rettangolo, classiMezzo)); }
public QueryInRettangoloResult Get(Rettangolo rettangolo, string[] classiMezzo, int attSec) { var geoWithinFilter = Builders <MessaggioPosizione> .Filter .GeoWithinBox( field : m => m.Localizzazione, lowerLeftX : rettangolo.TopLeft.Lon, lowerLeftY : rettangolo.BottomRight.Lat, upperRightX : rettangolo.BottomRight.Lon, upperRightY : rettangolo.TopLeft.Lat); var lastMessageFilter = Builders <MessaggioPosizione> .Filter .Eq(m => m.Ultimo, true); var recentMessagesFilter = Builders <MessaggioPosizione> .Filter .Gte(m => m.IstanteAcquisizione, DateTime.UtcNow.AddSeconds(-attSec)); var filter = geoWithinFilter & lastMessageFilter & recentMessagesFilter; if ((classiMezzo != null) && (classiMezzo.Length > 0)) { var classFilter = Builders <MessaggioPosizione> .Filter .AnyIn(m => m.ClassiMezzo, classiMezzo); filter &= classFilter; } var sw = new Stopwatch(); sw.Start(); var messaggiPosizione = this.messaggiPosizioneCollection.Find(filter) .SortBy(m => m.CodiceMezzo) .ToEnumerable() .ToArray(); sw.Stop(); return(new QueryInRettangoloResult() { IstanteQuery = DateTime.UtcNow, DurataQuery_msec = sw.ElapsedMilliseconds, ClassiMezzo = classiMezzo, NumeroMezzi = messaggiPosizione.Length, Rettangolo = rettangolo, Risultati = messaggiPosizione }); }
static void Main(string[] args) { try { #region TestUsageOfOperatorOverload Rettangolo A = new Rettangolo(3, 4); Rettangolo B = new Rettangolo(5, 5); Rettangolo C = A + B; Console.WriteLine("Area rettangolo A ({0}x{1}): {2}\nArea rettangolo B ({3}x{4}): {5}\nArea A+B ({6}x{7}): {8}", A.L, A.H, A.GetArea(), B.L, B.H, B.GetArea(), C.L, C.H, C.GetArea()); #endregion #region TestOfUsageOfDelegateFunction Utility.Separatore(); Console.WriteLine("Test di utilizzo di una funzione delegata:"); NumberChanger NC1 = new NumberChanger(TestDelegate.AddNum); NumberChanger NC2 = new NumberChanger(TestDelegate.MultNum); Console.WriteLine("- valore iniziale: {0}", TestDelegate.GetNum()); int plus = 25; NC1(plus); Console.WriteLine("- dopo aggiunta di {0}: {1}", plus, TestDelegate.GetNum()); int multi = 5; NC2(multi); Console.WriteLine("- dopo moltiplicazione per {0}: {1}", multi, TestDelegate.GetNum()); /* resetto il numero */ NC2(0); Console.WriteLine("- dopo aver resettato il numero: {0}", TestDelegate.GetNum()); NumberChanger NC; NC = NC1 + NC2; NC(5); Console.WriteLine("- dopo multicasting (NC = NC1 + NC2): {0}", TestDelegate.GetNum()); Console.WriteLine(); Console.WriteLine("Altro test di utilizzo di un delegato:"); string SDel = "Logga questo"; PrintString PSO = new PrintString(TestDelegateLog.VideoOutput); PrintString PSF = new PrintString(TestDelegateLog.FileOutput); PrintString Log = PSO + PSF; Log(SDel); Console.WriteLine("(la stringa qui sopra è stata mostrata a video e loggata in un file simultaneamente attraverso l'utilizzo di un delegato multicast)"); NumberPrinter NP = delegate(int n) { Console.WriteLine("Altro test: il numero {0} è stato scritto con un delegato anonimo!", n); }; NP(0); NP(1); NP(2); #endregion #region TestOfUsageOfEvents Utility.Separatore(); Console.WriteLine("Test di utilizzo di eventi (con delegati):"); EventTest EV = new EventTest(); EV.OnPrint += EventTest_OnPrint; EV.Print("Uallabalooza"); #endregion #region TestOfUsageOfGenerics Utility.Separatore(); GenericArray <string> SArr = new GenericArray <string>(5); Console.WriteLine("Test di utilizzo dei GENERICS di tipo \"{0}\":", SArr.TypeOf()); SArr.Add(0, "Ualla"); SArr.Add(1, "Balooza"); SArr.Add(2, "In"); SArr.Add(3, "The"); SArr.Add(4, "Sky"); for (var i = 0; i < SArr.Size; i++) { Console.WriteLine("- indice {0}: \"{1}\"", i, SArr.Get(i)); } #endregion #region TestOfUsageOfUnsafeCode /* i puntatori vanno usati solo nei blocchi di codice "unsafe"; * puoi dichiarare unsafe anche una funzione o un metodo, se deve usare puntatori; * occorre permettere la compilazione di codice unsafe dalle impostazioni del progetto */ unsafe { Utility.Separatore(); Console.WriteLine("Test di utilizzo di puntatori in codice UNSAFE:"); int SUns = 12345; int *pSUns = &SUns; Console.WriteLine("- valore: {0}", SUns); Console.WriteLine("- valore da puntatore: {0}", pSUns->ToString()); Console.WriteLine("- indirizzo della variabile: {0}", (int)pSUns); Console.WriteLine(); int SUns2 = 54321; int *pSUns2 = &SUns2; Console.WriteLine("Prima dello SWAP dei due puntatori: {0} - {1}", SUns, SUns2); Swap(pSUns, pSUns2); Console.WriteLine("Dopo lo SWAP dei due puntatori: {0} - {1}", SUns, SUns2); Console.WriteLine(); Console.WriteLine("Test di accesso array con puntatori:"); int[] Arr = new int[] { 10, 20, 30 }; fixed(int *pArr = Arr) for (int i = 0; i < Arr.Length; i++) { Console.WriteLine("- Indirizzo di Arr[{0}]: {1}; Valore di Arr[{0}]: {2}", i, (int)(pArr + i), *(pArr + i)); } } #endregion #region TestOfUsageOfThreads Utility.Separatore(); Console.WriteLine("Test di utilizzo dei THREAD"); Thread TH = Thread.CurrentThread; TH.Name = "ThreadMain"; Console.WriteLine("Nome del thread corrente: {0}", TH.Name); ThreadStart TS = new ThreadStart(ThreadSingolo); Console.WriteLine("Creazione in corso di un thread figlio..."); Thread Child = new Thread(TS); Child.Start(); int SleepTime = 5000; Console.WriteLine("Metto in pausa per {0} secondi...", SleepTime / 1000); Thread.Sleep(SleepTime); Console.WriteLine("Riprendo l'esecuzione!"); /*Console.WriteLine("Esco dall'esecuzione del thread (metodo Abort())..."); * Child.Abort();*/ /* non usare Child.Abort! usa Child.Interrupt quando è in stato di sleep-wait-join */ #endregion } #region catch /*catch(ThreadAbortException e) * { * Console.WriteLine("Thread distrutto! (metodo Abort())"); * }*/ catch (Exception e) { Utility.MostraEccezione <Exception>(e); } #endregion Console.ReadKey(); }
private void BtnCalcola_Click(object sender, EventArgs e) { { switch (flag) { case 0: double raggio = G3D.GetDouble(txtRaggio.Text); if (rbtnCerchio.Checked && txtRaggio.Text == "" || G3D.IsNegative(raggio)) { MessageBox.Show("Inserisci un RAGGIO valido prima di continuare."); } else { Cerchio c = new Cerchio(raggio); FormRisultato cForm = new FormRisultato(c.ToString(), c.CalcoloArea()); cForm.Show(); } break; case 1: double qLato = G3D.GetDouble(txtLato.Text); if (rbtnQuadrato.Checked && txtLato.Text == "" || G3D.IsNegative(qLato)) { MessageBox.Show("Inserisci un LATO valido prima di continuare."); } else { Quadrato q = new Quadrato(qLato); FormRisultato qForm = new FormRisultato(q.ToString(), q.CalcoloArea()); qForm.Show(); } break; case 3: double tBase = G3D.GetDouble(txtBase.Text); double tAltezza = G3D.GetDouble(txtAltezza.Text); if (rbtnTriangolo.Checked && txtBase.Text == "" || txtAltezza.Text == "" || G3D.IsNegative(tAltezza, tBase)) { MessageBox.Show("Inserisci BASE e ALTEZZA validi prima di continuare."); } else { TriangoloIso t = new TriangoloIso(tBase, tAltezza); FormRisultato tForm = new FormRisultato(t.ToString(), t.CalcoloArea()); tForm.Show(); } break; case 4: double rBase = G3D.GetDouble(txtBase.Text); double rAltezzaa = G3D.GetDouble(txtAltezza.Text); if (rbtnRettangolo.Checked && txtBase.Text == "" || txtAltezza.Text == "" || G3D.IsNegative(rBase, rAltezzaa)) { MessageBox.Show("Inserisci BASE e ALTEZZA validi prima di continuare."); } else { Rettangolo r = new Rettangolo(rBase, rAltezzaa); FormRisultato rForm = new FormRisultato(r.ToString(), r.CalcoloArea()); rForm.Show(); } break; case 5: double pLato = G3D.GetDouble(txtLato.Text); if (rbtnPentagono.Checked && txtLato.Text == "" || G3D.IsNegative(pLato)) { MessageBox.Show("Inserisci un LATO valido prima di continuare."); } else { Pentagono p = new Pentagono(pLato); FormRisultato pForm = new FormRisultato(p.ToString(), p.CalcoloArea()); pForm.Show(); } break; case 6: double esLato = G3D.GetDouble(txtLato.Text); if (rbtnEsagono.Checked && txtLato.Text == "" || G3D.IsNegative(esLato)) { MessageBox.Show("Inserisci un LATO valido prima di continuare."); } else { Esagono es = new Esagono(esLato); FormRisultato esForm = new FormRisultato(es.ToString(), es.CalcoloArea()); esForm.Show(); } break; default: MessageBox.Show("Errore!"); break; } } }