322px-Java LogoSalve ragazzi oggi ricominciata l’Universit… vediamo un po se riusciamo a studiare insieme… 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’articolo πŸ˜‰

Vi parler di un corso molto bello riguardante Laboratorio di Algoritmi e Strutture Dati (da ora in poi conosciuto con il tag LASD) nel quale vedremo come implementare in Java 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:

Una struttura dati un’entit usata per organizzare un insieme di dati all’interno della memoria del computer, ed eventualmente per memorizzarli in una memoria di massa. La scelta delle strutture dati da utilizzare strettamente legata a quella degli algoritmi, a tal proposito, solitamente si utilizza il concetto unificato di Algoritmi e Strutture Dati. La scelta della struttura dati influir inevitabilmente sull’efficienza degli algoritmi da utilizzare.

La struttura dati un metodo di organizzazione dei dati, quindi prescinde dai dati effettivamente contenuti. Ciascun linguaggio di programmazione offre strumenti, pi o meno sofisticati, per definire strutture dati, ovvero aggregare dati di tipo omogeneo o eterogeneo. Questi strumenti sono tipicamente componibili.

Pi formalmente, i linguaggi forniscono un insieme predefinito di tipi di dato elementari, e le strutture dati sono strumenti per costruire tipi di dati aggregati pi complessi.

L’operazione di costruire una variabile di un tipo di dato complesso detta “istanziazione”, e pu avvenire sia durante la compilazione del programma (compile time) sia durante la sua esecuzione (runtime).

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’astrazione dall’implementazione, dando vita al concetto di Struttura dati astratta o Abstract Data Structure (ADS).

L’articolo stato preso da Wikipedia, per leggere la parte mancante visitate la pagina Struttura dati e seguite un pochino tutti i vari collegamenti per avere maggiori informazioni.

A breve vedremo come implentare la nostra prima struttura dati astratta, una delle pi primitive e semplici ma forse anche una delle pi importanti che ancora oggi alla base di molte applicazioni…

Parler dello Stack e la sua implementazione in Java 5.0 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.

Un piccolo avvertimento per chi fosse interessato: sono necessari Java Se JDK 5 o superiore e possibilmente un ide di programmazione java, magari Eclipse 3.2 o superiore (come il nuovo Europa). Per ora tutto comincer tra breve a pubblicare le prime risorse πŸ˜‰

Commenti

26 commenti

TheKaneB · 1 ottobre 2007 alle 21:30

Bene, sar interessante leggere questi articoli! πŸ˜‰
Noi abbiamo gi trattato le strutture basilari in Pascal in Programmazione e Laboratorio, abbiamo implementato stack, liste, alberi e grafi con relativi algoritmi di ricerca, visita, ordinamento e manipolazione… ma quest’anno avr anch’io una materia specifica di algoritmi e strutture dati in C, molto ma molto pi approfondita!! Che bello, non vedo l’ora! πŸ˜€

stenet · 2 ottobre 2007 alle 09:00

Ma perch in tutte le universit fanno usare Eclipse?Io lo trovo scomodissimo!

Traffyk · 2 ottobre 2007 alle 10:06

Ciao Antonio magari ci scambiamo gli algoritmi bloggando…ehehe πŸ˜›
Oggi o domani dovrei riuscire a pubblicare i primi esercizi speriamo che non mi addormento sul pc come ho fatto ieri… hihihih

@Stenet
Tu cosa usi?? Io con Eclipse mi trovo molto bene comunque nessuno costringe ad usare Eclipse ma lo consiglia vivamente perch un IDE molto avanzato e completo… poi un progetto OpenSource ed finanziato da IBM… cos’altro volere di pi?? πŸ˜›

eyeonweb · 2 ottobre 2007 alle 13:57

chi il prof? Vaccaro/De Santis? πŸ˜‰

Danilo · 2 ottobre 2007 alle 14:37

Bene, almeno imparo qualcosina pure io. Basta che non mi fai fare i compiti πŸ˜‰

Cristiano · 2 ottobre 2007 alle 14:47

Noto che, nonostante il passare degli anni, i programmi dei corsi restano pi o meno sempre gli stessi (le universit dovrebbe aggiornarsi un p di pi soprattutto per ci che concerne le discipline informatiche che hanno un livello di fluidit superiore a quelle delle altre discipline scientifiche).
Per ci che concerne le definizioni tratte da Wikipedia, sono un p “leggerine”, nel senso che c’ qualche inesattezza (wikipedia non infallibile).
Sarebbe stato un ottimo esercizio, per te, descrivere tu le definizioni riportate: sono convinto che sei perfettamente in grado di farlo e anche con ottimi risultati …
Un saluto

phoenix · 2 ottobre 2007 alle 15:41

qualche cosa si fa anche a programmazione come ha detto TheKaneB. cmq sicuramente gli argomenti sono molto + dettagliati in questo esame.

annarita · 2 ottobre 2007 alle 16:31

@Raffaele: ed io cosa dovrei commentare in questa isola di informatici? Nulla! Mi resta soltanto la possibilit di farmi una larvata idea su qualcosa che mi manca e che mi sarebbe piaciuto fare, ma la vita si sa una sola e quindi non si pu pretendere……!

La variabile “istanziazione” mi affascina e pure il concetto ADS.
Non si potrebbe avere qualche nozioncina pi approfondita? Chiedo troppo?

annarita · 2 ottobre 2007 alle 16:46

@Raffaele: intendevo qualche nozioncina pi approfondita, ma sempre semplice semplice per utenti…..meno che principianti, praticamente al di sotto del piano terra!

Ho segnalato questo articolo nei post della settimana del mio blog.

Cristiano · 2 ottobre 2007 alle 17:09

@ Annarita: “instanziazione” una pessima traduzione dall’inglese (pessima perch letterale e non semantica) di un termine che indica molto semplicemente “creare un oggetto a run-time”, ovvero durante l’esecuzione di un processo (sia esso un programma o quello che vuoi tu).
L’oggetto pu essere una struttura dati o anche una semplice variabile.
Il termine inoltre viene usato massicciamente nella programmazione logica del 1 ordine: nel linguaggio Prolog ad es. il termine “istanziare una variabile” indica proprio creare a run time una struttura dati, questo perch in Prolog le variabili in realt sono puntatori ad oggetti complessi che possono anche autoreferenziarsi tra loro.
Tutto questo, oltre che per confonderti ulteriormente le idee (eheheh), serve solo per chiarirti che l’intrinseco fascino contenuto nel significato del termine effettivamente fine a se stesso πŸ˜‰
Comunque se hai bisogno di delucidazioni in merito (anche pi semplici πŸ˜‰ non esitare a chiedere …

TheKaneB · 3 ottobre 2007 alle 00:06

mamma mia ragazzi, non facciamo troppa confusione eh! altrimenti facciamo sembrare la programmazione come qualcosa per pochi “guru” eletti da forze astrali… mentre in realt si tratta soltanto di spiegare a quello zuccone di un computer come memorizzare le informazioni e come manipolarle, e bisogna pure spiegarglielo in modo idiot-proof perch altrimenti gli vengono i complessi di inferiorit e si deprime! ah, che brutte bestie i computer πŸ˜€

Traffyk · 3 ottobre 2007 alle 01:38

@Eyeonweb
Anche tu dell’Unisa?? πŸ˜€ Comuqnue ho De Santis per algoritmi e strutture dati, De Bonis invece per Laboratorio di algoritmi e strutture dati.

@Danilo
ho pubblicato l’articolo sullo stack, avrei voluto ripubblicare i quesiti fatti dalla prof e proposti come esercizi ma il tuo commento mi ha fatto desistere πŸ˜› ehehhe

@Cristiano
Ciao, beh si sa ed giusto anche che sia cos su alcune cose. Come pu sopravvivere un informatico o meglio un programmatore senza conoscere almeno le strutture di dati pi elementari?? Comunque in altre universit non fanno neppure Java, noi addirittura usiamo java 5.0 e quest’anno ci stato fatto anche accenno alla versione 6 fortunatamente ho una professoressa molto aggiornata e brava, anche se pretende molto all’esame (mi sembra logico πŸ˜‰ ). Riguardo a wikipedia si hai perfettamente ragione scusami ma la mancanza di tempo e la fretta di scrivere il primo articolo hanno fatto questo scherzetto, inoltre volevo cercare di dare una definizione quanto pi “terra terra” possibile, cosa che io non sono capace di spiegare perch ho il vizio di capire certi concetti molto bene ma di non saperli spiegare a persone che non hanno mai visto un po di programmazione, in effetti se facessi il professore sarei pessimo πŸ˜‰ ehehe

@Phoenix
Infatti da noi stato diviso il corso di algoritmi e strutture dati in due corsi con tanto di ore raddoppiate, uno prettamente teorico e dedicato alla pseudocodifica, tempi di esecuzione e ricerca dei vari casi…ecc…ecc… mentre l’altro di laboratorio per implementare su campo gli algoritmi trattati e anche qualcosina di pi.

@Annarita
Eheheh per una volta invertiamo le parti, quando parli di matematica allora cosa devo dire io?? ihihih
Comunque per nozioni pi approfondite ho linkato il libro utilizzato da me per il primo approccio alla programmazione in Java nell’articolo nuovo… riguardo a “instanziazione” ehehe hanno fatto davvero una pessima traduzione e ringrazio @Cristiano per la disponibilit mostrata… Io solitamente dico “creare una variabile istanza” oppure “istanziare…” come citato da Cristiano…
Volendo abbassarci di livello potremmo dire inizializzare una variabile, ma questo, oltre che tecnicamente scorretto, il livello successivo (avviene dopo), prima ancora invece abbiamo la definizione del tipo di dato, in java possiamo definire e instanziare una variabile allo stesso tempo…meglio che non proseguo che mi imbroglio io da solo figurati tu πŸ˜‰

@TheKaneB
pi che spiegarela programmazione al computer (quello sa come interpretarla) bisognerebbe cercarla di spiegare alle persone che sono al primo contatto con questo mondo…
Io su questo mi sento perfettamente incapace… non so neppure spiegare un ciclo for a delle matricole (infatti non sono stato capito) perch io do certe cose proprio per scontate mentre altri invece hanno bisogno di qualche spiegazione in pi….
Un po come avviene per la matematica, ecco la sono negato e ho bisogno anche dei minimi passaggi senn mi perdo…sembrer strano ma cos per me πŸ™

eyeonweb · 3 ottobre 2007 alle 10:22

@traffyk: sono stato studente Unisa. Fortunatamente l’ho anche finita πŸ˜‰

Traffyk · 3 ottobre 2007 alle 23:22

Beato te….. πŸ˜›

annarita · 4 ottobre 2007 alle 01:15

@Cristiano: grazie per le delucidazioni e per il link…..chiss, mai dire mai. Sono una curiosa per natura e la programmazione mi affascina…. letteralmente. …e anche se “l

Traffyk · 4 ottobre 2007 alle 13:46

hehehe afferrato in pieno Annarita, mai avuto lo stesso prof per pi di un anno di seguito… non so per quale motivo ma li cambiavano sempre… e in peggio pure πŸ™

Comunque pi bella la programmazione, la c’ vita ognuno si inventa i programmi che vuole e come vuole, matematica ormai quella πŸ˜€ ehehhe

TheKaneB · 5 ottobre 2007 alle 09:35

“matematica ormai quella πŸ˜€ ehehhe”

quella scolastica si, quella dai tempi di pitagora! πŸ˜€
ma la “MATEMATICA” con tutte le lettere maiuscole qualcosa che rasenta la poesia… voglio farti incuriosire un po’!!
cerca su wikipedia (meglio quella inglese) questi argomenti e ti accorgerai che la matematica sa anche essere sexy! πŸ˜€
L’ultimo teorema di Fermat (Sembra una cosa da 5 elementare, ma….)
Teorema della scimmia infinita (su questo teorema si basa l’inefficiente quanto esilarante algoritmo di ordinamento Stupid Sort)
Congettura di Goldbach (una sega mentale allo stato puro)
Paradosso della stanza cinese (tratta di intelligenza artificiale, percezione e cognizione della realt)

Sono sicuro che ti incolleranno per ore davanti al monitor πŸ˜€

annarita · 5 ottobre 2007 alle 13:08

@traffyk @TheKaneb: Antonio mi ha preceduta….togliendomi le parole di bocca.
L”informatica affascinante, l’ho gi detto. Io ne sono attratta irresistibilmente come la falena dalla lampada accesa……
Ma la matematica….ah la matematica non sempre quella. La matematica poesia, come dice Antonio, musica …. creativit allo stato puro.
Mi dispiace Raffaele, che tu non sia ancora riuscito a coglierne la bellezza e la perfezione. Per…non mai troppo tardi!
Pensa che io ….ma leggiti questo post e capirai. E non dirmi che sto facendo dello spam: il link giustificatissimo
http://www.lanostramatematica.splinder.com/post/12467263#comment

bye:))

Traffyk · 5 ottobre 2007 alle 16:52

Antonio si conosco il principio della stanza cinese ma non pensavo fosse matematica, su questo tema feci un tema in classe alle superiori πŸ˜€ ehehe

Riguardo gli altri argomenti mi documenter con piacere, per agli esami certo non potr portare questa roba πŸ˜‰
Ti elenco i miei esami, nessuno dei quali superati e sinceramente non ho mai provato a studiarli:
Matematica Discreta
Analisi Matematica
Calcolo delle Probabilit e Statistica Matematica
Ricerca Operativa
Analisi Numerica
Naturalmente ogni corso costruito sulle basi del precedente.. i miei vorrebbero farmi fare delle ripetizioni private ma mi sono rifiutato categoricamente perch oltre al costo esoso che comportano sono sicuro che se mi mettessi di buona volont saprei cavarmela da solo (in effetti non ho mai aperto un libro di matematica) ma io ho un difetto molto grave.. e qui rispondo anche ad @Annarita:
quando incontro una materia che non riesce a piacermi mi impunto e tendo ad abbandonarla soprattutto quando pi ci penso e ripenso e non trovo alcuna utilit nel lavoro che vorrei fare. Vorrei, almeno spero, diventare un esperto di internet e comunicazione e tutto ci che ne concerne…quindi diciamo che anche certi tipi di programmazione molto avanzata non fanno per me ma quella fortunatamente mi piace. Ho studiato con molto piacere materie come economia, diritto, marketing, ecommerce, reti e molto altro perch appunto strettamente legate alle mie ambizioni…alcune delle quali neppure previste dal mio corso ed ogni giorno anche se ho gia superato questi esami continuo a rivedermele e aggiornarmi… Di matematica io penso che risolvere problemi comuni sia gia molto per quello che mi serve, al massimo poche funzioni, metodi risolutivi, matrici e qualcosina di pi avanzato mi sta bene e me la cavo senza problemi ma quando comincio a vedere tutti quei simboli strani per giunta senza che i prof si degnino di spiegare cosa significhino.. allora ovvio che uno prende proprio una posizione contraria su tali argomenti.

Mah prima o poi mi inventer qualcosa πŸ˜‰ Intanto sto lavorando anche un pochino e aspiro a stabilizzare il lavoro, che comincio a pagarmi gli studi e anche togliermi qualche soddisfazione πŸ˜‰

Eheheh grazie per il supporto a tutti e due πŸ˜›

TheKaneB · 5 ottobre 2007 alle 21:29

Innanzitutto, in bocca al lupo e crepi stecchito secco morto stramorto!! ^_^ Capisco perfettamente che cosa vuol dire impuntarsi su qualcosa che proprio non vuole “scenderti” nello stomaco pi di cos! D’altro canto io sono affascinato pi dal funzionamento a basso livello dei computer (non per niente mi dedico nel tempo libero al kernel hacking), la mia informatica preferita quella che si occupa di architetture hardware, sistemi operativi e calcolo numerico. In questa prospettiva diventa anche naturale capire la mia predisposizione verso la matematica e la fisica, che sono i principi alla base rispettivamente dell’informatica e dell’hardware che tanto mi appassionano!

Traffyk · 6 ottobre 2007 alle 04:45

Eh si Tony, in effetti da poco che ti sei lasciato trasportare da internet e l’aspetto sociale di essa che si pu avere con blog… eeheh la colpa forse anche mia che ti ho tolto tempo prezioso alle cose in cui riesci meglio.. ma con il blog neppure stai scherzando per!!! πŸ˜›

Crepi il lupo schiacciato sotto un TIR!! heheheh

Ciao e grazie di tutto come sempre, sei un amicone πŸ˜€

enzu · 11 ottobre 2007 alle 18:41

perche non posti anche eventuali esercizi sulle strutture dati?

Traffyk · 11 ottobre 2007 alle 23:49

Ciao Enzu
Uhm esercizi? Non ho le dispense della professoressa altrimenti avrei pubblicato direttamente quelle, gia tanto se riesco a pubblicare le strutture dati implementate completamente e perfettamente funzionanti, non ce la faccio a pubblicare anche esercizi perch io non li svolgo mai a dirti la verit πŸ™‚

Marcello Cannarsa · 8 novembre 2007 alle 19:13

Ciao Raffaele, anche noi stiamo facendo Algoritmi e Strutture Dati e Laboratorio Di Algoritmi e Strutture Dati all’Unimol – Informatica, per non tocca argomenti di linguaggi di programmazione (C++,Java,ecc.) lavoriamo solo su concetti logico-matematico e sui tipi astratti facendo uso del normale pseudocodice e della complessit

Traffyk · 9 novembre 2007 alle 17:13

Ciao Marcello, da quanto tempo non ci si sente! Beh penso che comunque prima o poi avrai a che fare anche in ambito pratico con queste cose che fidati sono molto pi belle della teoria πŸ˜€

Marcello Cannarsa · 15 novembre 2007 alle 13:17

Hai ragione!

I commenti sono chiusi.

%d blogger hanno fatto clic su Mi Piace per questo: