[:it]Come funziona la ricorsione[:]

[:it]

Stack o pila

La funzione che implementa il calcolo del fattoriale di un numero è un esempio di calcolo ricorsivo.

funzione fattoriale(intero n)

se n=0

ritorna il valore 1

altrimenti

n=n*fattoriale(n)

In pratica l’elaboratore mette in parcheggio il valore della variabile n finchè essa non ritorna il valore 1. La memoria dell’elaboratore crea delle aree di memoria che assumono il valore precedente come una pila.

Prima riempie la pila e poi la svuota terminando. Ossia nel primo gradino mette il valore più elevato poi, man mano che aumenta inserisce il valore meno elevato.

La ricorsione ha un vantaggio fondamentale: permette di scrivere poche linee di codice per risolvere un problema anche molto complesso. Tuttavia, essa ha anche un enorme svantaggio: le prestazioni.

Infatti, la ricorsione genera una quantità enorme di overhead, occupando lo stack per un numero di istanze pari alle chiamate della funzione che è necessario effettuare per risolvere il problema. Funzioni che occupano una grossa quantità di spazio in memoria, pur potendo essere implementate ricorsivamente, potrebbero dare problemi a tempo di esecuzione. Inoltre, la ricorsione impegna comunque il processore in maniera maggiore per popolare e distruggere gli stack.

Applicazioni principali

  • algoritmi su alberi
  • valutazione di funzioni matematiche
  • gestione di aggregati eterogenei di dati, in combinazione con il polimorfismo
  • gestione di dati in formato XML. Grazie alle API fornite con tutti i linguaggi di programmazione moderni, è possibile formulare praticamente tutti gli algoritmi di lettura/creazione XML in maniera ricorsiva.
  • algoritmi di ordinamento efficienti come Quicksort e Merge sort o algoritmi di ricerca come la ricerca binaria possono essere formulati in maniera ricorsiva, anche con tipi di dati come le liste a puntatori.
  • stesura di algoritmi che lavorano con la tecnica di backtracking.
  • descrizione di curve frattali.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]La ricorsione[:]

[:it]

Giuseppe Peano

Il termine ricorsione è usato in matematica ogni volta che si definisce qualcosa facendo riferimento (cioè “ricorrendo”) alla definizione stessa.

Il primo matematico che ha utilizzato il concetto di ricorsività è stato Giuseppe Peano nel suo quinto assioma usato per la definizione di numeri naturali:

  • 1 è un numero naturale: caso base
  • se N è un numero naturale allora anche succ(N) è un numero naturale: caso induttivo.

Cioè ogni numero naturale può essere ottenuto ripetendo un numero finito di volte l’applicazione della definizione precedente.

Il fattoriale di un numero è il tipico caso di ricorsione.

0!=1

n!=n\cdot (n-1)!

ossia il fattoriale di un generico numero n può essere ottenuto dal fattoriale del numero che precede il numero in questione,  così via finchè si giunge al numero 0, di cui è noto il valore del fattoriale.

Per esempio:

4!=4\cdot 3!=4\cdot 3\cdot 2!=4\cdot 3\cdot 2!=4\cdot 3\cdot 2\cdot 1!=4\cdot 3\cdot 2\cdot 1\cdot 0!

Funzione ricorsiva

Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a se stessa. In informatica una funzione di dice ricorsiva quando al suo interno è presente una chiamata a se stessa.

Lo schema di una funzione ricorsiva è così costituito:

  • condizione di terminazione
  • passo ricorsivo.

[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: raspberry[:]

[:it]Raspberry e’ un mini pc a basso costo con 1 Gb di RAM

 

OCCORRENTE:

Un alimentatore MicroUSB

Una scheda SD da almeno 2 GB

Un cavo HDMI e un monitor con ingresso HDMI

Una tastiera con attacco USB

Un cavo Ethernet

 

Il sito RaspberryPi.org  ha una sua lista ufficiale di sistemi operativi supportati che si possono scaricare.

Il più usato è Raspbian (una versione riadattata di Debian).

 

Come iniziare a lavorare con un Raspberry?

Iniziamo con lo scaricare  l’immagine di Raspbian  che metteremo sulla scheda SD.

L’elenco di tutti i SO e i link si trovano a questo link: http://www.raspberrypi.org/downloads.

Il primo link, dei downloads, riguarda lo zip dell’immagine, il secondo link invece un file di tipo torrent, sicuramente più veloce.

Scaricato lo zip, estraiamone il contenuto, un file della dimensione di  1,8 GB circa.

Questo file dovrà essere trasferito nella micro SD, ma non basta copiarlo ed incollarlo.

Per installare l’immagine RAW di Raspian occorre effettuare il download del tool   Win32Diskimager al seguente link (https://sourceforge.net/projects/win32diskimager/)

Avviamo l’eseguibile, al termine si aprirà la finestra di       Win 32 Disk Imager.

Digitiamo, nella casella di testo associata alla label

“Image File”

il path assoluto dell’imagine di Raspbian scaricata ed estratta precedentemente

e  in “Device” l’unità della nostra SD

Clicchiamo su write per scrivere l’immagine sulla micro scheda.

 

Inseriamo la scheda nel Raspberry (user pi, PW raspberry)

Per assegnare una password all’utente root, digitare:

sudo passwd

E successivamente, per accedere come root, eseguire:

su –

 

Assicuriamoci che il cavo Ethernet sia  collegato e lanciamo il comando

sudo apt-get update

Per aggiornare la lista dei pacchetti del sistema, poi

sudo apt-get upgrade

per aggiornare tutti i pacchetti installati alle ultime versioni.

Per aggiornare il firwmare di Raspbian è sufficiente eseguire:

sudo rpi-update

si potrebbe anche lanciare il comando

sudo apt-get dist-upgrade

ma esso potrebbe andare ad occupare molto più spazio sulla scheda SD.

comunque per verificare lo spazio rimasto sulla scheda si può usare il comando:

df -h

Questi due comandi andrebbero ripetuti di tanto in tanto per aver la nostra applicazione sempre aggiornata.

I files del pacchetto scaricato sono conservati in /var/cache/apt/archives

Se vogliamo rimuoverli per liberare spazio sulla nostra SD

sudo apt-get clean

sudo sta per super  user do : installare e disinstallare pacchetti, rimuovere file di sistema, cambiare i permessi degli utenti,  ecc. può essere fatto solo da chi ha i diritti di root.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: crittografia –>SSL[:]

[:it]

Lucia Lorenzon

Il protocollo SSL (Secure sockets Layer) gestisce la crittografia dei messaggi in Internet e delle comunicazioni WEB.

Comunicazione cifrata con SSL

L’amministratore genera le chiavi private degli utenti:

openssl genrsa -out marcello.pem 2048

openssl genrsa -out francesco.pem 2048

i file con estensione .pem contengono una chiave provata secondo l’algoritmo RSA di lunghezza 2048 bit.

PEM sta per Privacy Enhanced Mail che è lo standard per i certificati di cifratura e non solo per i messaggi di posta elettronica.

Dalle chiavi private genero le chiavi pubbliche

openssl rsa -in marcello.pem -out marcello.pub -outform PEM -pubout

openssl rsa -in francesco.pem -out francesco.pub -outform PEM -pubout

A marcello e francesco vengono consegnate le chiavi la chiave privata e la chiave pubblica invece viene distribuita agli utenti.

Adesso marcello crea un semplice messaggio:

echo “ciao francesco come stai?” >messaggioM

Adesso marcello cifra il messaggio con la chiave pubblica di francesco e produce in output il file cifrato B che viene inviato a Bob.

openssl rsautl -encrypt -inkey francesco.pub -pubin -in messaggioM -out cifratoF

Adesso francesco decifra il messaggio ricevuto con la sua chiave privata e produce il documento in chiaro chiaroF

openssl rsautl -decrypt -inkey francesco.pem -in cifratoF -out chiaroM

Si osservi che questa operazione garantisce solo la segretezza del messaggio (solo francesco può leggere il messaggio), ma non fornisce alcuna certezza sull’identità del mittente, perchè la chiave pubblica di francesco può essere usata da chiunque.

Per garantire l’autenticità del documento si possono usare i comandi SSL per firmare i documenti:

marcello firma il documento usando la sua chiave privata e produce il documento firmatoM che viene inviato a francesco

openssl rsautl -sign -inkey marcello.pem -in messaggioM -out firmatoM
adesso francesco verifica utilizzando la chiave pubblica di marcello per verificare il documento e visualizzarlo in chiaro.

francesco@francesco-Extensa-5620:/home/programmatori$ openssl rsautl -verify -inkey marcello.pub -pubin -in firmatoM
ciao francesco come stai?[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: campo induzione magnetica di un solenoide[:]

[:it]Si è visto che le linee di forza di un campo elettrico vanno dalle cariche positive a quelle negative o magari, in alcuni casi, vengono da oppure vanno verso l’infinito.

Le linee di forza di un campo magnetico sono linee chiuse, concatenate con la corrente. La ragione di ciò è che il campo magnetico non è originato da poli magnetici. Questo tipo di campo, che non ha sorgenti puntiformi, si dice solenoide.

Il campo induzione magnetica al centro risulta:

B=\cfrac{\mu _{0}IN}{L}

con N numero di spire o avvolgimenti, L lunghezza del solenoide.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]TPSIT: campo induzione magnetica di una corrente rettilinea, forze tra correnti[:]

[:it]Il campo induzione magnetica di un conduttore rettilineo infintamente lungo percorso da corrente è inversamente proporzionale alla distanza R e le linee di forza sono cerchi concentrici con la corrente e perpendicolari ad essa.

Tale relazione è chiamata formula di Biot Savart.

\vec{B}=\cfrac{\mu _{0}I}{2\pi R}\vec{u}_{\theta }

Componendo la formula precedente e la formula di Lorentz ho:

\vec{F}=-\vec{u}_{R}\cfrac{\mu _{0}II^{'}}{2\pi R}L^{'}

Due correnti parallele nello stesso verso si attraggono l’una all’altra con eguali forze.

Due  correnti parallele con versi opposti si respingono.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]Python: creare eseguibili[:]

[:it]

alexander averin

Per distribuire le nostre applicazioni il più delle volte risulta “scomodo” dare il file .py anche perchè per poter funzionare l’utente deve aver installato python.
Se specialmente l’utente a cui dobbiamo dare a nostra applicazione usa Windows è più comodo passargli un file .exe
Per creare un eseguibile(exe) scarichiamo il modulo py2exe.
una volta installato apriamo il programma che dobbiamo convertire in eseguibileed all’inizio del file aggiungiamo queste righe:

from distutils.core import setup
import py2exe
setup(console=[‘NomeFile.py’])

salviamo il nostro file con il nome setup.py e dal terminale(per utenti unix) o da cmd.exe(per utenti Windows) ci portiamo nella directory dove si trova il nostro file e scriviamo:

python setup.py py2exe

compariranno un po di scritte ed alla fine se abbiamo fatto tutto correttamente dentro la directory del nostro file dovremmo avere due cartelle build e dist ,il nostro eseguibile si troverà all’interno della cartella dist.
Per testare il funzionamento dell’eseguibile appena creato sempre da terminale ci portiamo dentro la cartella dist e digitiamo:

NomeEseguibile.exe[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: il primo programma[:]

[:it]

alexander averin

HTML è di gran lunga il linguaggio più utilizzato per la creazione delle pagine in rete.

Il codice scritto in HTML deve trovarsi in un file con estensione .htm o .html per mandarlo in esecuzione, basta indicare il nome del file, insieme al percorso su disco, nella finestra delle URL del browser.

Ecco il primo programma

<html><head>
</head><body><h1>
<br>
<br>
<br>
<center>
Buongiorno amici!
</center>
</h1>

</body></html>

salvare il file con estensione .htm.

Per prima cosa si è dichiarato che si sta scrivendo in html

<HTML>

Si sta inserendo del materiale che deve risultare nella testata di pagina, cioè nello heading un concetto che si vedrà più avanti: per ora ci basti dire che è una sorta di etichetta che indica un comando, detto tag:

<HEAD>

vogliamo poi che la scritta sia di formato grande: il tag <H> permette di impostare 6 diversi formati, da H1 ad H6 di dimensione decrescente.

<BR> significa andare a capo

<CENTER> significa centrare il testo

Fatto ciò, ci si deve ricordare di chiudere, in ordine inverso, cioè partendo dall’ultimo tag aperto, tutti i tag che hanno la necessità di una controparte; nel nostro caso tutti meno che <BR>

</CENTER>

</HEAD>

</HTML>

Commenti

<!– e –> permette di inserire dei commenti.[:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: Web editor[:]

[:it]

romero britto

romero britto

I programmi di web editor si suddividono in due categorie:

  • web editor non visuali: facilitano la scrittura del codice che però non viene generato automaticamente. Per esempio colorano alcuni termini specifici in maniera differente rispetto al resto del testo, completano automaticamente il codice oppure segnalano gli errori di sintassi.
  • web editor visuali: generano automaticamente il codice html utilizzando un’interfaccia visuale. Questi programmi vengono indicati con l’acronimo WYSIWYG (What you See Is What You Get) per indicare ceh in ogni istante viene visualizzato l’aspetto finale del sito.

Editor testuali:

Notepad++

Compatibile con Windows, completamente gratuito, supporta diverse lingue ed ha un’interfaccia grafica molto intuitiva. Supporta numerosi linguaggi tra cui: HTML, PHP, ASP, SQL, Java, Javascript.

PSPad

Supporta diverse lingue tra cui l’italiano, è gratuito e compatibile con Windows. Caratteristiche principali: client ftp per modificare i file in remoto, gestione di progetti, editor esadecimale completo, la libreria tidy integrata consente di formattare e verificare il codice HTML e di convertirlo in XHTML, XML e CSS, correzione automatica, modifica di file di testo di qualsiasi dimensione e comprende un registratore di macro.

UltraEdit

Si tratta di un editor HTML avanzato, sul sito è disponibile una versione di prova, supporta Windows 64 bit, supporta diverse lingue, è disponibile una versione Linux ed è in sviluppo una versione per Mac. Caratteristiche principali: editor esadecimale, supporta altri linguaggi (PHP, Perl, Java e Javascript), syntax highlighting, supporto unicode, client ftp per modificare file in remoto, toolbar con funzioni HTML preconfigurate, dispone di template e lista di funzioni ad albero con parametri, variabili e proprietà.

Editor Vsuali

Nvu (versione 1.0). Completamente gratuito, compatibile con Windows, è un editor WYSIWYG ideale anche per chi non conosce il linguaggio HTML. Supporta XML, Javascript e CSS, è disponibile in italiano, è dotato di un’interfaccia gradevole e contiene tutte le funzioni dei principali concorrenti (che però necessitano di licenza). E’ possibile scaricare il codice sorgente poichè l’editor è open source e si possono apportare tutte le modifiche desiderate.

Adobe Dreamweaver CS5. E’ compatibile sia con Windows che con Mac, editor che supporta più linguaggi tra cui (HTML, XHTML, CSS, PHP, Ajax, XML, Javascript, Coldfusion, ASP). Caratteristiche principali: supporto CMS integrato, ispezione CSS, suggerimenti su codice PHP, supporto per Subversion, suggerimenti sul codice per siti specifici, pagine di avvio CSS, semplice configurazione dei siti, integrazione con Adobe BrowserLab, compatibilità con più browser e utilizzo dei più noti framework CSS. Sul sito è possibile scaricare una versione di prova oppure si può comprare una licenza per circa 574 euro.

Blue Voda Website Builder (versione 11.4g). Vanta più di 3,5 milioni di download, è completamente free ed compatibile con Windows. Veramente semplice da usare, si possono creare siti funzionali anche se non si conosce l’HTML, al suo interno sono presenti alcuni template già fatti, è presente una funzione che consente di mettere online il proprio sito senza aver alcun programma ftp. Anche un bambino potrebbe riuscire a costruire il proprio sito con questo editor, sul sito del produttore inoltre si trovano videotutorial e molti templates.

 [:]

Pubblicato in Senza categoria | Lascia un commento

[:it]HTML: introduzione[:]

[:it]

romero britto

La tecnologia software mette a disposizione gli strumenti per realizzare con facilità pagine in formato Web, ossia pronte per essere caricate su un server internet e visualizzabili con un browser dagli utenti che si collegano; molte aziende offrono la possibilità di creare il proprio sito Internet gratuitamente, fornendo lo spazio su un server e, in alcuni casi, anche gli strumenti necessari per la creazione delle pagine Web.

L’insieme delle pagine che si riferiscono a uno stesso utente, a uno stesso argomento o azienda forma un sito internet o sito Web.

Le pagine da pubblicare su Internet sono realizzate usando il lingaggio HTML (HyperText Markup Language), in modo che possano essere correttamente interpretate dal browser e visualizzate in forma grafica.

Per la costruzione di un sito, è sufficiente utilizzare un programma qualsiasi di videoscrittura.[:]

Pubblicato in Senza categoria | Lascia un commento