VISUALIZZARE DATI. Il personal computer visualizza informazioni

VISUALIZZARE DATI.
Il personal computer visualizza informazioni utilizzando due dispositivi hardware: il monitor e la
scheda video. Mentre il primo è ben identificabile e visibile, il secondo è installato all’interno dello
chassis (case), dove è contenuta la scheda madre, la RAM, il processore etc.
Il personal computer è capace di visualizzare informazioni in un due modalità: testo e grafica.
Modalità testo.
Lo schermo è suddiviso logicamente in una matrice di 25 righe e 80 colonne.
La posizione 1,1 (angolo sinistro alto dello schermo) viene chiamata Home.
La riga 25 non è utilizzabile per visualizzare dati.
COLONNE
R
I
G
H
E
1,1 2,1 3,1 4,1 ….
1,2 2,2 3,2 4,2 ….
….
….
….
….
….
….
….
….
….
….
….
1,24 2,24 3,24 4,24 ….
80,1
80,2
….
….
….
….
….
….
….
….
….
….
….
80,24
Utilizzo in linguaggio Pascal.
Le procedure e funzioni per visualizzare informazioni in modalità testo sono contenute nella libreria
CRT; è necessario, quindi, dichiarare di voler utilizzare tale libreria nel ns. programma.
La dichiarazione deve essere fatta con la direttiva uses.
Principali procedure e funzioni Pascal per la modalità testo.
Procedura/funzione
ClrScr
GotoXY(rr,cc)
Funzione
pulisce lo schermo
Sposta il cursore alla riga rr
ed alla colonna cc
Parametri
rr=numero di riga in cui spostare il cursore con
cc=numero di colonna in cui spostare il cursore
Write(lista argomenti)
visualizza informazioni a
partire dalla posizione
corrente del cursore
Writeln(lista argomenti ) visualizza informazioni a
partire dalla posizione
corrente del cursore e dopo
riposiziona il cursore alla
riga successiva e prima
colonna
TextColor(colore)
Imposta il colore con il quale
sarà visualizzato il testo
con
Lista argomenti=lista delle variabile e/o costanti da
visualizzare
Lista argomenti=lista delle variabile e/o costanti da
visualizzare
Colore={0,1,2,3,…,15}
oppure
Black,Blue,Green,Cyan,Red,Magenta,Brown,Light
Gray,DarkGray, LightBlue, LightGreen,
LightCyan, LightRed, LightMagenta,Yellow,White
TextBackground(colore) Imposta il colore dello sfondo Colore={0,1,2,3,4,5,6,7}
dello schermo
oppure
Black,Blue,Green,Cyan,Red,Magenta,Brown,Light
Gray
Delay(ms)
Sospende l’esecuzione del
Ms=numero intero
programma per il nr. di
Valore:
millisecondi specificato come
argomenti
Esempio:
Program Testo;
Uses crt;
Begin
{ Pulisce lo schermo }
ClrScr;
{ Imposta il colore dello sfondo a rosso}
TextBackground(Red);
{ Imposta il colore del testo a giallo}
TextColor(Yellow);
{ Sposta il cursore al centro dello schermo }
GotoXY(40,12);
{ Visualizza la scritta "Salve, Mondo" }
WriteLn('Salve, Mondo');
{ ferma l'esecuzione ed aspetta la pressione
di un tasto dalla tastiera da parte dell'utente }
Repeat Until Keypressed;
End.
Modalità grafica.
Lo schermo è suddiviso in una matrice di punti visualizzabili, il cui numero dipende dalla scheda
grafica presente nel personal computer.
I punti prendono il nome di pixel (da picture element).
Le schede video possono rendere disponibile un numero di pixel variabile (640x480, 600x800,
1024x768, etc.).
Ogni pixel può essere rappresentato con una serie di attributi, tra i quali il colore.
Il colore di un pixel è ottenuto con l’utilizzo di tre colori fondamentali: rosso, verde, blu (Red,
Green, Blue), attraverso i quali è possibile ottenere qualsiasi altro colore.
Ognuno dei tre colori fondamentali contribuisce alla determinazione del colore del pixel attraverso
una scala che può andare da 0 a n, dipendente dall’hardware.
La capacità di visualizzazione di punti e di colori, insieme con altri parametri, definisce la
risoluzione di una scheda video.
I pixel sono rappresentati prendendo a riferimento un sistema di assi cartesiani, che ha l’origine
nell’angolo in alto a sinistra del monitor.
Utilizzo in linguaggio Pascal.
Le procedure e funzioni per visualizzare punti, linee, cerchi ed altre forme, sono contenute nella
libreria GRAPH; è necessario, quindi, dichiarare di voler utilizzare tale libreria nel ns. programma.
La dichiarazione deve essere fatta con la direttiva uses.
Occorre, poi, in fase di esecuzione (run-time) e prima del suo utilizzo, inizializzare la risorsa della
grafica. A tal scopo si utilizzano le istruzioni:
grDriver:=Detect;
InitGraph(grDriver,grMode,'C:\TP\bgi');
La prima istruzione permette di individuare il tipo di scheda grafica disponibile nel computer.
Infatti l’istruzione Detect restituisce nella variabile intera grDriver , un numero con il quale il
Pascal identifica l’hardware.
La seconda istruzione inizializza effettivamente la risorsa. Con essa si specifica al Pascal, attraverso
il primo e terzo parametro, quale tipo di scheda grafica dover inizializzare ed in quale directory è
disponibile il driver di gestione di essa. Il secondo parametro viene restituito dall’istruzione
InitGraph; è un numero intero che viene memorizzato nella variabile intera grMode ed individua
la migliore modalità con cui il Pascal gestirà la scheda grafica utilizzata.
La grafica va rilasciata quando il programma non ne ha più necessità. Per far ciò, utlizzare
l’istruzione:
CloseGraph.
Principali procedure e funzioni Pascal per la modalità grafica.
Procedura/funzione
GetMaxX
GetMaxY
PutPixel(x,y,color)
Funzione
Restituisce la massima ascissa
disponibile per un pixel
Restituisce la massima
ordinata disponibile per un
pixel
Traccia in punto sullo schermo
Line(X1,Y1,X2,Y2)
Traccia un segmento di retta
tra due punti
Circle(X,Y,raggio)
Traccia un cerchio
SetColor(colore)
Imposta il colore con i quale a
partire dalla prossima
istruzione verranno
rappresentate le figure
SetBkColor(colore)
Imposta il colore dello sfondo
con il quale a partire dalla
prossima istruzione verranno
rappresentate le figure
Pulisce lo schermo
ClearDevice
Parametri
Nessuno
Nessuno
X,Y coordinate cartesiane del punto da
rappresentare
Colore={0,1,2,3,…,15}
oppure
Black,Blue,Green,Cyan,Red,Magenta,Brown,Lig
htGray,DarkGray, LightBlue, LightGreen,
LightCyan, LightRed,
LightMagenta,Yellow,White
X1,Y1 e X2,Y2 coordinate cartesiane dei punti
tra i quali deve essere rappresentato il segmento
di retta.
X,Y coordinate cartesiane del centro del cerchio
Raggio = lunghezza, in pixel, del raggio del
cerchio
Colore={0,1,2,3,…,15}
oppure
Black,Blue,Green,Cyan,Red,Magenta,Brown,Lig
htGray,DarkGray, LightBlue, LightGreen,
LightCyan, LightRed,
LightMagenta,Yellow,White
Colore={0,1,2,3,…,7}
oppure
Black,Blue,Green,Cyan,Red,Magenta,Brown,Lig
htGray
Nessuno
Esempio:
program Grafica;
uses crt,graph;
var grDriver,grMode:integer;
begin
{ Inizia l'esecuzione del programma }
{ Richiede la risorsa della grafica }
grDriver:=Detect;
InitGraph(grDriver,grMode,'C:\TP\bgi');
{ Disegno un punto di coordinate 320,240 di colore bianco}
PutPixel(320,240,White);
{ disegna una retta di colore giallo tra due punti
di coordinate A(10,15) e B(100,150) }
SetColor(Yellow);
line(10,15,100,150);
{ Disegno un cerchio con centro nel punto di coordinate
200,250 e di colore giallo }
SetColor(Red);
Circle(200,250,50);
{ Aspetta la pressione di un tasto per finire }
repeat until keypressed;
{ Rilascia la risorsa della grafica }
CloseGraph;
{ Fine dell'esecuzione del programma }
end.
Come simulare il movimento di un oggetto nel piano.
Un oggetto in movimento tra due punti A e B è un oggetto che assume tutte le posizioni comprese
tra i punti suddetti in un determinato tempo.
Oggetto
A
B
L’occhio umano percepisce il movimento di un oggetto, giacché la sua immagine persiste sulla
retina per un certo tempo, dopo di che, essa scompare. Se così non fosse, le immagini del mondo si
accumulerebbero ai nostri occhi sino al punto da non permetterci di distinguere più nulla.
La proiezione cinematografica ed i cartoni animati, sfruttano questo comportamento del ns. occhio
per il loro funzionamento.
Il monitor del pc ha la caratteristica di visualizzare forme in maniera permanente, a meno che non si
pulisca completamente lo schermo oppure le stesse si cancelli dopo un certo tempo.
Esempio:
Listato:
Program MuoveOmino;
Uses Crt,Graph;
Var
grDriver,grMode:integer;
x,y:integer;
procedure AssegnaGrafica;
begin
grDriver:=Detect;
InitGraph(grDriver,grMode,'C:\tp\bgi');
end;
procedure DisegnaOmino(x,y,colore:integer);
begin
setcolor(colore);
{ disegno la testa }
circle(x,y,10);
{ disegno il corpo }
rectangle(x-10,y+10,x+10,y+40);
{ disegno le braccia }
line(x-10,y+20,x-15,y+20+15);
line(x+10,y+20,x+15,y+20+15);
{ disegno le gambe }
line(x-5,y+40,x-10,y+40+20);
line(x+5,y+40,x+10,y+40+20);
end;
begin
AssegnaGrafica;
SetBkColor(black);
x:=20;y:=200;
{ disegna il primo omino ed aspetta la pressione
di un tasto per farlo partire }
DisegnaOmino(x,y,white);
repeat until keypressed;
repeat
delay(1000);
{ cancella l’omino}
DisegnaOmino(x,y,black);
x:=x+20;
{ disegna l’omino}
DisegnaOmino(x,y,white);
until (x > GetMaxX-50);
SetColor(yellow);
OutTextXY(10,400,'Premi un tasto');
repeat until keypressed;
end.
È quindi necessario, se si vuole simulare il movimento, visualizzare l’oggetto, cancellarlo e
rappresentarlo nuovamente,nella posizione successiva, finché esso non giunge alla destinazione
desiderata.
Esempio:
Il tempo che intercorre fra il disegno dell’oggetto e la sua cancellazione, determina la velocità con
la quale l’oggetto si muove. Questa velocità, se troppo bassa, determina che il ns. oggetto si muova
a scatti; se troppo alta l’oggetto non viene visualizzato oppure riusciamo a vedere solo la sua scia.
Listato:
Program DisegnaOmino;
Uses Crt,Graph;
Var
grDriver,grMode:integer;
x,y:integer;
procedure AssegnaGrafica;
begin
grDriver:=Detect;
InitGraph(grDriver,grMode,'C:\tp\bgi');
end;
procedure DisegnaOmino(x,y,colore:integer);
begin
setcolor(colore);
{ disegno la testa }
circle(x,y,10);
{ disegno il corpo }
rectangle(x-10,y+10,x+10,y+40);
{ disegno le braccia }
line(x-10,y+20,x-15,y+20+15);
line(x+10,y+20,x+15,y+20+15);
{ disegno le gambe }
line(x-5,y+40,x-10,y+40+20);
line(x+5,y+40,x+10,y+40+20);
end;
begin
AssegnaGrafica;
x:=10;y:=200;
repeat
DisegnaOmino(x,y,white);
delay(500);
x:=x + 20
until (x > GetMaxX);
repeat until keypressed;
end.