Introduzione alla programmazione

Uno sguardo a Turbo Pascal e Lazarus
PANORAMICA

Panoramica sui linguaggi di programmazione

Da qui in poi parliamo solo di linguaggi di alto livello.

Qualunque sia il linguaggio che scegliamo per programmare e qualunque sia lo strumento che useremo, ci troveremo di fronte a elementi comuni: infatti ci sono molte cose che accomunano tutte le interfacce di programmazione ad oggetti.

Oggetti precostruiti: sono oggetti specifici come finestre, pulsanti, caselle di testo, etichette, contenitori per immagini e tutte le altre cose che siamo abituati a vedere sugli schermi dei nostri computer.

Compilatore: è lo strumento che trasforma le nostre istruzioni in qualcosa che il computer possa comprendere ed eseguire.

Debugger(*): è lo strumento che permette al programmatore di scovare e correggere eventuali errori commessi scrivendo il codice.

Editor(*): è lo strumento che permette di scrivere il codice.

IDE: è lo strumento che contiene tutti gli strumenti che servono al programmatore, compresi quelli qui sopra (IDE significa “Ambiente Integrato di Sviluppo” dall’inglese integrated development environment)

Definizioni *

Debugger: in informatica vengono chiamati “bug” tutti gli errori di programmazione, Il debug è l’azione di scovare questi errori e correggerli, il debugger quindi è lo strumento che ci permette di fare il debug e far funzionare al meglio il nostro programma.
Editor: in informatica un editor è un programma che permette di digitare del testo, una lettera, una poesia o anche del codice di programmazione.


Le interfacce di programmazione:

Alcune interfacce di programmazione permettono di scrivere il codice una sola volta per poi compilarlo (tradurlo) per più sistemi operativi, altre invece sono specifiche per un solo sistema operativo.

L’interfaccia di programmazione più facile da utilizzare è Gambas, è disponibile per Linux e Unix. Usa il Basic, un linguaggio molto vecchio ma rimodernato e ripulito dalle limitazioni che lo caratterizzavano. Ha una quantità enorme di documentazione disponibile on-line, anche in italiano, esistono perfino numerosi forum, in tutte le lingue, in cui chiedere aiuto, informazioni e consigli.

L’interfaccia più versatile invece è Lazarus, basata anch’essa su un linguaggio storico, il Turbo Pascal. È disponibile per tutti i sistemi operativi da PC, GNU Linux, BSD, Mac, Windows, e tutte le derivate UNIX. Anche Lazarus è molto semplice da usare e ha un’ottima documentazione on-line. Purtroppo la maggior parte di questa è in lingua inglese e la poca presente in italiano è tradotta molto male o in modo incompleto e inesatto, tuttavia è una interfaccia molto semplice e la documentazione in lingua inglese è davvero molto ben fatta.

Queste due sono interfacce Open Source, significa che sono gratuite e sono sviluppate da una comunità di programmatori che mette a disposizione, gratuitamente, le proprie competenze e il proprio tempo per il bene comune.

Esistono anche interfacce di programmazione realizzate da Software House più o meno note. Queste interfacce hanno un costo molto alto, nonostante ciò non offrono alcuna possibilità al programmatore di personalizzare i propri strumenti relegando queste piattaforme ad un uso per lo più di nicchia o per scopi educativi a causa di contratti commerciali stipulati con i vari provveditorati dell'istruzione, complici compiacenti di queste aziende tecnologiche, nel relegare l'istruzione ai soli fini di business (sembrerò polemico, ma non posso mentire o nascondere la verità, se la verità non ti piace puoi fingere di non aver letto questa parte, in ogni caso ti prometto che non farò più affermazioni di questo genere durante tutto il corso).

Inoltre, con le interfacce proprietarie (quelle non Open Source) non è dato sapere cosa effettivamente andrà a fare il software che stiamo scrivendo e che vendiamo ai nostri clienti o che usiamo per noi stessi: sappiamo bene che cosa abbiamo programmato, ma non possiamo sapere cosa altro farà veramente il programma che abbiamo scritto... La violazione della privacy potrebbe essere solo il minore dei guai.

Nel web è possibile trovare la definizione di Open Source e di software proprietario, con le relative differenze. Quindi non ci dilunghiamo qui e se vuoi approfondire non ti resta che cercare on-line.

Per questo manualetto ho scelto di usare Lazarus per 3 motivi:
È liberamente scaricabile e gratuito!
Funziona in tutte le piattaforme e sistemi operativi!
È piuttosto semplice ma estremamente potente!

Per scaricarlo basta andare sul sito www.lazarus-ide.org e scaricare la versione per il proprio sistema operativo.
Le istruzioni di installazione sono pochissime e molto semplici, alla portata di qualsiasi bambino dai 10 anni in poi!
Andiamo oltre e iniziamo a dargli un occhiata!



Una Panoramica su Lazarus

Quando si apre Lazarus (in questa guida si parla della versione 3.0) ci troviamo davanti non ad una finestra ma a cinque:

1. La finestra che gestisce l’intera IDE di Lazarus
2. L’editor
3. Il form di sviluppo
4. L'Object Inspector
5. Il Debugger

Ognuna di queste finestre assolve ad uno scopo specifico e ci viene incontro nello sviluppo del nostro software. Ci sono molti altri strumenti ma li vedremo al momento opportuno. Per ora guarda bene questa immagine e memorizza i nomi degli strumenti…

ide lazarus

Fatto? Bene! Facciamo una breve descrizione di ognuno di questi strumenti:

1. Si tratta della finestra principale dell’IDE, qui ci troviamo tutti i comandi che ci aspettiamo di trovare in tutti i programmi che già conosciamo del nostro PC, ma ci troviamo anche i comandi specifici di questo strumento come pure tutti gli oggetti precostruiti che possiamo usare per metterli nel nostro Form di sviluppo, la finestra vuota in cui andiamo a realizzare il nostro programma.
2. Questo è l’editor in cui scriviamo il nostro codice per creare il programma.
3. Questa è la finestra vuota da usare come “scheletro di base” per la nostra applicazione.
4. Qui abbiamo l’ispettore oggetti che ci permette di ottimizzare e adattare gli oggetti che sceglieremo di usare.
5. Questo è il debugger in cui compaiono gli errori che il compilatore incontra mentre noi scriviamo il codice: appena ne trova uno ferma l’esecuzione del codice e indica dove si trova l’errore e come correggerlo.

Gli oggetti hanno proprietà, eventi e metodi:

Le proprietà di un oggetto fanno riferimento alle caratteristiche dell’oggetto stesso, il colore, la forma, la posizione nella finestra e tutto quello che può descriverlo e disporlo nel programma, insomma, le proprietà di un oggetto sono come gli aggettivi per un sostantivo.

I metodi sono le azioni che compie l’oggetto su se stesso o su altri oggetti ad esso collegato, per esempio, un menù a tendina potrebbe avere il metodo "Add" per fare in modo di aggiungere una voce all’elenco o "Find" per ricercare una voce nell’elenco. Anche i metodi sono innumerevoli e variano da oggetto a oggetto.

Gli eventi invece sono le cose che succedono ad un oggetto o che un oggetto fa accadere compiendo una azione, non sono azioni dell’oggetto, ma sono delle “interruzioni” che il programma mette a disposizione del programmatore per fare in modo che questi possa specificare delle istruzioni in seguito al presentarsi di determinate situazioni. Queste interruzioni possono essere usate dal programmatore o possono essere ignorate. Per esempio una immagine su cui si fa click genera un evento "Picture_Click", se il programmatore ignora l’evento, allora, il click non fa accadere nulla, se lo usa, potrebbe fare in modo di ingrandire l’immagine o qualsiasi altra cosa che il programmatore desideri. Gli eventi possibili sono moltissimi e variano a seconda del tipo di oggetto.

Eventi e metodi possono sembrare simili ed è facile fare confusione all’inizio della nostra avventura nel mondo della programmazione, ecco il trucco per riconoscerli:

un metodo è sempre una azione diretta di un oggetto.
Un evento è un "effetto" causato da un metodo, un utente o altro, ma non è mai una azione diretta.


Per esempio, applicare il metodo "close" ad una finestra farà chiudere la finestra stessa…
Questa azione innesca l’evento "onclose" che il programmatore può usare per chiedere conferma all’utente della chiusura della finestra.
Mai visto un messaggio tipo “Sei sicuro di voler uscire?” Ecco, in questo caso è stato usato un metodo per chiudere la finestra e un evento per chiederti se continuare con la chiusura o annullarla...

Scrivere la prima applicazione.

La prima applicazione è sempre “Ciao Mondo!”, quindi mettiamoci al lavoro e realizziamola.

In questo esempio useremo Lazarus, quindi scaricalo dal sito ufficiale (https://www.lazarus-ide.org) e installalo.
Al primo avvio di Lazarus viene fatta una breve diagnosi del sistema per verificare che tutto sia a posto e poi si apre l’interfaccia.

In alto, nella sezione descritta prima al punto 1, puoi vedere una serie di oggetti precostruiti e ordinati in tabelle (Standard, Additional, Common Controls etc etc…), hai anche a disposizione una finestra vuota e altri strumenti. Per ora non scendiamo nei dettagli ma andiamo a fare un doppio click sull’oggetto TButton (il terzo della tabella standard), immediatamente verrà creato un oggetto bottone sulla finestra vuota, questo oggetto può essere trascinato e spostato ovunque nell’area della finestra o può essere ridimensionato, la finestra stessa può essere ridimensionata e spostata a piacere sullo schermo. Adesso, facendo doppio click sull’oggetto TButton presente nella nostra finestra, si aprirà l’editor del codice e il cursore di scrittura sarà già posizionato dove serve. In quel punto esatto scriviamo:

  ShowMessage('Ciao mondo!') ;
{Attenzione agli apici: sono questi ', non questi ‘ e neppure questi `
Assicurati anche di avere messo il punto e virgola alla fine dell’istruzione}

Adesso possiamo cliccare sul triangolino verde sulla barra degli strumenti o premere F9 sulla tastiera per avviare il programma appena creato.
Cliccando sul pulsante apparirà un messaggio che dice "Ciao mondo!"

N.B.
Quando esegui il programma per la prima volta il debugger ti chiederà quale tipo di protocollo di debug utilizzare, tu scegli il numero 3 e poi clicca OK, da qui in poi, per questo programma non ti chiederà più nulla.
Può anche succedere che il programma che stai eseguendo sia finito sotto alla finestra di sviluppo e tu non lo vedrai avviarsi: semplicemente sposta questa finestra, il tuo programma è lì sotto!

Approfondiamo un passo alla volta

Proprietà

È ora di complicare un po’ le cose e vedere una proprietà all’opera, quindi aggiungiamo un secondo oggetto TButton, facciamo doppio click e entriamo nell’editor che si posizionerà nell’evento Button2Click. In quel punto scriviamo:

  Button1.Visible:=Not Button1.Visible;
//NOT è un operatore logico che inverte il valore che gli viene assegnato

Abbiamo usato una proprietà dell’oggetto TButton che è quella della visibilità. Infatti, usando nomeoggetto.proprietà si può accedere a quella proprietà e leggerne il valore oppure impostarne uno nuovo. In questo caso andiamo a impostare il valore della proprietà “visible” esattamente al contrario di come è attualmente. Quindi se il pulsante 1 sarà visibile al momento del click sul pulsante 2, questo sparirà dalla finestra e al secondo click tornerà ad essere visibile!
Esegui il programma premendo F9 e prova.

Metodi

Adesso che abbiamo visto all’opera una proprietà, vediamo anche un metodo: aggiungi un terzo pulsante (oggetto TButton), facci doppio click e nell’editor scrivi:

   Form1.Hide;
   Application.ProcessMessages;
   Sleep(2000);
   Form1.Show;

Abbiamo fatto in modo che cliccando sul terzo pulsante la finestra (che si chiama Form1) applichi a se stessa il metodo "Hide" (nasconditi).
L’istruzione seguente (Application.ProcessMessages;) serve per permettere al sistema di portare a termine il metodo Hide prima di eseguire l’istruzione successiva con cui abbiamo ordinato al programma di attendere 2000 millisecondi cioè 2 secondi.
Infine abbiamo chiesto alla finestra di applicare il metodo Show (mostrati).
Premi F9 e prova…

N.B.
Sleep (millisecondi); è una parola chiave del linguaggio.
Application.ProcessMessages; è un metodo dell’oggetto applicazione che permette alle istruzioni in sospeso di essere completate prima di iniziare ad eseguirne altre istruzioni.


Scarica il sorgente di esempio
‹ Precedente Successiva ›

Sommario

Sommario