I linguaggi d'elezione dell'Intelligenza Artificiale: il Lisp · mente dall'uso di stessi nomi nel...

5
di Raffaello De Masi I linguaggi d'elezione dell'Intelligenza Artificiale: il Lisp Seconda parte Definiamo una funzione In LlSP, un programma è una fun- zione. Il concetto è abbastanza sempli- ce se si considera che un programma è, per il linguaggio che trattiamo, una struttura a grappolo riferentesi, alla fi- ne, ad un unico grosso operatore che riassume in sé una serie di operazioni, costrutti, sequenze; in ciò una funzio- ne somiglia molto alle procedure del Pascal od alle word del Forth. In questa ottica tutti i programmi presuppongono che saranno forniti lo- ro zero o più argomenti ottenendo, in restituzione, un valore: non è detto che il valore restituito sia necessaria- mente qualcosa a noi utile (il program- ma potrebbe servire, ad esempio, a eseguire verifiche su file e a riversare in essi i risultati senza risultati visibili all'esterno), ma lo spirito di LlSP è ,.nterattività, e ad essa non rinuncia in odo: cosÌ ci sarà sempre una risposta, SI tile o no. Ad esempio, se battiamo alla tastie- ra: mcmicrocomputer avremo, come risposta mcmicrocomputer in modo piuttosto bovino. Vale a dire che LlSP ha letto l'input, ha tentato dì valutario, e, avendo ottenuto risultato negativo, ce lo ha restituito senza ope- rare su di lui. Se battiamo invece (/40(-45)) avremo 2 come risultato della divisio- ne di 40 e 20. Battiamo invece (defun quadrato (numero) (. numero nu- mero)) ed analizziamo ciò che effettivamente significa, parola per parola. La prima, «defun», acronimo per define function, avvisa l'interprete che si sta definendo una funzione nuova. Il nome della funzione, «quadrato» si trova immediatamente appresso ad es- sa ed è seguita dallo o dagli argomen- ti, che rappresentano gli effettivi valo- ri da fornire in input: è come se si di- 156 cesse all'interprete: «Avvisa la mac- china (defun) che gli stiamo fornendo la definizione di una funzione (qua- drato) che utilizza un valore (nume- ro)>>l'ultima parte è la vera e propria espressione, che indica le operazioni da eseguire. La struttura generale del costrutto è la seguente: (defun nome-della-funzione (argomento/ i) (espressione/i) Attenzione! Gli argomenti e le espressioni presenti nella formula pre- cedente non saranno valutati. Nel ca- so particolare appena descritto l'argo- mento è uno solo, ma è ovvio che pos- sono essere ben più di uno. Questi ar- gomenti, alla fin fine vere e proprie variabili nel senso più pieno della pa- rola, sono i parametri formali della funzione, e formano la quintessenza del LlSP, le liste formali, colonna por- tante del nostro linguaggio, cui esso deve appunto il nome; la lista è infatti, per definizione, la serie di uno o più oggetti LlSP preceduti e seguiti da una parentesi tonda. Alcune di tali va- riabili sono dette definite o dichiarate all'interno della definizione stessa. Se- gue la lista degli argomenti una o più espressioni, che saranno valutate ed eseguite quando verrà effettuata la chìimata alla funzione. In LlSp è cosa piuttosto comune che una funzione non possieda argo- menti; in tal caso la lista degli argo- menti è sostituita da una lista vuota; il costrutto precedentemente definito avrà, in questo caso, la forma: (defun nome-della-funzione () .... ) In LlSP una lista vuota (molto più frequente di quanto si possa immagi- nare) ha un nome particolare, <mil», scritto cosÌ com'è o, come abbiamo vi- sto prima, mediante due parentesi rac- colte «O» (la forma più frequente è la prima). Il valore della funzione definita è sempre il valore finale dell'ultima espressione presente nella definizione. Poiché la nostra funzione «quadrato» ha solo un'espressione, il suo valore è il valore di questa espressione. Una volta effettuata una definizio- ne, è possibile usare questa come ogni altra funzione; cosÌ (quadrato 9) darà 81, e non ci sarà più alcuna diffe- renza tra una chiamata ad una funzio- ne interna precostituita, come « +» od una esterna come «quadrato». Una particolarità, una delle tante che differenzia LlSP da altri linguag- gi, è la gestione dei valori di variabili interne a LlSP. Mentre LlSP è all'in- terno di una funzione, tutti i parametri formali iniziali utilizzati continuano ad avere il loro valore, indipendente- mente dall'uso di stessi nomi nel caso di variabili locali (a meno che, ovvia- mente, questi parametri non siano sta- ti espressamente modificati). CosÌ, ad esempio, se la variabile «numero» del precedente esempio possiede, all'ester- no della definizione «quadrato», un valore già precedentemente assegnato, il suo uso nella funzione appena defi- nita sarà considerato come locale; «numero» eseguirà la sua funzione, ma una volta eseguito il compito nel- l'ambito di «quadrato» ritornerà al precedente valore. La definizione di nuove funzioni, in LlSP, non è, ahimé, permanente, vale a dire che, alla riaccensione del siste- ma, «quadrato» non vorrà dire un bel nulla. Funzioni utili, una volta defini- te, possono essere conservate in file, che potranno,. in caso di necessità, in ogni momento essere riletti. A ciò ser- ve la funzione «Ioad» che, usata nel mondo (Ioad nome-di-un-file) o, in altri modi, a seconda del LlSP adottato (si comincia a vedere la asso- luta mancanza di standard), permette di rileggere definizioni precedenti, e di incorporarle nel lavoro corrente, come se fossero state battute direttamente alla tastiera. MCmicrocomputer n. 55 - settembre 1986

Transcript of I linguaggi d'elezione dell'Intelligenza Artificiale: il Lisp · mente dall'uso di stessi nomi nel...

di Raffaello De Masi

I linguaggi d'elezione dell'Intelligenza Artificiale:il Lisp

Seconda parte

Definiamo una funzioneIn LlSP, un programma è una fun-

zione. Il concetto è abbastanza sempli-ce se si considera che un programmaè, per il linguaggio che trattiamo, unastruttura a grappolo riferentesi, alla fi-ne, ad un unico grosso operatore cheriassume in sé una serie di operazioni,costrutti, sequenze; in ciò una funzio-ne somiglia molto alle procedure delPascal od alle word del Forth.

In questa ottica tutti i programmipresuppongono che saranno forniti lo-ro zero o più argomenti ottenendo, inrestituzione, un valore: non è dettoche il valore restituito sia necessaria-mente qualcosa a noi utile (il program-ma potrebbe servire, ad esempio, aeseguire verifiche su file e a riversarein essi i risultati senza risultati visibiliall'esterno), ma lo spirito di LlSP è,.nterattività, e ad essa non rinuncia

in odo: cosÌ ci sarà sempreuna risposta, SI tile o no.

Ad esempio, se battiamo alla tastie-ra:

mcmicrocomputeravremo, come risposta

mcmicrocomputerin modo piuttosto bovino. Vale a direche LlSP ha letto l'input, ha tentato dìvalutario, e, avendo ottenuto risultatonegativo, ce lo ha restituito senza ope-rare su di lui. Se battiamo invece

(/40(-45))avremo 2 come risultato della divisio-ne di 40 e 20.

Battiamo invece(defun quadrato (numero) (. numero nu-

mero))ed analizziamo ciò che effettivamentesignifica, parola per parola.

La prima, «defun», acronimo perdefine function, avvisa l'interprete chesi sta definendo una funzione nuova.Il nome della funzione, «quadrato» sitrova immediatamente appresso ad es-sa ed è seguita dallo o dagli argomen-ti, che rappresentano gli effettivi valo-ri da fornire in input: è come se si di-

156

cesse all'interprete: «Avvisa la mac-china (defun) che gli stiamo fornendola definizione di una funzione (qua-drato) che utilizza un valore (nume-ro)>>l'ultima parte è la vera e propriaespressione, che indica le operazionida eseguire.

La struttura generale del costrutto èla seguente:

(defun nome-della-funzione (argomento/i) (espressione/i)

Attenzione! Gli argomenti e leespressioni presenti nella formula pre-cedente non saranno valutati. Nel ca-so particolare appena descritto l'argo-mento è uno solo, ma è ovvio che pos-sono essere ben più di uno. Questi ar-gomenti, alla fin fine vere e proprievariabili nel senso più pieno della pa-rola, sono i parametri formali dellafunzione, e formano la quintessenzadel LlSP, le liste formali, colonna por-tante del nostro linguaggio, cui essodeve appunto il nome; la lista è infatti,per definizione, la serie di uno o piùoggetti LlSP preceduti e seguiti dauna parentesi tonda. Alcune di tali va-riabili sono dette definite o dichiarateall'interno della definizione stessa. Se-gue la lista degli argomenti una o piùespressioni, che saranno valutate edeseguite quando verrà effettuata lachìimata alla funzione.

In LlSp è cosa piuttosto comuneche una funzione non possieda argo-menti; in tal caso la lista degli argo-menti è sostituita da una lista vuota; ilcostrutto precedentemente definitoavrà, in questo caso, la forma:

(defun nome-della-funzione () ....)

In LlSP una lista vuota (molto piùfrequente di quanto si possa immagi-nare) ha un nome particolare, <mil»,scritto cosÌ com'è o, come abbiamo vi-sto prima, mediante due parentesi rac-colte «O» (la forma più frequente è laprima).

Il valore della funzione definita èsempre il valore finale dell'ultimaespressione presente nella definizione.

Poiché la nostra funzione «quadrato»ha solo un'espressione, il suo valore èil valore di questa espressione.

Una volta effettuata una definizio-ne, è possibile usare questa come ognialtra funzione; cosÌ

(quadrato 9)darà 81, e non ci sarà più alcuna diffe-renza tra una chiamata ad una funzio-ne interna precostituita, come « +» oduna esterna come «quadrato».

Una particolarità, una delle tanteche differenzia LlSP da altri linguag-gi, è la gestione dei valori di variabiliinterne a LlSP. Mentre LlSP è all'in-terno di una funzione, tutti i parametriformali iniziali utilizzati continuanoad avere il loro valore, indipendente-mente dall'uso di stessi nomi nel casodi variabili locali (a meno che, ovvia-mente, questi parametri non siano sta-ti espressamente modificati). CosÌ, adesempio, se la variabile «numero» delprecedente esempio possiede, all'ester-no della definizione «quadrato», unvalore già precedentemente assegnato,il suo uso nella funzione appena defi-nita sarà considerato come locale;«numero» eseguirà la sua funzione,ma una volta eseguito il compito nel-l'ambito di «quadrato» ritornerà alprecedente valore.

La definizione di nuove funzioni, inLlSP, non è, ahimé, permanente, valea dire che, alla riaccensione del siste-ma, «quadrato» non vorrà dire un belnulla. Funzioni utili, una volta defini-te, possono essere conservate in file,che potranno,. in caso di necessità, inogni momento essere riletti. A ciò ser-ve la funzione «Ioad» che, usata nelmondo

(Ioad nome-di-un-file)o, in altri modi, a seconda del LlSPadottato (si comincia a vedere la asso-luta mancanza di standard), permettedi rileggere definizioni precedenti, e diincorporarle nel lavoro corrente, comese fossero state battute direttamentealla tastiera.

MCmicrocomputer n. 55 - settembre 1986

• diIl primo sistema operativo esternoper Commodore 64

FINAL CARTRIDGEcomando RECOGNISE ottieniche le capisca e si comporti diconseguenza.

Con il software delVoicemasterpuoi comporre e suonare sem-plicemente canticchiando o fi-schiettando. Non importa se nonsai leggere la musica.La tua voce o Il tono del fischioscriveranno le note per te!Mentre canti o fischi le note ap-paiono sullo schermo: le puoicorreggere, riascoltare e, quan-do sei soddisfatto, puoi stampa-re lo spartito. In modo perfor-mance puoi cambiare le ottave,le chiavi o aggiungere accordi.

Questo prodotto, a questo prez-zo, può confrontarsi unicamentecon apparecchiature di costopari a qualche milione. Vuoi unaprova? Richiedici a sole 29.000lire il dischetto parlante dimo-strativo che non necessita dihardware aggiuntivo e contienealcuni vocabolari generici utiliz-zabili nei tuoi programmi. Insie-me al dischetto riceverai un ma-nuale esplicativo in Itàiiano, utileanche 'come introduzione al Voi-cemaster." prezzo pagato per Il dischettodimostrativo ti sarà interamen-te rimborsato nel caso di suc-cessivo acquisto del Volcema-ster.

Un po' di musica perrilassarti

Gli ordini si dannoa voce!

Ti piacerebbe dare ordini al com-puter con la tua voce?Semplicissimo! Con )1comandoTRAIN gli comunichi le parole ole frasi da riconoscere e con il

Programmi parlanti?

I tuoi programmi possono parla-re con la tua voce, in qualsiasilingua e con qualsiasi accento.Usa il comando LEARN e parlanel microfono; con il comandoSPEAK il computer restituiràall'altoparlante quello che haidetto.Il manuale riporta numerosiesempi di come aggiungere lavoce ai programmi.

Nuova versione di software conEditor per modificare le caratte-ristiche dei suoni da ,riprodurreper una fedeltà ancora migliore.Nuovo prezzo ribassato a199.000 lire. E per 1l+!lIe puoiavere in opzione a 89.000 lire lascheda Soundmaster, che con-sente all'Apple le stesse presta-zioni musicali di Commodore eAtari.

Commodore 64 e 128 (in modo64), Atari 8oo/800XL/65XEI130XE Apple II+/IIe/llc (Il 11+ri-chiede 64K e paddle port adap-ter)

VOICEMASTERProcessore vocale e musicale P4ilr:

te", possono spostare 192 bytescon la velocità del LinguaggioMacchina ovunque nell'ambitodei 64K di RAMdel Commodore64. Utilizzabili con stringhe e va-riabili.Comandi Baslc 4.0 - ComeDload, Dsave, Dappend, Cata-log, cc.Basic Toolklt - Con Auto, Re-num (compresi Goto e Gosub),Find, Help, Old, ecc.Tasti funzione preprogrammatl- Run, Load, Save, Catalog, co-mandi per gestione disco, List(rimuove tutte le eventuali prote-zioni).Nuove funzioni da tastiera - Percancellare una parte di una riga,fermare e riprendere un listato,spostare il cursore nell'angolo inbasso a sinistra. Con il comandoType potete usare la stampantecome una macchina da scrivere.Monitor L/M esteso - Con as-sembler e disassembler. Non ri-siede in memoria.Pulsante di reset - Sempre mol-to utile.Interruttore On/Off - Perevitarviil fastidio di togliere e rimetterela cartuccia.

• Grafica.80 colonne in compresso (lar-

ghezza della carta 112 mm)• Collegabile al C64 tramite il

cavo Centronics fornito in op-zione con The Final Cartridge

EPSONP40ECCEZIONALE!Stampante EPSON P40all'incredibile prezzodi lire 230.000.E per gli amici del Rnal Cartrld-ge una ventata di follia: altre71.000 lire di sconto (159.000anziché 230.000) solo se acqui-stata Insieme alla cartuccia.

• EPSON P40 portatile con ali-mentazione a batteria e a rete

• Stampa a matrice di punti

Nel 1985 havinto il premio Oskarper la migliore utility dell'anno.Nel 1986 supera se stessa e siimpone come la cartuccia piùcompleta in circolazione.Vero e proprio sistema operati-vo esterno (32K di ROM) nonoccupa neppure un byte di me-moria e fa compiere un bel saltodi qualità al tuo 64.Turbodisco - 6 volte più velocein lettura, 8 volte più veloce inscrittura.Turbonastro - 10 volte più velo-ce, anche con ifiles. Usai norma-li comandi Commodore ed ècompatibile con il turbo stan-dardoFreeze Frame - Permette di con-gelare in memoria praticamentetutti i programmi per un back-uptotale e automatico su disco!cassetta e per la riproduzione sucarta delle schermate in Hi-Res.Pagina piena con 12 gradazionidi grigio. In modalità training di-sabilita il riconoscimento dellacollisione fra sprites e vi garanti-sce... l'immortalità.Interfaccla avanzata centro-nlcs - Permette di stampare tuttii simboli grafici e i codici di con-trollo Commodore su qualsiasistampante standard centronics.Molto importante per i listati.24K di RAM In più per I program-mi Basic - Due nuovi comandi,"Memory read" e "Memory wri-

(defun somma (num)(Ioop (initial (sum 0)

(vvhile (> num O))(do (setq sum (+ sum num l))(next (nlJm ( - num 1 »)(r-esult sum»)

Figura i - Definizione della funzione [somma}.

Loop e salti decisionaliLa principale dote di un calcolatore

è quella di poter eseguire loop e saltidecisionali, éd il LISP, per sua stessavocazione, non può fare a meno pro-prio di queste particolarità, così con-geniali al suo spirito_ Facciamo unesempio illustrando un loop, in cuiviene definita una funzione, «som-ma», che, in possesso di un numero,fornisce il risliltato della somma di es-so e di tutti i suoi minori, fino ad uno.

Si esamini la definizione di figura I :all'inizio viene espressa la nostra defi-nizione con defun, seguita dal nomedella funzione (somma) e da un singo-lo argomento. Dopo, le cose divengo-no un po' più complesse, e degne diun minimo di attenzione. Comparequi la funzione base di iterazione, [10-op] appunto (le parentesi quadre sonopresenti, qui, nel testo, solo per indivi-duare la keyword, e non vanno ovvia-mente battute); anche qui, ahimé lostandard non esiste e le definizionipossono variare in maniera diversa.Comunque, [Ioop], o chi per esso, indi-vidua qualsiasi numero di liste, ognu-na delle quali inizia con una delle se-guenti keyword ([initial], [while], [un-til], [next], [dog], o [result]). Ovviamen-te le sezioni appena nominate sonoopzionali, e, ad eccezione di [initial] e[result], possono apparire qualsiasi nu-mero di volte. La sezione [initial] defi-nisce, anzi, per essere più precisi, di-chiara, le variabili locali. Come nel ca-so dei parametri formali delle funzio-ni, queste variabili sono definite solonell'interno del loop, e, in generale,non vengono utilizzate all'esterno diesso (o, nel caso tali variabili siano de-finite anche all'esterno della funzionestessa, esse conservano, indipendente-mente il loro valore): in altri terminivale a dire che variabili locali e globa-li, anche se identicamente definite,possiedono individualità diversa. Nel-la sezione [initial] vengono assegnati' ivalori primitivi. La sua struttura for-male è:

(initial (<<varI" valI) ... (<<varn" valn))viene cioè definita una variabile asse-

158

gnandole un nome ed un valore, nelnostro caso O.

Allo stesso modo la sezione [result]è seguita solo quando LISP esce dalloop. Essa specifica il valore restituitoda [Ioop]. La sua struttura è:

(result espressione)e, nel nostro caso, il valore finale di 10-op è specificato da:

(result sum)Notare, ancora, come la nostra fun-

zione [somma] possiede solo unaespressione da valutare (la funzione diloop, appunto); qualunque valore ri-tornato dal loop sarà il valore di [som-ma].

Tutte le altre sezioni possono appa-rire un numero indefinito di volte e sa-ranno eseguite una sola volta, attraver-so l'anello, nell'ordine in cui sono pre-senti nel loop stesso. Le sezioni [while]ed [until] richiedono un argomento,che è deputato a restituire un valorebooleano, vero o falso. La forma è

(while espressione) e(until espressione)Così, in una sezione di tipo [until] il

loop sarà interrotto se l'argomento di-viene vero. In una sezione [while], in-vece, la convenzione adottata è il con-trario. Nella definizione di figura I ab-biamo una sezione [while] del tipo:

(while (> num O))dove viene adottata una chiamata allafunzione [> ] del tipo:

(> numI num2)La funzione testa se il primo argo-

mento è più grande del secondo, se ciòaccade, la funzione restituisce il valore[t] (true, vero), se il test è invece negati-vo, [> ] restituisce [nil] che, oltre ad es-sere il simbolo di una lista vuota, è ilsimbolo LISP di falso. Nel nostro ca-so, quando il valore di num divieneminore di I il loop si interrompe es-sendo il risultato di [>] pari a [nil].

[do] definisce, infine, il vero e pro-prio corpo del loop; esso consiste diuna o più espressioni da valutare. Nelnostro caso abbiamo:

(do (setq sum (+ sum num)))in cui compare una nuova funzione[setq] avente la struttura:

(setq «atomo" espressione)

L'intelligenza Arlijìciale

dove [atomo] è il nome di una variabi-le e ad essa viene assegnato il risultatodi [espressione]. Nel nostro caso l'e-spressione è (+ sum num), e, in altritermini si riaggiorna il valore di sumogni volta, aggiungendovi il valore di[num].

Infine la sezione capitanata da[next] specifica come aggiornare la va-riabile di loop per la successiva itera-zione. Poiché non rappresenta un«punto di ritorno» del loop (non si di-mentichi che il corpo del loop stesso ècompreso nella funzione [do] e tra leparentesi ad essa afferenti), come peresempio in Basic, e può comparire inqualsiasi punto della funzione genera-le, anche se per ovvi motivi di ordine eleggibilità è preferibile sistemarla im-mediatamente prima o dopo il loopcui si riferisce.La sintassi di [next] è:

(next (<<varI" valI) ... (<<varn" valp)

Facciamo adesso un esempio nume-rico: se chiamiamo la funzione con ar-gomento 2 il primo [num] verrà settatoa 2, come parte della chiamata allafunzione [somma]. Alla partenza delloop sarà definita la nuova variabile(locale) [sum], ed inizializzata al valoreO. Successivamente [num] sarà testataper controllare se è più grande di O. Incaso affermativo, il loop continua, e[sum] sarà aggiornata al valore di sestessa + [num], nel caso particolare 2.La sezione [next] del loop porterà[num] ad I, ed il loop si ripeterà.

Poiché la funzione di loop è l'ultima(e sola) espressione all'interno dellafunzione [somma], e quest'ultima è sta-ta chiamata dal cosiddetto «top le-vel», vale a dire come funzione prima-ria, il sistema fornirà la risposta, nelcaso particolare 3.

Si noti una particolarità del LISP:viene stampato solo il risultato di fun-zioni al «top level»; poiché il linguag-gio è interattivo al massimo, non c'ènecessità alcuna di statement comePRINT et similia per far giungere i ri-sultati allo schermo od alla stampante.Ci ono no stante è opportuno notare co-me i risultati di funzioni di livello piùbasso, comprese in una di maggiorgrado, non vengono visualizzati (a me-no di non desiderarli, con una tecnicaparticolare che non ci pare necessarioqui evidenziare).

Un'ultima precisazione prima di.chiudere: [setq], che assegna a [sum] ilvalore di [sum] e [num], ha valore, an-cora una volta, locale; ciò vuoi direche, al di fuori della funzione espres-sa, lo ripetiamo, la funzione num (oqualunque altra coinvolta in operazio-ni di funzioni più interne), conserva ilsuo valore originario, cosa che ben dirado succede in altri linguaggi. LISP èfatto anche di questo e di questo si ser-ve in maniera talora molto ampia.

MCmicrocomputer n. 55 - settembre 1986

•Inca~_M_IC_R__

MEGAMOUSE

O L.199.oo0

O L. 29.000

O L. 89.000

O L.147.0oo

O L. 36.000

O L. 230.000

O L.342.oo0

Firma

CAP/Città

Data

OAKFa bene sedersi benetevole. La rnaggiorparte del cari-co è sopportata dai femori e lacolonna vertebra le rimane inposizio~e corretta. Oltre a ciò,OAK è moltopiù bella di una nor-male sfdia e il suo prezzo è sba-lorditivo: solo 119.000 lire. E sete ne servono due risparmi24.0Ot lire: 214.000 lire invecedi 2~.000.

INVIATEMI (barrare le caselle opportune)

Voicemaster (specificare computer _ _)

Dischetto parlante (specificare computer )

Soundmaster per Apple 1I+/lIe

The Final Cartridge

Cavo parallelo centronics (opzionale)

Stampante EPSON P40 (centronics)

EPSON P40 + Cavo parallelo + Final Cartridge

Stampante G.E. TXP-1000O L. 399.000 (centronics) O L. 449.000 (Commodore/Atari)

Lighpen Microscribe O L. 95.000 (cassetta) O L. 98.000 (floppy)

Sedia OAK O L. 119.000 (singola) O L. 214.000 (coppia)

Megamouse O L. 125.000

Indirizzo

Nome ICognome

Cod. Fisc. (5010 se si desidera fattura)

Ritaglia e spediscioggi stesso a:MICROSTAR 8.r.l.Via A. Manuzio, 15 - 20124 Milanotel. 02-6555306

Tutti I prezzi comprendono IVA e spese di spedizione In contres.egno postele

Creata da un team di designersin collaborazione con medici e fi-sioterapisti e realizzata in legnodi rovere, OAK distribuisce !'Pe-so del corpo in maniera-Dllan-ciata rispetto al baricentro, ri-sultando estremamente confor-

r------------- ---------- -~--

III La spedizione sarà effettuata direttamente dall'importatore MICROSTAR s.r.l.

Solo per ordini telefonici: 02-6597693I Tutto il materiale è coperto da 12 mesi di garanzia.L _

dotazione: una calcolatrice suschermo per fare direttamentetutti i vostri conti e un sistemaper utilizzare la light pen dentro iprogrammi BASIC.Il prezzo? Solo 95.000 per laversione su cassetta e 98.000per il floppy.

drato a rappresentare le diversefunzioni.Per selezionare una funzione ba-sta far scivolare il mouse sul pia-no della scrivania fino a portare ilcursore sopra la icona presceltae quindi premere brevemente ilpulsante adatto.L'uso di Megamouse risulta tal-mente immediato e naturale danon poterne fare a meno: com-puter art, CAD, disegno indu-stria/e, grafici di ogni tipo sonosolo alcune delle applicazionipossibili. E i risultati faranno im-pallidire i fratellini maggiori a 32bit.

hardware aggiuntivo.ll prezzo dilancio sfida le leggi mercato. Fin-chè dura.

e Testina di stampa a 16 aghi. Car-rello standard 80 colonne.

eSilenziosissima.eFoglio singolo e modulo conti-

nuo. Carta normale o termica.eDue velocità: 50 o 25 caratteri!

secondo.eQualità di stampa controllabile

tramite il cursore "Density".

PREZZOIRRIPETIBILEStaP'dard centronics perM~XIApplel Amstrad/lBMPé 399.000 (listino 500.000)Interfaccia diretta Commo-dorel Atari 449.000 (listino570.000)

TXP-1000

Questa stampante universale,letter quality, può essere colle-gata a qualsiasi computer dota-to di interfaccia standard centro-nics tramite apposito cavo (noncompreso).Per gli utenti Commodore!Atarila TXP-1000viene già fornita coninterfaccia diretta e cavo di col-legamento. Non è richiesto

LIGHTPENMICROSCRIBECostruita in acciaio inossidabile,

. oscribe è in grado di pilotarestamenti del cur ecisa gli spo-stando a 5 cm di distanza dalloschermo.Il software per disegnare in altarisoluzione si basa sul principiodel menù ad Leonee permette,tra l'altro, il tracciamento a manolibera, lo zoom, la cancellazione,il salvataggio delle immagini sudisco o cassetta, l'uso della ta-stiera per introdurre testo. Tuttonormale, a parte la qualità.Assolutamente eccezionali so-no invece altri due programmiln

L'unico mouse degnodel Commodore

Il software è completamenteguidato tramite icone, ossia sim-boli grafici racchiusi in un qua-

MONITOR HANTAREXBOXER 12"

FOSFORI VERDI - ALTA RISOL.85 COL. - AUDIO - R G B PER al

COMMODORE - MSXAPPlE Il e 11+

LIRE 230.000 (tutto compreso)

MONITOR HANTAREXCT 900/1 MR PAL

14" COLORE - MEDIA RISOL.40 col. - R G B - L1NEAR/TTl

COMPAT. PER alCOMMODORE

LIRE 620.000 (tutto compreso) MANNESMANN MT 80 +L. 599.000

80 col. - 100 cps - interfaccia Centronics - fogliosingolo e modulo continuo - bidirezionale.

• ,j'~" ~

" .• ~ "'!..~·h'j,~~:f ~ '! t •• <; \ ~

.•• ~f"."'''''Pf,\l' •.o y « ~ 'Ì w \) ."~ •

--: # •• ",._, ••. ~ •••• " ,e H IS " o ;:>: 1\ ••••

"'"-"" .J t .• •. M '" Il >oi -:'J \t.. -~ •••••J ••..'fJ. ••.~ ~ - ,-

al versione JS con 2 microdrive, alimentatore, manuale in inuale in itali la ione d ram _ EASEl _ ABACUS,una cartuccia con 6 giochi originali più Ur) super copiatore per MDV eFlP.

con lo SPECTRUM plunnanuale In Italiano e in regalo 5 programmi in italiano (conto corrente, grafica, funzioni, bioritmi, esapedone + il Supercopiatore di Ma:>simo Rossi)

Ql 512K , ,.. 880.000Espansione da 512K' rrontata internamente, non neces-sita di alimentaziona supplementare e lascia il connetto-re libero per altre periferiche.Nuovo SPECTIlUM 48K + 299.000Manuale italiane. cavetti alimentatore, cassette dimo-strative e oltre ;0.000 lire di software orig. e in italiano

Personal AMSTRAD PC W8 256 1.350.000256K 1 drive 3" Monitor Stampante NLO 90 cpsPC W8-512 ." " " 1.599.000512 K - 2 Oriva 3" - Monitor Stampante NLO - 90 cps

10 RULLI di carta termica " " " 29,000MANNESMANN TAllY tutti i modelliMT 80 + ..•......" " 599.000Foglio singclo e continuo, interfaccia Centronics, 100cps vari set ji caratteri - Biodirezionali.MT85 " .. 899.000Interfaccia C::!ntronics o seriale a scelta 180 cps 80/136col. foglio sillgolo e continuo.DISCHI 3"t/2 13.000MT 86 " " " " 1.100.000Interi. Cenll"onics o Seriale. 146 col. 180 cps. NLO grafi-ca. comp 18M.

NASTRI INCHIOSTRATI PELlKANper tutte le stampantiPREZZI FAVOlOSIIIIl!

DISCHI 3"1/210 pezzi "." 110.000Garantiti doppia faccia e doppia densità.INTERFACCIA PER JOYSTICKUNA PRESA ""." " 25.000Tipo Kempston, per tutti i joystick stand. 9 PIN O.INTERFACCIA PER JOYSTICKDUE PRESE "." "" 35,000Tipo Kempston, per tutti i joystick stand. P PIN O.JOYSTICK STANDARD 9 PIN D " .. 14.000CONVERTITORE " " 99.000Da RS232 a Centronics per interfaccia 1 o per Ql cavi econnettori speciali compresI.INTERFACCIA CENTRONICSSPECTRUM "" 99.000Senza software tutto su Rom compreso il copy.

8 CARTUCCE x MICRODRIVE 49.000TRISlOT " , , , 27,000Presa tripla per connettore Spectrum.MANUALE IN ITALIANO X SPECTRUM .. 16.000••Come usare il tuo Spectrum ••.ROM "JS •• NUOVO TIPO (256K + 128K). 99.000Trasforma il tuo QL in un «JS••.MODEM: TUTTI I TIPI dal più economico ai piùsofisticato.TUTTI gli articoli EPSONtelefonare per quotazioni aggiornate.

[1I~II••~M~;~!~~J,s~0I~ìlDt~·'~2~·~'~;'!!~·,~I~••~:cEi~I~J;~J;~tJ"~;•• rilm.:~Manuale completo in italiano.ESPANSIONE X 32K X SPECTRUM " .... 59,000Issue 2 o 3 specificare, facilissima da montare, istruzionidettagliate in italiano con fotografie, porta il VS Spec-trum da 16K a 48K. Montaggio gratis.STAMPANTE AlPHACOM 32 149,000Per Spectrum ZX 81 istruzioni in italiano 2 rulli di carta inregalo.DISK DRIVE 3"1/2 X INTERF. X QL. .... 619.000Oltre 700K tormattat!.Espansione Ql da 512 K con totale 640 K di-sponibili, montate inter "....................... 300.000KIT DI ESPANSIONE X Ql a 512 249.000Si monta all'interno del Ol, si consiglia l'assistenza di untecnico specializzato.ESPANSIONE DEL VOSTRO Ql A 512K 349.000Montata all'interno del vostro Ol e collaudata con ga-ranzia di 3 mesi spedite il Computer solo dopo aver avu-to un contatto telefonico.TOOlKIT Il X Ql SU ROM 89.000STAMPANTE WElCO DMP - 1100per Ql ." "" " " ,,' 630,000100 cps, foglio singolo e continuo, 80 col.bidirezionale, 192 car interf. RS 232 incorporataSTAMPANTE QUEDATA DMP 1180 lQ 565.000Interi. parallela 80 col. 80 \ps LO

AVVERTENZE - Tutti I prezzi sono comprensivi di IVA e spese postaliper ordini inferiori alle 50.000 lire aggiungere L. 5.000 per contributo spesedi spedizione - pagamento contrassegno al ricevimento del pacco(è gradito il contatto telefonico) - SCONTI QUANTITÀListino prezzi aggiornato anche su richiesta telefonica.