1 - Amiga Magazine Online
1 - Amiga Magazine Online 1 - Amiga Magazine Online
Sistemi per il Yideo Pro#essionale +,.O,, . I c& Ù prodotti Q ~ Q G ~ L ? ~ Q ~ u & + ~ ~ ~ L . )*_) " e b Munchen - Germania * i< *. -. .*i SIRIUS GENL 2 ingressi CC e composito 2 ingressi wdio Chrorna-ke/ a Alpha chonnel Diriovenzo manuale e automa . Controllo monuoe e roftware (Scal . Generatore di barre integrato . Controlli digitali (colore, contrasto, luminositàl . Banda parronte: cornporito 4 MHz, Y~C 5.5 MHr - di montaggio vidw ICIRL~L, Panaronic, RS 232, RS 4221 ' N - % Y-C GENLOCK il bert reller (Ingressi e uscite Y-C e cornporital f 990.000' l di Antonio Piscopo l I LA NOSTRA FLOTTA ... ... IL NOSTRO EQUIPAGGIO I S;ilcs Pri>rnotion: .S'icfi~tiini
Liste di Sistema ... ma non solo Come gestire strutture a lista sfruttando i servizi di Exec Quando si scrive un programma, due sono gli elementi fondamentali dei quali tenere conto fin dalla fase di pro- gettazione, che forniscono gli strumenti per esprimere e per implementare nel linguaggio che abbiamo scelto le idee su cui si basa il programma stesso. Questi due ele- menti sono riassunti nella famosa equazione di Wirth: strutture dati + algoritmi = programmi Le strutture dati descrivono il modo in cui sono organiz- zati i dati sui quali il programma dovrà operare, mentre gli algoritmi specificano quali passi il programma dovrà compiere su quelle strutture per giungere al risultato vo- luto: è quindi evidente che queste due componenti inte- ragiscono fortemente e concorrono a caratterizzare il comportamento globale del programma in termini di oc- cupazione di memoria e di velocità di esecuzione. È ne- cessario saper valutare questi due aspetti quando si vo- gliono confrontare implementazioni diverse delle stesse idee, in modo da poter scegliere I'implementazione che, anche se la migliore in assoluto, offra però caratteristiche che possono farla preferire alle altre. Le liste Tra le strutture dati più diffuse e universalmente cono- sciute annoveriamo i vettori e le liste. Rimandiamo al pa- ragrafo finale di questo articolo l'analisi dei pregi e dei difetti che entrambe presentano; per il momento sottoli- neiamo solo che si tratta di strutture contenitore, cioè at- te a contenere un certo numero di elementi, e che pro- prio questa loro comune funzione permette di metterle a confronto. Possiamo però anticipare i risultati del con- fronto: vedremo che i vettori offrono maggiore efficienza, in quanto ogni elemento è accessibile direttamente me- diante il suo indice, mentre le liste sono di gran lunga più flessibili, perché non richiedono che gli elementi ri- siedano in una zona contigua di memoria, né che il loro numero sia fissato a priori. i linguaggi cosiddetti imperativi, come il C, il C++, il Pa- scal, forniscono direttamente la possibilità di dichiarare una certa variabile come vettore, ma non offrono lo stes- so supporto per le liste, che devono essere costruite dal programmatore ricorrendo a strutture e puntatori. Questo naturalmente non significa che l'impiego di un vettore sia la soluzione migliore in tutti i casi, anzi si potrebbe soste- nere il contrario, esagerando nel verso opposto, e argo- mentare che i linguaggi non imperativi, come il Lisp e il Prolog, usano invece le liste come strutture dati principa- li. I1 linguaggio E rappresenta in questo panorama un'ec- cezione significativa, perché offre un supporto diretto sia per i vettori che per le liste, ma per questo rimandiamo alla serie di articoli su AmigaE. E Amiga? Vediamo allora l'esempio di una applicazione in cui le li- ste sono state scelte, per la loro flessibilità, come struttu- ra dati particolarmente conveniente: il Sistema Operativo di Amiga. Tutti noi sappiamo che la carta vincente delllAmigaDOS, uno dei suoi fiori all'occhiello, è la capacità di configurarsi dinamicamente, tipica di un sistema multitasking. Nel corso di una sessione di lavoro su Amiga ci sono task che vengono lanciati e che terminano, librerie che vengono aperte e chiuse, risorse che sono acquisite e rilasciate, messaggi che vengono inviati e ricevuti. La filosofia che sta dietro tutto ciò è che niente è fissato staticamente (tranne la locazione 0x0004!), ma tutto è in continua evoluzione. Questa visione del mondo si sposa perfettamente con la flessibilità delle strutture a lista, sulle quali è possibile intervenire inserendo ed eliminando elementi che possono risiedere ovunque nella memoria di Amiga. Gran parte della gestione delle risorse fa quindi ricorso a liste, che possono essere semplici, cioè percorribili in un solo verso, o doppie, percorribili in entrambi i versi. Per esempio la lista delle finestre aperte su uno schermo è una lista semplice, mentre tutte le cosiddette liste di siste-
- Page 3: Direttore Responsabile Pierantonio
- Page 6: POSTA HOME COMPUTER 1 Nell'agosto d
- Page 9 and 10: NUOVI PRODOTTI POWER COMPUTING E di
- Page 11 and 12: per i vari protocolli di trasferi-
- Page 13 and 14: Real 3D release 3. presente un'inte
- Page 15 and 16: schetto per Windows, quello Amiga d
- Page 17 and 18: Petro Tyschtschenko, presidente Ami
- Page 20 and 21: L a capacità di immagazzinare dati
- Page 22 and 23: ne su queste pagine fossero realizz
- Page 24 and 25: IMPULSE DIGIMAX U delli di digitali
- Page 26 and 27: proprio sistema (RAM e CPU); nella
- Page 28 and 29: CCHEDA DRODOTTO Nome Digimax Prodot
- Page 30 and 31: HARDWARE ver scompattato l'archivio
- Page 32 and 33: S WINDOWS 3.1 1 L'installazione di
- Page 36 and 37: ma, cioè quelle i cui elementi son
- Page 38 and 39: ADDHEAD(lista,nodo) ADDTAIL(lista,n
- Page 40 and 41: Tipi e polimorfismo Abbiamo detto c
- Page 42 and 43: del pixel immediatamente alla sinis
- Page 44 and 45: Eliminazione delle facce nascoste A
- Page 46 and 47: mente a 16 o anche a 8 bit. Quando
- Page 48 and 49: Le LIST e le quoted expression Avev
- Page 50 and 51: Nei linguaggi logici (come ii ~ro~o
- Page 52 and 53: INTERFACCIA I Danimarca 'da Mermaid
- Page 54 and 55: Una delle caratteristiche più avan
- Page 56 and 57: anche su file, nella clipboard o in
- Page 58 and 59: visibili da AmigaDOS (tipica- 3 e c
- Page 60 and 61: a modellazione 3D, per i 1 limiti i
- Page 62 and 63: avviene in tempo reale ed è effica
- Page 64 and 65: Ooublc Buffercd oirp
- Page 66 and 67: LA TUA PASSIONE MERITA UN ABBONAMEN
- Page 68 and 69: Come ottimizzare nesorse e ottenere
- Page 70 and 71: ino, se non impercettibilmente, la
- Page 72 and 73: 2) Lo schermo ha troppi colori e qu
- Page 74 and 75: Giuseppe De Vita chiede la descri-
- Page 76 and 77: N uova entrata nel panorama dei gio
- Page 78 and 79: ON DISK cerca. I parametri opzional
- Page 80 and 81: primo caso o lanciarlo nuovamente n
- Page 82 and 83: u> z O N Amiga 1200 HD 170 Mb moni-
Liste di Sistema ... ma non solo<br />
Come gestire strutture a lista sfruttando i servizi di Exec<br />
Quando si scrive un programma, due sono gli elementi<br />
fondamentali dei quali tenere conto fin dalla fase di pro-<br />
gettazione, che forniscono gli strumenti per esprimere e<br />
per implementare nel linguaggio che abbiamo scelto le<br />
idee su cui si basa il programma stesso. Questi due ele-<br />
menti sono riassunti nella famosa equazione di Wirth:<br />
strutture dati + algoritmi = programmi<br />
Le strutture dati descrivono il modo in cui sono organiz-<br />
zati i dati sui quali il programma dovrà operare, mentre<br />
gli algoritmi specificano quali passi il programma dovrà<br />
compiere su quelle strutture per giungere al risultato vo-<br />
luto: è quindi evidente che queste due componenti inte-<br />
ragiscono fortemente e concorrono a caratterizzare il<br />
comportamento globale del programma in termini di oc-<br />
cupazione di memoria e di velocità di esecuzione. È ne-<br />
cessario saper valutare questi due aspetti quando si vo-<br />
gliono confrontare implementazioni diverse delle stesse<br />
idee, in modo da poter scegliere I'implementazione che,<br />
anche se la migliore in assoluto, offra però caratteristiche<br />
che possono farla preferire alle altre.<br />
Le liste<br />
Tra le strutture dati più diffuse e universalmente cono-<br />
sciute annoveriamo i vettori e le liste. Rimandiamo al pa-<br />
ragrafo finale di questo articolo l'analisi dei pregi e dei<br />
difetti che entrambe presentano; per il momento sottoli-<br />
neiamo solo che si tratta di strutture contenitore, cioè at-<br />
te a contenere un certo numero di elementi, e che pro-<br />
prio questa loro comune funzione permette di metterle a<br />
confronto. Possiamo però anticipare i risultati del con-<br />
fronto: vedremo che i vettori offrono maggiore efficienza,<br />
in quanto ogni elemento è accessibile direttamente me-<br />
diante il suo indice, mentre le liste sono di gran lunga<br />
più flessibili, perché non richiedono che gli elementi ri-<br />
siedano in una zona contigua di memoria, né che il loro<br />
numero sia fissato a priori.<br />
i linguaggi cosiddetti imperativi, come il C, il C++, il Pa-<br />
scal, forniscono direttamente la possibilità di dichiarare<br />
una certa variabile come vettore, ma non offrono lo stes-<br />
so supporto per le liste, che devono essere costruite dal<br />
programmatore ricorrendo a strutture e puntatori. Questo<br />
naturalmente non significa che l'impiego di un vettore sia<br />
la soluzione migliore in tutti i casi, anzi si potrebbe soste-<br />
nere il contrario, esagerando nel verso opposto, e argo-<br />
mentare che i linguaggi non imperativi, come il Lisp e il<br />
Prolog, usano invece le liste come strutture dati principa-<br />
li. I1 linguaggio E rappresenta in questo panorama un'ec-<br />
cezione significativa, perché offre un supporto diretto sia<br />
per i vettori che per le liste, ma per questo rimandiamo<br />
alla serie di articoli su <strong>Amiga</strong>E.<br />
E <strong>Amiga</strong>?<br />
Vediamo allora l'esempio di una applicazione in cui le li-<br />
ste sono state scelte, per la loro flessibilità, come struttu-<br />
ra dati particolarmente conveniente: il Sistema Operativo<br />
di <strong>Amiga</strong>.<br />
Tutti noi sappiamo che la carta vincente delll<strong>Amiga</strong>DOS,<br />
uno dei suoi fiori all'occhiello, è la capacità di configurarsi<br />
dinamicamente, tipica di un sistema multitasking.<br />
Nel corso di una sessione di lavoro su <strong>Amiga</strong> ci sono task<br />
che vengono lanciati e che terminano, librerie che<br />
vengono aperte e chiuse, risorse che sono acquisite e rilasciate,<br />
messaggi che vengono inviati e ricevuti. La filosofia<br />
che sta dietro tutto ciò è che niente è fissato staticamente<br />
(tranne la locazione 0x0004!), ma tutto è in continua<br />
evoluzione. Questa visione del mondo si sposa perfettamente<br />
con la flessibilità delle strutture a lista, sulle<br />
quali è possibile intervenire inserendo ed eliminando elementi<br />
che possono risiedere ovunque nella memoria di<br />
<strong>Amiga</strong>.<br />
Gran parte della gestione delle risorse fa quindi ricorso a<br />
liste, che possono essere semplici, cioè percorribili in un<br />
solo verso, o doppie, percorribili in entrambi i versi. Per<br />
esempio la lista delle finestre aperte su uno schermo è<br />
una lista semplice, mentre tutte le cosiddette liste di siste-