Il resto del Pinguino numero 0


Abbiamo finalmente rilasciato il numero 0 de Il resto del Pinguino.

In questo numero troverete:
  1. Linux su una chiavetta USB: guida all’installazione di una mini-distro portabile su una chiavetta USB
  2. La funzione “Split” di Gambas: come dividere facilmente una stringa usando la funzione Split di Gambas
  3. MeteoMachine Linux: previsioni del tempo facili ed affidabili con Linux e Gambas
  4. Chi cerca trova: prova della mini-distro Tiny Core Linux
  5. Su che cosa e come programmare: (1ª parte): come scrivere un programma, dall’analisi al codice
  6. La cattedrale ed il bazar: (1ª parte): due stili di sviluppo del software a confronto, il modello “cattedrale” e quello “bazar”
Potete liberamente scaricare l’ezine cliccando QUI

ATTENZIONE: Il numero 0 nasce con l’intento di sondare il campo, percepire le impressioni dei lettori e cercare nuovi articolisti per le versioni future. Si prega pertanto di trattare tale numero e i successivi come esperimenti sia editoriali che grafici al fine di creare un prodotto sempre migliore.

Buona lettura!

Nuovo ezine: Il resto del Pinguino

Dopo diversi scambi di email tra me e il webmaster della comunità italiana di Gambas si è giunti al fine comune di voler ideare un prodotto editoriale che portasse, nel mondo degli ezine gratuiti, una ventata di aria fresca e che trattasse argomenti sin ora toccati solo marginalmente dai nostri “colleghi”.

Cos’è?

Il resto del Pinguino è un ezine (rivista elettronica) gratuito, aperiodico, scaricabile liberamente da internet e consultabile sul proprio computer come una normale rivista. Il nostro intento non è quelllo di creare un altro ezine di una comunità ma è quello di creare l’ezine per eccellenza che tratti l’argomento PROGRAMMAZIONE visto dal mondo Open Source.
Tuttavia è nostro interessa trattare anche argomenti generici riguardanti GNU/Linux e il software libero.

Perchè questo nome?

Il nome deriva da un particolare gioco di parole. Esso è, infatti, un parodia di un noto quotidiano italiano e mette in evidenza il fatto che la nostra rivista tratta di argomenti che le altre riviste di Linux non trattano approfonditamente.

Posso partecipare?

Nonostante la ristretta redazione iniziale siamo aperti a ricevere articoli da tutti quanti purchè essi ricalchino questi semplici punti che sono alla base delle idee della rivista:

1) L’articolo deve trattare argomenti inerenti l’informatica dal lato open source o la programmazione. Si accettano news importanti dal mondo informatico, recensioni di programmi o siti utili ai programmatori di ogni linguaggio, guide varie, tutorial di ogni genere, prove su strada di distro più o meno conosciute (meglio se meno conosciute), etc…se vuoi sapere se una tua idea può essere pubblicata invia un’email e chiedi.
2) NON inviate documenti in formati proprietari (.DOC o simili): essi saranno CESTINATI immediatamente
3) NON inviate pacchetti compressi in formato .ZIP o proprietari – preferite i formati classici di Linux: tar.gz, tar.bz2, oppure anche .7z
4) Inviate preferibilmente l’articolo in formato testuale semplice (il .txt per intendersi) o, al massimo, un documento .ODT (il formato del Writer di OpenOffice)
5) Inviate eventuali immagini a corredo dell’articolo a parte, non incorporate nei documenti, e di dimensioni massime 800×800/1 MB cad.
6) Inviate un file testuale a parte in cui specificate alcuni vostri dati personali per l’attribuzione dell’articolo: nome e cognome oppure nick/pseudonimo, un’e-mail che volete venga pubblicata come vostro contatto, altri dati a vostra discrezione (che saranno comunque vagliati prima della pubblicazione).

Dove lo trovo?

Ovviamente alla pagina ufficiale.

Partecipa anche tu…invia il tuo articolo a:

ilrestodelpinguino AT gambas-it DOT org

sostituendo:
AT con @
DOT con .

Gambas: Passaggio parametri variabili ad una funzione


Quando si programmano software un pò più avanzati si deve tener conto che non tutto nella vita può essere definito a priori.
Basti immaginare a chi sviluppa una semplice calcolatrice da riga di comando. Molte volte ho visto questo esempio ma l’errore sempre ricorrente era quello di accettare sempre e solo due parametri numerici ai quali applicare l’operazione prescelta. La cosa è molto utile dal lato sviluppo ma davvero poco professionale dal lato utenza.

Qualsiasi linguaggio che si rispetti da la possibilità a chi programma di scrivere funzioni che accettano anche parametri senza prima definirne l’esatte numero, semplicemente scrivendo un prototipo che indichi al sistema che tale funzione accetta parametri ma ne accetta tanti quanti l’utente ne inserisce.

Questo modo di programmare è davvero utile e flessibile e toglie dall’imbarazzo di dover specificare nei propri programmi che una certa operazione può essere eseguita solo tra due dati alla volta.

In Gambas, svolgere tale compito è davvero semplice e vedremo ora come fare.

Il passaggio indefinito di parametri prevede una struttura della funzione uguale a quelle a cui siamo abituati con una differenza nella dichiarazione dei parametri da passare in fase di esecuzione. Immaginiamo di avere la nostra funzione di nome FAddizione che deve sommare tutti i numeri interi passati come parametri (di cui ovviamente non sappiamo il numero a priori) e ne deve restituire la somma intera. Il prototipo di tale funzione sara quindi:

FAddizione (Numero1 AS Integer, Numero2 AS Integer, …) AS Integer

Innanzitutto vediamo che la definizione prevede un costrutto del tutto simile ad una normale funzione, con la differenza che il terzo parametro viene definito come una serie di tre punti ( … ) che sta ad indicare al linguaggio che dopo Numero2 non si sa quanti altri parametri verranno sottoposti ad operazione.
Si noti che i primi due parametri, ovvero Numero1 e Numero2, vengono definiti esplicitamente per il semplice fatto che non ha senso effettuare una somma se non ci sono almeno due numeri su cui effettuare l’operazione.

Il codice che eseguirà il lavoro voluto è il seguente:

FAddizione (Numero1 AS Integer, Numero2 AS Integer, …) AS Integer

DIM Elemento AS Integer
DIM Risultato AS Integer

Risultato = Numero1 + Numero2

FOR EACH Elemento IN Param
Risultato = Risultato + Elemento
NEXT

RETURN Risultato

END

Dunque, come si vede la funzione, come primo passo, somma i due numeri passati esplicitamente alla funzione mediante l’operazione

Risultato = Numero1 + Numero2

Fatto ciò scorre tutti gli altri elementi passati alla funzione, non definiti, mediante il ciclo FOR EACH. Si vede infatti che è stato definito un intero all’interno della funzione di nome Elemento che indica di volta in volta nel ciclo un nuovo elemento presente in Param. Elemento viene sommato a Risultato che aggiorna, di volta in volta, il suo valore con il proprio valore precedente sommato al nuovo parametro.

Apriamo una parentesi. Param è una classe statica, di sola lettura, interna di Gambas che prevede la gestione di tutti gli extra-parametri di una funzione. Essa gode di alcune proprietà che agevolano il trattamento di questa particolare situazione.
Nel nostro caso sfruttiamo la particolarità della classe di essere enumerabile mediante il ciclo FOR EACH e di scorrerla quindi finchè c’è un dato da leggere.

Tornando al codice si può vedere come con l’istruzione:

RETURN Risultato

Restituisce alla fine di tutto il dato voluto.

CONSIDERAZIONI

L’uso di questo tipo di struttura e del suo costrutto deve diventare una prassi per i codici che richiedono la risoluzione di questi tipi di situazioni poichè può accadere che all’utente serva passare un grosso numero di parametri e si costringerebbe chi opera sul nostro software a creare numerosi cicli, dispendiosi in termini di tempo, per effettuare semplici operazioni.

Ovviamente rimango a vostra disposizione per chiarimenti in merito a questo articolo.