Test Sharp http://blogs.ugidotnet.org/adrian/category/Test Sharp.aspx Test Sharp it-IT Adrian Florea Subtext Version 2.6.0.0 Quiz Sharp #72 [junior] http://blogs.ugidotnet.org/adrian/archive/2009/05/21/quiz-sharp-72-junior.aspx <p>Il seguente snippet:</p> <p><strong>using</strong> System;<br /> <br /> <strong>interface</strong> IFoo {<br />     IFoo GetInstance();<br /> }<br /> <br /> <strong>partial class</strong> Foo : IFoo {<br />     <strong>public</strong> IFoo GetInstance() {<br />         Console.WriteLine("Ciao");<br />         <strong>return this</strong>;<br />     }<br /> }<br /> <br /> <strong>class</strong> Program {<br />     <strong>static void</strong> Main() {<br />         (<strong>new</strong> Foo()).GetInstance().GetInstance();<br />     }<br /> }</p> <p>stampa:</p> <p><strong>Ciao<br /> Ciao</strong></p> <p>a console. <em>Senza toccare lo snippet</em> ma solo aggiungendone un pezzo, dobbiamo stampare a console:</p> <p><strong>Ciao<br /> <font color="#ff0000">UGIdotNET</font><br /> Ciao</strong></p><img src="http://blogs.ugidotnet.org/adrian/aggbug/96256.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2009/05/21/quiz-sharp-72-junior.aspx Thu, 21 May 2009 11:55:14 GMT http://blogs.ugidotnet.org/adrian/archive/2009/05/21/quiz-sharp-72-junior.aspx#feedback 335 http://blogs.ugidotnet.org/adrian/comments/commentRss/96256.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/96256.aspx Corso Sql Server 2008 Express per gli insegnanti arrivati all'ONI2009 http://blogs.ugidotnet.org/adrian/archive/2009/04/14/corso-sql-server-2008-express-per-gli-insegnanti-arrivati-alloni2009.aspx <p>Ieri e l'altro ieri ho tenuto un corso su Sql Server 2008 Express per 80 insegnanti di informatica arrivati per l'occasione delle Olimpiadi Nazionali di Informatica (ONI2009) che quest'anno sono state ospitate proprio dalla mia citta'. E' stata un'esperienza interessante e inedita perche' parlare di un argomento cosi' "real world" davanti alle migliori menti in ambito pre-universitario vi assicuro che non e' facile. Gente eccezionale, che vive di algoritmi, grafi e C++, un po' lontana purtroppo dalle problematiche dei DB. Ieri, cioe' nel secondo giorno, mi sono dovuto inventare la <a href="http://it.wikipedia.org/wiki/Successione_di_Fibonacci">successione di Fibonacci</a> fatta in SQL...</p> <p><strong>with</strong> fibonacci(f, g) <strong>as </strong>(<br />     <strong>select</strong> 0, 1<br />     <strong>union all</strong><br />     <strong>select</strong> f + g, f + g + g<br />     <strong>from</strong> fibonacci<br />     <strong>where</strong> f + g &lt; 100<br /> )<br /> <strong>select</strong> f<br /> <strong>from</strong> fibonacci<br /> <strong>union all</strong><br /> <strong>select</strong> g<br /> <strong>from</strong> fibonacci<br /> <strong>order by</strong> 1</p> <p>per tenerli svegli ;-) Hanno ricevuto con interesse il compito a casa di risolvere il <a href="http://it.wikipedia.org/wiki/Rompicapo_delle_otto_regine">rompicapo delle otto regine</a> sempre via <a href="http://msdn.microsoft.com/en-us/library/ms190766.aspx">CTE</a> :-) Molto gradito e' stato anche l'argomento sul nuovo tipo <a href="http://technet.microsoft.com/en-us/library/bb677290.aspx">hierarchyid</a> perche' abbastanza vicino al loro lavoro (algoritmi, alberi, etc.). Li sono piaciuti anche i nuovi tipi <em>geography</em> e <em>geometry</em> e l'integrazione del motore con .NET, poi il lavoro con XML, etc. In ogni caso e' stato un corso abbastanza atipico, preparato in un solo sabato, dalle 2 di notte in poi, con la soddisfazione di aver conosciuto di persona quelli che preparano le nuove generazioni di informatici rumeni.</p><img src="http://blogs.ugidotnet.org/adrian/aggbug/95948.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2009/04/14/corso-sql-server-2008-express-per-gli-insegnanti-arrivati-alloni2009.aspx Tue, 14 Apr 2009 19:36:52 GMT http://blogs.ugidotnet.org/adrian/archive/2009/04/14/corso-sql-server-2008-express-per-gli-insegnanti-arrivati-alloni2009.aspx#feedback 313 http://blogs.ugidotnet.org/adrian/comments/commentRss/95948.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/95948.aspx Quiz Sharp #70 http://blogs.ugidotnet.org/adrian/archive/2008/05/18/quiz-sharp-70.aspx <p>Senza utilizzare stringhe, caratteri, numeri (<em>literals</em>) o file esterni, si chiede di scrivere un programma in C# 3.0 che stampi a console la definizione compilabile di un tipo non vuoto.</p><img src="http://blogs.ugidotnet.org/adrian/aggbug/92726.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2008/05/18/quiz-sharp-70.aspx Sun, 18 May 2008 07:22:45 GMT http://blogs.ugidotnet.org/adrian/archive/2008/05/18/quiz-sharp-70.aspx#feedback 105 http://blogs.ugidotnet.org/adrian/comments/commentRss/92726.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/92726.aspx Test Sharp (pronto, chi chiama?) http://blogs.ugidotnet.org/adrian/archive/2006/10/09/50596.aspx Senza utilizzare alcun namespace, scrivete un metodo e compilatelo in una dll in tal modo che passandogli un parametro da codice C# ritorna un risultato mentre passandogli lo stesso parametro da codice VB.NET ritorna un altro risultato. Dovete indicare anche il valore del parametro.<img src="http://blogs.ugidotnet.org/adrian/aggbug/50596.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2006/10/09/50596.aspx Mon, 09 Oct 2006 18:13:00 GMT http://blogs.ugidotnet.org/adrian/archive/2006/10/09/50596.aspx#feedback 5 http://blogs.ugidotnet.org/adrian/comments/commentRss/50596.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/50596.aspx Test Sharp (private ctor di una classe abstract) http://blogs.ugidotnet.org/adrian/archive/2006/10/04/49977.aspx Senza utilizzare reflection si chiede di trovare un modo per eseguire il codice del costruttore <STRONG>private</STRONG> senza parametri di una classe <STRONG>abstract</STRONG>. Troppo semplice anche questo? :-)<img src="http://blogs.ugidotnet.org/adrian/aggbug/49977.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2006/10/04/49977.aspx Wed, 04 Oct 2006 18:55:00 GMT http://blogs.ugidotnet.org/adrian/archive/2006/10/04/49977.aspx#feedback 23 http://blogs.ugidotnet.org/adrian/comments/commentRss/49977.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/49977.aspx Test Sharp (no return) http://blogs.ugidotnet.org/adrian/archive/2006/09/09/47617.aspx Scrivete un metodo con il return type non void, che non abbia alcun return all'interno del suo corpo (e ovviamente che compili senza errori o warning).<img src="http://blogs.ugidotnet.org/adrian/aggbug/47617.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2006/09/09/47617.aspx Sat, 09 Sep 2006 17:47:00 GMT http://blogs.ugidotnet.org/adrian/archive/2006/09/09/47617.aspx#feedback 23 http://blogs.ugidotnet.org/adrian/comments/commentRss/47617.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/47617.aspx Test Sharp (Multiply senza operatori aritmetici) http://blogs.ugidotnet.org/adrian/archive/2006/09/09/47616.aspx <P>Senza utilizzare alcun operatore aritmetico, proponete una soluzione per l'espressione <I><FONT color=#ff0000>???expr???</FONT> = a * b</I> nel seguente snippet, che utilizzi il minor numero di caratteri:</P> <P><SPAN style="COLOR: blue; FONT-FAMILY: Courier New">int</SPAN><SPAN style="FONT-FAMILY: Courier New"> Multiply(<SPAN style="COLOR: blue">byte</SPAN> a, <SPAN style="COLOR: blue">byte</SPAN> b)</SPAN><BR><SPAN style="FONT-FAMILY: Courier New">{</SPAN><BR><SPAN style="FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> <FONT color=#ff0000><I>???expr???</I></FONT>;</SPAN><BR><SPAN style="FONT-FAMILY: Courier New">}</SPAN> </P> <P>La mia ha 19 caratteri.</P><img src="http://blogs.ugidotnet.org/adrian/aggbug/47616.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2006/09/09/47616.aspx Sat, 09 Sep 2006 16:51:00 GMT http://blogs.ugidotnet.org/adrian/archive/2006/09/09/47616.aspx#feedback 24 http://blogs.ugidotnet.org/adrian/comments/commentRss/47616.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/47616.aspx Test Sharp (IsEqualsEquivalence) http://blogs.ugidotnet.org/adrian/archive/2005/11/27/30608.aspx <P><B>Equals</B> definisce una <A href="http://mathworld.wolfram.com/EquivalenceRelation.html">relazione di equivalenza</A> su un tipo <B>Foo</B> se e solo se, per ogni istanze non nulle x, <I>y</I> e <I>z</I> di <B>Foo</B> abbiamo:</P> <UL> <LI><I>x.Equals(x)</I> &#232; <B>true</B>;</LI> <LI>se <I>x.Equals(y)</I> &#232; <B>true</B>, anche <I>y.Equals(x)</I> &#232; <B>true</B>;</LI> <LI>se <I>x.Equals(y) &amp;&amp; y.Equals(z)</I> &#232; <B>true</B>, anche <I>x.Equals(z)</I> &#232; <B>true</B></LI></UL> <P>Scrivete un'implementazione migliore (cio&#232; che ritorni correttamente <B>Fuzzy.True</B> per pi&#249; tipi; per questo il tipo di ritorno &#232; <B>Fuzzy</B> e non <B>bool</B>) per il metodo <B>IsEqualsEquivalence</B>,&nbsp; rispetto a questa banale:</P> <P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: teal">Fuzzy</SPAN> IsEqualsEquivalence(<SPAN style="COLOR: teal">Type</SPAN> t)</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">return</SPAN> <SPAN style="COLOR: teal">Fuzzy</SPAN>.Maybe;</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN> </P> <P>dove <B>Fuzzy</B> &#232;:</P> <P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">public</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> <SPAN style="COLOR: blue">enum</SPAN> <SPAN style="COLOR: teal">Fuzzy</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; False = -1,</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Maybe,</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; True</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN> </P> <P>Tempo: tutta la settimana.</P><img src="http://blogs.ugidotnet.org/adrian/aggbug/30608.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2005/11/27/30608.aspx Sun, 27 Nov 2005 17:10:00 GMT http://blogs.ugidotnet.org/adrian/archive/2005/11/27/30608.aspx#feedback 16 http://blogs.ugidotnet.org/adrian/comments/commentRss/30608.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/30608.aspx Test Sharp (No recursion!) - la soluzione http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28147.aspx <P>Ecco la soluzione rigorosamente 2.0 all'<A href="http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28111.aspx">ultimo test</A>:</P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">class</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> <SPAN style="COLOR: teal">Foo</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> Main()</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B><FONT color=#ff0000>System.Web.Util.</FONT><SPAN style="COLOR: #ff0000">WorkItemCallback</SPAN><FONT color=#ff0000> Main = </FONT><SPAN style="COLOR: #ff0000">delegate</SPAN><FONT color=#ff0000>() { };</FONT></B></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main();</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN> <P>Al posto di <A href="http://msdn2.microsoft.com/en-us/library/0d6h9bh3">WorkItemCallback</A> potete scegliere qualunque altro delegate pubblico del Framework che abbia la stessa dummy signature.</P> <P>Anche l'<A href="http://blogs.ugidotnet.org/adrian/archive/2005/10/16/28089.aspx">altro test</A>, quello su <B>IsValueType</B>, utilizza una cosa carina del 2.0. Dai, non &#232; difficile...</P><img src="http://blogs.ugidotnet.org/adrian/aggbug/28147.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28147.aspx Mon, 17 Oct 2005 15:59:00 GMT http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28147.aspx#feedback 19 http://blogs.ugidotnet.org/adrian/comments/commentRss/28147.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/28147.aspx Test Sharp (No recursion!) http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28111.aspx <P>Nel seguente snippet, sostituire il commento con un'unica riga di codice C# 2.0 (uno statement) cos&#236; da <I>evitare la ricorsivit&#224;</I>:</P> <P><SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Courier New">class</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New"> <SPAN style="COLOR: teal">Foo</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">{</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: blue">static</SPAN> <SPAN style="COLOR: blue">void</SPAN> Main()</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <SPAN style="COLOR: green">// manca in questa posizione un'unica riga di codice</SPAN></SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Main();</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</SPAN><BR><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Courier New">}</SPAN> </P> <P>Cosa importante, la chiamata a <B>Main</B> &#232; raggiungibile e viene eseguita!</P><img src="http://blogs.ugidotnet.org/adrian/aggbug/28111.aspx" width="1" height="1" /> Adrian Florea http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28111.aspx Mon, 17 Oct 2005 03:24:00 GMT http://blogs.ugidotnet.org/adrian/archive/2005/10/17/28111.aspx#feedback 15 http://blogs.ugidotnet.org/adrian/comments/commentRss/28111.aspx http://blogs.ugidotnet.org/adrian/services/trackbacks/28111.aspx