Pascal/Librerie e funzioni predefinite: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
Ramac (discussione | contributi)
m rilettura
Riga 1:
{{Programmare in Pascal}}
 
Una '''libreria''' non è altro che un file contenente varie procedure, funzioni e/o costanti che possono essere utilizzate una volta inclusoche il file è stato incluso all'interno del programma. Questo da un punto di vista teorico è molto utile perché permette di avere programmi molto brevi, ma da un punto di vista di sviluppo è piuttosto negativo, poiché una volta compilati anche programmi molto semplici possono essere estremamente “grandi”"grandi" in dimensioni fisiche (ovvero in kByte).
 
Il Turbo Pascal utilizza come libreria standard ''Turbo.tpl''. Questa contiene tutte le funzioni di base. Non viene mai invocata, perché lo fa in automatico il compilatore alladurnate la compilazione. MaTuttavia, come abbiamo già visto, esistono molte altre librerie.
 
Dall'ultimo programma osservato si nota come deve essere fatta la dichiarazione delle librerie:
uses ''nomelibreria1, nomelibreria2, ...'';
''uses'' è una parola riservata, quindi non può essere usata come nome di variabile o funzione. La dichiarazione delle librerie deve precedere quella delle variabili.
 
Le librerie e le rispettive funzioni analizzate in questa pagina sono chiamate "'''librerie predefinite'''" in quanto sono di norma distribuite di default dal compliatore in uso. È infatti possibile anche creare librerie personalizzate per poter agevolare il proprio lavoro in più programmi differenti.
Riga 16:
 
=== Funzioni di crt ===
 
'''clrscr;'''
Questa funzione permette di pulire lo schermo e di posizionare il cursore in alto a sinistra in posizione (1,1)
 
'''cursoroff; '''
'''cursoron;'''
Queste due funzioni permettono di spegnere o accendere il cursore.
 
'''gotoXY(''posX'', ''posY'');'''
Questa procedura permette di posizionare il cursore in una posizione precisa sullo schermo.
 
'''sound(''hz'');'''
'''nosound;'''
La funzione ''sound'' fa emettere alla macchina un suono alla frequenza ''hz''. Per fermare questo suono bisogna assolutamente utilizzare la procedura ''nosound''
 
'''delay(''time'');'''
Questa funzione fa sì che il sistema si fermi in pausa per un certo numero di millisecondi definito da ''time''. L'uso della procedura <code>delay</code> è tipicamente usata quando si fa uso di suoni. La struttura d'uso generalmente è la seguente:
Line 38 ⟶ 33:
Il risultato è un LA di durata un secondo.
La funzione delay() è però basata sul clock del processore per calcolare il tempo, quando è stato creato il Pascal ovviamente i processori non avevano la potenza di oggi. La funzione delay() è quindi difficile da controllare ma se si vogliono ottenere ritardi definiti con bassa precisione cronometrica si possono inserire più delay() di seguito o sfruttare i cicli.
 
'''keypressed'''
Questa funzione è di tipo boolean, inizialmente è false e restituisce true appea l'utente preme un tasto.
Line 47 ⟶ 41:
until keypressed;
in questo modo le istruzioni vengono ripetute fino a quando l'utente non preme un tasto.
 
'''readkey'''
Funzione che permette di leggere un carattere inserito da tastiera senza visualizzarlo. E'Restituisce un valore di tipo char. Per receperare il valore letto si utilizza la scritturanotazione:
...
x:=readkey;
...
Se si utilizza dopo "keypressed", si legge direttamente il carattere premuto per fare diventare "keypressed" false. Esempio:
repeat
Line 60 ⟶ 51:
x:=readkey;
a questo punto l'utente ha premuto un tasto, con il quale è uscito dal ciclo e ha assegnato il carattere char alla variabile X.
 
'''textcolor(''numero'');'''
'''textbackground(''numero'');'''
 
Permettono di cambiare colore al testo e allo sfondo rispettivamente. Il codice di colore può anche essere il nome in inglese del colore. Questo perché nella libreria crt sono definite anche alcune costanti fra cui proprio quelle relative ai colori. Fra l'altro si può utilizzare anche la costante blink, per creare testo intermittente. Questo uso deve essere fatto così:
...
textcolor(white+blink);
Tuttavia, se per compilare il programma si usa Turbo Pascal,se si usausando la unit ''crt'' quando viene compilato il programma, potrebbe comparire l'errore ''Runtime Error 200: divide by 0'' pur senza che vi sia alcuna divisione per 0 all'interno del programma. Questo è dovuto a un problema d'incompatibilità, che non si verifica però se si usa un altro compilatore.
textbackground(blue);
...
 
 
Tuttavia,se per compilare il programma si usa Turbo Pascal,se si usa la unit ''crt'' quando viene compilato il programma,potrebbe comparire l'errore ''Runtime Error 200:divide by 0'' pur senza che vi sia alcuna divisione per 0 all'interno del programma.Questo è dovuto a un problema d'incompatibilità,che non si verifica però se si usa un altro compilatore.
 
Comunque,in caso non si utilizzi la libreria crt,per far sì che la finestra del programma non si chiuda subito dopo l'esecuzione dell'algoritmo,non dando l'opportunità di vedere i risultati,si può mettere ''readln'' alla fine dell'algoritmo,prima dell'''end''.In questo modo,la schermata "resta" -,e la finestra del programma si chiude quando si preme ''Invio''.
 
==== Tabella: Le frequenze delle note ====