Written by xinyiman Ottobre 16, 2011, 10:55:00 am31626 ViewsRating: 0 (0 Rates)Print
Il Pascal è un linguaggio di programmazione, e non è il solo, ma noi approfondiremo questo perché Lazarus si basa proprio su Free Pascal. Analizziamo ora il significato del termine 'linguaggio di programmazione'. 'linguaggio' è un modo di comunicare. Noi, per esempio, comunichiamo con i nostri connazionali tramite l'italiano, mentre se volessimo parlare con un inglese dovremmo comunicare con lui tramite l'inglese, con un francese usando il francese e così via. Quindi possiamo capire che il Pascal, essendo un linguaggio, ha le sue regole di sintassi esattamente come la lingua italiana. Ora analizziamo il termine 'di programmazione'. Si riferisce all'atto di programmare un computer perché, come tutti sanno, se il computer non fosse programmato per fare qualcosa (scrivere documenti, calcolare, trasmettere dati) sarebbe solo un ammasso di pezzi elettronici e basta. Iniziamo a capire la sintassi del Pascal attraverso la scrittura della nostra prima console application. Innanzitutto andare sulla voce 'File', poi su 'Nuovo'. Ora si dovrebbe aprire una finestra con alcune voci. Tra queste dovrebbe comparire 'Console Application'. Cliccando su ok ci si dovrebbe aprire una finestra con questo scritto dentro.
program project1; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, SysUtils, CustApp, { you can add units after this }; type { TMyApplication } TMyApplication = class(TCustomApplication) protected procedure DoRun; override; public constructor Create(TheOwner: TComponent); override; destructor Destroy; override; procedure WriteHelp; virtual; end; { TMyApplication } procedure TMyApplication.DoRun; var ErrorMsg: String; Esco: String; begin // quick check parameters ErrorMsg:=CheckOptions('h','help'); if ErrorMsg'' then begin ShowException(Exception.Create(ErrorMsg)); Halt; end; // parse parameters if HasOption('h','help') then begin WriteHelp; Halt; end; { add your program here } // stop program loop Terminate; end; constructor TMyApplication.Create(TheOwner: TComponent); begin inherited Create(TheOwner); StopOnException:=True; end; destructor TMyApplication.Destroy; begin inherited Destroy; end; procedure TMyApplication.WriteHelp; begin { add your help code here } writeln('Usage: ',ExeName,' -h'); end;
var Application: TMyApplication; {$IFDEF WINDOWS}{$R project1.rc}{$ENDIF} begin Application:=TMyApplication.Create(nil); Application.Title:='My Application'; Application.Run; Application.Free; end.
Questo codice è la base di partenza per ogni nuovo programma da linea di comando. Per il momento prendiamo per buono quello che c'è scritto, ed andiamo ad inserire la parte che a noi interessa approfondire al momento. Dove troviamo la scritta
Salviamo in una directory a noi nota con il nome PrimoProgramma; poi clicchiamo sul pulsante a forma di triangolino verde e vedremo comparire il risultato del nostro primo programma. Ora andiamo ad analizzare quello che abbiamo fatto. Aggiungendo la voce Crt nelle uses abbiamo inserito una libreria che ci permette di utilizzare determinate funzioni e procedure (in questo caso mi permette di usare il clrscr e il keypressed). Ora prendiamo in esame ogni singola riga:
Writeln mi permette di scrivere a video tutto quello che sta tra le parentesi. In questo caso mi ha stampato la stringa Primo programma, anche se non la vedo a video (con la prossima riga di codice scopriremo come mai) ed è andato a capo.
Clrscr vuol dire clear screen, ovvero pulisci schermo. E quindi è per questo che non si vede a video la scritta "Primo Programma", perchè è stata scritta ma poi cancellata.
readkey; {volendo avrei potuto usare anche la dicitura: repeat until keypressed;}
Aspetto che l'utente digiti un tasto qualsiasi. Questo perchè se non avessimo inserito quest'ultima istruzione non avremmo visto a video nessun risultato, perchè sarebbe stato eseguito ma non si sarebbe fermato e quindi si sarebbe automaticamente chiusa la finestra. Volendo si può sostituire readkey; con repeat until keypressed; si otterrebbe comunque lo stesso risultato. Bene, a questo punto abbiamo capito che per scrivere a video si possono usare le due parole write e writeln, la prima non va a capo dopo aver scritto quello che deve mentre la seconda sì. Ok ora iniziamo a vedre anche le altre cose importanti che questo primo programma ci può offrire. Iniziamo con una premessa: il file sorgente non contiene solo parole che servono per realizzare il programma, ma anche parole che servono a ricordarsi cosa un pezzo di codice scritto precedentemente realizzava. Cio' si può ottenere tramite i commenti, ovvero pezzi di codice ignorati dal compilatore. Prendiamo un esempio se scrivo writeln('Hello world!'); a video vedrò la suddetta scritta ma se invece scrivessi {writeln('Hello world!');} a video non vedrei niente perchè il compilatore lo ignorerebbe considerandolo un commento. L'utilità di questa pratica (commentare i sorgenti) è quella di mettere delle informazioni, note o impressioni che sicuramente non ci si può ricordare (ad esempio a distanza di due mesi). Servono per la manutenzione del codice sorgente. Ora notiamo che il programma inizia con la parola Program che è una di quelle parole riservate del linguaggio pascal, e identifica l'inizio della scrittura di un programma pascal. Program viene seguito dal nome del programma nell'esempio riportato da PrimoProgramma. Un'altra parola riservata molto utile è Uses che come abbiamo visto precede le librerie necessarie al funzionamento del programma stesso. Notiamo anche che nel corso del programma ci siamo imbattuti più volte nella digitura begin e in end , bene queste due parole servono al compilatore a differenziare la parte esecutiva del programma. A volte troviamo l'end con il punto e altre con il punto e virgola, la prima versione sta a identificare la parte esecutiva principale del programma, mentre la seconda serve a identificare la parte esecutiva di procedure e funzioni (argomento che verrà trattato più avanti - in altri articoli) Quindi tutto quello che noi vogliamo vedere a video verrà immesso tra un begin ed un end. Tutto il resto lo capiremo nel corso di altri articoli. N.B. Definizione di codice sorgente: sono uno o più file che contenenti delle informazione che se correttamente compilate danno vita ad un programma. N.B. Definizione di compilatore: è un programma che legge i codici sorgenti e se sono corretti sintatticamente genera un programma. N.B. Lazarus genera eseguibili veramente molto grossi, basta andare a vedere le dimensioni del programma appena creato. Per ovviare a questo problema basta selezionare Progetto → Opzioni compilatore... nelle voci Codice e Linking verificare che i parametri siano li stessi sotto riportati. Le voci che devono essere selezionate sono:
Collegamenti intelligenti (-CX)
Mostra i numeri di linea nella backtrace degli errori di esecuzione (-gl)
Esegue strip degli eseguibili (-Xs)
Link intelligente (-XX)
Se questo modo di compilare non dovesse ridurre le dimensioni degli eseguibili si può tentare quanto segue per l'ambiente windows:
Aprire una console
Tramite console andare nella cartella di Lazarus che contiene il programma STRIP.exe, generalmente c:\Lazarus\fpc\Numero della Versione Pascal\bin\i386-win32 o c:\Programmi\Lazarus\fpc\Numero della Versione Pascal\bin\i386-win32
Digitare il comando: strip --strip-all Applicazione.exe
Digitare il comando: upx -9 Applicazione.exe
Ovviamente applicazione.exe è il nome del programma scritto in FreePascal/Lazarus che si intende ridurre di dimensione, ad esempio C:\ProgrammaProva.exe . Bene avete appena creato il vostro primo programma in free pascal usando Lazarus.
About the author
xinyiman registered at Italian community of Lazarus and Free Pascal on Ottobre 14, 2011, 10:56:28 pm and has posted 3286 posts in the boards since then. Last visit was Oggi alle 05:45:31 pm.
Questo blog non rappresenta una testata giornalistica poiché viene
aggiornato senza alcuna periodicità. Non può pertanto considerarsi un
prodotto editoriale ai sensi della legge n. 62/2001.
Questo sito utilizza cookie, anche di terze parti, per offriti servizi in linea con le tue preferenze. Chiudendo questo banner, scorrendo questa pagina, cliccando su un link o proseguendo la navigazione in altra maniera, acconsenti all’uso dei cookie.