Digitale Libero

Oltre il solito Blog!



Corso Base Programmazione – Gli oggetti (OOP)

31 gennaio, 2012 (22:29) | Autore: neutrino | Argomento: Informatica, Programmazione



All’inizio la programmazione era strutturata, poi verso la fine degli anni ’80 alcuni linguaggi di programmazione come il C divennero estesi e orientati agli oggetti (OOP, Object Oriented Programming) e questo ha portato significativi cambiamenti sia a livello di stesura del codice sia per flessibilità e ottimizzazione del software creato. Programmare ad oggetti significa proprio creare una sorta di oggetti virtuali, per esempio i pulsanti di windows che siamo abituati a usare nelle applicazioni sono oggetti, che comunicano tra loro scambiandosi informazioni. L’ambito in cui si può notare di più l’utilizzazione degli oggetti e quello della realizzazione di interfacce grafiche per i software che usiamo tutti i giorni.

La programmazione ad oggetti implica la suddivisione di un programma in classi dove devono venire dichiarate le strutture dei dati e le procedure interne alla classe stessa. Le classi hanno attributi e metodi, permettono la creazione di oggetti e mediante l’ereditarietà è possibile creare nuove classi con le caratteristiche di quella originaria ma con funzioni estese. Il vantaggio di questo approccio alla programmazione è relativo al fatto che il programmatore che utilizza un oggetto creato da altri non ne manipola il codice e non tocca mai i dati con mano ma li fa gestire alle funzioni che sono associate alla struttura dati di quell’oggetto. Gli oggetti in programmazione sono paragonabili a quelli della nostra vita quotidiana, prendiamo ad esempio un telefonino:

Proprietà: colore, larghezza, altezza, spessore, peso

Metodi: composizione numeri per chiamata, invio SMS, invio MMS, gestione rubrica telefonica

Ogni linguaggio di programmazione usa delle parole chiave per creare (instanziare) un oggetto partendo dalla classe creata, e di solito la parola riservata per questo tipo di operazione è  new.

Quindi una volta definita la classe telefonino con i suoi metodi e le sue proprietà sarà possibile utilizzarla creando nuovi oggetti derivati dalla classe stessa. Ad esempio:

nokia = new telefonino

samsung  = new telefonino

In questo modo avremo due oggetti derivati dalla classe telefonino ma con nome diverso e, soprattutto, trattati in modo diverso anche per quanto riguarda l’allocazione in memoria.

Come ho accennato precedentemente la OOP prevede che l’utilizzatore di un oggetto possa conoscere solo i parametri essenziali che servono allo scopo finale dell’oggetto ma non può accedere ai parametri interni che ne regolano il funzionamento, in questo caso l’oggetto può avere tre tipi diversi di proprietà:

  • proprietà pubbliche che sono accessibili a qualsiasi classe del programma
  • proprietà private che inaccessibili alle altre classi del programma
  • proprietà protette che sono accessibili solamente alle sottoclassi dell’oggetto

La OOP implica anche il concetto di ereditarietà che definisce la possibilità di una classe di diventare erede di un’altra potendo così aggiungere dei metodi che la precedente non ha, in pratica la classe figlia (erede) diventa una specializzazione di quella genitore.

Un’altro concetto relativo alla OOP è dato dal polimorfismo, argomento abbastanza ostico per chi vi s’imbatte per la prima volta ed ha la sensazione di avere a che fare con dei mostri che cambiano e mutano sotto il proprio naso.  Il polimorfismo è basato proprio sul concetto di ereditarietà e ci premette di ridefinire le proprietà, funzioni, metodi della classe in modo che il loro utilizzo nella classe derivata sia diverso da quello della classe base.

Ritornerò sulla OOP per spiegarla meglio e con esempi concreti quando affronteremo la programmazione utilizzando un vero e proprio linguaggio che andremo ad imparare, questo linguaggio sarà il PERL.

Alla prossima.

Natale 2011

23 dicembre, 2011 (22:15) | Autore: neutrino | Argomento: News su Digitale Libero



In questo periodo di crisi e di scelte politiche atte a mantenere in piedi l’Italia, DigitaleLibero.com desidera augurare a tutti gli internauti Buon Natale e che il nostro paese si risollevi dalla crisi.

Corso Base Programmazione – Le strutture di dati

21 dicembre, 2011 (08:26) | Autore: neutrino | Argomento: Informatica, Programmazione



Creando programmi, prima o poi, ci si troverà a dove gestire dei dati strutturati in un certo modo, per esempio invece di avere 12 varibili diverse per ogni mese dell’anno è conveniente usarne una unica per tutto. Quando molti anni fa ho iniziato a programmare usavo  parecchie variabili per cose simili, non avevo capito l’importanza di avere un’unica variabile per gestire dati simili. In questo caso ci vengono in contro gli array (vettori) che sono paragonabili a delle scatole a scomparti dove ogni spazio contiene un valore. In quasi tutti i linguaggi di programmazione un array viene definito dal nome della variabile e il numero di valori che può contenere. Per esempio in Perl:

my @vettore = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20);

my @mesi = (“Gennaio”,”Febbraio”,”Marzo”,”Aprile”,”Maggio”,”Giugno”,”Luglio”,”Agosto”,”Settembre”,”Ottobre”,”Novembre”,”Dicembre”);

L’array, nel linguaggio Perl, si definisce inserendo il carattere @ all’inizio del nome e non c’è obbligo come in altri linguaggi di programmazione di definirne il numero di elementi basta inizializzarlo con alcuni elementi, bisogna però poi ricordarsi di non richiamare un elemento in un indice che non esiste, altrimenti riceveremo un errore. Per richiamare un elemento occorre indicarne la posizione come visibile nell’esempio successivo, in questo caso occorre ricordarsi che la numerazione parte da 0 (zero) e quindi se voglio richiamare il secondo elemento devo indicare l’indice 1. Questo lo vedremo quando passeremo alla vera e propria programmazione, ecco l’esempio:

print $vettore [1];

A schermo verrà stampato 2.

Gli array possono essere usati come delle vere e proprie tabelle infatti è possibile creare array di più dimensioni con righe e colonne poterli stampare a schermo come dovrebbero essere strutturati in una tabella. E’ possibile addirittura, in certi linguaggi di programmazione, scambiare gli elementi in modo tale da invertire l’array utilizzando un’unica istruzione oppure stamparne a schermo solo un certo range.

Un altro tipo di struttura di dati è quella legata ai Data Base che usano tabelle di dati create su file appositi dove immagazzinare grandi quantità di dati, generalmente i Data Base sono supportati da veri e propri server appositi, come SQL, e permettono una gestione dei dati molto flessibile e rapida. In questo caso i software devono interfacciarsi col sistema di gestione dei dati inviando delle richieste specifiche in modo da ricevere come risposta i dati richiesti. Queste richieste si chiamano QUERY e servono per interrogare il data base e incrociare i dati tra le varie tabelle che lo compongono. Anche questo argomento sarà trattato quando affronteremo la programmazione a livello pratico.

Per il momento è  tutto, a presto!

Corso Base Programmazione – Le istruzioni cicliche

28 novembre, 2011 (22:42) | Autore: neutrino | Argomento: Informatica, Programmazione



Generalmente un programma compie delle azioni ripetitive e quindi molto spesso si ha la necessità di ripetere parti di programma un numero di volte ben definito oppure fino a quando ne si ha la necessità. Sarebbe illogico e da pazzi riscrivere 100 volte lo stesso pezzo di programma perchè quelle istruzioni devono essere ripetute 100 volte, la manutenzione del codice e la ricerca di errori diventerebbe estenuante. Così sono stati implementati i cicli, parti di programma racchiusi tra alcune parole chiave che vengono ripetuti un numero definito di volte oppure finchè non si verifica una certa condizione. Per esempio un ciclo definito è:

Partendo da 1 fino ad arrivare a 20 scrivi a monitor “Prova”

Tradotto in uno dei tanti linguaggi di programmazione esistenti, in questo caso il python, il gruppo di istruzioni è il seguente:

for variabile1 in range(1,21):

      print variabile1

e l’output sarà:

1

2

..  tutti gli altri numeri in mezzo

20

Nella gestione di operazioni cicliche potrebbe anche essere necessario attendere che si verifichi una certa condizione, e di solito si usano istruzioni di loop come il while  dove viene costantemente controllato il verificarsi della condizione che mette fine al ciclo. Un esempio di un ciclo di questo tipo, scritta per esempio in python, è la seguente:

while temperatura > 40:

         print (“La temperatura è salita troppo!”)

Il programma uscirà dal ciclo solo nel caso che la variabile temperatura superi il valore di 40, se questo valore proviene da un termometro esterno, in inverno, la condizione potrebbe non verificarsi mai e questo darebbe vita ad un ciclo infinito. Questo tipo di cicli, a pare mio, sono i più utili perchè flessibili e perchè è possibile effettuare dei controlli e dovrebbero essere preferibili anche per cicli di durata ben definita.

Quando affronteremo il discorso programmazione con un linguaggio vero e proprio avremo modo di vedere diversi esempi sull’uso dei loop.

A presto!

Aggiornamento Fotogallery

21 novembre, 2011 (18:34) | Autore: neutrino | Argomento: News su Digitale Libero



Digitale Libero annuncia l’aggiornamento della fotogallery con l’aggiunta di una sezione slide show sui fuochi d’artificio.

Buona Visione!