Foto di un programma che usa algoritmi scadenti.

Foto di un programma che usa algoritmi scadenti.

Abbiamo visto cos’è un algoritmo, come è suddiviso e come lo si rappresenta astrattamente in fase di “progetto”.

Ora affronteremo il come progettarlo e in particolare il metodo del Dividi et Impera.

La progettazione di un algoritmo è la fase più delicata del processo di programmazione. Spesso scelte che sembrano ininfluenti nella nostra mente si tramutano in barriere computazionali invalicabili (cosa che appare manifesta se si combatte con il Progetto Eulero).

Continue reading »

 
L'interfaccia di pyBackup-gtk.

L'interfaccia di pyBackup-gtk

Eccovi la gui che ho progettato per lo script pybackup. E’ scritta in pyGTK + Glade. Al momento è completamente funzionale a parte la statusbar che mi sta dando rogne per far visualizzare lo stato di avanzamento del backup.

Andando su Launchpad ricordo che potete provarla. :)

Per i prossimi sviluppi vi terrò aggiornati. :)

 
No... forse non è questo l'algo-ritmo...

No... forse non è questo un algo-ritmo...

Nella scorsa lezione abbiamo visto che cosa è la programmazione e abbiamo notato che si può semplificare nella creazione di algoritmi.

L’astrazione da ogni linguaggio ci permette di dimenticarci per il momento le difficoltà implementative di ogni algoritmo e concentrarci solo sulla sua essenza.

Partiamo quindi dalla struttura di algoritmi veramente semplici.

Continue reading »

 
Codice, questo sconosciuto...

Codice, questo sconosciuto...

Nel mio pellegrinare nella rete mi sono trovato spesso davanti a persone desiderose di imparare a programmare ma che ignoravano i fondamenti di questa “dottrina”. In questi casi la domanda che segue naturale è sempre “quale linguaggio per cominciare?”

Vorrei ricordare a queste persone che programmare non significa conoscere un linguaggio di programmazione (o per lo meno, non solo) bensì conoscere il computer nel suo funzionamento a livello “macchina”, come “pensa”, insomma… come funziona.

Per questo metterò in fila alcune “lezioni” sulla programmazione in senso lato, astratte da ogni linguaggio, che sarà la base per lo studio di ogni linguaggio incontrerete nel vostro cammino.

Continue reading »

 
PyBackup Logo

PyBackup 0.5

Nella versione 0.5 di PyBackup farà la sua comparsa PyBackup-GTK, una interfaccia grafica minimale che fa da fronted a PyBackup.

E’ scritta usando la libreria pyGTK e per questo l’uso su Windows è complicato (si può comunque continuare ad usare la versione “classica” del programma) e se qualcuno vuole cimentarsi in una versione con le wx sarei lieto di affiancarla al progetto.

In ogni caso l’interfaccia è attualmente finita e sto correggendo alcuni bug penso che non manchi molto ad averla almeno nella sua versione più “abbozzata”.

Potete seguire gli sviluppi su Launchpad come sempre.

 
PyBackup Logo

PyBackup 0.4

Ultimate le ultime modifiche in programma per la versione 0.4 rilascio l’ultima versione di questo script.

Il ChangeLog è:

# Add  - Some output file name manipulation like timeformat and extra-name.
# Change - Target Folder is now optional.
# Add - Progress-bar.
# Add - Support for Bzip2 compression.

La gestione del time-format è un po complessa e la spiegherò in dettaglio in seguito.  Intanto potete trovare alla pagina del progetto il download della nuova tarball.

Ogni comunicazione di errore è ovviamente gradita! :)

 

Con il terzo problema ci troviamo davanti la prima difficoltà, questa volta infatti il metodo più intuitivo risulta inapplicabile computazionalmente. Ma leggiamo la richiesta del problema:

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

Dobbiamo trovare quindi il più grande fattore primo di un numero dato.

Continue reading »

 
PyBackup Logo

PyBackup 0.4a

Aggiornamenti in vista per il mio scriptino di backup. Fra le novità che ho già messo ci sono:

  • Supporto per la compressione in BZip2.
  • Aggiunto l’indicatore della percentuale di completamento dell’operazione di archivio e compressione.

Queste feature sono ancora da testare per benino ma pare che vadino. Inoltre vorrei vedere di congeniare una specie di log per tenere conto non solo dei file modificati e aggiunti, ma anche di quelli eliminati. Trovo infatti che questo sia il peggior limite del backup differenziale e volevo vedere di trovare un modo semplice per ovviare a questo.

Ovviamente potete partecipare allo sviluppo andando sull’home page del progetto su Launchpad.

 

Dopo aver affrontato con non troppa difficoltà il primo problema, ci prepariamo ad affrontare il secondo. Il testo recita più o meno in questo modo.

Each new term in the Fibonacci sequence is generated by adding
the previous two terms.
By starting with 1 and 2, the first 10 terms will be:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …

Find the sum of all the even-valued terms in the sequence which
do not exceed four million.

Il nostro compito consiste quindi nel trovare tutti i numeri di Fibonacci minori di 4 milioni, scartare i dispari e sommare i pari. Matematicamente l’algoritmo consiste in:

  1. Trovare l’n-esimo numero della successione partendo dal n-1esimo e n-2esimo.
  2. Verificare se è pari. Ovvero vedere se il resto della divisione per due è zero.
  3. Se è pari, sommarlo alla somma parziale che teniamo da parte.

Continue reading »

 

In questi articoli cercherò di illustrarvi gli algoritmi risolutivi del Progetto Eulero a scopo didattico e di guida nel caso di problemi particolarmente ostici.

Il problema 1 del Progetto Eulero recita più o meno cosi:

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

Bene. Il primo problema, in quanto primo è molto semplice. Dobbiamo trovare tutti i numeri minori di mille tali che siano divisibili interamente da 3 o da 5 e sommarli insieme. In Python l’algoritmo risolutivo ha più o meno questa forma. Continue reading »

© 2008-2012 SlashCode Suffusion theme by Sayontan Sinha