Antonio Frances... 的个人资料Antonio Francesco a.k.a....日志列表网络 工具 帮助

Antonio Francesco a.k.a. Cerberus

MSN Address: Conan_Cerberus(at)hotmail(dot)it {mangled to prevent spamming}

Sardella Antonio Francesco

职业
地点
兴趣
Mi chiamo Antonio, sono un ragazzo semplice appassionato di informatica a cui piace confrontarsi con il mondo esterno. Credo molto nell'amicizia e mi danno estremamente fastidio le persone false e che ti pugnalano alle spalle. Sono diplomato in Informatica Industriale (I.T.I.S. "G. Giorgi" di Brindisi) e frequento il corso di Ingegneria Informatica al Politecnico di Torino. Il tempo libero mi piace passarlo in palestra o con gli amici ma quando non posso mi "sfogo" con i videogiochi!!! Ho una buona conoscenza nel campo della programmazione (C/C++, Java, Html, CSS, Visual Basic, Assembler 8086, Ruby, PHP, SQL).
Sono appassionato di calcio e tifo per la mitica Juventus.
In generale ascolto quasi tutti i generi musicali ma il mio preferito è il Rap/Hip Hop straniero soprattutto... I miei cantanti preferiti sono: 50 Cent, Dr. Dre, Eminem, Gangsta Dre, Notorius B.I.G., Snoop Dogg, The Game, Tupac, Xzibit; ma ne ascolto anche tanti altri come Compton's Most Wanted, Locura Terminal, Wu-Tang Clan, ecc.

www.myspace.com/fulaki

Legge Levi-Prodi

Salviamo i blog italiani contro la legge Levi-Prodi

 

5月25日

Addio TeenAge!!!

Non sono più un teenager...

20 anni

Grazie a tutti quelli che mi hanno fatto, mi stanno facendo e mi faranno gli auguri!!!
4月26日

Uso (e abuso) di Internet: le nozze online

Riporto un articolo tratto recentemente dal sito del Corriere della Sera disponibile anche da questo link:

IL SINGOLARE MATRIMONIO CIVILE DI DUE GIOVANI

Dicono sì in webcam: ecco le nozze online

Lei a Nizza, lui a Shanghai, entrambi brasiliani: sposati via Internet da un funzionario in linea da San Paolo

PARIGI – Mercoledì, Sarah Stutz e Rafael Sà Freire si sono sposati. Ma non è stato un matrimonio qualsiasi. I due brasiliani infatti sono convolati a nozze grazie a un computer portatile e una webcam, superando grazie a Internet le distanze che li separano: lei vive a Nizza, lui a Shangai. Un matrimonio online in piena regola e forse anche il primo della storia.

DISTANZA - Sarah, 26 anni, grafica, si era trasferita in Costa Azzurra, iscrivendosi ad un Master in Comunicazione, per essere più vicina al fidanzato, pubblicitario emigrato a Londra. Una promozione a Shangai però ha complicato la situazione. “La distanza – ha raccontato la sposa novella a Nice Matin – cominciava a pesare. Ho chiesto il visto per andare in Cina, ma i tempi erano lunghissimi. L’unica era sposarsi, ma non sapevamo né dove né quando”.

INTERNET – Ostacoli abbattuti grazie ad Internet. E il sogno è diventato virtualmente realtà. Attraverso tre continenti. In Brasile, i familiari della coppia hanno fornito i documenti richiesti. E mercoledì, Sarah da Nizza, Rafael da Shangai e un funzionario civile dal comune di San Paolo si sono connessi alla rete e via webcam hanno celebrato il matrimonio. Unione valida a tutti gli effetti.

FESTA – Gli sposi novelli hanno pronunciato il fatidico si attraverso lo schermo del computer, in compagnia, virtuale, di amici e parenti. Ma si ritroveranno fisicamente solo fra quattro mesi: “Faremo una grande festa in Brasile”. E quella sarà reale quanto la prima notte di nozze.

Alessandro Grandesso


Ormai oggigiorno se ne sentono di tutti i colori e perciò non mi stupisco più nel leggere notizie come questa... Colgo l'occasione per parlarne ispirato anche da alcune discussioni a riguardo avute con "addetti ai lavori" come me ed anche con gente normale. Innanzitutto ritengo sia necessario ricordare le funzionalità di Internet e fare delle dovute precisazioni quando si esamineranno i vari casi.

Partiamo col dire che Internet altro non è che un insieme di reti di computer, interconnesse tra loro, estesa in tutto il mondo e pubblicamente accessibile che trasmette dati instradando pacchetti tramite lo standard Internet Protocol (IP). [read more] Pertanto si tenga bene a mente che qualsiasi dato che debba passare da una parte all'altra deve essere necessariamente trasformato in "qualcosa di elettrico" (scusate l'espressione infelice tecnicamente, ma è proprio "terra terra" per far capire tutti!!!). Certo negli anni la presenza di questa rete ci ha, davvero molto, semplificato la vita!!! Si pensi ad esempio a tutti i servizi che giornalmente utilizziamo (web, e-mail, chat varie, ecc.) e che ci permettono di essere sempre aggiornati e di poter comunicare da una parte all'altra del mondo; come tutte le cose, però, ci sono i pregi ed i difetti. Il "difetto" più grande, a mio avviso, è quello che rende tutte queste tecnologie, sempre e comunque, delle tecnologie artificiali; fin qui sembrerebbe che ho scoperto l'acqua fredda perchè anche un bambino, ormai, è cosciente che il computer è una COSA e non un essere vivente!!! Quando sorge dunque il problema? Quando entra in gioco l'unica cosa (insieme all'anima, ma non voglio fare discorsi filosofici...) che ci rende umani: il sentimento. Con la parola "sentimento" mi riferisco alla classe generale da cui poi sono derivate le varie istanze quali l'amicizia, l'amore e tutti gli altri... Qundi, con il termine "sentimento" si intende generalmente la capacità di provare sensazioni ed emozioni in modo consapevole. I sentimenti sono l'espressione di ciò che ci circonda e che agisce direttamente o indirettamente su di noi. La maggior parte dei sentimenti è "controllata" dal nostro subconscio e perciò ogni elemento esterno ci affligge anche internamente, cioè una catena logica viene innescata dal nostro subconscio "maturando" così risposte logiche non esprimibili con parole ma che si sviluppano all'interno della nostra mente come concetti. [read more] Quindi da ciò si evince che i concetti sviluppati nella nostra mente non possono essere (ad oggi) trasformati tramite un qualsiasi algoritmo in un qualsiasi segnale analogico/digitale che possa essere in un qualche modo caricato nella rete delle reti per essere trasferito. Ma come è possibile comunque trasferire emozioni e sentimenti tramite Internet (perchè sembra un controsenso, ma è possibile farlo)? Tramite l'interazione uomo-macchina. È un concetto difficile da spiegare e da capire, ma vediamo di fare un piccolo sforzo, io e voi. Volendo immaginare una specie di "protocollo dei sentimenti" che trasferisce un sentimento da un nodo A ad un nodo B, si può immaginare, sopra ai normali livelli diciamo "tecnici" che trasportano un messaggio di testo o una foto da una parte all'altra, un altro livello interpretativo affidato all'entità umana stessa. Facciamo un esempio. La persona A invia un semplice messaggio di testo alla persona B, come si può stabilire il sentimento che caratterizza il suddetto messaggio? Innanzitutto se c'è un sentimento ritengo ipotesi obbligatoria che le due persone SI CONOSCANO, perchè altrimenti non c'è senso!!! Dunque c'è come una specie di crittografia ulteriore con una sorta di "chiave" che è la fiducia tra i due. Dunque in un rapporto di amicizia STABILITO A PRIORI, se la persona A invia un messaggio di testo ad una persona B (astraendoci da qualsiasi mezzo di comunciazione usato) alla persona B farà piacere (o anche dispiacere ricevere il messaggio, a seconda del contenuto) esaminando il fatto che è stato ricevuto da una persona di cui si conosce l'identità, di cui si conosce in una determinata quantità il modo di pensare, insomma da cui si ha una provenienza sicura. Infatti se pensiamo a quando qualcuno ci contatta sotto mentite spoglie, ci rendiamo conto che il nostro organismo si mette in allarme perchè la "chiave" che sembra trasparire dal messaggio non combacia con il nostro normale rapporto di amicizia; lo capiamo da piccoli segni, da come si esprime, dalle idee che mostra e, perchè no, anche da come scrive.

Ma tutto questo cosa c'entra con il matrimonio on-line e tutto il resto?! E qui viene il bello... Quanto detto fino ad ora è solo, diciamo, come avviene l'interazione tra esseri umani tramite Internet, ora occorre esaminare un altro punto: quando effettivamente può essere ritenuto affidabile il trasferimento di un sentimento? Partendo proprio dall'articolo, che parla di matrimonio e quindi del sentimento amore, è possibile distinguere nettamente due casi: lo scambio della fantomatica "chiave" introdotta in precedenza ed invece la sua composizione man mano nel "rapporto digitale". Dei due, il primo è quello giusto ed il secondo è quello sbagliato. Pertanto il matrimonio civile on-line lo ritengo comunque una cosa valida e sono certo che c'è amore vero alle spalle (per quanto magari questo possa essere finito temporalmente parlando = divorzio, ma speriamo per loro di no); e questo perchè?! Semplice!!! Perchè le due persone si sono DAVVERO CONOSCIUTE FISICAMENTE, stabilendo un'interazione di sentimenti e di fiducia e scambiando la precedente "chiave", perchè l'ipotesi obbligatoria fatta in precedenza che deve sussistere c'è e come!!! Nel caso in cui due individui creino in maniera digitale la chiave volta per volta, siamo in presenza di un'assurdità!!! Insomma la cronaca mi da ragione: persone ingannate, violentate e sfruttate, perchè l'altro interlocutore si spacciava per un altro, magari di un altro sesso e cose simili!!! Questo è il lato oscuro della tecnologia!!! Naturalmente bisogna considerare le dovute eccezioni; la più grande stà proprio nella differenza tra amicizia ed amore. Diciamo che l'amicizia ha dei requisiti più bassi che le due persone devono soddisfare, già con l'amore si va in terreno minato. Per chi non l'avesse ancora capito io mi riferisco a tutte quelle orde di teenager (ma purtroppo non solo) che si trovano i/le fidanzatini/e in Internet e poi alla fine se la prendono sempre in quel posto, perchè l'amore è una cosa seria di monopolio umano e non della macchina!!! Se poi abbiamo la concezione che l'amore produce a livello biochimico le stesse reazioni della cioccolata, be' a questo punto va bene tutto!!!

News degli ultimi periodi sono quelle che affermano lo studio sulla riproducibilità e sulla condivisione di sensazioni, sentimenti, esperienze e ricordi fino all'effettiva copia su supporti informatici del cervello umano (cercate su Internet, che si trova tanta roba, più o meno attendibile e/o fantascientifica, usate la vostra testa per selezionarla, come al solito) per gli scopi più disparati. Tralasciando il fatto che vedo a breve una divisione del mondo informatico tra "obiettori di coscienza" e non, e francamente anche lì io sono tra i "moderati" perchè ritengo che lo scopo medico sia una cosa e la condivisione dei cazzi miei (scusate l'espressione colorita), per realtà virtuali o robe simili, sia un'altra; poi come al solito ognuno è libero di condividere ciò che vuole, ma non posso fare a meno di pensare che anche lì si potrebbe speculare e "fregare" (come al solito) ingannando la persona che si sottopone al processo di copia dei dati mentali e sottraendole dati sensibili la cui definizione legale andrà a modificarsi nel tempo col progredire della tecnologia... In conclusione ritengo che i sentimenti debbano rimanere lì, dove e come sono e non si debba distorcerli troppo tramite l'uso della tecnologia, perchè si avrebbero solo lati negativi. Perciò si ai fidanzati ed agli amici lontani che usufruiscono dei servizi di comunicazione moderni per sentirsi più vicini, ma decisamente NO alle "coppiette" che si formano, magari su qualche mondo virtuale come Second Life, senza essersi mai visti PRIMA e che ritengono di essere Romeo e Giulietta. Il mio è un appello a questa gente affinchè possa aprire gli occhi: per favore non forzate la tecnologia a fare quello per cui non è nata (ve lo consiglia qualcuno che pochissime cose che ci sono dietro le sa), perchè non sappiamo la mente umana a quali abomini e a quali blasfemie potrebbe spingerci, perciò fatevi gli avatar su Second Life, chattate, conoscete gente, ma non mischiamo l'amore (se davvero ancora esiste) ed i sentimenti con le caramelle. E poi come dissi ad una mia amica (ironia della sorte conosciuta in chat, ma perchè si era rivolta a me per un favore, storia lunga) mentre parlavamo di cose del genere sulle nuove generazioni: "Io vorrei che la mia ragazza si innamorasse di me mentre la guardo negli occhi, non certo mentre fissiamo lo schermo di un PC..."; se è vero che gli occhi sono lo specchio dell'anima: guardiamoci dentro, non fissiamo solo il nickname di un programma di messaggistica...

Naturalmente io ho espresso solo le mie convinzioni, le convinzioni di un piccolo "addetto ai lavori" tecnologici che vuole solo fare chiarezza tra quello che per lui è giusto e quello che per lui è sbagliato nel mondo digitale; siete liberi di pensarla diversamente, anzi, DOVETE pensarla diversamente, perchè solo così possiamo instaurare un dialogo costruttivo per crescere tutti insieme. È questo il migliore modo per utilizzare Internet: conoscere gente, per imparare e confrontarsi sapendo sempre pensare con la propria testa ed analizzare e distinguere il bene ed il male, per vedere se davvero sono tali. Sono curioso di sapere se questo mio post smuoverà le acque, di solito non commenta quasi nessuno, comunque potete prendermi per pazzo oppure no: se vorrete commentare bene, ne parleremo, sennò ciccia, io sentivo di doverlo scrivere, poi fate come vi pare. Siete liberi!!! :-)

Naturalmente se dovete commentare, siate educati (pena la censura) anche se siete di opinione contraria alla mia. Tengo a specificare che il mio post NON È RIVOLTO CONTRO NESSUNO, io parlo solo in generale e se avete la coda di paglia non è colpa mia (molto probabilmente neanche lo so...); se comunque volete attuare le vostre ritorsioni personali si prega di parlarmi in altro luogo, non qui... Sennò potreste spacciarvi per chiunque, per l'appunto, e non vale, dovete sostenere una lotta verbale con me, sennò è troppo facile!!! :-D
4月25日

Spot antipirateria

Ieri mattina ero appena tornato a casa dal barbiere (persona squisita con la quale mi piace sempre parlare di politica ed attualità tutte le volte che ci vado), accendo la televisione (visto che a Carovigno ne sono dotato...) e la mia attenzione viene attirata da uno spot antipirateria. Purtroppo l'ho trovato solo in inglese su YouTube, ma comunque è questo qui:

   

In pratica tradotto dice: "Ogni volta che usi software illegale, stai finanziando il crimine organizzato. Il crimine organizzato è molto riconoscente...". Che cosa?! Ma, io mi domando, si rendono conto di cosa dicono nello spot?! Da notare che è una "pubblicità progresso" patrocinata dal Ministero!!! Facciamo un piccolo esempio tratto dal mio passato recente (tanto me ne sbatto se uso software illegale...), anche se userò il tempo presente: io ho un esame di Calcolo Numerico da 3 crediti di merda all'università e mi serve il programma chiamato MatLab sennò l'esame non si passa dato che devo imparare il funzionamento e l'utilizzo del suddetto programma. Stò benedetto MatLab costa, perciò mi faccio passare la copia piratata (tra l'altro gratis); per questo io e quelli che me l'hanno passato siamo "come" la criminalità organizzata e ciò implica che io e loro in un certo senso siamo parte di questa criminalità organizzata. Quindi io per passare un esame, ironia della sorte: di Ingegneria Informatica, sono paragonato a quelli che hanno ucciso Falcone e Borsellino?! Sono paragonato a quelli che sciolgono le persone nell'acido?! A quelli che si arricchiscono tramite droga e prostituzione?! Ma io adesso vorrei cortesemente sapere chi sono i COGLIONI che hanno: ideato, realizzato e permesso di mandare in onda questo spot ridicolo!!! Io non ci capisco di materie legali, ma secondo me ci sarebbero gli estremi per denunciare stì tizi perchè sembra che per la copia pirata dell'ultimo programma di merda che ti conteggia le caccole che ti scendono dal naso, ti sbattono dentro per concorso esterno in associazione a delinquere di stampo mafioso (o come diavolo si chiama)... Vergognatevi a pubblicare queste cagate, e pensate invece ad incentivare l'uso del software libero, che per una copia pirata non muore nessuno!!!
Questa gran cagata, dunque, si unisce a quella precendente delle copie illegali dei film in DVD, disponibile qui, che poi è quella che ti proiettano contro la tua volontà quando vai al cinema o quando compri un DVD LEGALE!!! Che poi qualche altra persona più in vista di me aveva già sputtanato... Io mi chiedo dove andremo a finire... Mi viene da piangere...
Powered by YouTube
3月7日

Algoritmi di ordinamento semplici applicati ai vettori unidimensionali e loro complessità computazionale

Introduzione

Uno dei principali problemi dell'informatica, è quello dell'ordinamento di una notevole quantità di dati. Per questo, durante gli anni, la comunità scientifica informatica ha studiato e stabilito alcuni algoritmi che consentono di risolvere il problema in un modo più o meno efficiente, ma comunque mantenendo un grado di efficienza abbastanza alto. Tra gli algoritmi più semplici ci sono sicuramente quelli chiamati algoritmi di complessità quadrata, il cui nome è dovuto al fatto che essi performano N² operazioni per ordinare un vettore di N elementi. Gli algoritmi saranno affrontati sui vettori di numeri interi e come ordinamento crescente ed usufruendo del linguaggio C per la loro reale implementazione, ma è intuibile che possono essere portati ad un livello di astrazione tale da poterli personalizzare a seconda dei bisogni e delle situazioni. È doveroso ricordare che tutti gli algoritmi trattati sono algoritmi di ordinamento di tipo "in place", cioè che non richiedono quindi al processo di chiedere al sistema operativo l'allocazione di ulteriore memoria.
Gli algoritmi di complessità quadratica che tratteremo sono i seguenti:
  • Selection sort conosciuto in italiano come ordinamento per selezione.
  • Insertion sort conosciuto in italiano come ordinamento per inserzione.
  • Exchange sort conosciuto in italiano come ordinamento per scambio o conosciuto anche con il nome di "Bubble sort".



Selection sort

Il selection sort parte dal pressuposto di dividere il vettore (durante la sua esecuzione) in due parti: la sequenza ordinata e la sequenza da ordinare. In particolare seleziona il numero minore nella sequenza di partenza e lo sposta nella sequenza ordinata; di fatto la sequenza viene suddivisa in due parti: la sottosequenza ordinata, che occupa le prime posizioni dell'array, e la sottosequenza da ordinare, che costituisce la parte restante dell'array. L'algoritmo è di tipo non adattivo, ossia il suo tempo di esecuzione non dipende dall'input ma dalla dimensione dell'array.
Una funzione C che realizzi tale algoritmo su un array di nome vettore e di dimensione n è la seguente:
void selectionSort(int vettore[], int n)
{ int i, j, posMin, tmp; for(i = 0; i < n - 1; ++i) { posMin = i; for(j = i + 1; j < n; ++j) if(vettore[j] < vettore[posMin]) posMin = j; tmp = vettore[i]; vettore[i] = vettore[posMin]; vettore[posMin] = tmp; } return; }



Insertion sort

L'insertion sort parte dal pressuposto di dividere il vettore (durante la sua esecuzione) in due parti: la sequenza ordinata e la sequenza da ordinare. In particolare seleziona il primo elemento della parte da ordinare e scorre la parte già ordinata tentando di inserirlo nella posizione giusta con una serie di spostamenti.
Una funzione C che realizzi tale algoritmo su un array di nome vettore e di dimensione n è la seguente:
void insertionSort(int vettore[], int n)
{
int i, j, val;

for(i = 1; i < n; ++i)
{
val = vettore[i];
j = i - 1;
while(j >= 0 && vettore[j] > val)
{
vettore[j + 1] = vettore[j];
j--;
}
vettore[j + 1] = val;
}

return;
}



Exchange sort o "Bubble sort"

L'exchange sort non è un algoritmo molto efficiente, ma in compenso è molto semplice soprattutto in ambito didattico. La singola iterazione dell'algoritmo prevede che gli elementi dell'array siano confrontati a due a due, procedendo in un verso stabilito. Il nome "Bubble sort" dell'algoritmo è dovuto al fatto che, durante l'applicazione del procedimento, i valori vengono spostati all'interno dell'array con una dinamica che ricorda il movimento delle bollicine in un bicchiere di champagne. In particolare, alcuni elementi attraversano l'array velocemente (come bollicine che emergono dal fondo del bicchiere), altri più lentamente (a differenza di quanto avviene nel caso del bicchiere di champagne, tuttavia, alcuni elementi salgono ma altri scendono). Una variante è quella chiamata "Shaker (o cocktail) sort"
Una funzione C che realizzi tale algoritmo su un array di nome vettore e di dimensione n è la seguente:
void exchangeSort(int vettore[], int n)
{
int i, j, val;

for(i = 0; i < n - 1; ++i)
{
for(j = 0; j < n - 1 - i; ++j)
{
if(vettore[j] > vettore[j + 1])
{
val = vettore[j];
vettore[j] = vettore[j + 1];
vettore[j + 1] = val;
}
}
}

return;
}
A volte per evitare che si entri nella condizione if quando il vettore è ordinato si usa un flag chiamato goOn:
void exchangeSort(int vettore[], int n)
{
int i, j, val, goOn;

goOn = 1;
for(i = 0; i < n - 1 && goOn == 1; ++i)
{
goOn = 0;
for(j = 0; j < n - 1 - i; ++j)
{
if(vettore[j] > vettore[j + 1])
{
val = vettore[j];
vettore[j] = vettore[j + 1];
vettore[j + 1] = val;
goOn = 1;
}
}
}

return;
}



Prestazioni degli algoritmi di ordinamento

Ecco una tabella con le prestazioni degli algoritmi di ordinamento visti fino ad ora:


MIN AVE MAX
INSERTION Comparison = n - 1 (n² + n - 2) / 4 (n² + n) / 2 - 1
Move = 2(n - 1) (n² + 5n - 6) / 4 (n² + 3n - 4) / 2
SELECTION Comparison = (n² - n) / 2 (n² - n) / 2 (n² - n) / 2
Move = 3(n - 1) 3(n - 1) 3(n - 1)
EXCHANGE Comparison = (n² - n) / 2 (n² - n) / 2 (n² - n) / 2
Move = 0 (n² - n) * 0.75 (n² - n) * 1.15



Conteggio del tempo di ordinamento di vettori casuali

Per poter avere un'idea su quanto ci impiegano i vari algoritmi di ordinamento ad ordinare un vettore, è utile scrivere un programma che conti questo tempo sul proprio computer.

Misura del tempo

In C è possibile utilizzare delle funzioni per campionare un tempo contenute nella libreria time.h. In particolare è necessario focalizzare l'attenzione sulla funzione clock() e sulla costante CLOCKS_PER_SEC proprie di questa libreria. Pertanto per calcolare il tempo tempo che ci impiega una determinata porzione di programma è necessario scrivere qualcosa del genere:
#include <time.h>
.
.
.
float t0, t1, tempo;
.
.
.
t0 = ((float) clock()) / CLOCKS_PER_SEC;
.
.
.
/* Porzione di programma di cui si vuole calcolare il tempo. */
.
.
.
t1 = ((float) clock()) / CLOCKS_PER_SEC;
tempo = t1 - t0;
.
.
.

Generazione di numeri casuali

Affinché il calcolo del tempo sia veritiero bisogna operare su array di grandi dimensioni, perciò può risultare troppo difficile inserire manualmente dei valori nell'array; per questo risulta utile utilizzare le funzioni srand e rand della libreria stdlib.h. In particolare la funzione rand ritorna un intero pseudo-casuale compreso tra 0 e RAND_MAX che è uguale a 32767. La funzione srand rende, tramite l'aggiunta di un seme, l'estrazione di un numero totalmente casuale.

Programma per la rilevazione dei tempi di ordinamento dei vari algoritmi

Un programma che visualizza i tempi di ordinamento dei vari algoritmi operanti su un vettore di numeri reali molto grande è il seguente:
/* Si scriva un programma in linguaggio C in gado di:
* definire una costante intera N arbitrariamente grande (#define N ...)
* generare casualmente un vettore di N valori reali
* ordinare (per ordine numerico crescente) tale vettore con gli
algoritmi di selezione (selection sort), inserzione (insertion sort)
e scambio (exchange sort o bubble sort)
* valutare le prestazioni di tali algorimi misurandone il tempo di
esecuzione al crescere di N.

Osservazioni:
* Si consiglia di generare (casualmente) il vettore e di farne una
copia in un vettore ausiliario prima di effettuarne l'ordinamento.
In questo modo e' possibile valutare gli algoritmi di ordinamento
esattamente sulla stessa istanza del vettore.
* Si consiglia inoltre di sviluppare il programma utilizzando alcune
funzioni quali ad esempio:
* void createArray (float vet[N]);
* void copyArray (float vet1[N], vet2[N])
* void selectionSort (float vet[N]);
* void insertionSort (float vet[N]);
* void exchangeSort (float vet[N]);

Programma creato da: Antonio Francesco Sardella
Ultima modifica: sabato 8 marzo 2008 11.29
GNU GCC compiler on OpenSUSE 10.3
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 100000

/* Prototipi delle funzioni. */
void createArray(float []);
void copyArray(float [], float []);
void selectionSort(float []);
void insertionSort(float []);
void exchangeSort(float []);

/* FUNZIONE PRINCIPALE */
int main()
{
float originario[N], copia[N], t0, t1;
char ripeti;

printf("Valutazione di tempo degli algoritmi di ordinamento.\n\n");
printf("Programma creato da: Antonio Francesco Sardella\n");
printf("Ultima modifica: sabato 8 marzo 2008 11.29\n");
printf("GNU GCC compiler on OpenSUSE 10.3\n\n");
do
{
/* Generazione vettore di numeri casuali. */
createArray(originario);

/* Creazione copia del vettore e controllo del tempo per ordinamento "selection sort". */
copyArray(originario, copia);
t0 = ((float) clock()) / CLOCKS_PER_SEC;
selectionSort(copia);
t1 = ((float) clock()) / CLOCKS_PER_SEC;
printf("L'ordinamento Selection Sort ha impiegato %0.3f secondi...\n", t1 - t0);

/* Creazione copia del vettore e controllo del tempo per ordinamento "insertion sort". */
copyArray(originario, copia);
t0 = ((float) clock()) / CLOCKS_PER_SEC;
insertionSort(copia);
t1 = ((float) clock()) / CLOCKS_PER_SEC;
printf("L'ordinamento Insertion Sort ha impiegato %0.3f secondi...\n", t1 - t0);

/* Creazione copia del vettore e controllo del tempo per ordinamento "exchange sort". */
copyArray(originario, copia);
t0 = ((float) clock()) / CLOCKS_PER_SEC;
exchangeSort(copia);
t1 = ((float) clock()) / CLOCKS_PER_SEC;
printf("L'ordinamento Exchange Sort (Bubble Sort) ha impiegato %0.3f secondi...\n", t1 - t0);

do
{
printf("Vuoi ripetere il programma? Rispondi (s)i oppure (n)o.\n");
scanf("%1s", &ripeti);
printf("\n");
if((ripeti != 's') && (ripeti != 'n')) printf("ERRORE!!! Risposta sconosciuta!!! Per favore prova ancora.\a\n\n");
}
while((ripeti != 's') && (ripeti != 'n'));
}
while(ripeti == 's');

return 0;
}



/* Funzione che crea un vettore di numeri casuali. */
void createArray(float vettore[])
{
int cont, seme;

seme = 1;
srand((unsigned int) seme);
for(cont = 0; cont < N; ++cont) vettore[cont] = ((float) rand()) / ((float) RAND_MAX);

return;
}

/* Funzione che crea una copia del vettore. */
void copyArray(float vettore[], float duplicato[])
{
int cont;

for(cont = 0; cont < N; ++cont) duplicato[cont] = vettore[cont];

return;
}

/* Ordinamento Selection Sort. */
void selectionSort(float vettore[])
{
int i, j, posMin;
float tmp;

for(i = 0; i < N - 1; ++i)
{
posMin = i;
for(j = i + 1; j < N; ++j) if(vettore[j] < vettore[posMin]) posMin = j;
tmp = vettore[i];
vettore[i] = vettore[posMin];
vettore[posMin] = tmp;
}

return;
}

/* Ordinamento Insertion Sort. */
void insertionSort(float vettore[])
{
int i, j;
float val;

for(i = 1; i < N; ++i)
{
val = vettore[i];
j = i - 1;
while(j >= 0 && vettore[j] > val)
{
vettore[j + 1] = vettore[j];
j--;
}
vettore[j + 1] = val;
}

return;
}

/* Ordinamento Exchange Sort. */
void exchangeSort(float vettore[])
{
int i, j;
float val;

for(i = 0; i < N - 1; ++i)
{
for(j = 0; j < N - 1 - i; ++j)
{
if(vettore[j] > vettore[j + 1])
{
val = vettore[j];
vettore[j] = vettore[j + 1];
vettore[j + 1] = val;
}
}
}

return;
}



Conclusioni

Spero che il post vi sia piaciuto e sia risultato interessante. Naturalmente chiunque può esprimere la sua opinione a riguardo utilizzando gli appositi commenti ed, eventualmente, aggiungere preziose informazioni, consigli, critiche o avvertendo di eventuali errori. Ciao a tutti e alla prossima!!! ;-)



Tratto da una lezione di Tecniche e linguaggi di programmazione del prof. Stefano Quer Professore Associato del DAUIN (Dipartimento di Automatica Informatica) - III FACOLTA' DI INGEGNERIA - Ingegneria industriale e dell'informazione - Sistemi di elaborazione delle informazioni del Politecnico di Torino
2月8日

"Non mi resta che vedermela con Isengard stanotte, con sassi e pietre."

Isengard! Anche se sei protetto da un maledetto, da monti e da ponti, noi faremo i conti!
Isengard! Anche se sei forte e violento, freddo come vento, duro e cruento, è giunto il momento,
E' giunta la guerra e trema la terra, sfonderem la pietra e la porta tetra!
Bruciano il tronco ed il ramo, e noi andiamo,e noi marciamo
Con passo più duro di sasso, più grave di masso, con tono cavernoso e basso.
A Isengard portiamo sconquasso e fracasso,
Sterminio e distruzione, scompiglio e perdizione!

    

Quello che è successo ieri sera ad AnnoZero è importante, è molto importante. Finalmente, il Popolo Italiano comincia a smuoversi, finalmente, la verità e l'inevitabilità cominciano a farsi strada nelle masse. Quando fino a pochi mesi fa dicevo che la politica mi faceva schifo, mi prendevano in giro: dicevo che ero un IGNAVO!!! Ma vi rendete conto?! Bravi!!! Destra e sinistra... Bravi!!! Ma secondo voi LIBERI UTENTI DELLA RETE, è questo il modo di governare un Paese?! Penso che le parole dei due giovani nel video siano più che sufficienti a mostrare, anche ai più "integralisti della politica", la situazione schifosa che permea il nostro Paese.

Purtroppo le persone che la pensano così sono pochissime, la maggior parte della gente sbava ancora sotto le mutande di questo o quel leader politico appartenente a questa o quella fazione, in attesa di un suo consenso per leccargli i genitali come un cagnolino ubbidiente!!! Signori, la politica è MORTA!!! La cosa che non riuscite a mettervi bene in testa, così in tanti, è che se va Berlusconi, o se va Prodi, è la stessa identica cosa... Perchè?! Per il denaro!!! Il "dio denaro", demone immondo che appesta il nostro Mondo, sterco del demonio che nutre questo calderone vomitevole e ribollente di affiliati a logge massoniche il cui unico scopo è la distruzione dei poteri e della libertà dell'individuo.

Forse non è ben chiaro a tutti che dietro a questo grottesco e riprovevole teatrino dei burattini c'è gente priva di scrupoli che mina alla distruzione della nostra vita così come la conosciamo. Le bandiere politiche non c'entrano, non è tempo di pensare alla politica: la politica OGGI non esiste, è solo una nebbia che ci è stata messa davanti per nasconderci i veri problemi che affliggono il nostro Paese.

Pubblicando questo intervento NON VOGLIO certo lodare Beppe Grillo ed osannare lui come il "nostro salvatore", perchè vorrei vedere chiaro anche sulla sua figura (per chi volesse informazioni su quello che intendo clicchi qui), ma prendo solo "in prestito" il suo video per esprimere una convinzione che ho sempre avuto... Ed io, che sono nessuno, Popolo Italiano NON TI DICO che "Tu sei Beppe Grillo"... Io ti dico che TU devi decidere cosa è giusto per te, che TU non meriti di vivere nei soprusi e nell'ignoranza, che TU solo hai la forza di combattere contro chi ti vuole male, che solo TU puoi cambiare la situazione, che sei TU presente, passato e futuro della Nazione, che TU sei nato LIBERO ed un solo uomo libero, che difende la propria terra è più forte di 10 soldati mercenari!!! Italiani, noi siamo liberi, l'Italia è nostra, la rivogliamo e la RIPRENDEREMO!!!

Vi fa schifo la politica?! Bene!!! Basta andare avanti scegliendo il male minore!!! Quando andremo alle prossime elezioni: RICORDIAMOCI DEL MALE CHE CI HANNO FATTO E MANDIAMOLI TUTTI A CASA!!! Cosa fare?! Semplice: ANNULLATE LE VOSTRE SCHEDE!!! Lasciamo che non venga raggiunta la quota necessaria a rendere valide le elezioni!!! NON ASTENIAMOCI, andiamo a votare ed annulliamo le schede!!! Non diamogliela vinta!!! La votazione è l'unica arma che abbiamo no?! Allora mettiamogli terrore a quei politicanti schifosi: ANNULLIAMO IL VOTO E FACCIAMOGLI CAPIRE QUANTO VALGONO. Non sono l'unico a pensarla così, anche un grande personaggio della storia (purtroppo non ho appuntato il nome, perdonatemi) disse che l'annullamento del voto è la cosa che può incutere più timore nei politci. Italiani riflettete bene... A mali estremi... Non permettiamo più a questi politici di governarci!!! VIVA L'ITALIA, VIVA LA LIBERTÀ!!!



Powered by YouTube
 
Links a siti che possono risultare interessanti...