
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Traffyk - I'm driving crazy &#187; programmazione</title>
	<atom:link href="http://www.traffyk.com/tag/programmazione/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.traffyk.com</link>
	<description>Una volta davo consigli e risorse per blog.. ora invece booh quello che mi pare :p</description>
	<lastBuildDate>Fri, 09 Dec 2011 19:22:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>spostato &#8211; Un editor html online con anteprima in tempo reale</title>
		<link>http://www.traffyk.com/2008/01/14/un-editor-html-online-con-anteprima-in-tempo-reale/</link>
		<comments>http://www.traffyk.com/2008/01/14/un-editor-html-online-con-anteprima-in-tempo-reale/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 22:49:40 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[About Me]]></category>
		<category><![CDATA[Estensioni]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[scrittura]]></category>
		<category><![CDATA[xHtml]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2008/01/14/un-editor-html-online-con-anteprima-in-tempo-reale/</guid>
		<description><![CDATA[Spostato qui: Un editor html online con anteprima in tempo reale]]></description>
			<content:encoded><![CDATA[<p>Spostato qui: <a href="http://www.italianbloggers.it/un-editor-html-online-con-anteprima-in-tempo-reale/">Un editor html online con anteprima in tempo reale</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2008/01/14/un-editor-html-online-con-anteprima-in-tempo-reale/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Tipi di dati astratti: la coda (queue) e algoritmo in Java 5.0</title>
		<link>http://www.traffyk.com/2007/10/03/tipi-di-dati-astratti-la-coda-queue-e-algoritmo-in-java-50/</link>
		<comments>http://www.traffyk.com/2007/10/03/tipi-di-dati-astratti-la-coda-queue-e-algoritmo-in-java-50/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 20:39:17 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2007/10/03/tipi-di-dati-astratti-la-coda-queue-e-algoritmo-in-java-50/</guid>
		<description><![CDATA[Secondo capitolo della puntata algoritmi e strutture dati la coda. Un coda una struttura dati molto semplice, segue il principio FIFO, First In First Out, il primo ad entrare il primo ad uscire.. o potremmo dire chi primo arriva meglio alloggia!:P Oggi non posso spiegarvi tutto, come sempre confido nei vostri commenti e richieste di [...]]]></description>
			<content:encoded><![CDATA[<p>Secondo capitolo della puntata <a href="http://www.traffyk.com/tag/algoritmi-e-strutture-dati/">algoritmi e strutture dati</a> la <a href="http://it.wikipedia.org/wiki/Coda_%28informatica%29">coda</a>.</p>
<div align="center"><img height="236" alt="coda-queue" src="http://www.traffyk.com/blog/wp-content/uploads/2007/10/coda-queue.png" width="444" /></div>
<p>Un coda  una struttura dati molto semplice, segue il principio <a href="http://it.wikipedia.org/wiki/FIFO">FIFO</a>, First In First Out, il primo ad entrare  il primo ad uscire.. o potremmo dire chi primo arriva meglio alloggia!:P</p>
<p>Oggi non posso spiegarvi tutto, come sempre confido nei vostri commenti e richieste di informazioni specifiche per contribuire al meglio al post. Vediamo subito quali metodi ha l&#8217;interfaccia <strong>Queue</strong>:</p>
<ul>
<li><strong>enqueue(e)</strong>: accoda l&#8217;elemento <em>e</em> alla coda, in pratica posiziona dietro l&#8217;elemento;</li>
<li><strong>dequeue()</strong>: prende il primo elemento della coda, ovvero il primo ad essere entrato, lancia un&#8217;eccezione se vuota;</li>
<li><strong>front()</strong>: simile al pop dello <a href="http://www.traffyk.com/2007/10/02/tipi-di-dati-astratti-lo-stack-con-algoritmo-in-java-50/">stack</a>, legge il primo elemento della coda senza per toglierlo da essa, lancia un&#8217;eccezione se vuota;</li>
<li><strong>size()</strong>: un classico ormai, restituisce la dimensione;</li>
<li><strong>isEmpty()</strong>: booleano per sapere se la coda  vuota o occupata da elementi.</li>
</ul>
<p><strong>Vediamo quindi l&#8217;interfaccia:</strong></p>
<pre lang="java5" line="1">
package queue;

import exception.EmptyQueueException;

public interface Queue&lt;E&gt; {

 public int size();
 public boolean isEmpty();
 public E front() throws EmptyQueueException;
 public void enqueue(E element);
 public E dequeue()throws EmptyQueueException;
}
</pre>
<p><span id="more-1003"></span></p>
<p><strong>Questa  la classe della nuova eccezione che abbiamo creato:</strong></p>
<pre lang="java5" line="1">
package exception;

public class EmptyQueueException extends RuntimeException{
 /**
  *
  */
 private static final long serialVersionUID = -6005613600247835251L;

 public EmptyQueueException(String errore) {
  super(errore);
 }

}
</pre>
<p><strong>Classe ArrayQueue per implementare l&#8217;interfaccia con un array:</strong></p>
<pre lang="java5" line="1">
package queue;

import exception.EmptyQueueException;
import exception.FullQueueException;

public class ArrayQueue&lt;E&gt; implements Queue&lt;E&gt;{
 protected int capacity;
 public static final int CAPACITY = 1000;
 protected E[] Q;
 protected int f, r = 0;

 public ArrayQueue() {
  this(CAPACITY);
 }
 @SuppressWarnings("unchecked")
 public ArrayQueue(int capacity) {
  this.capacity=capacity;
  Q = (E[]) new Object[capacity];
 }
 public boolean isEmpty() {
  return (f==r);
 }
 public E dequeue() throws EmptyQueueException {
  if (isEmpty())
   throw new EmptyQueueException("Queue is empty");
  E element;
  element = Q[f];
  Q[f] = null;
  f = (f+1) % Q.length;
  return element;
 }
 public void enqueue(E element) throws FullQueueException{
  if (size() == Q.length-1)
   throw new FullQueueException("Queue is full");
  Q[r] = element;
  r = (r+1) % Q.length;
 }
 public int size() {
  return ((Q.length-f+r) % Q.length);
 }
 public E front() throws EmptyQueueException {
  if (isEmpty()) throw new EmptyQueueException("Queue is empty");
  return Q[f];
 }

}
</pre>
<p><strong>Classe dell&#8217;altra eccezione:</strong></p>
<pre lang="java5" line="1">
package exception;

public class FullQueueException extends RuntimeException{
 /**
  *
  */
 private static final long serialVersionUID = -6005613600247835251L;

 public FullQueueException(String errore) {
  super(errore);
 }

}
</pre>
<p><strong>E infine la classe di test:</strong></p>
<pre lang="java5" line="1">
package queue;

public class TestArrayQueue {
	public static void main(String[] args) {
		Queue<integer> A = new ArrayQueue</integer><integer>();
		A.enqueue(5);
		System.out.println("Enqueue 5");
		A.enqueue(3);
		System.out.println("Enqueue 3");
		System.out.println("Dequeue "+A.dequeue());
		A.enqueue(7);
		System.out.println("Enqueue 7");
		System.out.println("Dequeue "+A.dequeue());
		System.out.println("Front "+A.front());
		System.out.println("Dequeue "+A.dequeue());
		if (!A.isEmpty()) A.dequeue();
		A.enqueue(9);
		System.out.println("Enqueue 9");
		A.enqueue(7);
		System.out.println("Enqueue 7");
		System.out.println("Size :"+A.size());
		A.enqueue(3);
		System.out.println("Enqueue 3");
		A.enqueue(5);
		System.out.println("Enqueue 5");
		System.out.println("Dequeue "+A.dequeue());

	}
}
</integer></pre>
<p><strong>Buonanotte rag! <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2007/10/03/tipi-di-dati-astratti-la-coda-queue-e-algoritmo-in-java-50/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Tipi di dati astratti: Lo Stack, con algoritmo in Java 5.0</title>
		<link>http://www.traffyk.com/2007/10/02/tipi-di-dati-astratti-lo-stack-con-algoritmo-in-java-50/</link>
		<comments>http://www.traffyk.com/2007/10/02/tipi-di-dati-astratti-lo-stack-con-algoritmo-in-java-50/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 21:59:08 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2007/10/01/tipi-di-dati-astratti-lo-stack-con-algoritmo-in-java-50/</guid>
		<description><![CDATA[Eccoci finalmente arrivati alla prima stuttura di dati che andremo ad analizzare, lo Stack. Prima di cominciare vorrei fare una piccola premessa, utilizzo il linguaggio Java per implementare gli algoritmi (in particolare Java 5.0), si presume (come ho citato nell&#8217;articolo precedente) che conosciate almeno in piccola parte il linguaggio Java, in particolare Classi, interfacce, Variabili [...]]]></description>
			<content:encoded><![CDATA[<p>Eccoci finalmente arrivati alla prima stuttura di dati che andremo ad analizzare, lo <strong><a href="http://it.wikipedia.org/wiki/Stack">Stack</a></strong>.</p>
<div align="center"><img src="http://www.traffyk.com/blog/wp-content/uploads/2007/10/391px-data-stack.svg-1.png" alt="391px-Data stack" height="281" width="391" /></div>
<p>Prima di cominciare vorrei fare una piccola premessa, utilizzo il linguaggio <a href="http://java.com/">Java</a> per implementare gli algoritmi (in particolare Java 5.0), si presume (come ho citato nell&#8217;articolo precedente) che conosciate almeno in piccola parte il linguaggio Java, in particolare Classi, interfacce, Variabili assegnamenti e operatori/operazioni, cicli, packages e chi pi ne ha pi ne metta. Non vorrei trattare guide riguardanti la normale programmazione in Java in quanto ci sono degli ottimi libri che permettono di superare addirittura un esame universitario (nel mio caso cos  stato <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  ), mi permetto quindi di citarvi l&#8217;ottimo <a href="http://www.java-net.it/jmonline/">Java Mattone dopo Mattone</a>, liberamente scaricabile e utilizzabile da tutti, non sar aggiornatissimo ma una volta acquisiti i fondamenti iniziali aggiornarsi alle ultime versioni di Java non sar un problema <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  .<span id="more-1001"></span></p>
<p>Uno Stack  una struttura di dati astratta, all&#8217;universit lo chiamiamo <strong>TDA</strong> (Tipo di Dati Astratto), definizione forse pi azzeccata perch una volta definita questa struttura avremo proprio un nuovo tipo di dato da poter utilizzare per i nostri programmi.</p>
<p>Il principio di funzionamento di uno Stack  semplicissimo, immaginate una pila di piatti dove l&#8217;ultimo ad essere posizionato  il primo ad uscire e cos man mano potremo prendere sempre l&#8217;ultimo piatto (elemento/oggetto). Questa tipologia di inserimento/rimozione oggetti prende il nome di <strong>last-in first-out</strong> (<strong>LIFO</strong>), in parole povere il primo ad entrare  l&#8217;ultimo ad uscire.</p>
<p>In uno stack/pila abbiamo principalmente due funzionalit che chiameremo con il nome di metodi:</p>
<ul>
<li><strong>push(e)</strong>: Inserisce l&#8217;elemento <em>e</em>, naturalmente in testa allo stack;</li>
<li><strong>pop()</strong>: pop invece non ha bisogno di argomenti/parametri perch prende, o meglio toglie, dal nostro stack l&#8217;ultimo elemento e ce lo restituisce. In questo metodo per, nel caso lo stack fosse vuoto, avremo un errore perch pop() non sar capace di prendere elementi dallo stack, gli errori in java vengono comunemente definiti come eccezioni;</li>
</ul>
<p>Inoltre ai nostri due metodi che definiscono la base di funzionamento dello stack abbiamo anche 3 metodi aggiuntivi, non saranno obbligatori ma ci permettono di gestire al meglio l&#8217;intero stack e di gestire alcune eccezioni risparmiando cos anche un po di tempo:</p>
<ul>
<li><strong>size()</strong>: ritorna il numero degli elementi nello stack;</li>
<li><strong>isEmpty()</strong>: ritorna un valore booleano (vero, falso) per indicare se lo stack  vuoto o meno;</li>
<li><strong>top()</strong>:top invece  un metodo abbastanza simile al <strong>pop()</strong> soltanto che invece di togliere l&#8217;elemento dallo stack per fornircene il contenuto si limita soltanto a leggerlo e restiturci il risultato, in questo modo naturalmente non potremo leggere il contenuto dell&#8217;elemento successivo (contenuto sotto) finch non effettueremo il <strong>pop()</strong>, anche questo metodo lancia un eccezione nel caso lo stack sia vuoto.</li>
</ul>
<p><strong>Il codice per la rispettiva interfaccia in Java 5.0 sar di questo tipo:</strong></p>
<pre line="1" lang="java5">
 package stack;

 import exception.EmptyStackException;

 public interface Stack&lt;E&gt; {
  public int size();
  public boolean isEmpty();
  public E top() throws EmptyStackException;
  public void push (E element);
  public E pop() throws EmptyStackException;
 }
</pre>
<p>Tramite l&#8217;interfaccia potremo implementare tutti gli algoritmi e definire la struttura di dati che pi ci piace senza dover per forza fornire dettagli sulle nostre implementazioni semplicemente perch dovremmo soddisfare tutti i requisiti richiesti dall&#8217;interfaccia e quindi implementare tutti i metodi. Da notare che importo da un secondo package, <strong>exception</strong>, la classe <strong>EmptyStackException</strong> che ci permetter di gestire i nostri errori di tipo <strong>Stack</strong> Vuoto, il codice  il seguente:</p>
<pre lang="java5" line="1">
package exception;

@SuppressWarnings("serial")
public class EmptyStackException extends RuntimeException{

public EmptyStackException(String exception) {
super(exception);
}

}
</pre>
<p>In questo articolo implementeremo una rudimentale struttura di dati per lo <strong>Stack</strong> grazie ad un array, come potrete ben capire da soli avremi dei problemi:</p>
<ul>
<li>Dovendo dichiarare l???array avremo una dimensione ben definita e quindi non pi modificabile (con tutti i problemi che naturalmente ne deriveranno);</li>
<li>Una volta riempito l???array il push, se eseguito ancora, lancer un???eccezione di stack pieno (<strong>FullStackException</strong>);</li>
<li>Gli elementi nell???array verranno aggiunti da destra verso sinistra;</li>
<li>Riempito l???array e quindi il push per effettuare una nuova push dovremmo per forza di cose effettuare una pop;</li>
</ul>
<p>Vediamo quindi il codice in Java 5.0:</p>
<pre lang="java5" line="1">
package stack;

import exception.EmptyStackException;
import exception.FullStackException;

public class ArrayStack&lt;E&gt; implements Stack&lt;E&gt;{
 protected int capacity;
 public static final int CAPACITY = 1000;
 protected E[] S;
 protected int top = -1;

 public ArrayStack() {
  this(CAPACITY);
 }
 @SuppressWarnings("unchecked")
 public ArrayStack(int capacity) {
  this.capacity=capacity;
  S = (E[]) new Object[capacity];
 }
 public boolean isEmpty() {
  return (top&lt;0);
 }
 public E pop() throws EmptyStackException {
  E element;
  if (isEmpty())
   throw new EmptyStackException("Lo stack e' vuoto.");
  element = S[top];
  S[top--] = null;
  return element;
 }
 public void push(E element) throws FullStackException{
  if (size() == capacity)
   throw new FullStackException("Lo stack e' pieno.");
  S[++top] = element;
 }
 public int size() {
  return top+1;
 }
 public E top() throws EmptyStackException {
  if (isEmpty()) throw new EmptyStackException("Lo stack e' vuoto.");
  return S[top];
 }
 public String toString() {
  String s;
  s = "[";
  if (size() &gt; 0) s+= S[0];
  if (size() &gt; 1)
   for (int i=1; i&lt;= size()-1; i++)
    s += ", " + S[i];
  return s+"]";
 }
 public void status(String op, Object element) {
  System.out.print("------&gt;" + op);
  System.out.println(", returns " + element);
  System.out.print("result: size = "+size() + ", isEmpty = "+ isEmpty());
  System.out.println(", stack: " + this);
 }
}
</pre>
<p>Da notare che  stata richiamata una nuova classe per le <strong>eccezioni di Stack pieno</strong>, seguendo l???esempio della prima classe di Exception  semplicissimo creare un???altra classe con nome variato, ma gia ce ce l???ho salvata in Eclipse vi copio anche questa parte <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  :</p>
<pre lang="java5" line="1">
package exception;

@SuppressWarnings("serial")
public class FullStackException extends RuntimeException{

 public FullStackException(String errore) {
  super(errore);
 }

}
</pre>
<p>Come vedrete ci sono anche alcuni metodi accessori che utilizzeremo per la nostra classe di test:</p>
<pre lang="java5" line="1">
package stack;

public class TestArrayStack {
 public static void main(String[] args) {
  Object o;
  ArrayStack&lt;Integer&gt; A = new ArrayStack&lt;Integer&gt;();
  A.status("new ArrayStack&lt;Integer&gt; A", null);
  A.push(7);
  A.status("A.push(7)", null);
  o = A.pop();
  A.status("A.pop()", o);
  A.push(9);
  A.status("A.push(9)", null);
  o = A.pop();
  A.status("A.pop()", o);
  ArrayStack&lt;String&gt; B = new ArrayStack&lt;String&gt;();
  B.status("new ArrayStack&lt;String&gt; B", null);
  B.push("Bob");
  B.status("B.push(\"Bob\")", null);
  B.push("Alice");
  B.status("B.push(\"Alice\")", null);
  o = B.pop();
  B.status("B.pop()", o);
  B.push("Eve");
  B.status("B.push(\"Eve\")", null);
 }

}
</pre>
<p>Perdonatemi se non mi dilungo a spiegare il codice pi di tanto stasera ho perso 4 ore per poter formattare il codice senza perdere validazione W3C e senza perdere alcune parti di codice di Java 5.0 incompatibili con WordPress (mi chiude i tag in automatico) e con il plugin Wp-Syntax che ho dovuto modificare per eliminare il controllo sulle identazioni e su tutti i caratteri speciali html (su quelli il controllo manuale  sempre migliore <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ), poi con l???editor avanzato sempre su ???disattivato???  chiaro <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Il libro di riferimento  <strong>Data Structures and Algorithms in Java</strong>, fourth edition.<br />
Di Michael T. Goodrich e Roberto Tamassia (in english naturalmente ehehhe ). L???algoritmo rispecchia lo stesso metodo risolutore riportato nel libro, ma il bello cominceremo a vederlo tra poco quando il libro non riporter pi degli esempi tanto carini, ma io l???anno scorso queste cose le ho fatte fino a met corso???diciamo che sono molto anticipato sul libro e sul programma ehehe <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Naturalmente qualsiasi cosa chiedete, nei limiti del possibile prover a darvi una risposta, ma sono dell???idea che questi esercizi dobbiate farveli da soli non vale la pena di copiare questi, si fa una figura di m??? all???interrogazione perch difficilmente si sapr discutere codice non commentato di altre persone ne tantomeno si sapr <strong>dove spostarsi esattamente con lo sguardo e con il ditino</strong>. Sisi mi  stato chiesto addirittura questo in un esame per verificare l???autenticit del mio codice!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2007/10/02/tipi-di-dati-astratti-lo-stack-con-algoritmo-in-java-50/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Implementiamo degli algoritmi e strutture di dati in Java 5.0</title>
		<link>http://www.traffyk.com/2007/10/01/implementiamo-degli-algoritmi-e-strutture-di-dati-in-java-50/</link>
		<comments>http://www.traffyk.com/2007/10/01/implementiamo-degli-algoritmi-e-strutture-di-dati-in-java-50/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 18:17:06 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2007/10/01/implementiamo-degli-algoritmi-e-strutture-di-dati-in-java-50/</guid>
		<description><![CDATA[Salve ragazzi oggi ricominciata l&#8217;Universit&#8230; vediamo un po se riusciamo a studiare insieme&#8230; magari bloggando le cose che faccio mi entrano meglio in testa e forse mi preparer meglio per gli esami oltre al fatto che cos dovr studiare quasi tutti i giorni per poter scrivere l&#8217;articolo Vi parler di un corso molto bello riguardante [...]]]></description>
			<content:encoded><![CDATA[<p><img height="332" alt="322px-Java Logo" src="http://www.traffyk.com/blog/wp-content/uploads/2007/10/322px-java-logo.svg-1.png" width="250" align="left" />Salve ragazzi oggi <strong> ricominciata l&#8217;Universit</strong>&#8230; vediamo un po se riusciamo a studiare insieme&#8230; magari bloggando le cose che faccio mi entrano meglio in testa e forse mi preparer meglio per gli esami oltre al fatto che cos dovr studiare quasi tutti i giorni per poter scrivere l&#8217;articolo <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Vi parler di un corso molto bello riguardante <strong>Laboratorio di</strong> <strong>Algoritmi e Strutture Dati</strong> (da ora in poi conosciuto con il tag <strong><a href="http://www.traffyk.com/tag/lasd">LASD</a></strong>) nel quale vedremo come implementare in <a href="http://www.traffyk.com/tag/java">Java</a> e in particolare in Java 5.0 con le classi generiche Algoritmi e Strutture Dati di grande utilit per i programmatori. Ma prima di tutto conosciamo meglio la definizione di Algoritmi e Strutture Dati:</p>
<blockquote>
<p>Una struttura dati  un&#8217;entit usata per organizzare un insieme di dati all&#8217;interno della <a href="http://it.wikipedia.org/wiki/RAM">memoria</a> del <a href="http://it.wikipedia.org/wiki/Computer">computer</a>, ed eventualmente per memorizzarli in una <a href="http://it.wikipedia.org/wiki/Memoria_di_massa">memoria di massa</a>. La scelta delle strutture dati da utilizzare  strettamente legata a quella degli <a href="http://it.wikipedia.org/wiki/Algoritmo">algoritmi</a>, a tal proposito, solitamente si utilizza il concetto unificato di Algoritmi e Strutture Dati.<span id="more-998"></span> La scelta della struttura dati influir inevitabilmente sull&#8217;efficienza degli algoritmi da utilizzare.</p>
<p>La struttura dati  un metodo di organizzazione dei dati, quindi prescinde dai dati effettivamente contenuti. Ciascun <a href="http://it.wikipedia.org/wiki/Linguaggio_di_programmazione">linguaggio di programmazione</a> offre strumenti, pi o meno sofisticati, per definire strutture dati, ovvero aggregare dati di tipo omogeneo o eterogeneo. Questi strumenti sono tipicamente componibili.</p>
<p>Pi formalmente, i linguaggi forniscono un insieme predefinito di <a href="http://it.wikipedia.org/wiki/Tipo_di_dato">tipi di dato</a> elementari, e le strutture dati sono strumenti per costruire tipi di dati aggregati pi complessi.</p>
<p>L&#8217;operazione di costruire una variabile di un tipo di dato complesso  detta &#8220;istanziazione&#8221;, e pu avvenire sia durante la <a href="http://it.wikipedia.org/wiki/Compilatore">compilazione</a> del programma (compile time) sia durante la sua esecuzione (runtime).</p>
<p>Le strutture di dati si differenziano prima di tutto in base alle operazioni che si possono effettuare su di esse e alle prestazioni offerte. Questo permette di creare un&#8217;astrazione dall&#8217;implementazione, dando vita al concetto di <a href="http://it.wikipedia.org/wiki/Struttura_dati_astratta">Struttura dati astratta</a> o Abstract Data Structure (ADS).</p>
</blockquote>
<p>L&#8217;articolo  stato preso da <a href="http://it.wikipedia.org/">Wikipedia</a>, per leggere la parte mancante visitate la pagina <a href="http://it.wikipedia.org/wiki/Struttura_dati">Struttura dati</a> e seguite un pochino tutti i vari collegamenti per avere maggiori informazioni.</p>
<p><strong>A breve vedremo come implentare la nostra prima struttura dati astratta,</strong> una delle pi primitive e semplici ma forse anche una delle pi importanti che  ancora oggi alla base di molte applicazioni&#8230;</p>
<p>Parler dello <strong>Stack e la sua implementazione in Java 5.0</strong> in un ArrayList a dimensione fissa, successivamente tratter un Array di tipo circolare a dimensione fissa e infine dovrei trattare uno Stack immagazzinato tramite una lista di oggetti a dimensione variabile.</p>
<p><strong>Un piccolo avvertimento per chi fosse interessato</strong>: sono necessari <a href="http://java.sun.com/javase/downloads/index.jsp">Java Se JDK 5 o superiore</a> e possibilmente un ide di programmazione java, magari <a href="http://www.eclipse.org/downloads/">Eclipse 3.2 o superiore</a> (come il nuovo Europa). Per ora  tutto comincer tra breve a pubblicare le prime risorse <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2007/10/01/implementiamo-degli-algoritmi-e-strutture-di-dati-in-java-50/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Ho scoperto Python! Perch non l&#8217;ho fatto prima?? Come installarlo su Windows (incluso Feedparser)</title>
		<link>http://www.traffyk.com/2007/08/25/ho-scoperto-python-perche-non-lho-fatto-prima-come-installarlo-su-windows-incluso-feedparser/</link>
		<comments>http://www.traffyk.com/2007/08/25/ho-scoperto-python-perche-non-lho-fatto-prima-come-installarlo-su-windows-incluso-feedparser/#comments</comments>
		<pubDate>Sat, 25 Aug 2007 16:12:16 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Computer - Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2007/08/25/ho-scoperto-python-perche-non-lho-fatto-prima-come-installarlo-su-windows-incluso-feedparser/</guid>
		<description><![CDATA[Continua il mio viaggio di esproprio dal proprio ambiente di lavoro nativo di programmi praticamente perfetti. Oggi ho scoperto Python. Cosa Python?? Python un linguaggio di programmazione interpretato, interattivo, ad oggetti. Incorpora i moduli, le eccezioni, la tipizzazione dinamica, alcuni tipi di dati dinamici ad altissimo livello e le classi. Python unisce una potenza considerevole [...]]]></description>
			<content:encoded><![CDATA[<p><img height="71" alt="python-logo" src="http://www.traffyk.com/blog/wp-content/uploads/2007/08/python-logo.gif" width="211" align="left" /></p>
<p>Continua il mio viaggio di esproprio dal proprio ambiente di lavoro nativo di programmi praticamente perfetti. Oggi ho scoperto <a href="http://www.python.org">Python</a>.</p>
<p>Cosa  Python??</p>
<blockquote>
<p>Python  un linguaggio di programmazione interpretato, interattivo, ad oggetti. Incorpora i moduli, le eccezioni, la tipizzazione dinamica, alcuni tipi di dati dinamici ad altissimo livello e le classi. Python unisce una potenza considerevole ad una sintassi molto pulita e comprensibile. ?? dotato di interfacce a molte chiamate di sistema e librerie, come pure a vari sistemi a finestre, ed  estensibile in C o C++. ?? utilizzabile pure come linguaggio di estensione per applicazioni che necessitano di un&#8217;interfaccia programmabile. Infine, Python  portabile: funziona su molte versioni di UNIX, su Mac, e sui PC sotto MS-DOS, Windows, Windows NT, e OS/2. (Fonte: <a href="http://www.python.it/faq/faq-1.html#1.1">Python.it</a>)</p>
</blockquote>
<p>Conoscevo gia questo linguaggio di programmazione, su [tag]Linux[/tag] mi sono imbattuto pi volte, ma non ne avevo mai approfondito l&#8217;uso ne tantomeno sono capace di scrivere una sola riga di codice fin quando non mi sono imbattuto su questo articolo: <a href="http://www.gialloporpora.netsons.org/Blog/comments.php?y=07&amp;m=08&amp;entry=entry070823-232043">Come mettere le ultime news del blog in firma con Mozilla Thunderbird</a>.</p>
<p>Lo script creato da questo fantastico ragazzo di cui ora seguir sempre il blog tramite feed [tag]rss[/tag],  stato creato in Python con il supporto della libreria <a href="http://feedparser.org/">Universal Feed Parser</a> di cui tratter dopo l&#8217;installazione.</p>
<p><span id="more-873"></span></p>
<p>Procediamo con lo scaricare da <a href="http://www.python.org/download/releases/">qui</a> l&#8217;installer per [tag]Windows[/tag], l&#8217;ultima versione al momento della stesura di questo articolo  la <strong><em>Python 2.5.1</em></strong>. Scegliete poi il download a seconda dell&#8217;architettura del vostro PC (solitamente X86). Terminato il download scaricate l&#8217;installer e seguite le istruzioni a video, non c&#8217; davvero bisogno di spiegar nulla se ci sono riuscito anche io <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Bene Python  installato, annotate il percorso in cui lo avete installato perch  importante.<br />
Facciamo un esempio pratico (il classicissimo Hello World! ).</p>
<p>File &#8220;<strong>helloworld.py</strong>&#8220;:<br />
<code>print "Hello World!"</code></p>
<p>Veramente molto semplice, una sola riga di codice, nessuna chiusura di istruzioni, no tag di apertura o altro, per ora io sono capace di fare soltanto questo, non avevo mai programmato in python in vita mia.</p>
<p><strong>Vediamo come eseguire su Windows questo file con estensione &#8220;py&#8221;.</strong></p>
<p>File &#8220;<strong>helloworld.cmd</strong>&#8221; (oppure .bat  uguale):<br />
<code>PATH=%PATH%;"C:\Python25\"<br />
python helloworld.py<br />
pause</code></p>
<p>Cosa abbiamo fatto? Semplicemente creato un file.cmd di Windows che esegue un file .py, il richiamo avviene settando prima il PATH a &#8220;C:\Python25\&#8221; (il percorso della vostra installazione) e poi dando il comando python con il percorso del file da eseguire. Baster esegire helloworld.cmd per avviare lo script.</p>
<p><strong>Installazione di Universal Feed Parser<br /></strong>Altro non  un modulo aggiuntivo molto famoso per Python che permette l&#8217;estrapolazione di dati da un feed rss, serve per far funzionare lo script di cui ho parlato prima.</p>
<p>Andiamo come sempre a scaricare lo script da <a href="http://code.google.com/p/feedparser/downloads/list">qui</a>. Al momento la versione in uso  &#8220;<strong>feedparser-4.1.zip</strong>&#8220;. Salviamolo nel nostro Desktop ed estraiamo l&#8217;archivio in una cartella. Noterete certamente che manca di un installer. Infatti  uno script python che dovremo eseguire per aggiungere il modulo creando un nuovo file.cmd (chi ha capito prima saprebbe costruirselo anche da solo), sono buono quindi eccovi il file da eseguire:</p>
<p>File &#8220;<strong>installamodulo.cmd</strong>&#8220;:<br />
<code>PATH=%PATH%;"C:\Python25\"<br />
python setup.py install<br />
pause</code></p>
<p>That&#8217;s all! Vi saluto ragazzi e vi ringrazio per l&#8217;attenzione, corro a imparare questo stupendo linguaggio <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2007/08/25/ho-scoperto-python-perche-non-lho-fatto-prima-come-installarlo-su-windows-incluso-feedparser/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Guida pratica all&#8217;uso di Subversion su Windows con TortoiseSVN (How-to)</title>
		<link>http://www.traffyk.com/2007/08/19/guida-pratica-alluso-di-subversion-su-windows-con-tortoisesvn/</link>
		<comments>http://www.traffyk.com/2007/08/19/guida-pratica-alluso-di-subversion-su-windows-con-tortoisesvn/#comments</comments>
		<pubDate>Sun, 19 Aug 2007 00:22:47 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[About Me]]></category>
		<category><![CDATA[Computer - Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2007/08/19/guida-pratica-alluso-di-subversion-su-windows-con-tortoisesvn/</guid>
		<description><![CDATA[L&#8217;articolo è stato spostato qui: Guida pratica per Subversion su Windows;]]></description>
			<content:encoded><![CDATA[<p>L&#8217;articolo è stato spostato qui: <a href="http://www.italianbloggers.it/guida-pratica-subversion/">Guida pratica per Subversion su Windows</a>;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2007/08/19/guida-pratica-alluso-di-subversion-su-windows-con-tortoisesvn/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Codice sorgente dello Snake 0.4 in Java 5.0 e How-to</title>
		<link>http://www.traffyk.com/2007/06/25/codice-sorgente-dello-snake-04-in-java-50/</link>
		<comments>http://www.traffyk.com/2007/06/25/codice-sorgente-dello-snake-04-in-java-50/#comments</comments>
		<pubDate>Mon, 25 Jun 2007 21:17:09 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[About Me]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2007/06/25/codice-sorgente-dello-snake-04-in-java-50/</guid>
		<description><![CDATA[Ho ripreso in mano i manuali di programmazione e non faccio altro che distrarmi come al solito, nelle mie vecchie cartelle ho ritrovato dei giochini in Java fatti da me un bel po di tempo fa. Due versioni dell&#8217;intramontabile Snake. Uno dove non si muore mai e uno nel classico stile di Snake. Avevo gia [...]]]></description>
			<content:encoded><![CDATA[<p>Ho ripreso in mano i manuali di programmazione e non faccio altro che distrarmi come al solito, nelle mie vecchie cartelle ho ritrovato dei giochini in Java fatti da me un bel po di tempo fa. Due versioni dell&#8217;intramontabile Snake. <a title="Lo snake piu pazzo che c e" href="http://www.traffyk.com/2006/11/16/lo-snake-piu-pazzo-che-ce/">Uno dove non si muore mai</a> e <a title="il vero snake appena finito di fare e corretto" href="http://www.traffyk.com/2006/11/18/il-vero-snake-appena-finito-di-fare-e-corretto/">uno nel classico stile di Snake</a>. Avevo gia pubblicato il codice sorgente su <a href="http://www.unitribu.net/java-codice-sorgente-dello-snake-04-di-traffykcom-vt271.html?highlight=">Unitribu</a> un forum universitario da me gestito ma che  stato accantonato da un bel po di tempo e ho deciso di rispondere all&#8217;unico commento ricevuto con una breve guida.</p>
<p>Per compilare il gioco visto che ho letto di alcune difficolt&agrave; vi descrivo la procedura passo passo da fare in <a title="Scarica Eclipse" href="http://www.eclipse.org/downloads/">Eclipse</a> 3.2.2.<br />
Una volta scaricato basta estrarlo e aprire la cartella, non necessita di installazione. Troverete all&#8217;interno della cartella Eclipse un file chiamato eclipse.exe facendo doppio click sopra potrete avviare (dopo aver selezionato una cartella per il workspace) Eclipse.<br />
Subito dopo andate su File &gt; New &gt; Project e scegliete Java Project poi cliccate su Next.<br />
Apparir&agrave; questa schermata:<br />
<img height="596" alt="eclipse1" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse1-1.png" width="508" /></p>
<p>Assicuratevi che in <strong>JRE</strong> sia selezionata almeno la versione <strong>1.5.0</strong> oppure come nel mio caso la versione 1.6.0. Poi cliccate sotto su <strong>Configure compilance&#8230;</strong></p>
<p><img height="273" alt="eclipse2" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse2.png" width="508" /></p>
<p>Il livello di compilazione deve essere impostato almeno su 5.0 altrimenti non si potranno usare le classi generiche previste da Java 5.0(e superiori). Date OK e alla richiesta successiva rispondete YES. Apparir&agrave; la finestra precedente date Next e poi Finish.</p>
<p><img height="226" alt="eclipse3" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse3.png" width="339" /></p>
<p>Ora vedrete nel Package Explorer la nostra bella cartella Giochi, cliccate su <strong>New Java Package</strong> (l&#8217;icona indicata nell&#8217;immagine).</p>
<p><img height="170" alt="eclipse4" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse4.png" width="245" /></p>
<p>Restate <strong>Giochi</strong> in source folder e date come nome del package <strong>snakeB_04</strong>. Questo sar&agrave; il risultato finale:</p>
<p><img height="55" alt="eclipse5" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse5.png" width="237" /></p>
<p>Cliccate ora su <strong>New Java Class</strong> e date un nome alla vostra classe.</p>
<p><img height="126" alt="eclipse6" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse6.png" width="314" /></p>
<p><img height="552" alt="eclipse7" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse7.png" width="439" /></p>
<p>Cliccate su Finish e si aprir&agrave; il vostro bel file Snake.java pronto da essere editato.</p>
<p><img height="125" alt="eclipse8" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse8.png" width="445" /></p>
<p>Cancellate tutto e incollate il codice sorgente contenuto in questo file <a href='http://www.traffyk.com/blog/wp-content/uploads/2007/06/snakejava.txt' title='snakejava.txt'>snake.java</a>. Poi dopo andate nel Package Explorer, cliccate con il destro su Snake.java e scorrete fino alla voce Run As &gt; Java Applet:</p>
<p><img height="421" alt="eclipse9" src="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse9.png" width="443" /></p>
<p>Vi verr&agrave; chiesto di salvare il programma, date Ok, il tempo di elaborare e codificare in Byte code il codice sorgente e verr&agrave; avviata l&#8217;applet che potrete testare.</p>
<p>Vi faccio presente che nell&#8217;applet ci sono molte imperfezioni e inoltre ho verificato la presenza di un bug abbastanza grave che fa crashare il gioco che non ho avuto tempo di sistemare, quindi se volete potete risolvere i problemi e rielaborare il tutto a vostro piacimento per&ograve; abbiate l&#8217;accortezza di inviarmi indietro la vostra versione modificata perch&egrave; cos&igrave; potr&ograve; imparare qualcosa da voi. Grazie.</p>
<p>THAT&#8217;S ALL!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.traffyk.com/blog/wp-content/uploads/2007/06/eclipse1.png"></a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2007/06/25/codice-sorgente-dello-snake-04-in-java-50/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rilasciato il codice sorgente Java dello SnakeB fatto da me.</title>
		<link>http://www.traffyk.com/2006/12/02/rilasciato-il-codice-sorgente-java-dello-snakeb-fatto-da-me/</link>
		<comments>http://www.traffyk.com/2006/12/02/rilasciato-il-codice-sorgente-java-dello-snakeb-fatto-da-me/#comments</comments>
		<pubDate>Fri, 01 Dec 2006 22:01:46 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[videogiochi]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2006/12/02/rilasciato-il-codice-sorgente-java-dello-snakeb-fatto-da-me/</guid>
		<description><![CDATA[Ho pubblicato il codice sorgente del gioco da me fatto in precedenza e pubblicato su questo sito sul forum di Unitribu.net, nella sezione Informatica, cos possiamo raccogliere le discussioni in un forum. Ecco qui il link: java-codice-sorgente-dello-snake-04-di-traffyk]]></description>
			<content:encoded><![CDATA[<p>Ho pubblicato il codice sorgente del gioco da me fatto in precedenza e pubblicato su questo sito sul forum di <a title="Unitribu.net - La Tribu Degli Studenti Casinari" href="http://www.unitribu.net/">Unitribu.net</a>, nella sezione Informatica, cos possiamo raccogliere le discussioni in un forum.</p>
<p>Ecco qui il link:</p>
<p><a href="http://www.unitribu.net/java-codice-sorgente-dello-snake-04-di-traffykcom-vt271.html">java-codice-sorgente-dello-snake-04-di-traffyk </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2006/12/02/rilasciato-il-codice-sorgente-java-dello-snakeb-fatto-da-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Il vero Snake! Appena finito di fare e corretto</title>
		<link>http://www.traffyk.com/2006/11/18/il-vero-snake-appena-finito-di-fare-e-corretto/</link>
		<comments>http://www.traffyk.com/2006/11/18/il-vero-snake-appena-finito-di-fare-e-corretto/#comments</comments>
		<pubDate>Sat, 18 Nov 2006 16:22:29 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[videogiochi]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2006/11/18/il-vero-snake-appena-finito-di-fare-e-corretto/</guid>
		<description><![CDATA[SnakeB 0.3 &#8211; Aggiornamento dalla versione precedente e implementazione della MORTE Molti di voi mi hanno detto che al mio Snake non si moriva mai, che era una palla e che non c&#8217;era sfizio..Beh io a tutti vi rispondo che avevo sempre sognato un gioco cos davvero un potente antistress per me! Inoltre visto che [...]]]></description>
			<content:encoded><![CDATA[<p><strong>SnakeB 0.3 &#8211; Aggiornamento dalla versione precedente e  implementazione della MORTE <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </strong></p>
<p>Molti di voi mi hanno detto che al mio Snake non si moriva mai, che era una palla e che non c&#8217;era sfizio..Beh io a tutti vi rispondo che avevo sempre sognato un gioco cos <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />   davvero un potente antistress per me! Inoltre visto che non sto mai con le mani in mano vi ho accontentato tutti e ho creato il classico Snake(escluso il fatto che attraversa i muri che mi piace un casino).</p>
<p>Cosa c&#8217; di nuovo? Allora, non potete pi far scontrare il serpente con se stesso, ne fare retromarcia, inoltre  stato aggiunto il punteggio con possibilit  di memorizzare il Record. Appena possibile rilascer un&#8217;ulteriore versione che permetter  di salvare i migliori punteggi in un database. Inoltre potete scrivere il vostro nome nella finestra che compare.</p>
<p>&Egrave; stato inoltre risolto un antipaticissimo Bug, che faceva bloccare Snake che sfociava in un Loop infinito, c&#8217; un altro errore durante il reset in caso di sconfitta meno fastidioso che non sono ancora riuscito a capire in quali casi si crea. Quindi se vi capita ditemi un po in quale situazione o magari mi postate uno screenShot. Grazie RAGAZZI</p>
<p>Per giocare cliccate con il mouse nel riquadro qui sotto, poi muovete i tasti direzionali!</p>
<p><applet width="500" height="500" codebase="http://www.traffyk.com/blog/wp-content/applets" code="snakeB_03.Snake.class" ></applet></p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2006/11/18/il-vero-snake-appena-finito-di-fare-e-corretto/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Lo Snake pi pazzo che c&#8217;!</title>
		<link>http://www.traffyk.com/2006/11/16/lo-snake-piu-pazzo-che-ce/</link>
		<comments>http://www.traffyk.com/2006/11/16/lo-snake-piu-pazzo-che-ce/#comments</comments>
		<pubDate>Wed, 15 Nov 2006 23:28:45 +0000</pubDate>
		<dc:creator>Traffyk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[videogiochi]]></category>

		<guid isPermaLink="false">http://www.traffyk.com/2006/11/16/lo-snake-piu-pazzo-che-ce/</guid>
		<description><![CDATA[SnakeB 0.2 &#8211; Il mio primo giochino cazzuto in Java Chi di voi non ha giocato al buon vecchio Snake?? Immagino tutti&#8230;ah ricordo ancora i megatornei dietro al banco del liceo con i cellulari allo Snake 1 e 2 della Nokia, hihihi quante ne abbiamo combinate(Catap t ricord record?? hiihihhi), naturalmente il sottoscritto li ha [...]]]></description>
			<content:encoded><![CDATA[<p><strong>SnakeB 0.2 &#8211; Il mio primo giochino cazzuto in Java <img src='http://www.traffyk.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </strong></p>
<p>Chi di voi non ha giocato al buon vecchio Snake?? Immagino tutti&#8230;ah ricordo ancora i megatornei dietro al banco del liceo con i cellulari allo Snake 1 e 2 della Nokia, hihihi quante ne abbiamo combinate(Catap  t ricord  record?? hiihihhi), naturalmente il sottoscritto li ha battuti tutti, e se si permettono di dire che non  vero abbuscano tutti quanti uno ad uno! ihihihi LOL. Ritorniamo a noi, questo Snake  un pochino particolare&#8230;Stufo di perdere ore ed ore per poi morire e ricominciare da capo ho sempre sognato di crearmene uno dove non si muore mai&#8230;.<strong>AVETE CAPITO BENE! QUI NON SI MUORE MAI!</strong> hihihih. Ma non  finita  qui&#8230;elenco brevemente le particolarit  di questo gioco:</p>
<ul>
<li>Snake attraversa i bordi e ricompare all&#8217;altra estremit ;</li>
<li>Snake si annoda su se stesso, fa le capriole, si attorciglia tutto quanto e non si affoga mai! hihihi;</li>
<li>Snake, e sentite bene questa, ha la RETROMARCIA! Basta invertire la direzione e il simpatico serpentello prima si contrae e poi va dall&#8217;altra parte!</li>
<li>Mantenendo il tasto premuto di direzione, il serpente raddoppia la velocit  di movimento! Nos Inside! (Come soprannominato da Pako! Grande!).</li>
</ul>
<p>Il gioco per funzionare necessita della Java Virtual Machine, aggiornata alla versione 1,5(o versione 5  la stessa cosa). Tecnicamente parlando questo gioco non si basa sulla classica(e molto dispendiosa) matrice NxN vista qualche post fa, ma su una lista a puntatori che memorizza tutte le posizioni dello Snake(e volendo si pu usare anche il classico ArrayList ma siccome lo sto studiando in Lasd, mi sono creato il TDA, tipo di dato astratto, da solo).</p>
<p>Per giocare cliccate con il mouse nel riquadro qui sotto, poi muovete i tasti direzionali!</p>
<p><applet width="500" height="500" code="snakeB.Snake.class" codebase="http://www.traffyk.com/blog/wp-content/applets"></applet></p>
]]></content:encoded>
			<wfw:commentRss>http://www.traffyk.com/2006/11/16/lo-snake-piu-pazzo-che-ce/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

